Codebase list libcryptx-perl / f72040a
CryptX-0.016 Karel Miko 10 years ago
478 changed file(s) with 68 addition(s) and 18 deletion(s). Raw diff Collapse all Expand all
(No changes)
55 - croak with the "real caller" (Crypt::Mac::*, Crypt::Mode::*, ...)
66 - croak when mode does not call start_(en|de)crypt
77 - "libtom-src/bn_mp_invmod.c", line 37: warning: statement not reached
8
9 0.016 2013/09/15
10 - added missing test for key2hash, sign_has, verify_hash
11 - fixed build failures on VC6
812
913 0.015 2013/09/12
1014 - only documentation fixes
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
22 use strict;
33 use warnings ;
44
5 our $VERSION = '0.015';
5 our $VERSION = '0.016';
66
77 require XSLoader;
88 XSLoader::load('CryptX', $VERSION);
6262
6363 SV*
6464 key2hash(Crypt::PK::DH self)
65 INIT:
65 PREINIT:
6666 HV *rv_hash;
6767 long siz;
6868 unsigned char buf[20001];
7070
7171 SV*
7272 key2hash(Crypt::PK::DSA self)
73 INIT:
73 PREINIT:
7474 HV *rv_hash;
7575 long siz;
7676 unsigned char buf[20001];
7979
8080 SV*
8181 key2hash(Crypt::PK::ECC self)
82 INIT:
82 PREINIT:
8383 HV *rv_hash;
8484 long siz;
8585 unsigned char buf[20001];
6363
6464 SV*
6565 key2hash(Crypt::PK::RSA self)
66 INIT:
66 PREINIT:
6767 HV *rv_hash;
6868 long siz;
6969 unsigned char buf[20001];
(No changes)
(No changes)
(No changes)
33 unsigned char *out, unsigned long *outlen);
44
55 int base64_decode(const unsigned char *in, unsigned long len,
6 unsigned char *out, unsigned long *outlen);
7
8 int base64url_encode(const unsigned char *in, unsigned long len,
9 unsigned char *out, unsigned long *outlen);
10
11 int base64url_decode(const unsigned char *in, unsigned long len,
612 unsigned char *out, unsigned long *outlen);
713 #endif
814
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
11 use warnings;
22 use Test::More;
33
4 use Crypt::PK::DH qw(dh_encrypt dh_decrypt dh_sign_message dh_verify_message dh_shared_secret);
4 use Crypt::PK::DH qw(dh_encrypt dh_decrypt dh_sign_message dh_verify_message dh_sign_hash dh_verify_hash dh_shared_secret);
55
66 {
77 my $k;
1010 ok($k, 'load cryptx_priv_dh1.bin');
1111 ok($k->is_private, 'is_private cryptx_priv_dh1.bin');
1212 is($k->size, 256, 'size');
13
13 is(uc($k->key2hash->{x}), 'FBC1062F73B9A17BB8473A2F5A074911FA7F20D28FBF5D7F4DAF58016CE03A391BA57CB80067EB2D59AD1AA66869F5F37A1B57D440428F67881085F7C1484FADC3A54E39703CE679068417269651DD3438EDBF7827A09419F88A326B76EF04D81145D87D7D2DCF1B24902202B971BBF2EEF956A1EA1A88770097B94C859AE4F06DDDEB9ED31084004815F97D4F6F74C791CF1EC1836013DF835B653E8704981D52FF2323F7AFE22915B82CBA7EBF0558ACA6A182A6F3D631B843B72137D4E5B07603A7517F6768B375FC6C38F7B767C63E5A3DD99CD9EA0992C236EB827EAD4E877430F260020E64CBA26DAA8DEEF5D216C11941C48F76FE2B097BB5D504FBCF', 'key2hash');
14
1415 $k = Crypt::PK::DH->new('t/data/cryptx_priv_dh2.bin');
1516 ok($k, 'load cryptx_priv_dh2.bin');
1617 ok($k->is_private, 'is_private cryptx_priv_dh2.bin');
3637 is($pt, "secret message", 'decrypt');
3738
3839 my $sig = $pr1->sign_message("message");
39 ok(length $sig > 60, 'sign ' . length($sig));
40 ok($pu1->verify_message($sig, "message"), 'verify');
40 ok(length $sig > 60, 'sign_message ' . length($sig));
41 ok($pu1->verify_message($sig, "message"), 'verify_message');
42
43 my $hash = pack("H*","04624fae618e9ad0c5e479f62e1420c71fff34dd");
44 $sig = $pr1->sign_hash($hash, 'SHA1');
45 ok(length $sig > 60, 'sign_hash ' . length($sig));
46 ok($pu1->verify_hash($sig, $hash, 'SHA1'), 'verify_hash');
4147
4248 my $pr2 = Crypt::PK::DH->new;
4349 $pr2->import_key('t/data/cryptx_priv_dh2.bin');
6672 my $sig = dh_sign_message('t/data/cryptx_priv_dh1.bin', 'test string');
6773 ok($sig, 'dh_sign_message');
6874 ok(dh_verify_message('t/data/cryptx_pub_dh1.bin', $sig, 'test string'), 'dh_verify_message');
69
75 my $hash = pack("H*","04624fae618e9ad0c5e479f62e1420c71fff34dd");
76 $sig = dh_sign_hash('t/data/cryptx_priv_dh1.bin', $hash, 'SHA1');
77 ok($sig, 'dh_sign_hash');
78 ok(dh_verify_hash('t/data/cryptx_pub_dh1.bin', $sig, $hash, 'SHA1'), 'dh_verify_hash');
79
7080 my $ss1 = dh_shared_secret('t/data/cryptx_priv_dh1.bin', 't/data/cryptx_pub_dh2.bin');
7181 my $ss2 = dh_shared_secret('t/data/cryptx_priv_dh2.bin', 't/data/cryptx_pub_dh1.bin');
7282 is(unpack("H*",$ss1), unpack("H*",$ss2), 'shared_secret');
11 use warnings;
22 use Test::More;
33
4 use Crypt::PK::DSA qw(dsa_encrypt dsa_decrypt dsa_sign_message dsa_verify_message);
4 use Crypt::PK::DSA qw(dsa_encrypt dsa_decrypt dsa_sign_message dsa_verify_message dsa_sign_hash dsa_verify_hash);
55
66 {
77 my $k;
1010 ok($k, 'load cryptx_priv_dsa1.der');
1111 ok($k->is_private, 'is_private cryptx_priv_dsa1.der');
1212 is($k->size, 256, 'size');
13 is(uc($k->key2hash->{x}), '6C801901AC74E2DC714D75A9F6969483CF0239D142AB7E3F329ED8D49E07', 'key2hash');
1314
1415 $k = Crypt::PK::DSA->new('t/data/cryptx_priv_dsa2.der');
1516 ok($k, 'load cryptx_priv_dsa2.der');
6869 is($pt, "secret message", 'decrypt');
6970
7071 my $sig = $pr1->sign_message("message");
71 ok(length $sig > 60, 'sign ' . length($sig));
72 ok($pu1->verify_message($sig, "message"), 'verify');
72 ok(length $sig > 60, 'sign_message ' . length($sig));
73 ok($pu1->verify_message($sig, "message"), 'verify_message');
74
75 my $hash = pack("H*","04624fae618e9ad0c5e479f62e1420c71fff34dd");
76 $sig = $pr1->sign_hash($hash, 'SHA1');
77 ok(length $sig > 60, 'sign_hash ' . length($sig));
78 ok($pu1->verify_hash($sig, $hash, 'SHA1'), 'verify_hash');
7379
7480 my $pr2 = Crypt::PK::DSA->new;
7581 $pr2->import_key('t/data/cryptx_priv_dsa2.der');
100106 my $sig = dsa_sign_message('t/data/cryptx_priv_dsa1.der', 'test string');
101107 ok($sig, 'dsa_sign_message');
102108 ok(dsa_verify_message('t/data/cryptx_pub_dsa1.der', $sig, 'test string'), 'dsa_verify_message');
109 my $hash = pack("H*","04624fae618e9ad0c5e479f62e1420c71fff34dd");
110 $sig = dsa_sign_hash('t/data/cryptx_priv_dsa1.der', $hash, 'SHA1');
111 ok($sig, 'dsa_sign_hash');
112 ok(dsa_verify_hash('t/data/cryptx_pub_dsa1.der', $sig, $hash, 'SHA1'), 'dsa_verify_hash');
103113 }
104114
105115 done_testing;
11 use warnings;
22 use Test::More;
33
4 use Crypt::PK::ECC qw(ecc_encrypt ecc_decrypt ecc_sign_message ecc_verify_message ecc_shared_secret);
4 use Crypt::PK::ECC qw(ecc_encrypt ecc_decrypt ecc_sign_message ecc_verify_message ecc_sign_hash ecc_verify_hash ecc_shared_secret);
55
66 {
77 my $k;
1010 ok($k, 'load cryptx_priv_ecc1.der');
1111 ok($k->is_private, 'is_private cryptx_priv_ecc1.der');
1212 is($k->size, 32, 'size');
13 is(uc($k->key2hash->{pub_x}), 'AB53ED5D16CE550BAAF16BA4F161332AAD56D63790629C27871ED515D4FC229C', 'key2hash');
1314
1415 $k = Crypt::PK::ECC->new('t/data/cryptx_priv_ecc2.der');
1516 ok($k, 'load cryptx_priv_ecc2.der');
5253 is($pt, "secret message", 'decrypt');
5354
5455 my $sig = $pr1->sign_message("message");
55 ok(length $sig > 60, 'sign ' . length($sig));
56 ok($pu1->verify_message($sig, "message"), 'verify');
56 ok(length $sig > 60, 'sign_message ' . length($sig));
57 ok($pu1->verify_message($sig, "message"), 'verify_message');
58
59 my $hash = pack("H*","04624fae618e9ad0c5e479f62e1420c71fff34dd");
60 $sig = $pr1->sign_hash($hash, 'SHA1');
61 ok(length $sig > 60, 'sign_hash ' . length($sig));
62 ok($pu1->verify_hash($sig, $hash, 'SHA1'), 'verify_hash');
5763
5864 my $pr2 = Crypt::PK::ECC->new;
5965 $pr2->import_key('t/data/cryptx_priv_ecc2.der');
8490 my $sig = ecc_sign_message('t/data/cryptx_priv_ecc1.der', 'test string');
8591 ok($sig, 'ecc_sign_message');
8692 ok(ecc_verify_message('t/data/cryptx_pub_ecc1.der', $sig, 'test string'), 'ecc_verify_message');
93 my $hash = pack("H*","04624fae618e9ad0c5e479f62e1420c71fff34dd");
94 $sig = ecc_sign_hash('t/data/cryptx_priv_ecc1.der', $hash, 'SHA1');
95 ok($sig, 'ecc_sign_hash');
96 ok(ecc_verify_hash('t/data/cryptx_pub_ecc1.der', $sig, $hash, 'SHA1'), 'ecc_verify_hash');
8797
8898 my $ss1 = ecc_shared_secret('t/data/cryptx_priv_ecc1.der', 't/data/cryptx_pub_ecc2.der');
8999 my $ss2 = ecc_shared_secret('t/data/cryptx_priv_ecc2.der', 't/data/cryptx_pub_ecc1.der');
1010 ok($k, 'load cryptx_priv_rsa1.der');
1111 ok($k->is_private, 'is_private cryptx_priv_rsa1.der');
1212 is($k->size, 256, 'size');
13 is(uc($k->key2hash->{q}), 'FC07E46B163CAB6A83B8E467D169534B2077DCDEECAE8FCFC0C3AD2EBA2C4B02D2372369990C62A923D22E10719CED191E231C4832FB4896ECDC2E1F39688D226C7B46E35F93CBD83B1F56A30B6660E0BEE43E719C9F533EFB8A0618EC2D164CC0AE64F20AFB888C14EAFF8C8E889FF1227A31152B3E23432B40A11C6541BBE3', 'key2hash');
1314
1415 $k = Crypt::PK::RSA->new('t/data/cryptx_priv_rsa2.der');
1516 ok($k, 'load cryptx_priv_rsa2.der');
6869 is($pt, "secret message", 'decrypt');
6970
7071 my $sig = $pr1->sign_message("message");
71 ok(length $sig > 60, 'sign ' . length($sig));
72 ok($pu1->verify_message($sig, "message"), 'verify');
72 ok(length $sig > 60, 'sign_message ' . length($sig));
73 ok($pu1->verify_message($sig, "message"), 'verify_message');
74
75 my $hash = pack("H*","04624fae618e9ad0c5e479f62e1420c71fff34dd");
76 $sig = $pr1->sign_hash($hash, 'SHA1');
77 ok(length $sig > 60, 'sign_hash ' . length($sig));
78 ok($pu1->verify_hash($sig, $hash, 'SHA1'), 'verify_hash');
7379 }
7480
7581 {
9197 my $sig = rsa_sign_message('t/data/cryptx_priv_rsa1.der', 'test string');
9298 ok($sig, 'rsa_sign_message');
9399 ok(rsa_verify_message('t/data/cryptx_pub_rsa1.der', $sig, 'test string'), 'rsa_verify_message');
100 my $hash = pack("H*","04624fae618e9ad0c5e479f62e1420c71fff34dd");
101 $sig = rsa_sign_hash('t/data/cryptx_priv_rsa1.der', $hash, 'SHA1');
102 ok($sig, 'rsa_sign_hash');
103 ok(rsa_verify_hash('t/data/cryptx_pub_rsa1.der', $sig, $hash, 'SHA1'), 'rsa_verify_hash');
94104 }
95105
96106 done_testing;
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)
(No changes)