[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [SCM] GNU gnutls branch, master, updated. gnutls_3_0_21-1-gae312d9,
Nikos Mavrogiannopoulos <=