diff options
| author | Miloslav Trmač <mitr@redhat.com> | 2010-10-13 22:45:03 +0200 |
|---|---|---|
| committer | Miloslav Trmač <mitr@redhat.com> | 2010-10-13 22:47:33 +0200 |
| commit | 9149cba1bdcb33b28790277586838264a5997b11 (patch) | |
| tree | 09e0f654edfebba764b857c170e335cfb9d9cf1e /include | |
| parent | d56f2ee027be7f2255403558039c9402753e42b5 (diff) | |
| download | ncrypto-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.h | 64 |
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; |
