;; 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 (rabbit-debuglevel rabbit-make rabbit-destroy! rabbit-encode! rabbit-decode!) (import scheme chicken foreign) (import (only extras printf)) (define rabbit-debuglevel (make-parameter 0)) (define (rabbit-log level . x) (if (>= (rabbit-debuglevel) level) (apply printf (append (list "rabbit: ") x)))) #> #define C_bytevector_length(x) (C_header_size(x)) #include "rabbitlib.c" <# (define (rabbit-make key) ;; key must be at least 24 bytes (rabbit-log 1 "rabbit-make " (blob->string key)) ((foreign-safe-lambda* nonnull-c-pointer ((scheme-object key)) #<