Add ARM files
[dh-make-perl] / dev / arm / libnet-ssleay-perl / libnet-ssleay-perl-1.35 / debian / libnet-ssleay-perl / usr / lib / perl5 / auto / Net / SSLeay / https_cat.al
diff --git a/dev/arm/libnet-ssleay-perl/libnet-ssleay-perl-1.35/debian/libnet-ssleay-perl/usr/lib/perl5/auto/Net/SSLeay/https_cat.al b/dev/arm/libnet-ssleay-perl/libnet-ssleay-perl-1.35/debian/libnet-ssleay-perl/usr/lib/perl5/auto/Net/SSLeay/https_cat.al
new file mode 100644 (file)
index 0000000..c6a3080
--- /dev/null
@@ -0,0 +1,97 @@
+# NOTE: Derived from blib/lib/Net/SSLeay.pm.
+# Changes made here will be lost when autosplit is run again.
+# See AutoSplit.pm.
+package Net::SSLeay;
+
+#line 2296 "blib/lib/Net/SSLeay.pm (autosplit into blib/lib/auto/Net/SSLeay/https_cat.al)"
+###
+### Basic request - response primitive, this is different from sslcat
+###                 because this does not shutdown the connection.
+###
+
+sub https_cat { # address, port, message --> returns reply / (reply,errs,cert)
+    my ($dest_serv, $port, $out_message, $crt_path, $key_path) = @_;
+    my ($ctx, $ssl, $got, $errs, $written);
+    
+    ($got, $errs) = open_proxy_tcp_connection($dest_serv, $port);
+    return (wantarray ? (undef, $errs) : undef) unless $got;
+           
+    ### Do SSL negotiation stuff
+           
+    warn "Creating SSL $ssl_version context...\n" if $trace>2;
+    load_error_strings();         # Some bloat, but I'm after ease of use
+    SSLeay_add_ssl_algorithms();  # and debuggability.
+    randomize();
+
+    $ctx = new_x_ctx();
+    goto cleanup2 if $errs = print_errs('CTX_new') or !$ctx;
+
+    CTX_set_options($ctx, &OP_ALL);
+    goto cleanup2 if $errs = print_errs('CTX_set_options');
+    
+    warn "Cert `$crt_path' given without key" if $crt_path && !$key_path;
+    set_cert_and_key($ctx, $crt_path, $key_path) if $crt_path;
+    
+    warn "Creating SSL connection (context was '$ctx')...\n" if $trace>2;
+    $ssl = new($ctx);
+    goto cleanup if $errs = print_errs('SSL_new') or !$ssl;
+    
+    warn "Setting fd (ctx $ctx, con $ssl)...\n" if $trace>2;
+    set_fd($ssl, fileno(SSLCAT_S));
+    goto cleanup if $errs = print_errs('set_fd');
+    
+    warn "Entering SSL negotiation phase...\n" if $trace>2;
+    
+    if ($trace>2) {
+       my $i = 0;
+       my $p = '';
+       my $cipher_list = 'Cipher list: ';
+       $p=Net::SSLeay::get_cipher_list($ssl,$i);
+       $cipher_list .= $p if $p;
+       do {
+           $i++;
+           $cipher_list .= ', ' . $p if $p;
+           $p=Net::SSLeay::get_cipher_list($ssl,$i);
+       } while $p;
+       $cipher_list .= '\n';
+       warn $cipher_list;
+    }
+
+    $got = Net::SSLeay::connect($ssl);
+    warn "SSLeay connect failed" if $trace>2 && $got==0;
+    goto cleanup if $errs = print_errs('SSL_connect');
+    
+    my $server_cert = get_peer_certificate($ssl);
+    print_errs('get_peer_certificate');
+    if ($trace>1) {        
+       warn "Cipher `" . get_cipher($ssl) . "'\n";
+       print_errs('get_ciper');
+       warn dump_peer_certificate($ssl);
+    }
+    
+    ### Connected. Exchange some data (doing repeated tries if necessary).
+        
+    warn "https_cat $$: sending " . blength($out_message) . " bytes...\n"
+       if $trace==3;
+    warn "https_cat $$: sending `$out_message' (" . blength($out_message)
+       . " bytes)...\n" if $trace>3;
+    ($written, $errs) = ssl_write_all($ssl, $out_message);
+    goto cleanup unless $written;
+    
+    warn "waiting for reply...\n" if $trace>2;
+    ($got, $errs) = ssl_read_all($ssl);
+    warn "Got " . blength($got) . " bytes.\n" if $trace==3;
+    warn "Got `$got' (" . blength($got) . " bytes)\n" if $trace>3;
+
+cleanup:
+    free ($ssl);
+    $errs .= print_errs('SSL_free');
+cleanup2:
+    CTX_free ($ctx);
+    $errs .= print_errs('CTX_free');
+    close SSLCAT_S;    
+    return wantarray ? ($got, $errs, $server_cert) : $got;
+}
+
+# end of Net::SSLeay::https_cat
+1;