Add function for building RSA public key from n and e parameters
This is similar to the existing functionality that parsed ASN.1-encoded RSA public key by generating a similar public key instance from already parsed n and e parameters. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
6c5be116dd
commit
ab6d047405
4 changed files with 40 additions and 1 deletions
|
@ -271,6 +271,10 @@ struct crypto_private_key;
|
|||
*/
|
||||
struct crypto_public_key * crypto_public_key_import(const u8 *key, size_t len);
|
||||
|
||||
struct crypto_public_key *
|
||||
crypto_public_key_import_parts(const u8 *n, size_t n_len,
|
||||
const u8 *e, size_t e_len);
|
||||
|
||||
/**
|
||||
* crypto_private_key_import - Import an RSA private key
|
||||
* @key: Key buffer (DER encoded RSA private key)
|
||||
|
|
|
@ -26,6 +26,15 @@ struct crypto_public_key * crypto_public_key_import(const u8 *key, size_t len)
|
|||
}
|
||||
|
||||
|
||||
struct crypto_public_key *
|
||||
crypto_public_key_import_parts(const u8 *n, size_t n_len,
|
||||
const u8 *e, size_t e_len)
|
||||
{
|
||||
return (struct crypto_public_key *)
|
||||
crypto_rsa_import_public_key_parts(n, n_len, e, e_len);
|
||||
}
|
||||
|
||||
|
||||
struct crypto_private_key * crypto_private_key_import(const u8 *key,
|
||||
size_t len,
|
||||
const char *passwd)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* RSA
|
||||
* Copyright (c) 2006, Jouni Malinen <j@w1.fi>
|
||||
* Copyright (c) 2006-2014, Jouni Malinen <j@w1.fi>
|
||||
*
|
||||
* This software may be distributed under the terms of the BSD license.
|
||||
* See README for more details.
|
||||
|
@ -116,6 +116,29 @@ error:
|
|||
}
|
||||
|
||||
|
||||
struct crypto_rsa_key *
|
||||
crypto_rsa_import_public_key_parts(const u8 *n, size_t n_len,
|
||||
const u8 *e, size_t e_len)
|
||||
{
|
||||
struct crypto_rsa_key *key;
|
||||
|
||||
key = os_zalloc(sizeof(*key));
|
||||
if (key == NULL)
|
||||
return NULL;
|
||||
|
||||
key->n = bignum_init();
|
||||
key->e = bignum_init();
|
||||
if (key->n == NULL || key->e == NULL ||
|
||||
bignum_set_unsigned_bin(key->n, n, n_len) < 0 ||
|
||||
bignum_set_unsigned_bin(key->e, e, e_len) < 0) {
|
||||
crypto_rsa_free(key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* crypto_rsa_import_private_key - Import an RSA private key
|
||||
* @buf: Key buffer (DER encoded RSA private key)
|
||||
|
|
|
@ -14,6 +14,9 @@ struct crypto_rsa_key;
|
|||
struct crypto_rsa_key *
|
||||
crypto_rsa_import_public_key(const u8 *buf, size_t len);
|
||||
struct crypto_rsa_key *
|
||||
crypto_rsa_import_public_key_parts(const u8 *n, size_t n_len,
|
||||
const u8 *e, size_t e_len);
|
||||
struct crypto_rsa_key *
|
||||
crypto_rsa_import_private_key(const u8 *buf, size_t len);
|
||||
size_t crypto_rsa_get_modulus_len(struct crypto_rsa_key *key);
|
||||
int crypto_rsa_exptmod(const u8 *in, size_t inlen, u8 *out, size_t *outlen,
|
||||
|
|
Loading…
Reference in a new issue