Probe for supported AF_ALG algorithms, register dynamically
This commit is contained in:
@@ -44,32 +44,56 @@ struct private_af_alg_signer_t {
|
||||
size_t key_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* Algorithm database
|
||||
*/
|
||||
static struct {
|
||||
integrity_algorithm_t id;
|
||||
char *name;
|
||||
size_t block_size;
|
||||
size_t key_size;
|
||||
} algs[] = {
|
||||
{AUTH_HMAC_SHA1_96, "hmac(sha1)", 12, 20, },
|
||||
{AUTH_HMAC_SHA1_128, "hmac(sha1)", 16, 20, },
|
||||
{AUTH_HMAC_SHA1_160, "hmac(sha1)", 20, 20, },
|
||||
{AUTH_HMAC_SHA2_256_96, "hmac(sha256)", 12, 32, },
|
||||
{AUTH_HMAC_SHA2_256_128, "hmac(sha256)", 16, 32, },
|
||||
{AUTH_HMAC_MD5_96, "hmac(md5)", 12, 16, },
|
||||
{AUTH_HMAC_MD5_128, "hmac(md5)", 16, 16, },
|
||||
{AUTH_HMAC_SHA2_256_256, "hmac(sha384)", 32, 32, },
|
||||
{AUTH_HMAC_SHA2_384_192, "hmac(sha384)", 24, 48, },
|
||||
{AUTH_HMAC_SHA2_384_384, "hmac(sha384)", 48, 48, },
|
||||
{AUTH_HMAC_SHA2_512_256, "hmac(sha512)", 32, 64, },
|
||||
{AUTH_AES_XCBC_96, "xcbc(aes)", 12, 16, },
|
||||
{AUTH_CAMELLIA_XCBC_96, "xcbc(camellia)", 12, 16, },
|
||||
};
|
||||
|
||||
/**
|
||||
* See header.
|
||||
*/
|
||||
void af_alg_signer_probe()
|
||||
{
|
||||
af_alg_ops_t *ops;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < countof(algs); i++)
|
||||
{
|
||||
ops = af_alg_ops_create("hash", algs[i].name);
|
||||
if (ops)
|
||||
{
|
||||
ops->destroy(ops);
|
||||
lib->crypto->add_signer(lib->crypto, algs[i].id, "af_alg",
|
||||
(signer_constructor_t)af_alg_signer_create);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the kernel algorithm string and block/key size for our identifier
|
||||
*/
|
||||
static size_t lookup_alg(integrity_algorithm_t algo, char **name,
|
||||
size_t *key_size)
|
||||
{
|
||||
static struct {
|
||||
integrity_algorithm_t id;
|
||||
char *name;
|
||||
size_t block_size;
|
||||
size_t key_size;
|
||||
} algs[] = {
|
||||
{AUTH_HMAC_MD5_96, "hmac(md5)", 12, 16, },
|
||||
{AUTH_HMAC_MD5_128, "hmac(md5)", 16, 16, },
|
||||
{AUTH_HMAC_SHA1_96, "hmac(sha1)", 12, 20, },
|
||||
{AUTH_HMAC_SHA1_128, "hmac(sha1)", 16, 20, },
|
||||
{AUTH_HMAC_SHA1_160, "hmac(sha1)", 20, 20, },
|
||||
{AUTH_HMAC_SHA2_256_96, "hmac(sha256)", 12, 32, },
|
||||
{AUTH_HMAC_SHA2_256_128, "hmac(sha256)", 16, 32, },
|
||||
{AUTH_HMAC_SHA2_256_256, "hmac(sha384)", 32, 32, },
|
||||
{AUTH_HMAC_SHA2_384_192, "hmac(sha384)", 24, 48, },
|
||||
{AUTH_HMAC_SHA2_384_384, "hmac(sha384)", 48, 48, },
|
||||
{AUTH_HMAC_SHA2_512_256, "hmac(sha512)", 32, 64, },
|
||||
{AUTH_AES_XCBC_96, "xcbc(aes)", 12, 16, },
|
||||
{AUTH_CAMELLIA_XCBC_96, "xcbc(camellia)", 12, 16, },
|
||||
};
|
||||
int i;
|
||||
|
||||
for (i = 0; i < countof(algs); i++)
|
||||
|
||||
Reference in New Issue
Block a user