summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2010-10-13 22:45:03 +0200
committerMiloslav Trmač <mitr@redhat.com>2010-10-13 22:47:33 +0200
commit9149cba1bdcb33b28790277586838264a5997b11 (patch)
tree09e0f654edfebba764b857c170e335cfb9d9cf1e /include
parentd56f2ee027be7f2255403558039c9402753e42b5 (diff)
downloadncrypto-9149cba1bdcb33b28790277586838264a5997b11.tar.gz
ncrypto-9149cba1bdcb33b28790277586838264a5997b11.tar.xz
ncrypto-9149cba1bdcb33b28790277586838264a5997b11.zip
Add RSA key import and one-shot operations
Diffstat (limited to 'include')
-rw-r--r--include/ncrypto/ncrypto.h64
1 files changed, 63 insertions, 1 deletions
diff --git a/include/ncrypto/ncrypto.h b/include/ncrypto/ncrypto.h
index 0b5087d..5d8aeb0 100644
--- a/include/ncrypto/ncrypto.h
+++ b/include/ncrypto/ncrypto.h
@@ -33,7 +33,15 @@ Red Hat author: Miloslav Trmač <mitr@redhat.com> */
#include <pkcs11.h>
/* In general, semantics aspects that are not documented here are same as in
- PCKS#11. */
+ PCKS#11.
+
+ Simultaneous references to the same object from multiple threads (except for
+ simultaneous read accesses to a key) cause undefined behavior. */
+
+ /* Global state */
+
+CK_RV ncr_open (void);
+CK_RV ncr_close (void);
/* Symmetric keys */
@@ -43,6 +51,60 @@ CK_RV ncr_symm_key_create (struct ncr_symm_key **key, CK_KEY_TYPE type,
const void *value, size_t value_size);
CK_RV ncr_symm_key_destroy (struct ncr_symm_key *key);
+ /* Asymmetric keys */
+
+struct ncr_public_key;
+struct ncr_private_key;
+
+CK_RV ncr_public_key_create (struct ncr_public_key **key, CK_KEY_TYPE type,
+ const void *der, size_t der_size);
+CK_RV ncr_public_key_destroy (struct ncr_public_key *key);
+CK_RV ncr_private_key_create (struct ncr_private_key **key, CK_KEY_TYPE type,
+ const void *der, size_t der_size,
+ const void *public_value,
+ size_t public_value_size);
+CK_RV ncr_private_key_destroy (struct ncr_private_key *key);
+
+CK_RV ncr_public_key_create_rsa (struct ncr_public_key **key,
+ const void *modulus, size_t modulus_size,
+ const void *public_exponent,
+ size_t public_exponent_size);
+CK_RV ncr_private_key_create_rsa (struct ncr_private_key **key,
+ const void *modulus, size_t modulus_size,
+ const void *public_exponent,
+ size_t public_exponent_size,
+ const void *private_exponent,
+ size_t private_exponent_size,
+ const void *prime_1, size_t prime_1_size,
+ const void *prime_2, size_t prime_2_size,
+ const void *exponent_1,
+ size_t exponent_1_size,
+ const void *exponent_2,
+ size_t exponent_2_size,
+ const void *coefficient,
+ size_t coefficient_size);
+
+ /* Asymmetric operations */
+
+CK_RV ncr_public_key_encrypt (CK_MECHANISM_TYPE mech,
+ struct ncr_public_key *key, void *dest,
+ size_t *dest_size_ptr, const void *src,
+ size_t src_size);
+CK_RV ncr_private_key_decrypt (CK_MECHANISM_TYPE mech,
+ struct ncr_private_key *key, void *dest,
+ size_t *dest_size_ptr, const void *src,
+ size_t src_size);
+
+/* FIXME: Add multipart etc... */
+CK_RV ncr_private_key_sign (CK_MECHANISM_TYPE mech,
+ struct ncr_private_key *key, void *dest,
+ size_t *dest_size_ptr, const void *src,
+ size_t src_size);
+CK_RV ncr_public_key_verify (CK_MECHANISM_TYPE mech,
+ struct ncr_public_key *key, const void *signature,
+ size_t signature_size, const void *src,
+ size_t src_size);
+
/* Digests */
struct ncr_digest_session;