1use strict;
2use warnings;
3
4use Test::More;
5
6plan tests => 8;
7
8TODO: {
9    todo_skip 'See Issue #188', 8;
10
11use English;
12
13use OpenXPKI::Crypto::TokenManager;
14
15our $cache;
16our $cacert;
17eval `cat t/25_crypto/common.pl`;
18
19is($EVAL_ERROR, '', 'common.pl evaluated correctly');
20
21SKIP: {
22    skip 'crypt init failed', 7 if $EVAL_ERROR;
23
24
25my $mgmt = OpenXPKI::Crypto::TokenManager->new;
26ok ($mgmt, 'Create OpenXPKI::Crypto::TokenManager instance');
27
28my $token = $mgmt->get_token ({
29   TYPE => 'certsign',
30   NAME => 'test-ca',
31   CERTIFICATE => {
32        DATA => $cacert,
33        IDENTIFIER => 'ignored',
34   }
35});
36
37ok (defined $token, 'Parameter checks for get_token');
38
39open my $CACERT1, '<', 't/25_crypto/test-ca/cacert.pem';
40my $cacert1 = do {
41    local $INPUT_RECORD_SEPARATOR;
42    <$CACERT1>;
43};
44close($CACERT1);
45ok($cacert1, 'Read in CA certificate 1');
46
47open my $CERT, '<', 't/25_crypto/test-ca/cert.pem';
48my $cert = do {
49    local $INPUT_RECORD_SEPARATOR;
50    <$CERT>;
51};
52ok($cert, 'Read in end-entity certificate');
53
54my $result = $token->command({
55    COMMAND            => 'is_issuer',
56    CERT               => $cert,
57    'POTENTIAL_ISSUER' => $cacert1,
58});
59
60ok($result, 'end-entity certificate is issued by CA 1');
61
62$result = $token->command({
63    COMMAND            => 'is_issuer',
64    CERT               => $cacert1,
65    'POTENTIAL_ISSUER' => $cert,
66});
67
68ok(! $result, 'CA 1 is not issued by end-entity cert');
69
70$result = $token->command({
71    COMMAND            => 'is_issuer',
72    CERT               => $cacert1,
73    'POTENTIAL_ISSUER' => $cacert1,
74});
75
76ok($result, 'CA 1 is self-signed');
77
78}
79}
801;
81