blob: 6750456b8b461dedad7728de679869d123af6eb6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
(define-module (tests jwk)
#:use-module (disfluid jwk)
#:use-module (oop goops)
#:use-module (srfi srfi-64)
#:declarative? #t)
(test-group "Generating a key: RSA"
(let* ((key (make <jwk> #:n-size 2048))
(public (jwk-public->json key))
(pair (jwk->json key)))
(test-group "Generating an RSA key: public and private parts"
(test-equal "RSA" (assq-ref pair 'kty))
(test-equal (jkt key) (assq-ref pair 'kid))
(test-assert (not (string-suffix? "=" (assq-ref pair 'kid))))
(test-assert (string? (assq-ref pair 'n)))
(test-assert (string? (assq-ref pair 'e)))
(test-assert (string? (assq-ref pair 'd)))
(test-assert (string? (assq-ref pair 'p)))
(test-assert (string? (assq-ref pair 'q)))
;; Fixme: find a way to compute dp and dq
(test-assert (not (assq-ref pair 'dp)))
(test-assert (not (assq-ref pair 'dq)))
(test-assert (string? (assq-ref pair 'qi))))
(test-group "Generating an RSA key: public part"
(test-equal "RSA" (assq-ref public 'kty))
(test-assert (string? (assq-ref public 'kid)))
(test-assert (string? (assq-ref public 'n)))
(test-assert (string? (assq-ref public 'e)))
(test-assert (not (assq-ref public 'd)))
(test-assert (not (assq-ref public 'p)))
(test-assert (not (assq-ref public 'q)))
(test-assert (not (assq-ref public 'dp)))
(test-assert (not (assq-ref public 'dq)))
(test-assert (not (assq-ref public 'qi))))
(test-group "Generating a key: RSA with e=0"
(let ((key (jwk-public->json (make <jwk> #:n-size 2048 #:e 0))))
(test-equal "RSA" (assq-ref key 'kty))
(test-assert (not (equal? (assq-ref key 'e) "AA")))))
(test-group "Generating a key: RSA with e=1"
(let ((key (jwk-public->json (make <jwk> #:n-size 2048 #:e 1))))
(test-equal "RSA" (assq-ref key 'kty))
(test-assert (not (equal? (assq-ref key 'e) "AQ")))))
(test-group "Generating a key: RSA with e=3"
(let ((key (jwk-public->json (make <jwk> #:n-size 2048 #:e 3))))
(test-equal "RSA" (assq-ref key 'kty))
(test-equal "Aw" (assq-ref key 'e))))
(test-group "Generating a key: RSA with e=AQAB"
(let ((key (jwk-public->json (make <jwk> #:n-size 2048 #:e "AQAB"))))
(test-equal "RSA" (assq-ref key 'kty))
(test-equal "AQAB" (assq-ref key 'e))))))
(test-group "Generating a key with incorrect parameters: RSA"
(test-error &invalid-key-parameters (make <jwk> #:n-size 8))
(test-error &invalid-key-parameters (make <jwk> #:n-size 16))
(test-error &invalid-key-parameters (make <jwk> #:n-size 64))
(test-error &invalid-key-parameters (make <jwk> #:n-size "garbage"))
(test-error &invalid-key-parameters (make <jwk> #:n-size 2048 #:e "garbage"))
(test-error &invalid-key-parameters (make <jwk>)))
|