;; Rabbit stream cipher ;; written by Martin Boesgaard, Mette Vesterager, Thomas Christensen and Erik Zenner ;; public domain ;; key is 128 bit == 16 characters ;; iv is 64 bit = 8 characters ;; Based on lambdanative rabbit lib, ported to Chicken Scheme by Ivan Raikov (module rabbit (debuglevel make-context destroy-context! encode! decode!) (import scheme (chicken base) (chicken foreign) (chicken blob) (chicken format)) (define debuglevel (make-parameter 0)) (define (logger level . x) (if (>= (debuglevel) level) (apply printf (append (list "rabbit: ") x)))) #> #define C_bytevector_length(x) (C_header_size(x)) #include "rabbitlib.c" <# (define (make-context key) ;; key must be at least 24 bytes (logger 1 "make-context " (blob->string key)) ((foreign-safe-lambda* nonnull-c-pointer ((scheme-object key)) #<