App-CamelPKI

 view release on metacpan or  search on metacpan

lib/App/CamelPKI/Certificate.pm  view on Meta::CPAN


    try {
        App::CamelPKI::Certificate->parse(undef);
        fail;
    } catch App::CamelPKI::Error::Internal with {
        pass;
    };

	#TODO: verifier pourquoi ca marche pas
#    try {
#        App::CamelPKI::Certificate->parse(JSON::from_json("null"));
#        fail;
#    } catch App::CamelPKI::Error::Internal with {
#        pass;
#    };
};

use App::CamelPKI::Test qw(%test_entity_certs %test_public_keys
                      %test_rootca_certs
                     certificate_chain_ok);
test "equals" => sub {
    my ($cert1, $cert1too, $cert2) = map {
        App::CamelPKI::Certificate->parse($test_entity_certs{$_})
    } (qw(rsa1024 rsa1024 rsa2048));
    ok(! ($cert1 == $cert1too));
    ok($cert1->equals($cert1));
    ok($cert1->equals($cert1too));
    ok($cert2->equals($cert2));
    ok(! $cert1->equals($cert2));
};

test "load" => sub {
	my $tmpCert = My::Tests::Below->tempdir."/certtemp";
	write_file($tmpCert, $certificate);
	my $cert = App::CamelPKI::Certificate->load($tmpCert);
	ok($cert->isa('App::CamelPKI::Certificate'));
};

test "->get_public_key" => sub {
    my $cert = App::CamelPKI::Certificate->parse($test_entity_certs{rsa1024});
    my $pubkey = $cert->get_public_key();
    ok($pubkey->isa("App::CamelPKI::PublicKey"));
    is($pubkey->serialize(), $test_public_keys{rsa1024});
};


test "->get_subject_CN" => sub {
    my $cert = App::CamelPKI::Certificate->parse($test_entity_certs{rsa1024});
    is($cert->get_subject_CN, "John Doe");
};

test "REGRESSION: ->serialize() on a piece of PEM which match "
    . "an exact number of lines" => sub {
        my $der = MIME::Base64::decode_base64(<<"CERT");
MIIEGjCCAwKgAwIBAgIBEjANBgkqhkiG9w0BAQsFADCBuTEeMBwGA1UEChMVRWNs
YWlyIERpZ2l0YWwgQ2luZW1hMR4wHAYDVQQLExVFY2xhaXIgRGlnaXRhbCBDaW5l
bWExMTAvBgNVBAMTKC5BQyBvcGVyYXRpb25uZWxsZSBFY2xhaXIgRGlnaXRhbCBD
aW5lbWExRDBCBgNVBC4TOzgyOjk1OjgyOkE2OjBCOjE4OkQwOkM4OjhFOjZFOkZB
OjkwOkY5OkQ4OkQ5OjIwOjMzOkY2OjQ4Ojc4MB4XDTA3MDMyMTE2NDA0OFoXDTM3
MDMyMTE2MzkwMFowWDEfMB0GA1UECgwWRWNsYWlyRGlnaXRhbENpbmVtYS5mcjEQ
MA4GA1UECwwHV0FOIEVEQzEMMAoGA1UECwwDVlBOMRUwEwYDVQQDDAxtb25zaXRl
Mi5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCh/Y1Egj7uF+rp
hGe2I8TQ8o1aXQFfrrwzxfZGXxhRiiuF0sjxT0snjNdaevnh1ksIIniOiYRKHoZq
hyYyPBUdingCznyWAqvOgx/0kombATRtPOMEi9u0p37mo7PuQBqY3YC7s64xo50r
wf1Mqkz7hriNOwnOS0Ed0W4uKlgIzJlVJ8YbT+33SO43bWVMhqHzUYOHDSv4RRmw
H9vYp+bBXHuUiaqYX+EVtUD9MYjUHPl7Q0GMQdUQRIy4D9m4pbA2zXMmViu3+GbB
XC1V/oYQa5DvJJMOLNKbORwns9Kh8nYTcTiGypm3JsLEXly/n1gUHyucMb0Mr/t2
sGcM2yx3AgMBAAGjgYwwgYkwHwYDVR0jBBgwFoAUgpWCpgsY0MiObvqQ+djZIDP2
SHgwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU9HHTeTY+jbyeGljLQwAwLAU+DDMw
CwYDVR0PBAQDAgUgMBcGA1UdEQQQMA6CDG1vbnNpdGUyLmNvbTATBgNVHSUEDDAK
BggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEADuI5g6Zawq+xbX2oYBE5+Ao1
0ewhWRd9vhSgecO3ZAAf1BYOWqu4908vOHMjPgYhhWBhQEg6rLm6SLLW0KRinrKO
hnhAC23ZQIw4SopdCduj29XUYhdM4kPBZL3dFjb2T7HIv/ryMOzBgbNATJ/XCUSs
SRhLssYn+M2aulxU5qWBwTZfUfiXYQ0jMYJDzEbTr9Trg+02aqge/Cyln0FytZAN
HGDKZ/soQ6Sp0/+zlyrrM56UYr2eTHFMJ/RAlrYm/PGY7QRZZWI/eatY0VM6UOL5
TKd9GkPVZQqhI5fSziMr4gaO4MfgZ39Dp5JDk0V8VCO7TdQ8mB1pBTMfAo+rZA==
CERT

        App::CamelPKI::Certificate->parse($der, -format => "DER")
            ->get_serial;
        pass;
};

test "->parse_bundle()" => sub {
    my @certs = App::CamelPKI::Certificate->parse_bundle
   	($test_rootca_certs{rsa1024} . $test_entity_certs{rsa1024});
    is(scalar(@certs), 2);
    my ($cert0, $cert1) = @certs;
    certificate_chain_ok($cert1->serialize, [$cert0->serialize]);
};

=end internals

=cut



( run in 1.120 second using v1.01-cache-2.11-cpan-5a3173703d6 )