diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-07-07 22:54:53 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-07-07 22:54:53 +0200 |
commit | ada6106692c72168dbe4defd2ec44f273c670e88 (patch) | |
tree | 1fc8ef20085a4e320c8072f242f8db42e41e9ebd /ncr-pk.c | |
parent | 2acb2200b547f89a6f8e745c65ebd49300012cc6 (diff) | |
download | kernel-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.c | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -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; |