summaryrefslogtreecommitdiffstats
path: root/ncr.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-05-31 13:22:09 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-06-17 20:47:38 +0200
commit1b3ea65db78ef3dcc8200812117171531c62fe8b (patch)
tree54f66c970e6376ebda7a923d7f561702e2b19d8c /ncr.c
parentd3c211c2e46125ea98a45f2dad9af4669c347fa6 (diff)
downloadkernel-crypto-1b3ea65db78ef3dcc8200812117171531c62fe8b.tar.gz
kernel-crypto-1b3ea65db78ef3dcc8200812117171531c62fe8b.tar.xz
kernel-crypto-1b3ea65db78ef3dcc8200812117171531c62fe8b.zip
Added ncr_key_import/export, generate and info. Those work with secret keys.
Added test program for those.
Diffstat (limited to 'ncr.c')
-rw-r--r--ncr.c38
1 files changed, 33 insertions, 5 deletions
diff --git a/ncr.c b/ncr.c
index 2a3cd51644f..e0748f3e6de 100644
--- a/ncr.c
+++ b/ncr.c
@@ -82,21 +82,24 @@ ncr_ioctl(struct ncr_lists* lst, struct file *filp,
return ncr_data_set(&lst->data, (void*)arg);
case NCRIO_DATA_DEINIT:
return ncr_data_deinit(&lst->data, (void*)arg);
+
case NCRIO_KEY_INIT:
return ncr_key_init(filp, &lst->key, (void*)arg);
case NCRIO_KEY_DEINIT:
return ncr_key_deinit(&lst->key, (void*)arg);
-#if 0
case NCRIO_KEY_GENERATE:
return ncr_key_generate(&lst->key, (void*)arg);
+ case NCRIO_KEY_EXPORT:
+ return ncr_key_export(&lst->data, &lst->key, (void*)arg);
+ case NCRIO_KEY_IMPORT:
+ return ncr_key_import(&lst->data, &lst->key, (void*)arg);
+ case NCRIO_KEY_GET_INFO:
+ return ncr_key_info(&lst->key, (void*)arg);
+#if 0
case NCRIO_KEY_GENERATE_PAIR:
return ncr_key_generate_pair(&lst->key, (void*)arg);
case NCRIO_KEY_DERIVE:
return ncr_key_derive(&lst->key, (void*)arg);
- case NCRIO_KEY_EXPORT:
- return ncr_key_export(&lst->key, (void*)arg);
- case NCRIO_KEY_IMPORT:
- return ncr_key_import(&lst->key, (void*)arg);
case NCRIO_KEY_GET_PUBLIC:
return ncr_key_get_public(&lst->key, (void*)arg);
#endif
@@ -105,5 +108,30 @@ ncr_ioctl(struct ncr_lists* lst, struct file *filp,
}
}
+/* Returns NCR_KEY_TYPE_SECRET if a secret key algorithm or MAC is given,
+ * and NCR_KEY_TYPE_PUBLIC if a public key algorithm is given.
+ */
+ncr_key_type_t ncr_algorithm_to_key_type(ncr_algorithm_t algo)
+{
+ switch(algo) {
+ case NCR_ALG_3DES_CBC:
+ case NCR_ALG_AES_CBC:
+ case NCR_ALG_CAMELLIA_CBC:
+ case NCR_ALG_ARCFOUR:
+ case NCR_ALG_HMAC_SHA1:
+ case NCR_ALG_HMAC_MD5:
+ case NCR_ALG_HMAC_SHA2_224:
+ case NCR_ALG_HMAC_SHA2_256:
+ case NCR_ALG_HMAC_SHA2_384:
+ case NCR_ALG_HMAC_SHA2_512:
+ return NCR_KEY_TYPE_SECRET;
+ case NCR_ALG_RSA:
+ case NCR_ALG_DSA:
+ return NCR_KEY_TYPE_PUBLIC;
+ default:
+ return NCR_KEY_TYPE_INVALID;
+ }
+
+}