blob: 2a071d7c50cb4c7f97ff2092472afc4b77266528 [file] [log] [blame]
Paul Kehrer1681a692014-02-11 23:43:51 -06001Test Vectors
2============
3
4Testing the correctness of the primitives implemented in each ``cryptography``
5backend requires trusted test vectors. Where possible these vectors are obtained
6from official sources such as `NIST`_ or `IETF`_ RFCs. When this is not possible
7``cryptography`` has chosen to create a set of custom vectors using an official
8vector file as input to verify consistency between implemented backends.
9
10Sources
11-------
12
13Asymmetric Ciphers
14~~~~~~~~~~~~~~~~~~
15
16* RSA PKCS1 from the RSA FTP site (ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/
17 and ftp://ftp.rsa.com/pub/rsalabs/tmp/).
18
19Hashes
20~~~~~~
21
22* MD5 from :rfc:`1321`.
23* RIPEMD160 from the `RIPEMD website`_.
24* SHA1 from `NIST CAVP`_.
25* SHA2 (224, 256, 384, 512) from `NIST CAVP`_.
26* Whirlpool from the `Whirlpool website`_.
27
28HMAC
29~~~~
30
31* HMAC-MD5 from :rfc:`2202`.
32* HMAC-SHA1 from :rfc:`2202`.
33* HMAC-RIPEMD160 from :rfc:`2286`.
34* HMAC-SHA2 (224, 256, 384, 512) from :rfc:`4231`.
35
36Key Derivation Functions
37~~~~~~~~~~~~~~~~~~~~~~~~
38
39* HKDF (SHA1, SHA256) from :rfc:`5869`.
40* PBKDF2 (HMAC-SHA1) from :rfc:`6070`.
41
42Recipes
43~~~~~~~
44
45* Fernet from its `specification repository`_.
46
47Symmetric Ciphers
48~~~~~~~~~~~~~~~~~
49
50* AES (CBC, CFB, CTR, ECB, GCM, OFB) from `NIST CAVP`_.
51* 3DES (CBC, CFB, ECB, OFB) from `NIST CAVP`_.
52* ARC4 from :rfc:`6229`.
53* Blowfish (CBC, CFB, ECB, OFB) from `Bruce Schneier's vectors`_.
54* Camellia (ECB) from NTT's `Camellia page`_ as linked by `CRYPTREC`_.
55* Camellia (CBC, CFB, OFB) from `OpenSSL's test vectors`_.
56* CAST5 (ECB) from :rfc:`2144`.
57
58
Paul Kehrer1681a692014-02-11 23:43:51 -060059.. _`NIST`: http://www.nist.gov/
60.. _`IETF`: https://www.ietf.org/
61.. _`NIST CAVP`: http://csrc.nist.gov/groups/STM/cavp/
62.. _`Bruce Schneier's vectors`: https://www.schneier.com/code/vectors.txt
63.. _`Camellia page`: http://info.isl.ntt.co.jp/crypt/eng/camellia/
64.. _`CRYPTREC`: http://www.cryptrec.go.jp
65.. _`OpenSSL's test vectors`: https://github.com/openssl/openssl/blob/97cf1f6c2854a3a955fd7dd3a1f113deba00c9ef/crypto/evp/evptests.txt#L232
66.. _`RIPEMD website`: http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
67.. _`Whirlpool website`: http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html
68.. _`Specification repository`: https://github.com/fernet/spec