1This test data was produced by creating a self-signed EC cert using OpenSSL, 2and then extracting the relevant fields. 3 4It uses RSA PKCS#1 v1.5 with SHA-256 and a 1024-bit key. 5 6(1) Generate self-signed certificate 7 8 openssl genrsa -out rsa_key.pem 1024 9 openssl req -new -key rsa_key.pem -x509 -nodes -days 365 -out cert.pem 10 11(2) Extract public key 12 13 openssl x509 -in cert.pem -pubkey -noout > pubkey.pem 14 cat pubkey.pem 15 16(3) Extract signed data (tbsCertificate) 17 18 openssl asn1parse -in cert.pem -out tbs -noout -strparse 4 19 base64 tbs 20 21(4) Extract signature algorithm 22 23 # Find the offset of the signature algorithm near the end (491 in this case) 24 openssl asn1parse -in cert.pem 25 26 openssl asn1parse -in cert.pem -out alg -noout -strparse 491 27 base64 alg 28 29(5) Extract the signature 30 31 # Find the final offset of BIT STRING (506 in this case) 32 openssl asn1parse -in cert.pem 33 34 openssl asn1parse -in cert.pem -out sig -noout -strparse 506 35 base64 sig 36 37 38$ openssl asn1parse -i < [PUBLIC KEY] 39 0:d=0 hl=3 l= 159 cons: SEQUENCE 40 3:d=1 hl=2 l= 13 cons: SEQUENCE 41 5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption 42 16:d=2 hl=2 l= 0 prim: NULL 43 18:d=1 hl=3 l= 141 prim: BIT STRING 44-----BEGIN PUBLIC KEY----- 45MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp1JnY2zQIQRQPz7ybs6mUjHT3 46hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA0agnwAjfB/ow4EH+3HEYV52q 47pxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/cn318EhhQIDAQAB 48-----END PUBLIC KEY----- 49 50$ openssl asn1parse -i < [ALGORITHM] 51 0:d=0 hl=2 l= 13 cons: SEQUENCE 52 2:d=1 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption 53 13:d=1 hl=2 l= 0 prim: NULL 54-----BEGIN ALGORITHM----- 55MA0GCSqGSIb3DQEBCwUA 56-----END ALGORITHM----- 57 58-----BEGIN DATA----- 59MIIB46ADAgECAgkA3l4tFOVii0UwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQVUxEzARBgN 60VBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1 61UEAwwGTXkga2V5MB4XDTE1MDcwMjE3MDYzOVoXDTE2MDcwMTE3MDYzOVowVjELMAkGA1UEBhMCQ 62VUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0 63ZDEPMA0GA1UEAwwGTXkga2V5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqR+B2Mj1irNp 641JnY2zQIQRQPz7ybs6mUjHT3hf5APyaig2u6fBPThqxssgg0YviqIj/70hVK/JXcqP1zgR5AhsA 650agnwAjfB/ow4EH+3HEYV52qpxN98pUxC+1l2hgVtn8xCS/JGyjK+6dv+lZw3ixJoX2RjVtdJ4/ 66cn318EhhQIDAQABo1AwTjAdBgNVHQ4EFgQUzQBVKTEknyLndWd2HTsBdTKvyikwHwYDVR0jBBgw 67FoAUzQBVKTEknyLndWd2HTsBdTKvyikwDAYDVR0TBAUwAwEB/w== 68-----END DATA----- 69 70$ openssl asn1parse -i < [SIGNATURE] 71 0:d=0 hl=3 l= 129 prim: BIT STRING 72-----BEGIN SIGNATURE----- 73A4GBADrHSmFSJw/Gv7hs5PNzpaJwAri/sitarIZfzN/SjR+n8L8yeTEoiDb1+BkxlFvXvPHTaOK 74oO3WlslNNOxh1W5/JkYYGOUkCcyIjnln6qS560imcr3VNjomT/M8M2Iss+rJiKau1TRuaP7H8i6 75+Gqf3saGdr8/LnvFAdNQvkalQt 76-----END SIGNATURE----- 77