| OLD | NEW |
| 1 This test data was produced by creating a self-signed EC cert using OpenSSL, | 1 This test data was produced by creating a self-signed EC cert using OpenSSL, |
| 2 and then extracting the relevant fields. | 2 and then extracting the relevant fields. |
| 3 | 3 |
| 4 It uses ECDSA with curve secp384r1 an SHA-256. | 4 It uses ECDSA with curve secp384r1 an SHA-256. |
| 5 | 5 |
| 6 (1) Generate self-signed certificate | 6 (1) Generate self-signed certificate |
| 7 | 7 |
| 8 openssl ecparam -out ec_key.pem -name secp384r1 -genkey | 8 openssl ecparam -out ec_key.pem -name secp384r1 -genkey |
| 9 openssl req -new -key ec_key.pem -x509 -nodes -days 365 -out cert.pem | 9 openssl req -new -key ec_key.pem -x509 -nodes -days 365 -out cert.pem |
| 10 | 10 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 | 28 |
| 29 (5) Extract the signature | 29 (5) Extract the signature |
| 30 | 30 |
| 31 # Find the final offset of BIT STRING (508 in this case) | 31 # Find the final offset of BIT STRING (508 in this case) |
| 32 openssl asn1parse -in cert.pem | 32 openssl asn1parse -in cert.pem |
| 33 | 33 |
| 34 openssl asn1parse -in cert.pem -out sig -noout -strparse 508 | 34 openssl asn1parse -in cert.pem -out sig -noout -strparse 508 |
| 35 base64 sig | 35 base64 sig |
| 36 | 36 |
| 37 | 37 |
| 38 | |
| 39 -----BEGIN PUBLIC KEY----- | |
| 40 MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEXFhBi+WKXuxeK9yCbC9jqEchwjCNsQ4RXAsJ07oHZ+Q | |
| 41 qz55cNIY5BAhcQ0QYY5jv9BimGL9SuhUuOSuS3Pn9rrsIFGcFsihy4kDr8rq5+7RbN8bV057gW5 | |
| 42 emYjLtvDsQ | |
| 43 -----END PUBLIC KEY----- | |
| 44 | |
| 45 $ openssl asn1parse -i < [PUBLIC KEY] | 38 $ openssl asn1parse -i < [PUBLIC KEY] |
| 46 0:d=0 hl=2 l= 118 cons: SEQUENCE | 39 0:d=0 hl=2 l= 118 cons: SEQUENCE |
| 47 2:d=1 hl=2 l= 16 cons: SEQUENCE | 40 2:d=1 hl=2 l= 16 cons: SEQUENCE |
| 48 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey | 41 4:d=2 hl=2 l= 7 prim: OBJECT :id-ecPublicKey |
| 49 13:d=2 hl=2 l= 5 prim: OBJECT :secp384r1 | 42 13:d=2 hl=2 l= 5 prim: OBJECT :secp384r1 |
| 50 20:d=1 hl=2 l= 98 prim: BIT STRING | 43 20:d=1 hl=2 l= 98 prim: BIT STRING |
| 44 -----BEGIN PUBLIC KEY----- |
| 45 MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEXFhBi+WKXuxeK9yCbC9jqEchwjCNsQ4RXAsJ07oHZ+Q |
| 46 qz55cNIY5BAhcQ0QYY5jv9BimGL9SuhUuOSuS3Pn9rrsIFGcFsihy4kDr8rq5+7RbN8bV057gW5 |
| 47 emYjLtvDsQ |
| 48 -----END PUBLIC KEY----- |
| 51 | 49 |
| 52 | 50 $ openssl asn1parse -i < [ALGORITHM] |
| 53 | 51 0:d=0 hl=2 l= 10 cons: SEQUENCE |
| 52 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 |
| 54 -----BEGIN ALGORITHM----- | 53 -----BEGIN ALGORITHM----- |
| 55 MAoGCCqGSM49BAMC | 54 MAoGCCqGSM49BAMC |
| 56 -----END ALGORITHM----- | 55 -----END ALGORITHM----- |
| 57 | 56 |
| 58 $ openssl asn1parse -i < [ALGORITHM] | |
| 59 0:d=0 hl=2 l= 10 cons: SEQUENCE | |
| 60 2:d=1 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256 | |
| 61 | |
| 62 | |
| 63 | |
| 64 -----BEGIN DATA----- | 57 -----BEGIN DATA----- |
| 65 MIIB6KADAgECAgkAtUVxft6/Vc0wCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCQVUxEzARBgNVBAg | 58 MIIB6KADAgECAgkAtUVxft6/Vc0wCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCQVUxEzARBgNVBAg |
| 66 MClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEMMAoGA1UEAw | 59 MClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEMMAoGA1UEAw |
| 67 wDYWhhMRowGAYJKoZIhvcNAQkBFgtzdXBAZm9vLmNvbTAeFw0xNTA3MDIwMDM4MTRaFw0xNjA3M | 60 wDYWhhMRowGAYJKoZIhvcNAQkBFgtzdXBAZm9vLmNvbTAeFw0xNTA3MDIwMDM4MTRaFw0xNjA3M |
| 68 DEwMDM4MTRaMG8xCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ | 61 DEwMDM4MTRaMG8xCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJ |
| 69 bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDDAKBgNVBAMMA2FoYTEaMBgGCSqGSIb3DQEJARYLc3V | 62 bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDDAKBgNVBAMMA2FoYTEaMBgGCSqGSIb3DQEJARYLc3V |
| 70 wQGZvby5jb20wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARcWEGL5Ype7F4r3IJsL2OoRyHCMI2xDh | 63 wQGZvby5jb20wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARcWEGL5Ype7F4r3IJsL2OoRyHCMI2xDh |
| 71 FcCwnTugdn5CrPnlw0hjkECFxDRBhjmO/0GKYYv1K6FS45K5Lc+f2uuwgUZwWyKHLiQOvyurn7t | 64 FcCwnTugdn5CrPnlw0hjkECFxDRBhjmO/0GKYYv1K6FS45K5Lc+f2uuwgUZwWyKHLiQOvyurn7t |
| 72 Fs3xtXTnuBbl6ZiMu28OxCjUDBOMB0GA1UdDgQWBBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAfBgNV | 65 Fs3xtXTnuBbl6ZiMu28OxCjUDBOMB0GA1UdDgQWBBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAfBgNV |
| 73 HSMEGDAWgBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAMBgNVHRMEBTADAQH/ | 66 HSMEGDAWgBR6nDgtPalG2JvSlWzdGRCi/Cu7NjAMBgNVHRMEBTADAQH/ |
| 74 -----END DATA----- | 67 -----END DATA----- |
| 75 | 68 |
| 76 | 69 $ openssl asn1parse -i < [SIGNATURE] |
| 77 | 70 0:d=0 hl=2 l= 105 prim: BIT STRING |
| 78 -----BEGIN SIGNATURE----- | 71 -----BEGIN SIGNATURE----- |
| 79 A2kAMGYCMQCDwMSZVJZ8qThiNTV7VX57m8fdNnNS6cXIjRYoh4SozlYWmWGh87nhmJJCeD16jVM | 72 A2kAMGYCMQCDwMSZVJZ8qThiNTV7VX57m8fdNnNS6cXIjRYoh4SozlYWmWGh87nhmJJCeD16jVM |
| 80 CMQDkroAY8oNi8RxLUor+LozhhVgu24tu6lcp4MP8H3Zy8bBea5HerAd1AqJp3Ox7KDU= | 73 CMQDkroAY8oNi8RxLUor+LozhhVgu24tu6lcp4MP8H3Zy8bBea5HerAd1AqJp3Ox7KDU= |
| 81 -----END SIGNATURE----- | 74 -----END SIGNATURE----- |
| 82 | |
| 83 $ openssl asn1parse -i < [SIGNATURE] | |
| 84 0:d=0 hl=2 l= 105 prim: BIT STRING | |
| OLD | NEW |