Add the original source packages to maemo, source lenny
[dh-make-perl] / dev / i386 / libnet-ssleay-perl / libnet-ssleay-perl-1.35 / t / local / 05_passwd_cb.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Test::More tests => 13;
6 use File::Spec;
7 use Net::SSLeay;
8
9 Net::SSLeay::randomize();
10 Net::SSLeay::load_error_strings();
11 Net::SSLeay::add_ssl_algorithms();
12
13 my $key_pem = File::Spec->catfile('t', 'data', 'key.pem.e');
14 my $key_password = 'secret';
15 my $cb_1_calls = 0;
16 my $cb_2_calls = 0;
17 my $cb_3_calls = 0;
18
19 sub callback {
20     my ($rwflag, $userdata) = @_;
21
22     $cb_1_calls++;
23
24     is( $$userdata, $key_password, 'recieved userdata properly' );
25     return $$userdata;
26 }
27
28 sub callback2 {
29     my ($rwflag, $userdata) = @_;
30
31     $cb_2_calls++;
32
33     is( $$userdata, $key_password, 'recieved userdata properly' );
34     return $$userdata;
35 }
36
37 sub callback3 {
38     my ($rwflag, $userdata) = @_;
39
40     $cb_3_calls++;
41
42     is( $userdata, undef, 'recieved no userdata' );
43     return $key_password;
44 }
45
46 my $ctx = Net::SSLeay::CTX_new();
47 ok($ctx, 'CTX_new');
48
49 my $ctx_2 = Net::SSLeay::CTX_new();
50 ok($ctx, 'CTX_new');
51
52 my $ctx_3 = Net::SSLeay::CTX_new();
53 ok($ctx, 'CTX_new');
54
55 Net::SSLeay::CTX_set_default_passwd_cb($ctx, \&callback);
56 Net::SSLeay::CTX_set_default_passwd_cb_userdata($ctx, \$key_password);
57
58 Net::SSLeay::CTX_set_default_passwd_cb($ctx_2, \&callback2);
59 Net::SSLeay::CTX_set_default_passwd_cb_userdata($ctx_2, \$key_password);
60
61 Net::SSLeay::CTX_set_default_passwd_cb($ctx_3, \&callback3);
62
63 ok( Net::SSLeay::CTX_use_PrivateKey_file($ctx, $key_pem, &Net::SSLeay::FILETYPE_PEM),
64         'CTX_use_PrivateKey_file works with right passphrase and userdata' );
65
66 ok( Net::SSLeay::CTX_use_PrivateKey_file($ctx_2, $key_pem, &Net::SSLeay::FILETYPE_PEM),
67         'CTX_use_PrivateKey_file works with right passphrase and userdata' );
68
69 ok( Net::SSLeay::CTX_use_PrivateKey_file($ctx_3, $key_pem, &Net::SSLeay::FILETYPE_PEM),
70         'CTX_use_PrivateKey_file works with right passphrase and without userdata' );
71
72 ok( $cb_1_calls == 1
73     && $cb_2_calls == 1
74     && $cb_3_calls == 1,
75     'different cbs per ctx work' );
76
77 $key_password = \'incorrect';
78
79 ok( !Net::SSLeay::CTX_use_PrivateKey_file($ctx, $key_pem, &Net::SSLeay::FILETYPE_PEM),
80         'CTX_use_PrivateKey_file doesn\'t work with wrong passphrase' );
81
82 is($cb_1_calls, 2, 'callback called 2 times');