summaryrefslogtreecommitdiffstats
path: root/ncr.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2010-05-28 13:55:45 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2010-06-17 20:47:38 +0200
commitc3695ab5f06af533deaf1de75cdd4631a9d77d00 (patch)
tree89a2c59d982accae5760d86fc5ae4dfa6b55c087 /ncr.c
parentbda013fbafabd0d0826441cb40c93a46d4dc2301 (diff)
downloadkernel-crypto-c3695ab5f06af533deaf1de75cdd4631a9d77d00.tar.gz
kernel-crypto-c3695ab5f06af533deaf1de75cdd4631a9d77d00.tar.xz
kernel-crypto-c3695ab5f06af533deaf1de75cdd4631a9d77d00.zip
Added some initial for of key. Added helper functions to enforce per user and per process limits.
Diffstat (limited to 'ncr.c')
-rw-r--r--ncr.c40
1 files changed, 31 insertions, 9 deletions
diff --git a/ncr.c b/ncr.c
index b91e7dc41ec..9e40ac05330 100644
--- a/ncr.c
+++ b/ncr.c
@@ -44,8 +44,11 @@ void* ncr_init_lists(void)
memset(lst, 0, sizeof(*lst));
- init_MUTEX(&lst->data_sem);
- INIT_LIST_HEAD(&lst->data_list);
+ init_MUTEX(&lst->data.sem);
+ INIT_LIST_HEAD(&lst->data.list);
+
+ init_MUTEX(&lst->key.sem);
+ INIT_LIST_HEAD(&lst->key.list);
return lst;
}
@@ -53,15 +56,16 @@ void* ncr_init_lists(void)
void ncr_deinit_lists(struct ncr_lists *lst)
{
if(lst) {
- ncr_data_list_deinit(lst);
+ ncr_data_list_deinit(&lst->data);
+ ncr_key_list_deinit(&lst->key);
kfree(lst);
}
}
int
-ncr_ioctl(unsigned int uid, struct ncr_lists* lst,
- unsigned int cmd, unsigned long __user arg)
+ncr_ioctl(struct ncr_lists* lst, struct file *filp,
+ unsigned int cmd, unsigned long arg)
{
if (unlikely(!lst))
@@ -69,13 +73,31 @@ ncr_ioctl(unsigned int uid, struct ncr_lists* lst,
switch (cmd) {
case NCRIO_DATA_INIT:
- return ncr_data_new(uid, lst, (void*)arg);
+ return ncr_data_init(filp, &lst->data, (void*)arg);
case NCRIO_DATA_GET:
- return ncr_data_get(lst, (void*)arg);
+ return ncr_data_get(&lst->data, (void*)arg);
case NCRIO_DATA_SET:
- return ncr_data_set(lst, (void*)arg);
+ return ncr_data_set(&lst->data, (void*)arg);
case NCRIO_DATA_DEINIT:
- return ncr_data_deinit(lst, (void*)arg);
+ 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_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
default:
return -EINVAL;
}