source: preprover/client.pl @ 19be896

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

version everything to 0.1.0

  • 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  => 'abac/0.1.0',
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 => '06df985dc065fc69b508f6afa8dd127cd29ccc62.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/Jelena_ID.pem';
44$ENV{HTTPS_KEY_FILE} = 'certs/Jelena_private.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.