1use strict; 2use warnings; 3 4# Core modules 5use Test::More tests => 7; 6use Test::Exception; 7use MIME::Base64; 8 9use utf8; 10use English; 11 12BEGIN { use_ok "OpenXPKI::Crypt::PKCS10" } 13 14my $csr = "-----BEGIN CERTIFICATE REQUEST----- 15MIIC2TCCAcECAQAwgZMxEzARBgoJkiaJk/IsZAEZFgNvcmcxGDAWBgoJkiaJk/Is 16ZAEZFghPcGVuWFBLSTEfMB0GCgmSJomT8ixkARkWD1Rlc3QgRGVwbG95bWVudDEY 17MBYGCgmSJomT8ixkARkWCEdhcmRlbmVyMScwEAYDVQQDDAlTeWx0ZXTDuHkwEwYK 18CZImiZPyLGQBAQwFTW9sdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB 19AQDeDsHKkzDYlv7BG8+J2ysFHXnJuLcX29Vf0noITOoP4hQYOJb8L7CocFmijknZ 202UxRqsADrUmhWiye9EieykuhvNC36VVzEcB5EuboYHPyVKgQhI3dA7XqvE1+U8Gs 21pvVufNP9Fe0tWRLleO+4Hl3e31QheaG0B9+AXo78vUYGNdEQFkWZxeWEdMuY/n+L 22MojnJzKhBYc/R1f+gSNDJHzPDA1mecCGyRl+Hz/5vEXdBfMY4KQUNQBmrt9tuD2X 23Hg8z0HEFRHAugR90hFf+KMBWPrTBZ5QpxQ6raXfDbjEeiBm1O05KYr0Fwk1xDnov 24zTPnTPFmbob+i9anynOrkFAHAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAKxYM 25YyiGoQ14rBbvm+x+c7ijdfF5dcClDQHw5icmg+Kd9qeQtF9Yvcgn6wjlpeJC0XXD 26tq3q5Fb/vAbfyqK3Q056M/CGojGcmWKHKtZsvGD3uFMkKaTy9DZ4BQqAbPHz6S3R 2735mbPC1j0CTj0HkKjzlsDB/RJk0fVwdP9equfzqFYV3aRXEa1JSSPgCkDcymm+Bf 28HxU5jx0BojRJPVB1pgTwjR3SHp0GZIblixHjkV7/ZXeXzuQtX/XCChMWFpqpjEpR 29Uc2JuR8ecxfLzS6Iz/njfO9qcfHoZXPW5sXputFAH1UBxYeuUwpEVKioqoGRZ2Jr 30X/jkJOJJjNm9VQ9+Zg== 31-----END CERTIFICATE REQUEST-----"; 32 33my $pkcs10; 34 35lives_and { $pkcs10 = OpenXPKI::Crypt::PKCS10->new($csr); ok $pkcs10 } "new instance"; 36 37is $pkcs10->get_subject_key_id, "51:8B:77:CE:BD:AE:64:4D:7D:5E:56:33:04:07:1A:9A:89:F8:EE:BE", "Subject Key ID"; 38is $pkcs10->get_subject, "UID=Molte,CN=Syltetøy,DC=Gardener,DC=Test Deployment,DC=OpenXPKI,DC=org", "Subject"; 39is $pkcs10->get_transaction_id, "c8a70ecaa1882ae6ac57bff0e4fb9d44d5b75911", "Transaction ID"; 40is $pkcs10->get_digest, "1c3fa3b3781d63ddfca4f5264e2a9ac0d882efb7", "Digest"; 41 42my $csr_identifier = $pkcs10->get_csr_identifier; 43$csr_identifier =~ tr/-_/+\//; 44my @hex_bytes = unpack("(A2)*", $pkcs10->get_transaction_id); 45is pack('H2' x 20, @hex_bytes), decode_base64($csr_identifier), "decoded Transaction ID == decoded CSR Identifier"; 46 47# check performance 48if ($ENV{TEST_VERBOSE}) { 49 note "TEST_VERBOSE detected: starting performance test"; 50 my $items = 1000; 51 my $begin = [ Time::HiRes::gettimeofday() ]; 52 for (my $i=0; $i<$items; $i++) { 53 eval { $pkcs10 = OpenXPKI::Crypt::PKCS10->new($csr) }; 54 if ($EVAL_ERROR) { 55 if (my $exc = OpenXPKI::Exception->caught) { 56 diag "OpenXPKI::Exception => ".$exc->as_string."\n"; 57 } else { 58 diag "Error: ${EVAL_ERROR}\n"; 59 } 60 } 61 } 62 63 my $time_spent = Time::HiRes::tv_interval( $begin, [Time::HiRes::gettimeofday()]); 64 my $csr_per_s = int($items / $time_spent); 65 note "- $csr_per_s CSRs/second (minimum should be 100 per second)"; 66} 67 681; 69