summaryrefslogtreecommitdiff
path: root/tests/nist-pkits/build-chain
blob: f595b230931df4ef0f313684bd1f41053dd36bb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/perl

use strict;

my $certdir = $ARGV[0];
my $certfile = $ARGV[1];
my $aki;
my $info;
my $list;

if (! -f "${certdir}/certinfo.txt") {
    system("for i in '${certdir}'/*.crt; do echo -n \$i:; certtool --inder -i < \$i|grep 'Subject Key Id' -A 1|tail -1; done > '${certdir}/certinfo.txt'");
}

do {
    print "Parsing ${certdir}/${certfile}...\n";

    $info = `certtool --inder -i < '${certdir}/${certfile}'`;

    print "${info}";

    if (${info} =~ m,Authority Key Identifier.*:\n[\t ]*([a-z0-9]+),m) {
        $aki = $1;
    } else {
        die "Could not find AKI";
    }

    print "Finding AKI ${aki}...\n";

    $list = `cat '${certdir}/certinfo.txt' | grep '${aki}'`;
    if ($list =~m,.*/(.*):.*,) {
        $list = $1;
    } else {
        die "Could not find issuer";
    }
    $certfile = ${list};
} while (1);