[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] scratch/tzz/nettle 4f9d804: WIP: GnuTLS AEAD autosize outp
From: |
Teodor Zlatanov |
Subject: |
[Emacs-diffs] scratch/tzz/nettle 4f9d804: WIP: GnuTLS AEAD autosize output |
Date: |
Fri, 14 Apr 2017 16:21:36 -0400 (EDT) |
branch: scratch/tzz/nettle
commit 4f9d8046d010b56061de1f533c689ae653416085
Author: Ted Zlatanov <address@hidden>
Commit: Ted Zlatanov <address@hidden>
WIP: GnuTLS AEAD autosize output
---
src/gnutls.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/src/gnutls.c b/src/gnutls.c
index 48fc7d3..7bb1ec1 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -1763,7 +1763,6 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
#ifdef HAVE_GNUTLS3_AEAD
const char* desc = (encrypting ? "encrypt" : "decrypt");
- Lisp_Object output = Qnil;
int ret = GNUTLS_E_SUCCESS;
gnutls_aead_cipher_hd_t acipher;
@@ -1780,8 +1779,8 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
return Qnil;
}
- size_t storage_length = 2048; // 2K Ought To Be Enough For Anyone.
- void *storage = xzalloc (storage_length);
+ size_t storage_length = SCHARS (input) + gnutls_cipher_get_tag_size (gca);
+ Lisp_Object storage = make_uninit_string (storage_length);
const char* aead_auth_data = NULL;
size_t aead_auth_size = 0;
@@ -1814,7 +1813,7 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
aead_auth_data, aead_auth_size,
gnutls_cipher_get_tag_size (gca),
SSDATA (input), SCHARS (input),
- storage, &storage_length);
+ SSDATA (storage), &storage_length);
}
else
{
@@ -1823,12 +1822,12 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
aead_auth_data, aead_auth_size,
gnutls_cipher_get_tag_size (gca),
SSDATA (input), SCHARS (input),
- storage, &storage_length);
+ SSDATA (storage), &storage_length);
}
if (ret < GNUTLS_E_SUCCESS)
{
- xfree (storage);
+ memset(SSDATA (storage), 0, storage_length);
gnutls_aead_cipher_deinit (acipher);
const char* str = gnutls_strerror (ret);
if (!str)
@@ -1838,13 +1837,9 @@ gnutls_symmetric_aead (bool encrypting,
gnutls_cipher_algorithm_t gca,
return Qnil;
}
- output = make_unibyte_string (storage, storage_length);
- memset(storage, 0, storage_length);
- xfree (storage);
-
gnutls_aead_cipher_deinit (acipher);
- return output;
+ return make_unibyte_string (SSDATA (storage), storage_length);
#else
error ("GnuTLS AEAD cipher %ld was invalid or not found", (long) gca);
return Qnil;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] scratch/tzz/nettle 4f9d804: WIP: GnuTLS AEAD autosize output,
Teodor Zlatanov <=