;; ;; sha1 - Scheme wrapper for Steve Reid's Public Domain sha1 implementation ;; ;; All code in this egg is in the Public Domain (module sha1 (sha1-binary-digest sha1-digest sha1-primitive) (import scheme chicken foreign) (use message-digest) (declare (fixnum) (no-procedure-checks) ) (foreign-declare "#include \"sha1-base.c\"") (define digest-length 20) (define context-size (foreign-value "sizeof(SHA1_CTX)" unsigned-int)) (define init (foreign-lambda void SHA1Init c-pointer)) (define update (foreign-lambda void SHA1Update c-pointer pointer unsigned-int)) (define final (foreign-lambda void SHA1Final c-pointer pointer)) (define (sha1-binary-digest obj) (make-binary-message-digest obj context-size digest-length init update final 'sha1-binary-digest) ) (define (sha1-digest obj) (make-message-digest obj context-size digest-length init update final 'sha1-digest) ) (define (sha1-primitive) (make-message-digest-primitive context-size digest-length init update final 'sha1-primitive) ) )