emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] scratch/tzz/nettle 0d198ae 1/2: WIP: GnuTLS tests: provide


From: Teodor Zlatanov
Subject: [Emacs-diffs] scratch/tzz/nettle 0d198ae 1/2: WIP: GnuTLS tests: provide granular availability
Date: Wed, 19 Apr 2017 16:29:03 -0400 (EDT)

branch: scratch/tzz/nettle
commit 0d198ae0810397761730d6a91cdeac66fec8b40f
Author: Ted Zlatanov <address@hidden>
Commit: Ted Zlatanov <address@hidden>

    WIP: GnuTLS tests: provide granular availability
---
 src/gnutls.c                  | 29 +++++++++++++++++++++++++----
 test/lisp/net/gnutls-tests.el | 14 +++++++-------
 2 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/src/gnutls.c b/src/gnutls.c
index 79bf802..0488c8d 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -2388,23 +2388,44 @@ the number itself. */)
 #endif
 
 DEFUN ("gnutls-available-p", Fgnutls_available_p, Sgnutls_available_p, 0, 0, 0,
-       doc: /* Return t if GnuTLS is available in this instance of Emacs.  */)
+       doc: /* Return list of capabilities if GnuTLS is available in this 
instance of Emacs.
+
+...if supported         : then...
+GnuTLS 3 or higher      : the list will contain 'gnutls3.
+GnuTLS MACs             : the list will contain 'macs.
+GnuTLS digests          : the list will contain 'digests.
+GnuTLS symmetric ciphers: the list will contain 'ciphers.
+GnuTLS AEAD ciphers     : the list will contain 'AEAD-ciphers.  */)
      (void)
 {
 #ifdef HAVE_GNUTLS
+  Lisp_Object capabilities = Qnil;
+
+#ifdef HAVE_GNUTLS3_AEAD
+  capabilities = Fcons (intern("AEAD-ciphers"), capabilities);
+#endif
+
+#ifdef HAVE_GNUTLS3
+  capabilities = Fcons (intern("gnutls3"), capabilities);
+  capabilities = Fcons (intern("ciphers"), capabilities);
+  capabilities = Fcons (intern("macs"), capabilities);
+  capabilities = Fcons (intern("digests"), capabilities);
+#endif
+
 # ifdef WINDOWSNT
   Lisp_Object found = Fassq (Qgnutls, Vlibrary_cache);
   if (CONSP (found))
-    return XCDR (found);
+    return XCDR (found); // TODO: use capabilities.
   else
     {
       Lisp_Object status;
-      status = init_gnutls_functions () ? Qt : Qnil;
+      // TODO: should the capabilities be dynamic here?
+      status = init_gnutls_functions () ? capabilities : Qnil;
       Vlibrary_cache = Fcons (Fcons (Qgnutls, status), Vlibrary_cache);
       return status;
     }
 # else /* !WINDOWSNT */
-  return Qt;
+  return capabilities;
 # endif         /* !WINDOWSNT */
 #else  /* !HAVE_GNUTLS */
   return Qnil;
diff --git a/test/lisp/net/gnutls-tests.el b/test/lisp/net/gnutls-tests.el
index 958b560..7b1c2d0 100644
--- a/test/lisp/net/gnutls-tests.el
+++ b/test/lisp/net/gnutls-tests.el
@@ -69,7 +69,7 @@
 
 (ert-deftest test-gnutls-000-availability ()
   "Test the GnuTLS hashes and ciphers availability."
-  (skip-unless (gnutls-available-p))
+  (skip-unless (memq 'gnutls3 (gnutls-available-p)))
   (setq gnutls-tests-message-prefix "availability: ")
   (should (> (length gnutls-tests-internal-macs-upcased) 5))
   (let ((macs (gnutls-macs))
@@ -96,7 +96,7 @@
 
 (ert-deftest test-gnutls-000-data-extractions ()
   "Test the GnuTLS data extractions against the built-in `secure-hash'."
-  (skip-unless (gnutls-available-p))
+  (skip-unless (memq 'digests (gnutls-available-p)))
   (setq gnutls-tests-message-prefix "data extraction: ")
   (dolist (input gnutls-tests-mondo-strings)
     ;; Test buffer extraction
@@ -119,7 +119,7 @@
 
 (ert-deftest test-gnutls-001-hashes-internal-digests ()
   "Test the GnuTLS hash digests against the built-in `secure-hash'."
-  (skip-unless (gnutls-available-p))
+  (skip-unless (memq 'digests (gnutls-available-p)))
   (setq gnutls-tests-message-prefix "digest internal verification: ")
   (let ((macs (gnutls-macs)))
     (dolist (mcell gnutls-tests-internal-macs-upcased)
@@ -138,7 +138,7 @@
 
 (ert-deftest test-gnutls-002-hashes-digests ()
   "Test some GnuTLS hash digests against pre-defined outputs."
-  (skip-unless (gnutls-available-p))
+  (skip-unless (memq 'digests (gnutls-available-p)))
   (setq gnutls-tests-message-prefix "digest external verification: ")
   (let ((macs (gnutls-macs)))
     (dolist (test '(("57edf4a22be3c955ac49da2e2107b67a" 
"12345678901234567890123456789012345678901234567890123456789012345678901234567890"
 MD5)
@@ -165,7 +165,7 @@
 
 (ert-deftest test-gnutls-003-hashes-hmacs ()
   "Test some predefined GnuTLS HMAC outputs for SHA256."
-  (skip-unless (gnutls-available-p))
+  (skip-unless (memq 'macs (gnutls-available-p)))
   (setq gnutls-tests-message-prefix "HMAC verification: ")
   (let ((macs (gnutls-macs)))
     (dolist (test 
'(("f5c5021e60d9686fef3bb0414275fe4163bece61d9a95fec7a273746a437b986" "hello\n" 
"test" SHA256)
@@ -200,7 +200,7 @@
 ;; ;;; echo 
e36a9d13c15a6df23a59a6337d6132b8f7cd5283cb4784b81141b52343a18e5f5e5ee8f5553c23167409dd222478bc30
 | perl -lne 'print pack "H*", $_' | openssl enc -aes-128-ctr -d  -nosalt -K 
6d796b657932 -iv 696e697432 | od -x
 (ert-deftest test-gnutls-004-symmetric-ciphers ()
   "Test the GnuTLS symmetric ciphers"
-  (skip-unless (gnutls-available-p))
+  (skip-unless (memq 'ciphers (gnutls-available-p)))
   (setq gnutls-tests-message-prefix "symmetric cipher verification: ")
   ;; we expect at least 10 ciphers
   (should (> (length (gnutls-ciphers)) 10))
@@ -231,7 +231,7 @@
 
 (ert-deftest test-gnutls-005-aead-ciphers ()
   "Test the GnuTLS AEAD ciphers"
-  (skip-unless (gnutls-available-p))
+  (skip-unless (memq 'AEAD-ciphers (gnutls-available-p)))
   (setq gnutls-tests-message-prefix "AEAD verification: ")
   (let ((keys '("mykey" "mykey2"))
         (inputs gnutls-tests-mondo-strings)



reply via email to

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