diff options
author | Miloslav Trmač <mitr@redhat.com> | 2010-08-12 18:44:36 +0200 |
---|---|---|
committer | Miloslav Trmač <mitr@redhat.com> | 2010-08-24 22:56:23 +0200 |
commit | b327f41fefe390d6db4832fe44f3cf37d86514c0 (patch) | |
tree | 1067f76eaea1d2e903ef84ecfd5ccb5caf626e8d /ncr-key.c | |
parent | 2c51dc1a549816a34cb78230bf656537ecd21961 (diff) | |
download | kernel-crypto-b327f41fefe390d6db4832fe44f3cf37d86514c0.tar.gz kernel-crypto-b327f41fefe390d6db4832fe44f3cf37d86514c0.tar.xz kernel-crypto-b327f41fefe390d6db4832fe44f3cf37d86514c0.zip |
Convert *_KEY_GENERATE_PAIR
Diffstat (limited to 'ncr-key.c')
-rw-r--r-- | ncr-key.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/ncr-key.c b/ncr-key.c index 4462ef11284..90ba45ea020 100644 --- a/ncr-key.c +++ b/ncr-key.c @@ -634,25 +634,22 @@ fail: return ret; } -int ncr_key_generate_pair(struct ncr_lists *lst, void __user* arg) +int ncr_key_generate_pair(struct ncr_lists *lst, + const struct ncr_key_generate_pair *gen, + struct nlattr *tb[]) { -struct ncr_key_generate_st gen; +const struct nlattr *nla; struct key_item_st* private = NULL; struct key_item_st* public = NULL; int ret; - if (unlikely(copy_from_user(&gen, arg, sizeof(gen)))) { - err(); - return -EFAULT; - } - - ret = ncr_key_item_get_write( &private, lst, gen.desc); + ret = ncr_key_item_get_write(&private, lst, gen->private_key); if (ret < 0) { err(); goto fail; } - ret = ncr_key_item_get_write( &public, lst, gen.desc2); + ret = ncr_key_item_get_write(&public, lst, gen->public_key); if (ret < 0) { err(); goto fail; @@ -662,7 +659,8 @@ int ret; ncr_key_clear(private); /* we generate only secret keys */ - private->algorithm = public->algorithm = _ncr_algo_to_properties(gen.params.algorithm); + private->algorithm = public->algorithm + = _ncr_nla_to_properties(tb[NCR_ATTR_ALGORITHM]); if (private->algorithm == NULL) { err(); ret = -EINVAL; @@ -670,13 +668,16 @@ int ret; } public->type = public->algorithm->key_type; private->type = NCR_KEY_TYPE_PRIVATE; - ncr_key_assign_flags(private, gen.params.keyflags); - ncr_key_assign_flags(public, gen.params.keyflags); + nla = tb[NCR_ATTR_KEY_FLAGS]; + if (nla != NULL) { + ncr_key_assign_flags(private, nla_get_u32(nla)); + ncr_key_assign_flags(public, nla_get_u32(nla)); + } public->flags |= (NCR_KEY_FLAG_EXPORTABLE|NCR_KEY_FLAG_WRAPPABLE); if (public->type == NCR_KEY_TYPE_PUBLIC) { - ret = ncr_pk_generate(public->algorithm, &gen.params, private, public); + ret = ncr_pk_generate(public->algorithm, tb, private, public); if (ret < 0) { err(); goto fail; |