[CRYPTO] api: Allow algorithm lookup by type
This patch also adds the infrastructure to pick an algorithm based on their type. For example, this allows you to select the encryption algorithm "aes", instead of any algorithm registered under the name "aes". For now this is only accessible internally. Eventually it will be made available through crypto_alloc_tfm. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2b8c19dbdc
commit
492e2b63eb
4 changed files with 40 additions and 18 deletions
|
|
@ -21,12 +21,12 @@
|
|||
|
||||
static LIST_HEAD(crypto_template_list);
|
||||
|
||||
void crypto_larval_error(const char *name)
|
||||
void crypto_larval_error(const char *name, u32 type, u32 mask)
|
||||
{
|
||||
struct crypto_alg *alg;
|
||||
|
||||
down_read(&crypto_alg_sem);
|
||||
alg = __crypto_alg_lookup(name);
|
||||
alg = __crypto_alg_lookup(name, type, mask);
|
||||
up_read(&crypto_alg_sem);
|
||||
|
||||
if (alg) {
|
||||
|
|
@ -87,6 +87,8 @@ static int __crypto_register_alg(struct crypto_alg *alg)
|
|||
!strcmp(alg->cra_driver_name, q->cra_name))) {
|
||||
struct crypto_larval *larval = (void *)q;
|
||||
|
||||
if ((q->cra_flags ^ alg->cra_flags) & larval->mask)
|
||||
continue;
|
||||
if (!crypto_mod_get(alg))
|
||||
continue;
|
||||
larval->adult = alg;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue