[CRYPTO] cts: Add CTS mode required for Kerberos AES support
Implement CTS wrapper for CBC mode required for support of AES encryption support for Kerberos (rfc3962). Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:

gecommit door
Herbert Xu

bovenliggende
fd4609a8e0
commit
76cb952179
209
crypto/tcrypt.h
209
crypto/tcrypt.h
@@ -7622,6 +7622,215 @@ static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* CTS (Cipher Text Stealing) mode tests
|
||||
*/
|
||||
#define CTS_MODE_ENC_TEST_VECTORS 6
|
||||
#define CTS_MODE_DEC_TEST_VECTORS 6
|
||||
static struct cipher_testvec cts_mode_enc_tv_template[] = {
|
||||
{ /* from rfc3962 */
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.ilen = 17,
|
||||
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20",
|
||||
.rlen = 17,
|
||||
.result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
|
||||
"\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
|
||||
"\x97",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.ilen = 31,
|
||||
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20",
|
||||
.rlen = 31,
|
||||
.result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
|
||||
"\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
|
||||
"\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.ilen = 32,
|
||||
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20\x43",
|
||||
.rlen = 32,
|
||||
.result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
||||
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
|
||||
"\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.ilen = 47,
|
||||
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
||||
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
||||
"\x70\x6c\x65\x61\x73\x65\x2c",
|
||||
.rlen = 47,
|
||||
.result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
||||
"\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
|
||||
"\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
|
||||
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
||||
"\xbe\x7f\xcb\xcc\x98\xeb\xf5",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.ilen = 48,
|
||||
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
||||
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
||||
"\x70\x6c\x65\x61\x73\x65\x2c\x20",
|
||||
.rlen = 48,
|
||||
.result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
||||
"\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
|
||||
"\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
|
||||
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
||||
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.ilen = 64,
|
||||
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
||||
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
||||
"\x70\x6c\x65\x61\x73\x65\x2c\x20"
|
||||
"\x61\x6e\x64\x20\x77\x6f\x6e\x74"
|
||||
"\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
|
||||
.rlen = 64,
|
||||
.result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
||||
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
||||
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
|
||||
"\x48\x07\xef\xe8\x36\xee\x89\xa5"
|
||||
"\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
|
||||
"\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
|
||||
"\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
|
||||
}
|
||||
};
|
||||
|
||||
static struct cipher_testvec cts_mode_dec_tv_template[] = {
|
||||
{ /* from rfc3962 */
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.rlen = 17,
|
||||
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20",
|
||||
.ilen = 17,
|
||||
.input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
|
||||
"\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
|
||||
"\x97",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.rlen = 31,
|
||||
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20",
|
||||
.ilen = 31,
|
||||
.input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
|
||||
"\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
|
||||
"\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.rlen = 32,
|
||||
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20\x43",
|
||||
.ilen = 32,
|
||||
.input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
||||
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
|
||||
"\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.rlen = 47,
|
||||
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
||||
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
||||
"\x70\x6c\x65\x61\x73\x65\x2c",
|
||||
.ilen = 47,
|
||||
.input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
||||
"\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
|
||||
"\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
|
||||
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
||||
"\xbe\x7f\xcb\xcc\x98\xeb\xf5",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.rlen = 48,
|
||||
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
||||
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
||||
"\x70\x6c\x65\x61\x73\x65\x2c\x20",
|
||||
.ilen = 48,
|
||||
.input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
||||
"\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
|
||||
"\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
|
||||
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
||||
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
|
||||
}, {
|
||||
.klen = 16,
|
||||
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
||||
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
||||
.rlen = 64,
|
||||
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
||||
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
||||
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
||||
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
||||
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
||||
"\x70\x6c\x65\x61\x73\x65\x2c\x20"
|
||||
"\x61\x6e\x64\x20\x77\x6f\x6e\x74"
|
||||
"\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
|
||||
.ilen = 64,
|
||||
.input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
||||
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
||||
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
||||
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
|
||||
"\x48\x07\xef\xe8\x36\xee\x89\xa5"
|
||||
"\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
|
||||
"\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
|
||||
"\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* Compression stuff.
|
||||
*/
|
||||
|
Verwijs in nieuw issue
Block a user