crypto: xchacha - add test vector from XChaCha20 draft RFC
Subsystems (2)
PATCH 1/1 crypto: xchacha - add test vector from XChaCha20 draft RFC
From: Eric Biggers <[email protected]>
There is a draft specification for XChaCha20 being worked on. Add the XChaCha20 test vector from the appendix so that we can be extra sure the kernel's implementation is compatible.
I also recomputed the ciphertext with XChaCha12 and added it there too, to keep the tests for XChaCha20 and XChaCha12 in sync.
--- crypto/testmgr.h | 178 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 176 insertions(+), 2 deletions(-)
crypto/testmgr.h +176 -2
@@ -32800,7 +32800,94 @@ static const struct cipher_testvec xchacha20_tv_template[] = { .also_non_np = 1, .np = 3, .tap = { 1200, 1, 80 }, - }, + }, { /* test vector from https://tools.ietf.org/html/draft-arciszewski-xchacha-02#appendix-A.3.2 */ + .key ="\x80\x81\x82\x83\x84\x85\x86\x87" +"\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" +"\x90\x91\x92\x93\x94\x95\x96\x97" +"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" , + .klen = 32, + .iv = "\x40\x41\x42\x43\x44\x45\x46\x47" +"\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" +"\x50\x51\x52\x53\x54\x55\x56\x58" +"\x00\x00\x00\x00\x00\x00\x00\x00" , + .ptext = "\x54\x68\x65\x20\x64\x68\x6f\x6c" +"\x65\x20\x28\x70\x72\x6f\x6e\x6f" +"\x75\x6e\x63\x65\x64\x20\x22\x64" +"\x6f\x6c\x65\x22\x29\x20\x69\x73" +"\x20\x61\x6c\x73\x6f\x20\x6b\x6e" +"\x6f\x77\x6e\x20\x61\x73\x20\x74" +"\x68\x65\x20\x41\x73\x69\x61\x74" +"\x69\x63\x20\x77\x69\x6c\x64\x20" +"\x64\x6f\x67\x2c\x20\x72\x65\x64" +"\x20\x64\x6f\x67\x2c\x20\x61\x6e" +"\x64\x20\x77\x68\x69\x73\x74\x6c" +"\x69\x6e\x67\x20\x64\x6f\x67\x2e" +"\x20\x49\x74\x20\x69\x73\x20\x61" +"\x62\x6f\x75\x74\x20\x74\x68\x65" +"\x20\x73\x69\x7a\x65\x20\x6f\x66" +"\x20\x61\x20\x47\x65\x72\x6d\x61" +"\x6e\x20\x73\x68\x65\x70\x68\x65" +"\x72\x64\x20\x62\x75\x74\x20\x6c" +"\x6f\x6f\x6b\x73\x20\x6d\x6f\x72" +"\x65\x20\x6c\x69\x6b\x65\x20\x61" +"\x20\x6c\x6f\x6e\x67\x2d\x6c\x65" +"\x67\x67\x65\x64\x20\x66\x6f\x78" +"\x2e\x20\x54\x68\x69\x73\x20\x68" +"\x69\x67\x68\x6c\x79\x20\x65\x6c" +"\x75\x73\x69\x76\x65\x20\x61\x6e" +"\x64\x20\x73\x6b\x69\x6c\x6c\x65" +"\x64\x20\x6a\x75\x6d\x70\x65\x72" +"\x20\x69\x73\x20\x63\x6c\x61\x73" +"\x73\x69\x66\x69\x65\x64\x20\x77" +"\x69\x74\x68\x20\x77\x6f\x6c\x76" +"\x65\x73\x2c\x20\x63\x6f\x79\x6f" +"\x74\x65\x73\x2c\x20\x6a\x61\x63" +"\x6b\x61\x6c\x73\x2c\x20\x61\x6e" +"\x64\x20\x66\x6f\x78\x65\x73\x20" +"\x69\x6e\x20\x74\x68\x65\x20\x74" +"\x61\x78\x6f\x6e\x6f\x6d\x69\x63" +"\x20\x66\x61\x6d\x69\x6c\x79\x20" +"\x43\x61\x6e\x69\x64\x61\x65\x2e" , + .ctext = "\x45\x59\xab\xba\x4e\x48\xc1\x61" +"\x02\xe8\xbb\x2c\x05\xe6\x94\x7f" +"\x50\xa7\x86\xde\x16\x2f\x9b\x0b" +"\x7e\x59\x2a\x9b\x53\xd0\xd4\xe9" +"\x8d\x8d\x64\x10\xd5\x40\xa1\xa6" +"\x37\x5b\x26\xd8\x0d\xac\xe4\xfa" +"\xb5\x23\x84\xc7\x31\xac\xbf\x16" +"\xa5\x92\x3c\x0c\x48\xd3\x57\x5d" +"\x4d\x0d\x2c\x67\x3b\x66\x6f\xaa" +"\x73\x10\x61\x27\x77\x01\x09\x3a" +"\x6b\xf7\xa1\x58\xa8\x86\x42\x92" +"\xa4\x1c\x48\xe3\xa9\xb4\xc0\xda" +"\xec\xe0\xf8\xd9\x8d\x0d\x7e\x05" +"\xb3\x7a\x30\x7b\xbb\x66\x33\x31" +"\x64\xec\x9e\x1b\x24\xea\x0d\x6c" +"\x3f\xfd\xdc\xec\x4f\x68\xe7\x44" +"\x30\x56\x19\x3a\x03\xc8\x10\xe1" +"\x13\x44\xca\x06\xd8\xed\x8a\x2b" +"\xfb\x1e\x8d\x48\xcf\xa6\xbc\x0e" +"\xb4\xe2\x46\x4b\x74\x81\x42\x40" +"\x7c\x9f\x43\x1a\xee\x76\x99\x60" +"\xe1\x5b\xa8\xb9\x68\x90\x46\x6e" +"\xf2\x45\x75\x99\x85\x23\x85\xc6" +"\x61\xf7\x52\xce\x20\xf9\xda\x0c" +"\x09\xab\x6b\x19\xdf\x74\xe7\x6a" +"\x95\x96\x74\x46\xf8\xd0\xfd\x41" +"\x5e\x7b\xee\x2a\x12\xa1\x14\xc2" +"\x0e\xb5\x29\x2a\xe7\xa3\x49\xae" +"\x57\x78\x20\xd5\x52\x0a\x1f\x3f" +"\xb6\x2a\x17\xce\x6a\x7e\x68\xfa" +"\x7c\x79\x11\x1d\x88\x60\x92\x0b" +"\xc0\x48\xef\x43\xfe\x84\x48\x6c" +"\xcb\x87\xc2\x5f\x0a\xe0\x45\xf0" +"\xcc\xe1\xe7\x98\x9a\x9a\xa2\x20" +"\xa2\x8b\xdd\x48\x27\xe7\x51\xa2" +"\x4a\x6d\x5c\x62\xd7\x90\xa6\x63" +"\x93\xb9\x31\x11\xc1\xa5\x5d\xd7" +"\x42\x1a\x10\x18\x49\x74\xc7\xc5" , + .len = 304, + } };/*
@@ -33378,7 +33465,94 @@ static const struct cipher_testvec xchacha12_tv_template[] = { .also_non_np = 1, .np = 3, .tap = { 1200, 1, 80 }, - }, + }, { + .key ="\x80\x81\x82\x83\x84\x85\x86\x87" +"\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" +"\x90\x91\x92\x93\x94\x95\x96\x97" +"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" , + .klen = 32, + .iv = "\x40\x41\x42\x43\x44\x45\x46\x47" +"\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" +"\x50\x51\x52\x53\x54\x55\x56\x58" +"\x00\x00\x00\x00\x00\x00\x00\x00" , + .ptext = "\x54\x68\x65\x20\x64\x68\x6f\x6c" +"\x65\x20\x28\x70\x72\x6f\x6e\x6f" +"\x75\x6e\x63\x65\x64\x20\x22\x64" +"\x6f\x6c\x65\x22\x29\x20\x69\x73" +"\x20\x61\x6c\x73\x6f\x20\x6b\x6e" +"\x6f\x77\x6e\x20\x61\x73\x20\x74" +"\x68\x65\x20\x41\x73\x69\x61\x74" +"\x69\x63\x20\x77\x69\x6c\x64\x20" +"\x64\x6f\x67\x2c\x20\x72\x65\x64" +"\x20\x64\x6f\x67\x2c\x20\x61\x6e" +"\x64\x20\x77\x68\x69\x73\x74\x6c" +"\x69\x6e\x67\x20\x64\x6f\x67\x2e" +"\x20\x49\x74\x20\x69\x73\x20\x61" +"\x62\x6f\x75\x74\x20\x74\x68\x65" +"\x20\x73\x69\x7a\x65\x20\x6f\x66" +"\x20\x61\x20\x47\x65\x72\x6d\x61" +"\x6e\x20\x73\x68\x65\x70\x68\x65" +"\x72\x64\x20\x62\x75\x74\x20\x6c" +"\x6f\x6f\x6b\x73\x20\x6d\x6f\x72" +"\x65\x20\x6c\x69\x6b\x65\x20\x61" +"\x20\x6c\x6f\x6e\x67\x2d\x6c\x65" +"\x67\x67\x65\x64\x20\x66\x6f\x78" +"\x2e\x20\x54\x68\x69\x73\x20\x68" +"\x69\x67\x68\x6c\x79\x20\x65\x6c" +"\x75\x73\x69\x76\x65\x20\x61\x6e" +"\x64\x20\x73\x6b\x69\x6c\x6c\x65" +"\x64\x20\x6a\x75\x6d\x70\x65\x72" +"\x20\x69\x73\x20\x63\x6c\x61\x73" +"\x73\x69\x66\x69\x65\x64\x20\x77" +"\x69\x74\x68\x20\x77\x6f\x6c\x76" +"\x65\x73\x2c\x20\x63\x6f\x79\x6f" +"\x74\x65\x73\x2c\x20\x6a\x61\x63" +"\x6b\x61\x6c\x73\x2c\x20\x61\x6e" +"\x64\x20\x66\x6f\x78\x65\x73\x20" +"\x69\x6e\x20\x74\x68\x65\x20\x74" +"\x61\x78\x6f\x6e\x6f\x6d\x69\x63" +"\x20\x66\x61\x6d\x69\x6c\x79\x20" +"\x43\x61\x6e\x69\x64\x61\x65\x2e" , + .ctext = "\x9f\x1a\xab\x8a\x95\xf4\x7e\xcd" +"\xee\x34\xc0\x39\xd6\x23\x43\x94" +"\xf6\x01\xc1\x7f\x60\x91\xa5\x23" +"\x4a\x8a\xe6\xb1\x14\x8b\xd7\x58" +"\xee\x02\xad\xab\xce\x1e\x7d\xdf" +"\xf9\x49\x27\x69\xd0\x8d\x0c\x20" +"\x6e\x17\xc4\xae\x87\x7a\xc6\x61" +"\x91\xe2\x8e\x0a\x1d\x61\xcc\x38" +"\x02\x64\x43\x49\xc6\xb2\x59\x59" +"\x42\xe7\x9d\x83\x00\x60\x90\xd2" +"\xb9\xcd\x97\x6e\xc7\x95\x71\xbc" +"\x23\x31\x58\x07\xb3\xb4\xac\x0b" +"\x87\x64\x56\xe5\xe3\xec\x63\xa1" +"\x71\x8c\x08\x48\x33\x20\x29\x81" +"\xea\x01\x25\x20\xc3\xda\xe6\xee" +"\x6a\x03\xf6\x68\x4d\x26\xa0\x91" +"\x9e\x44\xb8\xc1\xc0\x8f\x5a\x6a" +"\xc0\xcd\xbf\x24\x5e\x40\x66\xd2" +"\x42\x24\xb5\xbf\xc1\xeb\x12\x60" +"\x56\xbe\xb1\xa6\xc4\x0f\xfc\x49" +"\x69\x9f\xcc\x06\x5c\xe3\x26\xd7" +"\x52\xc0\x42\xe8\xb4\x76\xc3\xee" +"\xb2\x97\xe3\x37\x61\x29\x5a\xb5" +"\x8e\xe8\x8c\xc5\x38\xcc\xcb\xec" +"\x64\x1a\xa9\x12\x5f\xf7\x79\xdf" +"\x64\xca\x77\x4e\xbd\xf9\x83\xa0" +"\x13\x27\x3f\x31\x03\x63\x30\x26" +"\x27\x0b\x3e\xb3\x23\x13\x61\x0b" +"\x70\x1d\xd4\xad\x85\x1e\xbf\xdf" +"\xc6\x8e\x4d\x08\xcc\x7e\x77\xbd" +"\x1e\x18\x77\x38\x3a\xfe\xc0\x5d" +"\x16\xfc\xf0\xa9\x2f\xe9\x17\xc7" +"\xd3\x23\x17\x18\xa3\xe6\x54\x77" +"\x6f\x1b\xbe\x8a\x6e\x7e\xca\x97" +"\x08\x05\x36\x76\xaf\x12\x7a\x42" +"\xf7\x7a\xc2\x35\xc3\xb4\x93\x40" +"\x54\x14\x90\xa0\x4d\x65\x1c\x37" +"\x50\x70\x44\x29\x6d\x6e\x62\x68" , + .len = 304, + } };/* Adiantum test vectors from https://github.com/google/adiantum */
Signature · 1 line
2.20.0.rc2.403.gdbc3b29805-goog
Herbert Xu
maintainerQuoted 6 lines · Eric Biggers
From: Eric Biggers <[email protected]>
There is a draft specification for XChaCha20 being worked on. Add the XChaCha20 test vector from the appendix so that we can be extra sure the kernel's implementation is compatible.
Quoted 7 lines
I also recomputed the ciphertext with XChaCha12 and added it there too, to keep the tests for XChaCha20 and XChaCha12 in sync.
Signed-off-by Eric Biggers <[email protected]>---
crypto/testmgr.h| 178 ++++++++++++++++++++++++++++++++++++++++++++++-1 file changed, 176 insertions(+), 2 deletions(-)
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt