sha1.ss
(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*)))