Add ARM files
[dh-make-perl] / dev / arm / libnet-ssleay-perl / libnet-ssleay-perl-1.35 / t / local / 05_passwd_cb.t
diff --git a/dev/arm/libnet-ssleay-perl/libnet-ssleay-perl-1.35/t/local/05_passwd_cb.t b/dev/arm/libnet-ssleay-perl/libnet-ssleay-perl-1.35/t/local/05_passwd_cb.t
new file mode 100644 (file)
index 0000000..9b3bba2
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More tests => 13;
+use File::Spec;
+use Net::SSLeay;
+
+Net::SSLeay::randomize();
+Net::SSLeay::load_error_strings();
+Net::SSLeay::add_ssl_algorithms();
+
+my $key_pem = File::Spec->catfile('t', 'data', 'key.pem.e');
+my $key_password = 'secret';
+my $cb_1_calls = 0;
+my $cb_2_calls = 0;
+my $cb_3_calls = 0;
+
+sub callback {
+    my ($rwflag, $userdata) = @_;
+
+    $cb_1_calls++;
+
+    is( $$userdata, $key_password, 'recieved userdata properly' );
+    return $$userdata;
+}
+
+sub callback2 {
+    my ($rwflag, $userdata) = @_;
+
+    $cb_2_calls++;
+
+    is( $$userdata, $key_password, 'recieved userdata properly' );
+    return $$userdata;
+}
+
+sub callback3 {
+    my ($rwflag, $userdata) = @_;
+
+    $cb_3_calls++;
+
+    is( $userdata, undef, 'recieved no userdata' );
+    return $key_password;
+}
+
+my $ctx = Net::SSLeay::CTX_new();
+ok($ctx, 'CTX_new');
+
+my $ctx_2 = Net::SSLeay::CTX_new();
+ok($ctx, 'CTX_new');
+
+my $ctx_3 = Net::SSLeay::CTX_new();
+ok($ctx, 'CTX_new');
+
+Net::SSLeay::CTX_set_default_passwd_cb($ctx, \&callback);
+Net::SSLeay::CTX_set_default_passwd_cb_userdata($ctx, \$key_password);
+
+Net::SSLeay::CTX_set_default_passwd_cb($ctx_2, \&callback2);
+Net::SSLeay::CTX_set_default_passwd_cb_userdata($ctx_2, \$key_password);
+
+Net::SSLeay::CTX_set_default_passwd_cb($ctx_3, \&callback3);
+
+ok( Net::SSLeay::CTX_use_PrivateKey_file($ctx, $key_pem, &Net::SSLeay::FILETYPE_PEM),
+        'CTX_use_PrivateKey_file works with right passphrase and userdata' );
+
+ok( Net::SSLeay::CTX_use_PrivateKey_file($ctx_2, $key_pem, &Net::SSLeay::FILETYPE_PEM),
+        'CTX_use_PrivateKey_file works with right passphrase and userdata' );
+
+ok( Net::SSLeay::CTX_use_PrivateKey_file($ctx_3, $key_pem, &Net::SSLeay::FILETYPE_PEM),
+        'CTX_use_PrivateKey_file works with right passphrase and without userdata' );
+
+ok( $cb_1_calls == 1
+    && $cb_2_calls == 1
+    && $cb_3_calls == 1,
+    'different cbs per ctx work' );
+
+$key_password = \'incorrect';
+
+ok( !Net::SSLeay::CTX_use_PrivateKey_file($ctx, $key_pem, &Net::SSLeay::FILETYPE_PEM),
+        'CTX_use_PrivateKey_file doesn\'t work with wrong passphrase' );
+
+is($cb_1_calls, 2, 'callback called 2 times');