;; ;; md5 - Scheme wrapper for Colin Plumb's Public Domain md5 implementation ;; ;; All code in this egg is in the Public Domain #>#include "md5-base.c"<# ;#>#include "md5-ssl.c"<# ;an alternative coding (module md5-api (;export name version context-size digest-length block-length init update final raw-update) (import scheme (chicken base) (chicken foreign)) ;; (define name 'md5) (define version "1.0.0") ;; (define-foreign-variable DIGEST_LENGTH size_t "MD5_DIGEST_SIZE") (define-foreign-variable BLOCK_LENGTH size_t "MD5_BLOCK_SIZE") (define-foreign-variable CONTEXT_SIZE size_t "sizeof(struct MD5Context)") (define context-size CONTEXT_SIZE) (define digest-length DIGEST_LENGTH) (define block-length BLOCK_LENGTH) ;; (define init (foreign-lambda void MD5Init nonnull-c-pointer)) (define update (foreign-lambda void MD5Update nonnull-c-pointer nonnull-scheme-pointer size_t)) (define final (foreign-lambda void MD5Final nonnull-c-pointer nonnull-scheme-pointer)) (define raw-update (foreign-lambda void MD5Update nonnull-c-pointer nonnull-c-pointer size_t)) ) ;md5-api