gnutls-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gnutls branch, master, updated. gnutls_3_0_21-1-gae312d9


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU gnutls branch, master, updated. gnutls_3_0_21-1-gae312d9
Date: Tue, 03 Jul 2012 18:42:54 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gnutls".

http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=ae312d9b32361e88b6b522cf3478f06ea4392bbf

The branch, master has been updated
       via  ae312d9b32361e88b6b522cf3478f06ea4392bbf (commit)
      from  ed3f249f2ac05465b6adaab68c67a1d4c396ef61 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit ae312d9b32361e88b6b522cf3478f06ea4392bbf
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Tue Jul 3 20:42:33 2012 +0200

    Added gnutls_privkey_import_ext2()
    
    This function allows to specify a deinitialization function.

-----------------------------------------------------------------------

Summary of changes:
 NEWS                           |    1 +
 lib/gnutls_privkey.c           |   57 ++++++++++++++++++++++++++++++++++++++++
 lib/includes/gnutls/abstract.h |   12 ++++++++
 lib/libgnutls.map              |    1 +
 4 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/NEWS b/NEWS
index 40e3b00..ada7b42 100644
--- a/NEWS
+++ b/NEWS
@@ -47,6 +47,7 @@ GNUTLS_CAMELLIA_192_CBC: Added
 gnutls_privkey_import_pkcs11_url: Added
 gnutls_privkey_import_openpgp_raw: Added
 gnutls_privkey_import_x509_raw: Added
+gnutls_privkey_import_ext2: Added
 gnutls_x509_privkey_import2: Added
 gnutls_x509_privkey_import_openssl: Added
 gnutls_load_file: Added
diff --git a/lib/gnutls_privkey.c b/lib/gnutls_privkey.c
index 346118d..e87f1ab 100644
--- a/lib/gnutls_privkey.c
+++ b/lib/gnutls_privkey.c
@@ -50,6 +50,7 @@ struct gnutls_privkey_st
     struct {
       gnutls_privkey_sign_func sign_func;
       gnutls_privkey_decrypt_func decrypt_func;
+      gnutls_privkey_deinit_func deinit_func;
       void* userdata;
     } ext;
   } key;
@@ -305,6 +306,10 @@ gnutls_privkey_deinit (gnutls_privkey_t key)
       case GNUTLS_PRIVKEY_X509:
         gnutls_x509_privkey_deinit (key->key.x509);
         break;
+      case GNUTLS_PRIVKEY_EXT:
+        if (key->key.ext.deinit_func != NULL)
+          key->key.ext.deinit_func(key, key->key.ext.userdata);
+        break;
       default:
         break;
       }
@@ -409,6 +414,58 @@ int ret;
 
   pkey->key.ext.sign_func = sign_func;
   pkey->key.ext.decrypt_func = decrypt_func;
+  pkey->key.ext.deinit_func = NULL;
+  pkey->key.ext.userdata = userdata;
+  pkey->type = GNUTLS_PRIVKEY_EXT;
+  pkey->pk_algorithm = pk;
+  pkey->flags = flags;
+
+  return 0;
+}
+
+/**
+ * gnutls_privkey_import_ext2:
+ * @pkey: The private key
+ * @pk: The public key algorithm
+ * @userdata: private data to be provided to the callbacks
+ * @sign_func: callback for signature operations
+ * @decrypt_func: callback for decryption operations
+ * @deinit_func: a deinitialization function
+ * @flags: Flags for the import
+ *
+ * This function will associate the given callbacks with the
+ * #gnutls_privkey_t structure. At least one of the two callbacks
+ * must be non-null.
+ *
+ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a
+ *   negative error value.
+ *
+ * Since: 3.1
+ **/
+int
+gnutls_privkey_import_ext2 (gnutls_privkey_t pkey,
+                           gnutls_pk_algorithm_t pk,
+                           void* userdata,
+                           gnutls_privkey_sign_func sign_func,
+                           gnutls_privkey_decrypt_func decrypt_func,
+                           gnutls_privkey_deinit_func deinit_func,
+                           unsigned int flags)
+{
+int ret;
+
+  ret = check_if_clean(pkey);
+  if (ret < 0)
+    {
+      gnutls_assert();
+      return ret;
+    }
+  
+  if (sign_func == NULL && decrypt_func == NULL)
+    return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
+
+  pkey->key.ext.sign_func = sign_func;
+  pkey->key.ext.decrypt_func = decrypt_func;
+  pkey->key.ext.deinit_func = deinit_func;
   pkey->key.ext.userdata = userdata;
   pkey->type = GNUTLS_PRIVKEY_EXT;
   pkey->pk_algorithm = pk;
diff --git a/lib/includes/gnutls/abstract.h b/lib/includes/gnutls/abstract.h
index 26a3d14..af798f9 100644
--- a/lib/includes/gnutls/abstract.h
+++ b/lib/includes/gnutls/abstract.h
@@ -50,6 +50,9 @@ typedef int (*gnutls_privkey_decrypt_func) (gnutls_privkey_t 
key,
                                             const gnutls_datum_t * ciphertext,
                                             gnutls_datum_t * plaintext);
 
+typedef int (*gnutls_privkey_deinit_func) (gnutls_privkey_t key,
+                                           void *userdata);
+
 int gnutls_pubkey_init (gnutls_pubkey_t * key);
 void gnutls_pubkey_deinit (gnutls_pubkey_t key);
 int gnutls_pubkey_get_pk_algorithm (gnutls_pubkey_t key, unsigned int *bits);
@@ -196,6 +199,15 @@ gnutls_privkey_import_ext (gnutls_privkey_t pkey,
                            gnutls_privkey_decrypt_func decrypt_func,
                            unsigned int flags);
 
+int
+gnutls_privkey_import_ext2 (gnutls_privkey_t pkey,
+                           gnutls_pk_algorithm_t pk,
+                           void* userdata,
+                           gnutls_privkey_sign_func sign_func,
+                           gnutls_privkey_decrypt_func decrypt_func,
+                           gnutls_privkey_deinit_func deinit_func,
+                           unsigned int flags);
+
 int gnutls_privkey_sign_data (gnutls_privkey_t signer,
                               gnutls_digest_algorithm_t hash,
                               unsigned int flags,
diff --git a/lib/libgnutls.map b/lib/libgnutls.map
index bd8f5f0..7462813 100644
--- a/lib/libgnutls.map
+++ b/lib/libgnutls.map
@@ -805,6 +805,7 @@ GNUTLS_3_1_0 {
        gnutls_load_file;
        gnutls_x509_privkey_import_openssl;
        gnutls_x509_privkey_import2;
+       gnutls_privkey_import_ext2;
 } GNUTLS_3_0_0;
 
 GNUTLS_PRIVATE {


hooks/post-receive
-- 
GNU gnutls



reply via email to

[Prev in Thread] Current Thread [Next in Thread]