blowfish-test: merge with master
authorMatt Birkholz <matt@birchwood-abbey.net>
Tue, 8 Jan 2019 04:27:50 +0000 (21:27 -0700)
committerMatt Birkholz <matt@birchwood-abbey.net>
Tue, 8 Jan 2019 22:07:51 +0000 (15:07 -0700)
src/blowfish/blowfish-test.scm

index bf9b46dc81da373a55df1e5c0c70008a42237d37..503a8e38c2592727fcd056fa598293a4111962d5 100644 (file)
@@ -26,7 +26,11 @@ USA.
 
 ;;;; Tests of Blowfish
 
-(define (variable-key-test i c)
+(define (define-bf-test name procedure)
+  (if (blowfish-available?)
+      (define-test name procedure)))
+
+(define (define-variable-key-test i c)
   (define k24
     #u8(#xF0 #xE1 #xD2 #xC3 #xB4 #xA5 #x96 #x87
         #x78 #x69 #x5A #x4B #x3C #x2D #x1E #x0F
@@ -34,56 +38,59 @@ USA.
   (define p24 #u8(#xFE #xDC #xBA #x98 #x76 #x54 #x32 #x10))
   (let ((k (bytevector-copy k24 0 i))
         (p p24))
-    (let ((bf (blowfish-set-key k))
-         (buf (make-bytevector 8)))
-      (blowfish-ecb p buf bf #t)
-      (if (not (equal? buf c))
-         (error "Test failed:" (symbol 'VARIABLE-KEY ': i ': 'ENCRYPT))))
-    (let ((bf (blowfish-set-key k))
-         (buf (make-bytevector 8)))
-      (blowfish-ecb c buf bf #f)
-      (if (not (equal? buf p))
-         (error "Test failed:" (symbol 'VARIABLE-KEY ': i ': 'DECRYPT))))))
+    (define-bf-test (symbol 'VARIABLE-KEY ': i ': 'ENCRYPT)
+      (lambda ()
+        (let ((bf (blowfish-set-key k))
+              (buf (make-bytevector 8)))
+          (blowfish-ecb p buf bf #t)
+          (assert-equal buf c))))
+    (define-bf-test (symbol 'VARIABLE-KEY ': i ': 'DECRYPT)
+      (lambda ()
+        (let ((bf (blowfish-set-key k))
+              (buf (make-bytevector 8)))
+          (blowfish-ecb c buf bf #f)
+          (assert-equal buf p))))))
 
-(variable-key-test 1 #u8(#xF9 #xAD #x59 #x7C #x49 #xDB #x00 #x5E))
-(variable-key-test 2 #u8(#xE9 #x1D #x21 #xC1 #xD9 #x61 #xA6 #xD6))
-(variable-key-test 3 #u8(#xE9 #xC2 #xB7 #x0A #x1B #xC6 #x5C #xF3))
-(variable-key-test 4 #u8(#xBE #x1E #x63 #x94 #x08 #x64 #x0F #x05))
-(variable-key-test 5 #u8(#xB3 #x9E #x44 #x48 #x1B #xDB #x1E #x6E))
-(variable-key-test 6 #u8(#x94 #x57 #xAA #x83 #xB1 #x92 #x8C #x0D))
-(variable-key-test 7 #u8(#x8B #xB7 #x70 #x32 #xF9 #x60 #x62 #x9D))
-(variable-key-test 8 #u8(#xE8 #x7A #x24 #x4E #x2C #xC8 #x5E #x82))
-(variable-key-test 9 #u8(#x15 #x75 #x0E #x7A #x4F #x4E #xC5 #x77))
-(variable-key-test 10 #u8(#x12 #x2B #xA7 #x0B #x3A #xB6 #x4A #xE0))
-(variable-key-test 11 #u8(#x3A #x83 #x3C #x9A #xFF #xC5 #x37 #xF6))
-(variable-key-test 12 #u8(#x94 #x09 #xDA #x87 #xA9 #x0F #x6B #xF2))
-(variable-key-test 13 #u8(#x88 #x4F #x80 #x62 #x50 #x60 #xB8 #xB4))
-(variable-key-test 14 #u8(#x1F #x85 #x03 #x1C #x19 #xE1 #x19 #x68))
-(variable-key-test 15 #u8(#x79 #xD9 #x37 #x3A #x71 #x4C #xA3 #x4F))
-(variable-key-test 16 #u8(#x93 #x14 #x28 #x87 #xEE #x3B #xE1 #x5C))
-(variable-key-test 17 #u8(#x03 #x42 #x9E #x83 #x8C #xE2 #xD1 #x4B))
-(variable-key-test 18 #u8(#xA4 #x29 #x9E #x27 #x46 #x9F #xF6 #x7B))
-(variable-key-test 19 #u8(#xAF #xD5 #xAE #xD1 #xC1 #xBC #x96 #xA8))
-(variable-key-test 20 #u8(#x10 #x85 #x1C #x0E #x38 #x58 #xDA #x9F))
-(variable-key-test 21 #u8(#xE6 #xF5 #x1E #xD7 #x9B #x9D #xB2 #x1F))
-(variable-key-test 22 #u8(#x64 #xA6 #xE1 #x4A #xFD #x36 #xB4 #x6F))
-(variable-key-test 23 #u8(#x80 #xC7 #xD7 #xD4 #x5A #x54 #x79 #xAD))
-(variable-key-test 24 #u8(#x05 #x04 #x4B #x62 #xFA #x52 #xD0 #x80))
+(define-variable-key-test 1 #u8(#xF9 #xAD #x59 #x7C #x49 #xDB #x00 #x5E))
+(define-variable-key-test 2 #u8(#xE9 #x1D #x21 #xC1 #xD9 #x61 #xA6 #xD6))
+(define-variable-key-test 3 #u8(#xE9 #xC2 #xB7 #x0A #x1B #xC6 #x5C #xF3))
+(define-variable-key-test 4 #u8(#xBE #x1E #x63 #x94 #x08 #x64 #x0F #x05))
+(define-variable-key-test 5 #u8(#xB3 #x9E #x44 #x48 #x1B #xDB #x1E #x6E))
+(define-variable-key-test 6 #u8(#x94 #x57 #xAA #x83 #xB1 #x92 #x8C #x0D))
+(define-variable-key-test 7 #u8(#x8B #xB7 #x70 #x32 #xF9 #x60 #x62 #x9D))
+(define-variable-key-test 8 #u8(#xE8 #x7A #x24 #x4E #x2C #xC8 #x5E #x82))
+(define-variable-key-test 9 #u8(#x15 #x75 #x0E #x7A #x4F #x4E #xC5 #x77))
+(define-variable-key-test 10 #u8(#x12 #x2B #xA7 #x0B #x3A #xB6 #x4A #xE0))
+(define-variable-key-test 11 #u8(#x3A #x83 #x3C #x9A #xFF #xC5 #x37 #xF6))
+(define-variable-key-test 12 #u8(#x94 #x09 #xDA #x87 #xA9 #x0F #x6B #xF2))
+(define-variable-key-test 13 #u8(#x88 #x4F #x80 #x62 #x50 #x60 #xB8 #xB4))
+(define-variable-key-test 14 #u8(#x1F #x85 #x03 #x1C #x19 #xE1 #x19 #x68))
+(define-variable-key-test 15 #u8(#x79 #xD9 #x37 #x3A #x71 #x4C #xA3 #x4F))
+(define-variable-key-test 16 #u8(#x93 #x14 #x28 #x87 #xEE #x3B #xE1 #x5C))
+(define-variable-key-test 17 #u8(#x03 #x42 #x9E #x83 #x8C #xE2 #xD1 #x4B))
+(define-variable-key-test 18 #u8(#xA4 #x29 #x9E #x27 #x46 #x9F #xF6 #x7B))
+(define-variable-key-test 19 #u8(#xAF #xD5 #xAE #xD1 #xC1 #xBC #x96 #xA8))
+(define-variable-key-test 20 #u8(#x10 #x85 #x1C #x0E #x38 #x58 #xDA #x9F))
+(define-variable-key-test 21 #u8(#xE6 #xF5 #x1E #xD7 #x9B #x9D #xB2 #x1F))
+(define-variable-key-test 22 #u8(#x64 #xA6 #xE1 #x4A #xFD #x36 #xB4 #x6F))
+(define-variable-key-test 23 #u8(#x80 #xC7 #xD7 #xD4 #x5A #x54 #x79 #xAD))
+(define-variable-key-test 24 #u8(#x05 #x04 #x4B #x62 #xFA #x52 #xD0 #x80))
 
 ((lambda (ks ps cs)
    ((lambda (doit) (for-each doit (iota (length ks)) ks ps cs))
     (lambda (i k p c)
-      (let ((bf (blowfish-set-key k))
-           (buf (make-bytevector 8)))
-       (blowfish-ecb p buf bf #t)
-       (if (not (equal? buf c))
-           (error "Test failed:" (symbol 'ENCRYPT ': i))))
-      (let ((bf (blowfish-set-key k))
-           (buf (make-bytevector 8)))
-       (blowfish-ecb c buf bf #f)
-       (if (not (equal? buf p))
-           (error "Test failed:" (symbol 'DECRYPT ': i)))))))
-
+      (define-bf-test (symbol 'ENCRYPT ': i)
+        (lambda ()
+          (let ((bf (blowfish-set-key k))
+                (buf (make-bytevector 8)))
+            (blowfish-ecb p buf bf #t)
+            (assert-equal buf c))))
+      (define-bf-test (symbol 'DECRYPT ': i)
+        (lambda ()
+          (let ((bf (blowfish-set-key k))
+                (buf (make-bytevector 8)))
+            (blowfish-ecb c buf bf #f)
+            (assert-equal buf p)))))))
  '(#u8(#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00)
    #u8(#xFF #xFF #xFF #xFF #xFF #xFF #xFF #xFF)
    #u8(#x30 #x00 #x00 #x00 #x00 #x00 #x00 #x00)
@@ -187,34 +194,36 @@ USA.
    #u8(#x24 #x59 #x46 #x88 #x57 #x54 #x36 #x9A)
    #u8(#x6B #x5C #x5A #x9C #x5D #x9E #x0A #x5A)))
 
-(define (cbc-test i c)
+(define (define-cbc-test i c)
   (define k #u8(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
   (define iv #u8(7 6 5 4 3 2 1 0))
   (define p #u8(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23))
   (let ((p (bytevector-copy p 0 i)))
-    (let ((bf (blowfish-set-key k))
-         (iv (bytevector-copy iv))
-         (buf (make-bytevector i)))
-      (blowfish-cbc p buf bf iv #t)
-      (if (not (and (equal? buf c)
-                   (equal? iv (bytevector-copy buf (- i 8) i))))
-         (error "Test failed:" (symbol 'CBC:ENCRYPT ': i))))
-    (let ((bf (blowfish-set-key k))
-         (iv (bytevector-copy iv))
-         (buf (make-bytevector i)))
-      (blowfish-cbc c buf bf iv #f)
-      (if (not (and (equal? buf p)
-                   (equal? iv (bytevector-copy c (- i 8) i))))
-         (error "Test failed:" (symbol 'CBC:DECRYPT ': i))))))
+    (define-bf-test (symbol 'CBC:ENCRYPT ': i)
+      (lambda ()
+        (let ((bf (blowfish-set-key k))
+              (iv (bytevector-copy iv))
+              (buf (make-bytevector i)))
+          (blowfish-cbc p buf bf iv #t)
+          (assert-equal buf c)
+          (assert-equal iv (bytevector-copy buf (- i 8) i)))))
+    (define-bf-test (symbol 'CBC:DECRYPT ': i)
+      (lambda ()
+        (let ((bf (blowfish-set-key k))
+              (iv (bytevector-copy iv))
+              (buf (make-bytevector i)))
+          (blowfish-cbc c buf bf iv #f)
+          (assert-equal buf p)
+          (assert-equal iv (bytevector-copy c (- i 8) i)))))))
 
-(cbc-test 8
+(define-cbc-test 8
   #u8(#x90 #x6a #xb9 #x17 #xb0 #x9f #xcd #x3a))
 
-(cbc-test 16
+(define-cbc-test 16
   #u8(#x90 #x6a #xb9 #x17 #xb0 #x9f #xcd #x3a
       #x2b #x41 #x4d #x69 #xbb #xa0 #xc0 #xdf))
 
-(cbc-test 24
+(define-cbc-test 24
   #u8(#x90 #x6a #xb9 #x17 #xb0 #x9f #xcd #x3a
       #x2b #x41 #x4d #x69 #xbb #xa0 #xc0 #xdf
-      #xed #x69 #x9e #xca #x55 #x13 #xc2 #x7e))
\ No newline at end of file
+      #xed #x69 #x9e #xca #x55 #x13 #xc2 #x7e))