Codebase list libcryptx-perl / 97004fe
tuning rabbit Karel Miko 6 years ago
3 changed file(s) with 61 addition(s) and 11 deletion(s). Raw diff Collapse all Expand all
2323 if (!SvPOK(nonce)) croak("FATAL: nonce must be string/buffer scalar");
2424 iv = (unsigned char *)SvPVbyte(nonce, iv_len);
2525 rv = rabbit_setiv(&RETVAL->state, iv, (unsigned long)iv_len);
26 }
27 else {
28 /* rv = rabbit_setiv(&RETVAL->state, NULL, 0); */
29 rv = CRYPT_OK; /* XXX-FIXME this is a hack - skip rabbit_setiv if undefined nonce */
30 }
31 if (rv != CRYPT_OK) {
32 Safefree(RETVAL);
33 croak("FATAL: rabbit_setiv failed: %s", error_to_string(rv));
26 if (rv != CRYPT_OK) {
27 Safefree(RETVAL);
28 croak("FATAL: rabbit_setiv failed: %s", error_to_string(rv));
29 }
3430 }
3531
3632 }
00 use strict;
11 use warnings;
22
3 use Test::More tests => 16;
3 use Test::More tests => 20;
44
55 use Crypt::Stream::RC4;
66 use Crypt::Stream::Sober128;
8787
8888 {
8989 my $key = pack("H*", "74657374206b65792031323862697473");
90 my $iv = pack("H*", "00000000");
91 my $ct = pack("H*", "442cf424c5da8d78000c6b874050260792ae8ce0");
90 my $iv = pack("H*", "1122334455");
91 my $ct = pack("H*", "91d4ba9044faa26e08db767d34b88d5cf4c884db");
9292 my $pt = pack("H*", "0000000000000000000000000000000000000000");
9393 my $enc = Crypt::Stream::Rabbit->new($key, $iv)->crypt($pt);
9494 my $dec = Crypt::Stream::Rabbit->new($key, $iv)->crypt($ct);
9595 is(unpack("H*", $enc), unpack("H*", $ct), "Crypt::Stream::Rabbit encrypt");
9696 is(unpack("H*", $dec), unpack("H*", $pt), "Crypt::Stream::Rabbit decrypt");
9797 }
98 {
99 my $key = pack("H*", "74657374206b65792031323862697473");
100 my $ct = pack("H*", "e8c99affb8ffb7541b6da2e06887994e800b70c9");
101 my $pt = pack("H*", "0000000000000000000000000000000000000000");
102 my $enc = Crypt::Stream::Rabbit->new($key)->crypt($pt);
103 my $dec = Crypt::Stream::Rabbit->new($key)->crypt($ct);
104 is(unpack("H*", $enc), unpack("H*", $ct), "Crypt::Stream::Rabbit encrypt (no IV)");
105 is(unpack("H*", $dec), unpack("H*", $pt), "Crypt::Stream::Rabbit decrypt (no IV)");
106 }
107 {
108 my $key = pack("H*", "74657374206b65792031323862697473");
109 my $ct = pack("H*", "442cf424c5da8d78000c6b874050260792ae8ce0");
110 my $pt = pack("H*", "0000000000000000000000000000000000000000");
111 my $enc = Crypt::Stream::Rabbit->new($key, "")->crypt($pt);
112 my $dec = Crypt::Stream::Rabbit->new($key, "")->crypt($ct);
113 is(unpack("H*", $enc), unpack("H*", $ct), "Crypt::Stream::Rabbit encrypt (empty IV)");
114 is(unpack("H*", $dec), unpack("H*", $pt), "Crypt::Stream::Rabbit decrypt (empty IV)");
115 }
0 use strict;
1 use warnings;
2
3 use Test::More tests => 3;
4 use Crypt::Stream::Rabbit;
5
6 # https://metacpan.org/source/JCDUQUE/Crypt-Rabbit-1.0.0/t/02.t
7 # https://metacpan.org/source/JCDUQUE/Crypt-Rabbit-1.0.0/t/03.t
8 # https://metacpan.org/source/JCDUQUE/Crypt-Rabbit-1.0.0/t/04.t
9
10 {
11 my $key = pack "H32", 0;
12 my $cipher = Crypt::Stream::Rabbit->new($key);
13 my $ciphertext = pack "H64", "02f74a1c26456bf5ecd6a536f05457b1a78ac689476c697b390c9cc515d8e888";
14 my $plaintext = $cipher->crypt($ciphertext);
15 my $answer = unpack "H*", $plaintext;
16 is($answer, "0000000000000000000000000000000000000000000000000000000000000000");
17 }
18
19 {
20 my $key = pack "H32", "c21fcf3881cd5ee8628accb0a9890df8";
21 my $cipher = Crypt::Stream::Rabbit->new($key);
22 my $plaintext = pack "H64", 0;
23 my $ciphertext = $cipher->crypt($plaintext);
24 my $answer = unpack "H*", $ciphertext;
25 is($answer, "3d02e0c730559112b473b790dee018dfcd6d730ce54e19f0c35ec4790eb6c74a");
26 }
27
28 {
29 my $key = pack "H32", "1d272c6a2d8e3dfcac14056b78d633a0";
30 my $cipher = Crypt::Stream::Rabbit->new($key);
31 my $plaintext = pack "H72", 0;
32 my $ciphertext = $cipher->crypt($plaintext);
33 my $answer = unpack "H*", $ciphertext;
34 is($answer, "a3a97abb80393820b7e50c4abb53823dc4423799c2efc9ffb3a4125f1f4c99a8ae953e56");
35 }