;;;; sha384-api.scm -*- Scheme -*- ;;;; Kon Lovett, Jul '18 #> #define SHA2_USE_INTTYPES_H 1 #define SHA2_USE_MEMSET_MEMCPY 1 #define SHA2_LITTLE_ENDIAN 1234 #define SHA2_BIG_ENDIAN 4321 #ifdef C_BIG_ENDIAN # define SHA2_BYTE_ORDER SHA2_BIG_ENDIAN #endif #ifdef C_LITTLE_ENDIAN # define SHA2_BYTE_ORDER SHA2_LITTLE_ENDIAN #endif #define SHA512 #include "sha2-base.c" #undef SHA512 #undef SHA2_LITTLE_ENDIAN #undef SHA2_BIG_ENDIAN #undef SHA2_BYTE_ORDER #undef SHA2_USE_MEMSET_MEMCPY #undef SHA2_USE_INTTYPES_H <# (module sha512-api (;export name version context-size digest-length block-length init update final raw-update) (import scheme (chicken base) (chicken foreign)) ;; (define name 'sha512) (define version "1.0.0") (define-foreign-variable *digest-length* unsigned-int "SHA512_DIGEST_LENGTH") (define-foreign-variable *block-length* unsigned-int "SHA512_BLOCK_LENGTH") (define-foreign-variable *context-size* unsigned-int "sizeof(SHA512_CTX)") (define context-size *context-size*) (define digest-length *digest-length*) (define block-length *block-length*) (define init (foreign-lambda void "SHA512_Init" c-pointer)) (define update (foreign-lambda void "SHA512_Update" c-pointer scheme-pointer unsigned-int)) (define final (foreign-lambda void "SHA512_Final" c-pointer scheme-pointer)) (define raw-update (foreign-lambda void "SHA512_Update" c-pointer c-pointer unsigned-int)) ) ;module sha512-api