(module sha1 mzscheme (require (lib "foreign.ss") (lib "etc.ss") (lib "base64.ss" "net")) (unsafe!) (provide SHA1 SHA1*) (define openssl-crypto (ffi-lib "libcrypto")) (define SHA1* (get-ffi-obj 'SHA1 openssl-crypto (_fun [data : _bytes] [length : _int = (bytes-length data)] [md : _int = 0] -> _bytes))) (define SHA1 (compose (lambda (i) (regexp-replace #"=\r\n" i #"")) base64-encode SHA1*)))