From 88c262ddd4994868038ce2ba61732b14e64b7861 Mon Sep 17 00:00:00 2001 From: Ivan Raikov Date: Tue, 18 Dec 2018 07:20:55 -0800 Subject: [PATCH 1/5] ported to CHICKEN 5 --- rabbit.c5.release-info | 7 +++++++ rabbit.egg | 12 ++++++++++++ rabbit.scm | 29 ++++++++++++----------------- tests/run.scm | 28 ++++++++-------------------- 4 files changed, 39 insertions(+), 37 deletions(-) create mode 100644 rabbit.c5.release-info create mode 100644 rabbit.egg diff --git a/rabbit.c5.release-info b/rabbit.c5.release-info new file mode 100644 index 0000000..395615d --- /dev/null +++ b/rabbit.c5.release-info @@ -0,0 +1,7 @@ +;; -*- scheme -*- + +(repo git "git://github.com/iraikov/chicken-rabbit.git") +(uri targz "https://github.com/iraikov/chicken-rabbit/tarball/{egg-release}") +(uri files-list "http://code.call-cc.org/files-list?egg={egg-name};egg-release={egg-release};chicken-release={chicken-release}" old-uri) + +(release "1.2") diff --git a/rabbit.egg b/rabbit.egg new file mode 100644 index 0000000..2240920 --- /dev/null +++ b/rabbit.egg @@ -0,0 +1,12 @@ +;;;; -*- Scheme -*- + +((synopsis "Rabbit stream cipher.") + (license "Public Domain") + (category crypt) + (dependencies datatype matchable yasos srfi-1) + (test-dependencies test srfi-1) + (maintainer "Ivan Raikov") + (author "Martin Boesgaard, Mette Vesterager, Thomas Christensen and Erik Zenner") + (components (extension rabbit)) + ) + diff --git a/rabbit.scm b/rabbit.scm index e202259..7f3fb98 100644 --- a/rabbit.scm +++ b/rabbit.scm @@ -8,18 +8,13 @@ (module rabbit - (rabbit-debuglevel - rabbit-make - rabbit-destroy! - rabbit-encode! - rabbit-decode!) + (debuglevel make-context destroy-context! encode! decode!) - (import scheme chicken foreign) - (import (only extras printf)) + (import scheme (chicken base) (chicken foreign) (chicken blob) (chicken format)) - (define rabbit-debuglevel (make-parameter 0)) - (define (rabbit-log level . x) - (if (>= (rabbit-debuglevel) level) (apply printf (append (list "rabbit: ") x)))) + (define debuglevel (make-parameter 0)) + (define (logger level . x) + (if (>= (debuglevel) level) (apply printf (append (list "rabbit: ") x)))) #> @@ -28,8 +23,8 @@ <# -(define (rabbit-make key) ;; key must be at least 24 bytes - (rabbit-log 1 "rabbit-make " (blob->string key)) +(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)) #< n 0) - (begin - (u8vector-set! v (- n 1) (random 255)) - (loop (- n 1))) - (u8vector->blob v))) - )) +(import scheme (chicken base) (chicken random) (chicken blob) rabbit test) (test-group "rabbit 1000 random vectors" (let loop ((n 1000)) (test-assert (if (= n 0) #t (if (let* ( - (keylen (+ (random 10) 24)) - (key (random-blob keylen)) - (datalen (random 100000)) - (data (random-blob datalen)) - (ctx (rabbit-make key)) + (keylen (+ (pseudo-random-integer 10) 24)) + (key (random-bytes (make-blob keylen))) + (datalen (pseudo-random-integer 100000)) + (data (random-bytes (make-blob datalen))) + (ctx (make-context key)) ) - (let ((res (not (equal? data (rabbit-decode! ctx (rabbit-encode! ctx data)))))) - (rabbit-destroy! ctx) + (let ((res (not (equal? data (decode! ctx (encode! ctx data)))))) + (destroy-context! ctx) res)) #f (loop (- n 1))))))) From 3fc6f5e67880113094a7d21812c7ecde3350d157 Mon Sep 17 00:00:00 2001 From: Ivan Raikov Date: Tue, 18 Dec 2018 07:22:46 -0800 Subject: [PATCH 2/5] added release 2.0 to c5 release info --- rabbit.c5.release-info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rabbit.c5.release-info b/rabbit.c5.release-info index 395615d..826dde8 100644 --- a/rabbit.c5.release-info +++ b/rabbit.c5.release-info @@ -4,4 +4,4 @@ (uri targz "https://github.com/iraikov/chicken-rabbit/tarball/{egg-release}") (uri files-list "http://code.call-cc.org/files-list?egg={egg-name};egg-release={egg-release};chicken-release={chicken-release}" old-uri) -(release "1.2") +(release "2.0") From 1c1cdc0d20c614c656785d6dd014db4f510ac462 Mon Sep 17 00:00:00 2001 From: Ivan Raikov Date: Tue, 18 Dec 2018 07:25:54 -0800 Subject: [PATCH 3/5] removed redundant dependencies --- rabbit.egg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rabbit.egg b/rabbit.egg index 2240920..628fb73 100644 --- a/rabbit.egg +++ b/rabbit.egg @@ -3,7 +3,7 @@ ((synopsis "Rabbit stream cipher.") (license "Public Domain") (category crypt) - (dependencies datatype matchable yasos srfi-1) + (dependencies srfi-1) (test-dependencies test srfi-1) (maintainer "Ivan Raikov") (author "Martin Boesgaard, Mette Vesterager, Thomas Christensen and Erik Zenner") From 16608b0ee994e1e1ffd0f87eb5f1420846b354ca Mon Sep 17 00:00:00 2001 From: Ivan Raikov Date: Tue, 18 Dec 2018 07:27:30 -0800 Subject: [PATCH 4/5] added release 2.1 to release-info --- rabbit.c5.release-info | 1 + 1 file changed, 1 insertion(+) diff --git a/rabbit.c5.release-info b/rabbit.c5.release-info index 826dde8..1f0e814 100644 --- a/rabbit.c5.release-info +++ b/rabbit.c5.release-info @@ -4,4 +4,5 @@ (uri targz "https://github.com/iraikov/chicken-rabbit/tarball/{egg-release}") (uri files-list "http://code.call-cc.org/files-list?egg={egg-name};egg-release={egg-release};chicken-release={chicken-release}" old-uri) +(release "2.1") (release "2.0") From b289073f0aa92bb078329df00944d60a55ddf8f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?c=C3=A6l=C5=8Drum=20spect=C4=81tr=C4=ABx?= Date: Tue, 11 Nov 2025 17:25:59 +0100 Subject: [PATCH 5/5] Port to CHICKEN 6 --- rabbit.c5.release-info | 8 ------ rabbit.egg | 12 +++----- rabbit.meta | 25 ---------------- rabbit.release-info | 11 +++---- rabbit.scm | 65 ++++++++++++++++-------------------------- rabbit.setup | 20 ------------- rabbit.sld | 14 +++++++++ tests/run.scm | 41 ++++++++++++++------------ 8 files changed, 69 insertions(+), 127 deletions(-) delete mode 100644 rabbit.c5.release-info delete mode 100644 rabbit.meta delete mode 100644 rabbit.setup create mode 100644 rabbit.sld diff --git a/rabbit.c5.release-info b/rabbit.c5.release-info deleted file mode 100644 index 1f0e814..0000000 --- a/rabbit.c5.release-info +++ /dev/null @@ -1,8 +0,0 @@ -;; -*- scheme -*- - -(repo git "git://github.com/iraikov/chicken-rabbit.git") -(uri targz "https://github.com/iraikov/chicken-rabbit/tarball/{egg-release}") -(uri files-list "http://code.call-cc.org/files-list?egg={egg-name};egg-release={egg-release};chicken-release={chicken-release}" old-uri) - -(release "2.1") -(release "2.0") diff --git a/rabbit.egg b/rabbit.egg index 628fb73..7da20a6 100644 --- a/rabbit.egg +++ b/rabbit.egg @@ -1,12 +1,8 @@ -;;;; -*- Scheme -*- - +;; -*- lisp-data -*- ((synopsis "Rabbit stream cipher.") (license "Public Domain") (category crypt) - (dependencies srfi-1) - (test-dependencies test srfi-1) - (maintainer "Ivan Raikov") + (test-dependencies test) + (maintainer "Lilianna Smólska") (author "Martin Boesgaard, Mette Vesterager, Thomas Christensen and Erik Zenner") - (components (extension rabbit)) - ) - + (components (extension rabbit (source "rabbit.sld")))) diff --git a/rabbit.meta b/rabbit.meta deleted file mode 100644 index 7a52e1e..0000000 --- a/rabbit.meta +++ /dev/null @@ -1,25 +0,0 @@ -;; -*- Hen -*- - -((egg "rabbit.egg") ; This should never change - - ; List here all the files that should be bundled as part of your egg. - - (files "rabbit.setup" "rabbit.meta" "rabbit.scm" "rabbitlib.c" "tests") - - ; Your egg's license: - - (license "Public Domain") - - ; Pick one from the list of categories (see below) for your egg and - ; enter it here. - - (category crypt) - - ; A list of eggs mpi depends on. - - (test-depends test) - - (maintainer "Ivan Raikov") - (author "Martin Boesgaard, Mette Vesterager, Thomas Christensen and Erik Zenner") - - (synopsis "Rabbit stream cipher")) diff --git a/rabbit.release-info b/rabbit.release-info index 828f9b8..3c9b7fa 100644 --- a/rabbit.release-info +++ b/rabbit.release-info @@ -1,7 +1,4 @@ -;; -*- scheme -*- - -(repo git "git://github.com/iraikov/chicken-rabbit.git") -(uri targz "https://github.com/iraikov/chicken-rabbit/tarball/{egg-release}") -(uri files-list "http://code.call-cc.org/files-list?egg={egg-name};egg-release={egg-release};chicken-release={chicken-release}" old-uri) - -(release "v1.1") +;; -*- lisp-data -*- +(repo git "git://git.linuxposting.xyz/afiw/chicken-rabbit.git") +(uri targz "https://git.linuxposting.xyz/afiw/chicken-rabbit/archive/{egg-release}.tar.gz") +(release "3.0") diff --git a/rabbit.scm b/rabbit.scm index 7f3fb98..7fcfd67 100644 --- a/rabbit.scm +++ b/rabbit.scm @@ -6,61 +6,46 @@ ;; 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 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)) +#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)) +(define (make-context key) ; key must be at least 24 bytes + (logger 1 "make-context " (utf8->string key)) ((foreign-safe-lambda* nonnull-c-pointer ((scheme-object key)) -#<