summaryrefslogtreecommitdiffstats
path: root/ncr-pk.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-07-07 22:54:53 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-07-07 22:54:53 +0200
commitada6106692c72168dbe4defd2ec44f273c670e88 (patch)
tree1fc8ef20085a4e320c8072f242f8db42e41e9ebd /ncr-pk.c
parent2acb2200b547f89a6f8e745c65ebd49300012cc6 (diff)
downloadkernel-crypto-ada6106692c72168dbe4defd2ec44f273c670e88.tar.gz
kernel-crypto-ada6106692c72168dbe4defd2ec44f273c670e88.tar.xz
kernel-crypto-ada6106692c72168dbe4defd2ec44f273c670e88.zip
Several fixes. RSA key generation tested and works.
Diffstat (limited to 'ncr-pk.c')
-rw-r--r--ncr-pk.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/ncr-pk.c b/ncr-pk.c
index 53dcd1b8835..6b905710139 100644
--- a/ncr-pk.c
+++ b/ncr-pk.c
@@ -62,7 +62,7 @@ static int ncr_pk_make_public_and_id( struct key_item_st * private, struct key_i
uint8_t * tmp;
long max_size;
int ret, cret;
- unsigned long key_id_size = MAX_KEY_ID_SIZE;
+ unsigned long key_id_size;
max_size = KEY_DATA_MAX_SIZE;
tmp = kmalloc(max_size, GFP_KERNEL);
@@ -108,6 +108,7 @@ static int ncr_pk_make_public_and_id( struct key_item_st * private, struct key_i
goto fail;
}
+ key_id_size = MAX_KEY_ID_SIZE;
cret = hash_memory(NCR_ALG_SHA1, tmp, max_size, private->key_id, &key_id_size);
if (cret != CRYPT_OK) {
err();
@@ -126,9 +127,14 @@ fail:
int ncr_pk_pack( const struct key_item_st * key, uint8_t * packed, uint32_t * packed_size)
{
- long max_size = *packed_size;
+ unsigned long max_size = *packed_size;
int cret;
+ if (packed == NULL || packed_size == NULL) {
+ err();
+ return -EINVAL;
+ }
+
switch(key->algorithm) {
case NCR_ALG_RSA:
cret = rsa_export(packed, &max_size, key->key.pk.rsa.type, (void*)&key->key.pk.rsa);
@@ -177,10 +183,9 @@ static void keygen_handler(struct work_struct *instance)
e = st->params->params.rsa.e;
if (e == 0)
- e = 65537;
+ e = 65537;
cret = rsa_make_key(st->params->params.rsa.bits/8, e, &st->private->key.pk.rsa);
if (cret != CRYPT_OK) {
- printk("ret: %d/%d\n", cret, st->params->params.rsa.bits);
err();
st->ret = tomerr(cret);
}
@@ -229,7 +234,7 @@ struct keygen_st st;
err();
return ret;
}
-
+
wait_for_completion(&st.completed);
if (st.ret < 0) {
@@ -237,7 +242,7 @@ struct keygen_st st;
return ret;
}
-// ret = ncr_pk_make_public_and_id(private, public);
+ ret = ncr_pk_make_public_and_id(private, public);
if (ret < 0) {
err();
return ret;