source: preprover/client.pl @ f7040d8

abac0-leakabac0-meicompt_changesgec13mei-idmei-rt0-nmei_rt0mei_rt2mei_rt2_fix_1meiyap-rt1meiyap1rt2tvf-new-xml
Last change on this file since f7040d8 was f7040d8, checked in by Mike Ryan <mikeryan@…>, 14 years ago

perl preprover

SSL key id differs from our (libabac) keyid

SSL: sha1(whole cert)
us: sha1(pub key)

  • Property mode set to 100755
File size: 1.5 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use Data::Dumper;
5use RPC::XML qw(smart_encode);
6use RPC::XML::ParserFactory;
7use LWP::UserAgent;
8use HTTP::Request;
9# use IO::Socket::SSL;
10
11use lib '../swig/perl';
12use ABAC;
13ABAC::libabac_init;
14
15use constant {
16    USER_AGENT  => 'libabac/0.1',
17};
18
19my ($keystore, $url) = @ARGV;
20die "Usage: $0 <keystore> <url>\n" unless defined $keystore && defined $url;
21
22# load the certificates
23my $context = ABAC::Context->new;
24$context->load_directory($keystore);
25
26# build the XML RPC request
27my $request = RPC::XML::request->new(
28    'abac.query',
29    smart_encode({
30        role => '3f1aca4c5911b345d81c5f1a77675dce13249d0c.fed_create',
31        credentials => [
32            map {{
33                attribute_cert  => RPC::XML::base64->new($_->attribute_cert),
34                issuer_cert     => RPC::XML::base64->new($_->issuer_cert),
35            }} @{$context->credentials}
36        ],
37    }),
38);
39
40# encode and send the HTTP POST
41my $request_body = $request->as_string;
42
43$ENV{HTTPS_CERT_FILE} = 'certs/mike-cert.pem';
44$ENV{HTTPS_KEY_FILE} = 'certs/mike-key.pem';
45
46my $ua = LWP::UserAgent->new;
47
48my $request = HTTP::Request->new(
49    'POST',
50    "https://$url/RPC2",
51);
52$request->header('User-Agent', USER_AGENT);
53$request->header('Content-Length', length $request_body);
54$request->content($request_body);
55
56my $response = $ua->request($request);
57if (!$response->is_success) {
58    die $response->status_line;
59}
60
61# decode the reply
62my $xmlrpc_response = RPC::XML::ParserFactory->new->parse($response->decoded_content);
63print Dumper $xmlrpc_response;
Note: See TracBrowser for help on using the repository browser.