mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
crypto: add CMAC support to CryptoAPI
Patch adds support for NIST recommended block cipher mode CMAC to CryptoAPI. This work is based on Tom St Denis' earlier patch, http://marc.info/?l=linux-crypto-vger&m=135877306305466&w=2 Cc: Tom St Denis <[email protected]> Signed-off-by: Jussi Kivilinna <[email protected]> Acked-by: David S. Miller <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
This commit is contained in:
parent
e448370d73
commit
93b5e86a6d
6 changed files with 480 additions and 1 deletions
125
crypto/testmgr.h
125
crypto/testmgr.h
|
|
@ -1639,6 +1639,131 @@ static struct hash_testvec hmac_sha256_tv_template[] = {
|
|||
},
|
||||
};
|
||||
|
||||
#define CMAC_AES_TEST_VECTORS 6
|
||||
|
||||
static struct hash_testvec aes_cmac128_tv_template[] = {
|
||||
{ /* From NIST Special Publication 800-38B, AES-128 */
|
||||
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
|
||||
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
|
||||
.plaintext = zeroed_string,
|
||||
.digest = "\xbb\x1d\x69\x29\xe9\x59\x37\x28"
|
||||
"\x7f\xa3\x7d\x12\x9b\x75\x67\x46",
|
||||
.psize = 0,
|
||||
.ksize = 16,
|
||||
}, {
|
||||
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
|
||||
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
|
||||
.plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
||||
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
|
||||
.digest = "\x07\x0a\x16\xb4\x6b\x4d\x41\x44"
|
||||
"\xf7\x9b\xdd\x9d\xd0\x4a\x28\x7c",
|
||||
.psize = 16,
|
||||
.ksize = 16,
|
||||
}, {
|
||||
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
|
||||
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
|
||||
.plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
||||
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
||||
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
||||
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
||||
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11",
|
||||
.digest = "\xdf\xa6\x67\x47\xde\x9a\xe6\x30"
|
||||
"\x30\xca\x32\x61\x14\x97\xc8\x27",
|
||||
.psize = 40,
|
||||
.ksize = 16,
|
||||
}, {
|
||||
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
|
||||
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
|
||||
.plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
||||
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
||||
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
||||
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
||||
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
||||
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
||||
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
||||
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
||||
.digest = "\x51\xf0\xbe\xbf\x7e\x3b\x9d\x92"
|
||||
"\xfc\x49\x74\x17\x79\x36\x3c\xfe",
|
||||
.psize = 64,
|
||||
.ksize = 16,
|
||||
}, { /* From NIST Special Publication 800-38B, AES-256 */
|
||||
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
|
||||
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
|
||||
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
|
||||
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
|
||||
.plaintext = zeroed_string,
|
||||
.digest = "\x02\x89\x62\xf6\x1b\x7b\xf8\x9e"
|
||||
"\xfc\x6b\x55\x1f\x46\x67\xd9\x83",
|
||||
.psize = 0,
|
||||
.ksize = 32,
|
||||
}, {
|
||||
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
|
||||
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
|
||||
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
|
||||
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
|
||||
.plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
||||
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
||||
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
||||
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
|
||||
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
|
||||
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
|
||||
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
|
||||
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
|
||||
.digest = "\xe1\x99\x21\x90\x54\x9f\x6e\xd5"
|
||||
"\x69\x6a\x2c\x05\x6c\x31\x54\x10",
|
||||
.psize = 64,
|
||||
.ksize = 32,
|
||||
}
|
||||
};
|
||||
|
||||
#define CMAC_DES3_EDE_TEST_VECTORS 4
|
||||
|
||||
static struct hash_testvec des3_ede_cmac64_tv_template[] = {
|
||||
/*
|
||||
* From NIST Special Publication 800-38B, Three Key TDEA
|
||||
* Corrected test vectors from:
|
||||
* http://csrc.nist.gov/publications/nistpubs/800-38B/Updated_CMAC_Examples.pdf
|
||||
*/
|
||||
{
|
||||
.key = "\x8a\xa8\x3b\xf8\xcb\xda\x10\x62"
|
||||
"\x0b\xc1\xbf\x19\xfb\xb6\xcd\x58"
|
||||
"\xbc\x31\x3d\x4a\x37\x1c\xa8\xb5",
|
||||
.plaintext = zeroed_string,
|
||||
.digest = "\xb7\xa6\x88\xe1\x22\xff\xaf\x95",
|
||||
.psize = 0,
|
||||
.ksize = 24,
|
||||
}, {
|
||||
.key = "\x8a\xa8\x3b\xf8\xcb\xda\x10\x62"
|
||||
"\x0b\xc1\xbf\x19\xfb\xb6\xcd\x58"
|
||||
"\xbc\x31\x3d\x4a\x37\x1c\xa8\xb5",
|
||||
.plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96",
|
||||
.digest = "\x8e\x8f\x29\x31\x36\x28\x37\x97",
|
||||
.psize = 8,
|
||||
.ksize = 24,
|
||||
}, {
|
||||
.key = "\x8a\xa8\x3b\xf8\xcb\xda\x10\x62"
|
||||
"\x0b\xc1\xbf\x19\xfb\xb6\xcd\x58"
|
||||
"\xbc\x31\x3d\x4a\x37\x1c\xa8\xb5",
|
||||
.plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
||||
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
||||
"\xae\x2d\x8a\x57",
|
||||
.digest = "\x74\x3d\xdb\xe0\xce\x2d\xc2\xed",
|
||||
.psize = 20,
|
||||
.ksize = 24,
|
||||
}, {
|
||||
.key = "\x8a\xa8\x3b\xf8\xcb\xda\x10\x62"
|
||||
"\x0b\xc1\xbf\x19\xfb\xb6\xcd\x58"
|
||||
"\xbc\x31\x3d\x4a\x37\x1c\xa8\xb5",
|
||||
.plaintext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
|
||||
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
|
||||
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
|
||||
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51",
|
||||
.digest = "\x33\xe6\xb1\x09\x24\x00\xea\xe5",
|
||||
.psize = 32,
|
||||
.ksize = 24,
|
||||
}
|
||||
};
|
||||
|
||||
#define XCBC_AES_TEST_VECTORS 6
|
||||
|
||||
static struct hash_testvec aes_xcbc128_tv_template[] = {
|
||||
|
|
|
|||
Loading…
Reference in a new issue