Мда те са едни от първите, даже съм ползвал техния AES но алгоритмите им са таблични и не особено подходящи за АРМ. Аз отдавна не ги ползвам и не бих ги ползвал, въпреки че по ирония на съдбата сега се предлагат от АРМ
Иначе за протокола ето първите дето излизат в гугъл:
(някои са само криптирания, но пък добре написани)
==================================================================================================
ACL - ARM cryptographic library
==================================================================================================
https://github.com/medvid/aclA cryptographic library optimized for the ARM7TDMI architecture. The library includes the AES, SHA, RSA, some PRNGs and ECC (ECDSA) over all the SECG-recommended curves. The library is written in GNU assembler and C, the testing is done in Keil uVision3.
==================================================================================================
wolfSSL (formerly CyaSSL)
==================================================================================================
https://wolfssl.com/wolfSSL/wolfssl-stm32.htmlThe wolfSSL embedded SSL/TLS library (formerly CyaSSL) has support for the hardware-based cryptography and random number generator offered by the STM32F2/F4 through the STM32 Standard Peripheral Library.
Supported cryptographic algorithms accelerated in hardware include AES (CBC, CTR), DES (ECB, CBC), 3DES, MD5, and SHA1. For details regarding the STM32 cryptography and hash processors, please see the STM32Fxx Standard Peripheral Library document:
==================================================================================================
CycloneSSL
==================================================================================================
http://www.oryx-embedded.com/cyclone_ssl.htmlCycloneSSL is a lightweight SSL/TLS implementation targeted for use by embedded application developers. It provides the ability to secure communications over the Internet (e.g. electronic mail, web server, file transfer, VoIP). CycloneSSL implements all the necessary cryptographic features to make your application safe and secure. The stack is distributed as a full ANSI C and highly maintainable source code.
Server and/or client operation
Supports SSL 3.0 as well as TLS 1.0, TLS 1.1 and TLS 1.2 protocols
Robust and efficient implementation
Supports ECC (Elliptic Curve Cryptography)
Rich set of TLS cipher suites (including Suite B profile)
RSA, Diffie-Hellman and ECDH key exchange algorithms
DSA and ECDSA signature schemes
Supports stream ciphers, CBC block ciphers as well as AEAD ciphers (CCM and GCM)
Cryptographic library for common encryption algorithms (RC4, IDEA, DES, 3DES, AES, Camellia, SEED and ARIA)
Supports MD5, SHA-1, SHA-256 and SHA-384 hash algorithms
SSL/TLS session resumption
PKIX path validation
Compliant with BSD socket API
Supports hardware accelerated encryption engines (when available)
Flexible memory footprint. Built-time
configurathttps://www.linkedin.com/groups/85447ion to embed only the necessary features
Consistent application programming interface (API)
Portable architecture (no processor dependencies)
==================================================================================================
mbed TLS (formerly known as PolarSSL)
==================================================================================================
https://tls.mbed.org/https://en.wikipedia.org/wiki/Mbed_TLSmbed TLS supports a number of different cryptographic algorithms:
Ciphers
AES, Camellia, DES, RC4, RC5, Triple DES, XTEA, Blowfish
Cryptographic hash functions
MD5, MD2, MD4, SHA-1, SHA-2
Public-key cryptography
RSA, Diffie-Hellman key exchange, Elliptic curve cryptography (ECC), Elliptic curve Diffie–Hellman (ECDH), Elliptic Curve DSA (ECDSA)
==================================================================================================
Botan: Crypto and TLS for C++11
==================================================================================================
https://botan.randombit.net/Botan (Japanese for peony) is a cryptography library written in C++11 and released under the permissive Simplified BSD license.
It contains TLS client and server implementation, X.509 certificates, ECDSA, AES, GCM, ChaCha20Poly1305, McEliece, bcrypt and other useful tools.
==================================================================================================
OpenSSL
==================================================================================================
https://www.openssl.org/OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library. For more information about the team and community around the project, or to start making your own contributions...
==================================================================================================
GnuTLS
==================================================================================================
http://www.gnutls.org/Overview
GnuTLS is a secure communications library implementing the SSL, TLS and DTLS protocols and technologies around them. It provides a simple C language application programming interface (API) to access the secure communications protocols as well as APIs to parse and write X.509, PKCS #12, OpenPGP and other required structures. It is aimed to be portable and efficient with focus on security and interoperability.
Features
Support for TLS 1.2, TLS 1.1, TLS 1.0, and SSL 3.0 protocols
Support for DTLS 1.2, and DTLS 1.0, protocols
Support for certificate path validation, as well as DANE and trust on first use.
Support for the Online Certificate Status Protocol (OCSP).
Support for multiple certificate types including X.509 and OpenPGP certificates.
Support for public key methods, including RSA and Elliptic curves, as well as password and key authentication methods such as SRP and PSK protocols.
Support for all the strong encryption algorithms, including AES and Camellia.
Support for CPU-assisted cryptography with VIA padlock and AES-NI instruction sets.
Support for cryptographic accelerator drivers via /dev/crypto.
Supports natively HSMs and cryptographic tokens, via PKCS #11 and the Trusted Platform Module (TPM).
Runs on most Unix platforms and Windows.
==================================================================================================
MatrixSSL
==================================================================================================
MatrixSSL stack is a modular source code SDK ideally suited for IoT usage due to its low memory footprint (<50KB, even down to 10kB for MatrixSSL Tiny) and efficient RAM utilization (4KB per connection, even less than 1kB for MatrixSSL Tiny). It even runs on platforms without filesystem, memory allocation or multi-threading
Features
TLS 1.0, 1.1 and 1.2 server and client support (SSL 3.0 optional)
DTLS 1.0 and 1.2 server and client support
Included crypto library - RSA, ECC (including Brainpool curves), AES, 3DES, ARC4, SHA1, SHA256, MD5, ChaCha20-Poly1305
Session re-keying and cipher renegotiation
Session resumption/caching, Stateless Session Tickets
Extensions: Server Name Indication, max fragment length, trusted CA keys, truncated HMAC, Status Request (OCSP)
RFC7301 Application Protocol Negotiation
Server and client X.509 certificate chain authentication
Parsing of X.509 .pem and ASN.1 DER certificate formats
PKCS#1.5, PKCS#5, PKCS#8 and PKCS#12 key formatting
RSASSA-PSS Signature Algorithm support
Online Certificate Status Protocol (OCSP)
Certificate Revocation List (CRL)
CMS and PKCS#10 support
SSH command line support (commercial option)
FIPS140-2 validated SafeZone crypto (commercial option)
OpenSSL APIs wrapper to ease transition from OpenSSL
==================================================================================================
micro-ecc
==================================================================================================
https://github.com/kmackay/micro-eccA small and fast ECDH and ECDSA implementation for 8-bit, 32-bit, and 64-bit processors.
The static version of micro-ecc (ie, where the curve was selected at compile-time) can be found in the "static" branch.
Features
Resistant to known side-channel attacks.
Written in C, with optional GCC inline assembly for AVR, ARM and Thumb platforms.
Supports 8, 32, and 64-bit architectures.
Small code size.
No dynamic memory allocation.
Support for 5 standard curves: secp160r1, secp192r1, secp224r1, secp256r1, and secp256k1.
BSD 2-clause license.