emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] scratch/tzz/nettle ecdfdd7: WIP: GnuTLS: add secure-hash-a


From: Teodor Zlatanov
Subject: [Emacs-diffs] scratch/tzz/nettle ecdfdd7: WIP: GnuTLS: add secure-hash-algorithms to simplify tests
Date: Mon, 17 Apr 2017 14:55:21 -0400 (EDT)

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

    WIP: GnuTLS: add secure-hash-algorithms to simplify tests
---
 src/fns.c                     | 15 +++++++++++++++
 test/lisp/net/gnutls-tests.el | 25 +++++++++++++------------
 2 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/src/fns.c b/src/fns.c
index 10d35b6..f148c13 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -4726,6 +4726,20 @@ make_digest_string (Lisp_Object digest, int digest_size)
   return digest;
 }
 
+DEFUN ("secure-hash-algorithms", Fsecure_hash_algorithms,
+       Ssecure_hash_algorithms, 0, 0, 0,
+       doc: /* Return a list of all the supported `secure_hash' algorithms. */)
+  (void)
+{
+  return listn (CONSTYPE_HEAP, 6,
+                Qmd5,
+                Qsha1,
+                Qsha224,
+                Qsha256,
+                Qsha384,
+                Qsha512);
+}
+
 /* ALGORITHM is a symbol: md5, sha1, sha224 and so on. */
 
 static Lisp_Object
@@ -5178,6 +5192,7 @@ this variable.  */);
   defsubr (&Sbase64_encode_string);
   defsubr (&Sbase64_decode_string);
   defsubr (&Smd5);
+  defsubr (&Ssecure_hash_algorithms);
   defsubr (&Ssecure_hash);
   defsubr (&Sbuffer_hash);
   defsubr (&Slocale_info);
diff --git a/test/lisp/net/gnutls-tests.el b/test/lisp/net/gnutls-tests.el
index 87a149d..32246d5 100644
--- a/test/lisp/net/gnutls-tests.el
+++ b/test/lisp/net/gnutls-tests.el
@@ -38,14 +38,18 @@
 (defsubst gnutls-tests-hexstring-equal (a b)
   (and (stringp a) (stringp b) (string-equal (encode-hex-string a) 
(encode-hex-string b))))
 
+(defvar gnutls-tests-internal-macs-upcased
+  (mapcar (lambda (sym) (cons sym (intern (upcase (symbol-name sym)))))
+          (secure-hash-algorithms)))
+
 (defvar gnutls-tests-tested-macs
   (remove-duplicates
-   (append '(MD5 SHA1 SHA224 SHA256 SHA384 SHA512)
+   (append (mapcar 'cdr gnutls-tests-internal-macs-upcased)
            (mapcar 'car (gnutls-macs)))))
 
 (defvar gnutls-tests-tested-digests
   (remove-duplicates
-   (append '(MD5 SHA1 SHA224 SHA256 SHA384 SHA512)
+   (append (mapcar 'cdr gnutls-tests-internal-macs-upcased)
            (mapcar 'car (gnutls-digests)))))
 
 (defvar gnutls-tests-tested-ciphers
@@ -67,6 +71,7 @@
   "Test the GnuTLS hashes and ciphers availability."
   (skip-unless (gnutls-available-p))
   (setq gnutls-tests-message-prefix "availability: ")
+  (should (> (length gnutls-tests-internal-macs-upcased) 5))
   (let ((macs (gnutls-macs))
         (digests (gnutls-digests))
         (ciphers (gnutls-ciphers)))
@@ -89,22 +94,18 @@
           (should (plist-get plist prop)))
         (should (eq 'gnutls-symmetric-cipher (plist-get plist :type)))))))
 
-(ert-deftest test-gnutls-001-hashes-digests ()
+(ert-deftest test-gnutls-001-hashes-internal-digests ()
   "Test the GnuTLS hash digests against the built-in `secure-hash'."
   (skip-unless (gnutls-available-p))
   (setq gnutls-tests-message-prefix "digest internal verification: ")
   (let ((macs (gnutls-macs)))
-    ;; These are the digest algorithms currently supported by
-    ;; `secure-hash'. Unfortunately this list can't be obtained
-    ;; programmatically.
-    (dolist (sym '(md5 sha1 sha224 sha256 sha384 sha512))
-      (let* ((mac (intern (upcase (symbol-name sym))))
-             (plist (cdr (assq mac macs))))
-        (gnutls-tests-message "Checking digest MAC %s %S" mac plist)
+    (dolist (mcell gnutls-tests-internal-macs-upcased)
+      (let ((plist (cdr (assq (cdr mcell) macs))))
+        (gnutls-tests-message "Checking digest MAC %S %S" mcell plist)
         (dolist (input gnutls-tests-mondo-strings)
           (should (gnutls-tests-hexstring-equal
-                   (gnutls-hash-digest mac input)
-                   (secure-hash sym input nil nil t))))))))
+                   (gnutls-hash-digest (cdr mcell) input)
+                   (secure-hash (car mcell) input nil nil t))))))))
 
 (ert-deftest test-gnutls-002-hashes-digests ()
   "Test some GnuTLS hash digests against pre-defined outputs."



reply via email to

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