summaryrefslogtreecommitdiff
path: root/indra/test/blowfish.pl
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-02-15 20:24:08 +0000
committerJames Cook <james@lindenlab.com>2007-02-15 20:24:08 +0000
commit12ac04231b8d358e70c830f7958f7efbc0f7c0d1 (patch)
tree189b9bc4e3bfa63275cc41be8dc42a28b0f54ffe /indra/test/blowfish.pl
parent4feabe4a9caec380cad405d5410bc762c862113d (diff)
merge -r 57761:57967 im-email-session-3, removes database load from IM to email session tracking, introduces new format for email return addresses
Diffstat (limited to 'indra/test/blowfish.pl')
-rwxr-xr-xindra/test/blowfish.pl74
1 files changed, 74 insertions, 0 deletions
diff --git a/indra/test/blowfish.pl b/indra/test/blowfish.pl
new file mode 100755
index 0000000000..7940d87aa6
--- /dev/null
+++ b/indra/test/blowfish.pl
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# *TODO: specify test count here
+use Test::More qw(no_plan);
+
+use Crypt::CBC;
+use MIME::Base64;
+
+my $init_vector = "\x00" x 8;
+# my $key = pack("H*", "ef5a8376eb0c99fe0dafa487d15bec19cae63d1e25fe31d8d92f7ab0398246d70ee733108e47360e16359654571cf5bab6c3375b42cee4fa");
+# my $key = "d263eb8a78034e40";
+ #"8d082918aa369174";
+my $key = "\x00" x 16;
+
+my $cipher = Crypt::CBC->new( { cipher => 'Blowfish',
+ regenerate_key => 0,
+ key => $key,
+ iv => $init_vector,
+ header => 'none',
+ prepend_iv => 0,
+ keysize => 16 } );
+
+#my $blocks = $cipher->blocksize();
+#print "blocksize $blocks\n";
+
+my $len;
+my $input = "01234567890123456789012345678901234\n";
+#my $input = "a whale of a tale I tell you lad, a whale of a tale for me, a whale of a tale and the fiddlers three";
+$len = length($input);
+is ($len, 36, "input length");
+
+$len = length($key);
+is ($len, 16, "key length");
+
+
+my $encrypted = $cipher->encrypt($input);
+is (length($encrypted), 40, "encrypted length");
+
+open(FH, "blowfish.1.bin");
+my $bin = scalar <FH>;
+is ($encrypted, $bin, "matches openssl");
+close(FH);
+
+my $base64 = encode_base64($encrypted);
+is ($base64, "LkGExDOMTNxFIGBg8gP43UvbQLz7xztNWwYF2kLrtwT4hD7LykOXJw==\n",
+ "base64 output");
+
+my $unbase64 = decode_base64($base64);
+is( $encrypted, $unbase64, "reverse base64" );
+
+my $output = $cipher->decrypt($unbase64);
+is ($input, $output, "reverse encrypt");
+
+$key = pack("H[32]", "526a1e07a19dbaed84c4ff08a488d15e");
+$cipher = Crypt::CBC->new( { cipher => 'Blowfish',
+ regenerate_key => 0,
+ key => $key,
+ iv => $init_vector,
+ header => 'none',
+ prepend_iv => 0,
+ keysize => 16 } );
+$encrypted = $cipher->encrypt($input);
+is (length($encrypted), 40, "uuid encrypted length");
+$output = $cipher->decrypt($encrypted);
+is ($input, $output, "uuid reverse encrypt");
+
+open(FH, "blowfish.2.bin");
+$bin = scalar <FH>;
+close(FH);
+is( $encrypted, $bin, "uuid matches openssl" );
+
+print encode_base64($encrypted);