You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('') and can be up to 35 characters long.
81 lines
3.0 KiB
81 lines
3.0 KiB
/** \mainpage Documentation for AVRCryptoLib


\section Algorithms Available algorithms


\subsection Streamciphers Stream ciphers


A stream cipher generates a keystream which is normaly XORed with the


plaintext to produce the the ciphertext. Stream ciphers therfore have a


state which is automaticaly updated to produce the next element of the


keystream. Most Streamciphers produce a fixed length of keytream per


iteration which may be a byte, a bit or any other data unit.




Implemented stream ciphers:


 A5/1 (A5_1.h)


 ARCFOUR (RC4 compatible) (arcfour.h)


 Grain (grain.h)


 Trivium (trivium.h)




\subsection Blockciphers Block ciphers


Block cipher encrypt/decrypt fixed length blocks (mostly 64 bits or 128 bits)


with a key. Most block ciphers iterate a round function which uses a socalled


round key. The round keys are generated on the fly or with a special init


function (this is cipher specific). Round keys are stored in a context which


is not modifyed by the encryption or decryption function. Also the same


context can be used for encryption and decryption and depends only on the key


and its length.




Implemented block ciphers:


 Camellia (camellia.h)


 CAST5 (a.k.a CAST128) (cast5.h)


 CAST6 (a.k.a CAST256) (cast6.h)


 DES & TrippleDES (EDE) (des.h)


 Noekeon (noekeon.h)


 RC5 (rc5.h)


 RC6 (rc6.h)


 SEED (seed.h)


 Serpent (serpent.h)


 Shabea (shabea.h)


 SHACAL1 (encryption only) (shacal1_enc.h)


 SHACAL2 (encryption only) (shacal2_enc.h)


 Skipjack (skipjack.h)


 XTEA (xtea.h)




\subsection Hashes Hashes


A Hash function produces a fixed length output (called hash value or message


digest) from a variable length message input. Most hash algorithms have a


state which is updated by the hash core function from a block of fixed size


from the message. A "lastBlock" function is used to add the last block which


is not required to have the fixed length. An addition function is then used


to transform the state into the final hash value.




Implemented hash functions:


 MD5 (md5.h)


 SHA1 (sha1.h)


 SHA256 (sha256.h)


 Blake


 Blue Midnight Wish


 Grøstl


 Keccak


 Shabal


 Skein


 Twister




\subsection MACs MessageAuthentificationCodes (MACs)


MessageAuthentificationCodes work like hash function but take an additional


key. The produced output is also called MAC and is highly dependant on the


key. They can be thought of symmetric signatures.




Implemented MAC functions:


 HMACSHA1 (hmacsha1.h)


 HMACSHA256 (hmacsha256.h)






\subsection PRNGs PseudoRandomNumberGenerators (PRNGs)


PRNGs produce pseudo random output determinated by the input. They aim to


produce an arbitrary length of good cryptographically secure random if the


input has enough entropy. PRNGs differ in the way they accept input. Some


are seeded only once, other (like the implemented) maintain an entropy pool


to which input can be added at virtually any time.




Implemented PRNGs:


 Entropium (entropium.h)




*/


