From d7edfc5a6f91d48f1221ae7082231c06e693ec2e Mon Sep 17 00:00:00 2001 From: Matt Birkholz Date: Mon, 7 Jan 2019 21:27:50 -0700 Subject: [PATCH] blowfish-test: merge with master --- src/blowfish/blowfish-test.scm | 139 ++++++++++++++++++--------------- 1 file changed, 74 insertions(+), 65 deletions(-) diff --git a/src/blowfish/blowfish-test.scm b/src/blowfish/blowfish-test.scm index bf9b46dc8..503a8e38c 100644 --- a/src/blowfish/blowfish-test.scm +++ b/src/blowfish/blowfish-test.scm @@ -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)) -- 2.25.1