Truncate output of hmac-sha256 correctly

This commit is contained in:
Tony Garnock-Jones 2021-06-08 09:28:48 +02:00
parent c18a2b2652
commit e7153b9c6a
1 changed files with 7 additions and 4 deletions

View File

@ -44,21 +44,24 @@
#:read-syntax? #f #:read-syntax? #f
#:decode-embedded embedded-not-allowed)) #:decode-embedded embedded-not-allowed))
(define (signature key data)
(subbytes (hmac-sha256 key data) 0 KEY_LENGTH))
(define (mint oid key) (define (mint oid key)
(SturdyRef oid '() (hmac-sha256 key (sturdy-encode oid)))) (SturdyRef oid '() (signature key (sturdy-encode oid))))
(define (attenuate-sturdy r . attenuation) (define (attenuate-sturdy r . attenuation)
(match-define (SturdyRef oid caveatChain sig) r) (match-define (SturdyRef oid caveatChain sig) r)
(SturdyRef oid (SturdyRef oid
(append caveatChain (list attenuation)) (append caveatChain (list attenuation))
(hmac-sha256 sig (sturdy-encode (Attenuation->preserves attenuation))))) (signature sig (sturdy-encode (Attenuation->preserves attenuation)))))
(define (SturdyRef-valid? r key) (define (SturdyRef-valid? r key)
(match-define (SturdyRef oid caveatChain actual-sig) r) (match-define (SturdyRef oid caveatChain actual-sig) r)
(define expected-sig (define expected-sig
(for/fold [(sig (hmac-sha256 key (sturdy-encode oid)))] (for/fold [(sig (signature key (sturdy-encode oid)))]
[(attenuation (in-list caveatChain))] [(attenuation (in-list caveatChain))]
(hmac-sha256 sig (sturdy-encode (Attenuation->preserves attenuation))))) (signature sig (sturdy-encode (Attenuation->preserves attenuation)))))
(equal? expected-sig actual-sig)) (equal? expected-sig actual-sig))
(define (validate r key) (define (validate r key)