Appendix A: Test Vectors
This section holds test data which can be used to verify the correctness of a JCS implementation.
The
Sample Signature can be verified by the
public part of the following EC key in JWK
[RFC7517] format:
{
"kid": "20170101:mybank:p256",
"kty": "EC",
"crv": "P-256",
"x": "_gow8fcS3Dx9z6j57U5q8tunnRBdrgLU9A7CZTYCnqU",
"y": "bdfJGraBVL5aPj38TG4tHwxpU2VKwG1XBp0wQfCLOFQ",
"d": "4f5C3onScS-l9MmKlvIbOV_M3jcQ9qOd4RoYFVlJUIo"
}
The following signature object which uses a
keyId for identifying the public key can be verified with the
public part of the key above:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "ES256",
"keyId": "20170101:mybank:p256",
"value": "nJgDRESd3-Q5b5xEykEq1uLOe4MSkxLLTylkioC4j2-KG-qkovb9diSf83nsYKX1-wySf66OJSQKxaCr7CNWQg"
}
}
The following signature object uses the same key as in the previous example but featured in a certificate path:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "ES256",
"signerCertificate": {
"issuer": "CN=Payment Network Sub CA3,C=EU",
"serialNumber": "1494492396421",
"subject": "CN=mybank.com,2.5.4.5=#130434353031,C=FR"
},
"certificatePath": [
"MIIB-jCCAVmgAwIBAgIGAVv2sDuFMAwGCCqGSM49BAMEBQAwLzELMAkGA1UEBhMCRVUxIDAeBgNVBAMTF1BheW1lbnQgTmV0d29yay
BTdWIgQ0EzMB4XDTE3MDEwMTAwMDAwMFoXDTIyMDcxMDA5NTk1OVowMTELMAkGA1UEBhMCRlIxDTALBgNVBAUTBDQ1MDExEzARBgNVBAMTCm1
5YmFuay5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT-CjDx9xLcPH3PqPntTmry26edEF2uAtT0DsJlNgKepW3XyRq2gVS-Wj49_Exu
LR8MaVNlSsBtVwadMEHwizhUo10wWzAJBgNVHRMEAjAAMA4GA1UdDwEB_wQEAwID-DAdBgNVHQ4EFgQU0wnrn9RVBfR77HP_t09EZK6brIkwH
wYDVR0jBBgwFoAUE0a3d3rVWSNWEHUBQut53Ak0N4kwDAYIKoZIzj0EAwQFAAOBjAAwgYgCQgCoyPGjg0hdwpHkY2FYWjVpZROVjXYQTcFvrn
QpKdpiTblPka1y9I_F05zB66VYqijj0t281N92JPIuyHNvdVr3XgJCAVyXYUI16OruC-TtEG0mfxUGvLOxsy4z0XhfsD2q3mjzXKV_f8CJ1mj
xnyd1Suv4JnS17h1eSUTqSbA7LKcQoGDQ",
"MIIDtTCCAZ2gAwIBAgIBAzANBgkqhkiG9w0BAQ0FADAwMQswCQYDVQQGEwJVUzEhMB8GA1UEAxMYUGF5bWVudCBOZXR3b3JrIFJvb3
QgQ0ExMB4XDTE2MDcxMDEwMDAwMFoXDTI1MDcxMDA5NTk1OVowLzELMAkGA1UEBhMCRVUxIDAeBgNVBAMTF1BheW1lbnQgTmV0d29yayBTdWI
gQ0EzMIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAXt9fTiM4nZ9KPkzqOXrE1Ng7CthaAQ-m7DU1ULIfpK-n-vEsE1KqUhG5t_uqNpuBc3Dh
xsJ4V46EsE_6Q0IlFcAAS-p3J-1RBaKEo8eTqF8eC72GTiMuheictaAS9NT_IcsgEbXoNHwFbUxs0El2A-Boyh9BF_rja-XuQ-A1qgZ5_F-jY
zBhMA8GA1UdEwEB_wQFMAMBAf8wDgYDVR0PAQH_BAQDAgEGMB0GA1UdDgQWBBQTRrd3etVZI1YQdQFC63ncCTQ3iTAfBgNVHSMEGDAWgBQE9W
2T-nrW1SZqkrC0lUkcShmpvzANBgkqhkiG9w0BAQ0FAAOCAgEAbghYHRipnsMlY_unWECPIdDpqWlB4FvFtCKvPOdCTyu0HAVkN5foFEoecEu
qhtLpSrHmMkNIJh33IqbZx00NYqDJ4DHoyv8lia3-pApec43p6_2CrC3fYV9Z8RmTO9cP3TIbeHLDdxNNXoI7kKlLdGsk63m6Tyl7kafTEsV8
L8Loso_set0LwQPJJxBZJDnUGCauIEfLSGsLmDcW9oMPkUcSp2n5YwjTxFXOawZ5Rl04rS5KNgDaPyPT0FV-bI0ewRwzhn-_LDFLyhvlSltxE
kwLEZFRlezPwQRo_rp8jea6APPVBQSC-B8MNPl8V3Whs_fmmWD1rcIl7VOaKaIR9-lwi2na-lctIEFg2tf8o9PYPf7MVyQ2OgOYPmB1qOJ8UC
IOYJB6UxfZ-DTx4i3H4k3P-GcvGFWT5fg1DwapjrWkgEqS_ZXOQe3_r81-MSom2E-HcLjYQQhyoKy-GUzGvE21AQm9jBw3549HOCaT3FFTiE-
-aluX42HvuzAMIBAywnyQFK2g6o7F8-Ykne7aog3Q3oEMS6DzWVfs7TXZPW3sRz_UP54d3gyFezOjWlk-BhTPsFQ43340OuKFUH-D7n6Vr6sq
pAUov4GjRMcjeTzIfw_qWPUamLgTFBNZ4bDpDH9FALvq9MTGFxvERcAxhit94491sV8SHz-IgMHmDdE"
],
"value": "-g6ljSUV30G4XaX0NV5zYr5dwe5yXHE3aJphyCFEFNr4xRfmj_IDwkw3HLFUQ_Zbskn2xgJyLWuKJHTPWIDxXg"
}
}
EC key for verifying the subsequent object:
{
"kid": "20170101:mybank:p384",
"kty": "EC",
"crv": "P-384",
"x": "SxtEVg93j4L2bK7Q8qJDYo6xRvP3p3ptyqmQaYnZRH5Ube2T2RogGMl-HHZRTYMO",
"y": "Zu8b16lT-c5VstC4H9WA28LvcLleE6auP-A9Dr76uu8MI5YjOGH64MJZFswOX8Vz",
"d": "PWoaRCsLI8sGkKy9O6yTPx8f0lN6CAYu9jfmlI5YmW6XW9qc6Qd2hz6FsrsZ2cxd"
}
The following signature object can be verified by the
public part of the key above:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "ES512",
"publicKey": {
"kty": "EC",
"crv": "P-384",
"x": "SxtEVg93j4L2bK7Q8qJDYo6xRvP3p3ptyqmQaYnZRH5Ube2T2RogGMl-HHZRTYMO",
"y": "Zu8b16lT-c5VstC4H9WA28LvcLleE6auP-A9Dr76uu8MI5YjOGH64MJZFswOX8Vz"
},
"value": "mO0Ph8oBTl37waf8SOShct3X8jVmVLx-XjjdZuLd87upJzo0Ya2XFspgwS65MLM0xtjcmrOW4juXUJV79zHfndKSqnT6VX5
GyzW-EMZJylclQqyUkvNHV3Zf-iQnoJ4T"
}
}
The following signature object uses the same key as in the previous example but featured in a certificate path:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "ES512",
"signerCertificate": {
"issuer": "CN=Payment Network Sub CA3,C=EU",
"serialNumber": "1494492397640",
"subject": "CN=mybank.com,2.5.4.5=#130434353031,C=FR"
},
"certificatePath": [
"MIICFzCCAXagAwIBAgIGAVv2sEBIMAwGCCqGSM49BAMEBQAwLzELMAkGA1UEBhMCRVUxIDAeBgNVBAMTF1BheW1lbnQgTmV0d29yay
BTdWIgQ0EzMB4XDTE3MDEwMTAwMDAwMFoXDTIyMDcxMDA5NTk1OVowMTELMAkGA1UEBhMCRlIxDTALBgNVBAUTBDQ1MDExEzARBgNVBAMTCm1
5YmFuay5jb20wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARLG0RWD3ePgvZsrtDyokNijrFG8_enem3KqZBpidlEflRt7ZPZGiAYyX4cdlFNgw5m
7xvXqVP5zlWy0Lgf1YDbwu9wuV4Tpq4_4D0Ovvq67wwjliM4YfrgwlkWzA5fxXOjXTBbMAkGA1UdEwQCMAAwDgYDVR0PAQH_BAQDAgP4MB0GA
1UdDgQWBBTQO94DFLOKPXTXYE765IxdtV9LNTAfBgNVHSMEGDAWgBQTRrd3etVZI1YQdQFC63ncCTQ3iTAMBggqhkjOPQQDBAUAA4GMADCBiA
JCAdhQcR9-ejA0ZgCTd9_b94F3DtGoz9fM0G1L7D2F_mmpk7I2uBqat2tET8ESvL1A6JyGKcovXvd-1BCMqRwawKK6AkIB8sAGpJCoh1wTrTX
ETa4l4aZGoxnMK6-e1BWeCRZ1o08RxoZYVg0COyX2etAOGYoHDRkjUGHv9PMylFmt5ZyWg0E",
"MIIDtTCCAZ2gAwIBAgIBAzANBgkqhkiG9w0BAQ0FADAwMQswCQYDVQQGEwJVUzEhMB8GA1UEAxMYUGF5bWVudCBOZXR3b3JrIFJvb3
QgQ0ExMB4XDTE2MDcxMDEwMDAwMFoXDTI1MDcxMDA5NTk1OVowLzELMAkGA1UEBhMCRVUxIDAeBgNVBAMTF1BheW1lbnQgTmV0d29yayBTdWI
gQ0EzMIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAXt9fTiM4nZ9KPkzqOXrE1Ng7CthaAQ-m7DU1ULIfpK-n-vEsE1KqUhG5t_uqNpuBc3Dh
xsJ4V46EsE_6Q0IlFcAAS-p3J-1RBaKEo8eTqF8eC72GTiMuheictaAS9NT_IcsgEbXoNHwFbUxs0El2A-Boyh9BF_rja-XuQ-A1qgZ5_F-jY
zBhMA8GA1UdEwEB_wQFMAMBAf8wDgYDVR0PAQH_BAQDAgEGMB0GA1UdDgQWBBQTRrd3etVZI1YQdQFC63ncCTQ3iTAfBgNVHSMEGDAWgBQE9W
2T-nrW1SZqkrC0lUkcShmpvzANBgkqhkiG9w0BAQ0FAAOCAgEAbghYHRipnsMlY_unWECPIdDpqWlB4FvFtCKvPOdCTyu0HAVkN5foFEoecEu
qhtLpSrHmMkNIJh33IqbZx00NYqDJ4DHoyv8lia3-pApec43p6_2CrC3fYV9Z8RmTO9cP3TIbeHLDdxNNXoI7kKlLdGsk63m6Tyl7kafTEsV8
L8Loso_set0LwQPJJxBZJDnUGCauIEfLSGsLmDcW9oMPkUcSp2n5YwjTxFXOawZ5Rl04rS5KNgDaPyPT0FV-bI0ewRwzhn-_LDFLyhvlSltxE
kwLEZFRlezPwQRo_rp8jea6APPVBQSC-B8MNPl8V3Whs_fmmWD1rcIl7VOaKaIR9-lwi2na-lctIEFg2tf8o9PYPf7MVyQ2OgOYPmB1qOJ8UC
IOYJB6UxfZ-DTx4i3H4k3P-GcvGFWT5fg1DwapjrWkgEqS_ZXOQe3_r81-MSom2E-HcLjYQQhyoKy-GUzGvE21AQm9jBw3549HOCaT3FFTiE-
-aluX42HvuzAMIBAywnyQFK2g6o7F8-Ykne7aog3Q3oEMS6DzWVfs7TXZPW3sRz_UP54d3gyFezOjWlk-BhTPsFQ43340OuKFUH-D7n6Vr6sq
pAUov4GjRMcjeTzIfw_qWPUamLgTFBNZ4bDpDH9FALvq9MTGFxvERcAxhit94491sV8SHz-IgMHmDdE"
],
"value": "lGyVwh8CJN3cOz3C_meMQlVe62_uFCpLCh8PnOzki5r2QMI8JXc-eQhNMirrcV8VW09dQI93UsI5wJ4Avx_IUbCUsmnQGUu
vcJWA-EueHqqoG-cHarjkAnPKCtmlsygT"
}
}
EC key for verifying the subsequent object:
{
"kid": "20170101:mybank:p521",
"kty": "EC",
"crv": "P-521",
"x": "AKwELPGw-uyxNNMpqynB-71e-5GNMcLmFM0j0mbyVToRflwlWnXS-iAXxR_nOoWK426QoXlyNieyaWBQdwXrnKfj",
"y": "AIgLgTCaxgKc461uMwFZ04qdBaVa9Wgy8VLNiHrZkKYL3Q_qmLTa9TKQgRThuCpcqlZFnhMPrPLgb3ev6rqCt0GS",
"d": "AXfJ2R7ao8c2_gL9porCC1yR90w-R8MZ0HNjXcftOlkBD7njIFj7QAYlljJCkx7M3LJSeo5ha4Dg7mD0V1a_vhqr"
}
The following signature object can be verified by the
public part of the key above:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "ES512",
"publicKey": {
"kty": "EC",
"crv": "P-521",
"x": "AKwELPGw-uyxNNMpqynB-71e-5GNMcLmFM0j0mbyVToRflwlWnXS-iAXxR_nOoWK426QoXlyNieyaWBQdwXrnKfj",
"y": "AIgLgTCaxgKc461uMwFZ04qdBaVa9Wgy8VLNiHrZkKYL3Q_qmLTa9TKQgRThuCpcqlZFnhMPrPLgb3ev6rqCt0GS"
},
"value": "ACv1qHEjvXXDiz5DCm0eEKntHN71k73f7R8H3bTPHQJAimQfGWW_nwnQoQz28qEpzg8ULdNDKjzy4Z7CF7HAjkQeAB2-KA4
KTgWxaUO1_sWde8QNNUaqqa4yGUufncpaMquBSV2Lae48Tejelt0oBqcXCfBJUS3Z0kNz5CYgOxpMf1Ri"
}
}
The following signature object uses the same key as in the previous example but builds on that the key to use is
implicitly known since the object neither contains a
keyId, nor a
publicKey property:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "ES512",
"value": "AI80F7vVAmQi0noyKhOfmWf9aYYuOA4xlu4fOgQ9EcuE66J2hubfWTEpLHBbSgvvUXZUK4vSqE0cpDpYFjn3A31HADeaE7Q
53wXi5SBR9dq6Z6PjbmjWLjTvp7gW53CLGPtroqSuwzisV2A2E1KBgYpaoVFOCR6umjA4-IpYEKFuClEo"
}
}
The following signature object uses the same key as in the previous example but featured in a certificate path:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "ES512",
"signerCertificate": {
"issuer": "CN=Payment Network Sub CA3,C=EU",
"serialNumber": "1494492398843",
"subject": "CN=mybank.com,2.5.4.5=#130434353031,C=FR"
},
"certificatePath": [
"MIICPTCCAZygAwIBAgIGAVv2sET7MAwGCCqGSM49BAMEBQAwLzELMAkGA1UEBhMCRVUxIDAeBgNVBAMTF1BheW1lbnQgTmV0d29yay
BTdWIgQ0EzMB4XDTE3MDEwMTAwMDAwMFoXDTIyMDcxMDA5NTk1OVowMTELMAkGA1UEBhMCRlIxDTALBgNVBAUTBDQ1MDExEzARBgNVBAMTCm1
5YmFuay5jb20wgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABACsBCzxsPrssTTTKaspwfu9XvuRjTHC5hTNI9Jm8lU6EX5cJVp10vogF8Uf5zqF
iuNukKF5cjYnsmlgUHcF65yn4wCIC4EwmsYCnOOtbjMBWdOKnQWlWvVoMvFSzYh62ZCmC90P6pi02vUykIEU4bgqXKpWRZ4TD6zy4G93r-q6g
rdBkqNdMFswCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCA_gwHQYDVR0OBBYEFO8GeF_8KWXd_Pwd8Vl-tNegHY7tMB8GA1UdIwQYMBaAFBNGt3
d61VkjVhB1AULredwJNDeJMAwGCCqGSM49BAMEBQADgYwAMIGIAkIAuIYm8VQ0FHJm8ObcJ1qBc_O3wS8aJyFMT-ZcrdbJu05RcT70qgOEMLu
YdV7AoFelO0rC5VChV21nyTdkm_aefkECQgCL2hjiweKR8YSZvfWgmkQD3WYxLms7YvejhBUZD88MEIfcd__rsoB1GJiFMr9ML478Jvd-58D6
-GHvKIgQvcyo0w",
"MIIDtTCCAZ2gAwIBAgIBAzANBgkqhkiG9w0BAQ0FADAwMQswCQYDVQQGEwJVUzEhMB8GA1UEAxMYUGF5bWVudCBOZXR3b3JrIFJvb3
QgQ0ExMB4XDTE2MDcxMDEwMDAwMFoXDTI1MDcxMDA5NTk1OVowLzELMAkGA1UEBhMCRVUxIDAeBgNVBAMTF1BheW1lbnQgTmV0d29yayBTdWI
gQ0EzMIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAXt9fTiM4nZ9KPkzqOXrE1Ng7CthaAQ-m7DU1ULIfpK-n-vEsE1KqUhG5t_uqNpuBc3Dh
xsJ4V46EsE_6Q0IlFcAAS-p3J-1RBaKEo8eTqF8eC72GTiMuheictaAS9NT_IcsgEbXoNHwFbUxs0El2A-Boyh9BF_rja-XuQ-A1qgZ5_F-jY
zBhMA8GA1UdEwEB_wQFMAMBAf8wDgYDVR0PAQH_BAQDAgEGMB0GA1UdDgQWBBQTRrd3etVZI1YQdQFC63ncCTQ3iTAfBgNVHSMEGDAWgBQE9W
2T-nrW1SZqkrC0lUkcShmpvzANBgkqhkiG9w0BAQ0FAAOCAgEAbghYHRipnsMlY_unWECPIdDpqWlB4FvFtCKvPOdCTyu0HAVkN5foFEoecEu
qhtLpSrHmMkNIJh33IqbZx00NYqDJ4DHoyv8lia3-pApec43p6_2CrC3fYV9Z8RmTO9cP3TIbeHLDdxNNXoI7kKlLdGsk63m6Tyl7kafTEsV8
L8Loso_set0LwQPJJxBZJDnUGCauIEfLSGsLmDcW9oMPkUcSp2n5YwjTxFXOawZ5Rl04rS5KNgDaPyPT0FV-bI0ewRwzhn-_LDFLyhvlSltxE
kwLEZFRlezPwQRo_rp8jea6APPVBQSC-B8MNPl8V3Whs_fmmWD1rcIl7VOaKaIR9-lwi2na-lctIEFg2tf8o9PYPf7MVyQ2OgOYPmB1qOJ8UC
IOYJB6UxfZ-DTx4i3H4k3P-GcvGFWT5fg1DwapjrWkgEqS_ZXOQe3_r81-MSom2E-HcLjYQQhyoKy-GUzGvE21AQm9jBw3549HOCaT3FFTiE-
-aluX42HvuzAMIBAywnyQFK2g6o7F8-Ykne7aog3Q3oEMS6DzWVfs7TXZPW3sRz_UP54d3gyFezOjWlk-BhTPsFQ43340OuKFUH-D7n6Vr6sq
pAUov4GjRMcjeTzIfw_qWPUamLgTFBNZ4bDpDH9FALvq9MTGFxvERcAxhit94491sV8SHz-IgMHmDdE"
],
"value": "AQph0r2mvuffE3lxfJUt2XL6ZctNb1Z8TvM1qdweAUefLo7PIHJ77dv8xAhd3J-qF5_uwqfrjHTNxX5dUEiDyvzJAK7oPv3
PQwcGgd7N-9K403BrVnyYtCg0UIISAl6cANoeXMWe8l-ipRF36GUhJmVGN58mWF9xlV5S6_78HUo8HwnO"
}
}
RSA key for verifying the subsequent object:
{
"kid": "20170101:mybank:r2048",
"kty": "RSA",
"n": "oBq8_RJIJF9h2dm4r1kjBwv_W-G_YM-clG7GYwGWih3Y22HZnBmMn2Iqf4uXiwty9lICxrdBNcU6b79DY_GmNbA5j16dsuBIqZSq8
yMtXfDpC8OS7Dy6OxjFyMZrA4IEqqjvDEmJC5aXoaBD3exECDvsRgB18jNoKyq2CDWgg22wuLz7I0B_T2tM26hPLRw8KfM8pQ1bPUcFn_nUKC
rW7Wc2KIWGPwsPmL24VVctzhUWkr-nHuR_RKs2KAff0SYTpWElyEau7AqHiHAOhnPnGOxfb7r6V1AbDx-F95gSDFtoFPRWhNJDng1qHI23UD_
7ONTGIK_I4I6y1rf7r26TDQ",
"e": "AQAB",
"d": "RbPeW38-ETfFbgavtQdljIfYoLPjkc5RKP4hOLFUTMU5yCkNiDxHUIx4XBb13v8ZCcwikUjvBu3axxPJzxVBe1ZBeP2EQoAKommrE
zdZZPChRRHcQSUfHuNmGEbqCBju1y29BOhu1bC2SxNu-IsIA12zO7avosZmr4Rkw6Y1P4Ip67l-9D5KjCcQPfNpSwZzsvXd9AAocpjFZXGOlr
jOOnyIblx1IRlyo32_A4PWYniRl_sp26eNr5zGpib_QdU1SrXzuDQcqAmjgiibPeLls7rCvCT1BIBU0MBUzU34dI5lLlMuYWNSNIC6Oa1UYsN
oQ1pQHp9H3sy5e0reekN7gQ",
"p": "99e3Ckt9gVVEpjY4u6Tp9wjC0XPhYqntmq-4JVBIMaMDs87gUC8r7GGFpFfJaImTUxMB0Z442A8gCW7yqS_Xaq6-ddhSalAvb-LaN
XpyPEfETNoOoKfa3TMQMe_J9nzv6OcD6Y43CpMOtZLJdrGxtiCytTGhILsAdees91tdw3k",
"q": "pV_BHdUqnbMTRF8hoYr_f2_9DXe_XYITU1bWlp2Izj8zySuOI4dusrGQIOY8ZFhc-fA_mBICrFlNrPdDv909FP3bJ9MsGrlxsFvLo
jiiRs4jPcUDqLynOVPrrQ7HWDoMjawfnTGX7LUe8gf-e4yTsq0WXvMCrulBgPG7Sla0MzU",
"dp": "uVO27Z3RdZq7QMae2cHRqgYFF_Zc_RgwMlFfk5daxLMvG4-AsLT1VUb_VgrG8sKdRaua2pJD01xMCoHKNrUtkfqlNR3TUugu8K1j
mkW7klPf98--zGd4A5whahXyobx-8Vt903GiuueIQkJHH9h0GMqOl2tLH1x2VbQt5LGPhZE",
"dq": "mJ-a1zGYtxpCOeOiYjiqPK7aWMefcWlO9Kc8PJz_WXmzDYKJF_kyDPEbF4HlUqbKiFFWH77fgLiam3tIp5ZDfVAcJtEZ70Ae0Kin
cvvZqIcutx9QlTYnDx2IcJsnFyHb3BRyyNywXeF6wdzm3JeM6GYeM1sLqunTbnGqbJ1AidE",
"qi": "73MikBETtdyRa37zKeQc-RtPkWhj4HUyQSSNcYyXnCJmPGLt4LFAo2YMp11w7Y_9cOOo5rI3N4LLuGFfOZ9ecCxCP86NUWKY05Dr
jGnHUvTcmKDlbxEIMnGES0uoykxMoa5-hYjdcd3AgxOQ-EPV6ZipedP0UZmEfNPoZJbKbQc"
}
The following signature object can be verified by the
public part of the key above:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "RS256",
"publicKey": {
"kty": "RSA",
"n": "oBq8_RJIJF9h2dm4r1kjBwv_W-G_YM-clG7GYwGWih3Y22HZnBmMn2Iqf4uXiwty9lICxrdBNcU6b79DY_GmNbA5j16dsuBIq
ZSq8yMtXfDpC8OS7Dy6OxjFyMZrA4IEqqjvDEmJC5aXoaBD3exECDvsRgB18jNoKyq2CDWgg22wuLz7I0B_T2tM26hPLRw8KfM8pQ1bPUcFn_
nUKCrW7Wc2KIWGPwsPmL24VVctzhUWkr-nHuR_RKs2KAff0SYTpWElyEau7AqHiHAOhnPnGOxfb7r6V1AbDx-F95gSDFtoFPRWhNJDng1qHI2
3UD_7ONTGIK_I4I6y1rf7r26TDQ",
"e": "AQAB"
},
"value": "SKD9TahvJNN0QGYNZQT22Z8ODxnyMFQAPEhG_bvAi_xwEnaIZKK_OAYx3AYFq2dJRK2OUd2OsiLoDTg64ZmgM1WlXuTqZVI
Sim99ySlpSE3aaisHBQxojWwBgJRNgwYcreDxARewZmWg4DlM2BtjuX6kXaoOhI5p1XBYzkSdfzrKtDQnyUrovyhpfLeWp4uyG6IQ0epI8UmC
uT-rbOVPOShZYzLCG9Eqf1pxLm6q6eU17PXaenN_vFk98QHeE06WQaS8Iop2rmkyabwVQNDGIpujSSma2qnLQ0xyWdm5g5LZs2nDtv3NlLeuu
EyMHZd3L56eJ74m0NX_GC4yoS4C4w"
}
}
The following signature object uses the same key as in the previous example but featured in a certificate path:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "RS256",
"signerCertificate": {
"issuer": "CN=Payment Network Sub CA3,C=EU",
"serialNumber": "1494492400585",
"subject": "CN=mybank.com,2.5.4.5=#130434353031,C=FR"
},
"certificatePath": [
"MIICxDCCAiSgAwIBAgIGAVv2sEvJMAwGCCqGSM49BAMEBQAwLzELMAkGA1UEBhMCRVUxIDAeBgNVBAMTF1BheW1lbnQgTmV0d29yay
BTdWIgQ0EzMB4XDTE3MDEwMTAwMDAwMFoXDTIyMDcxMDA5NTk1OVowMTELMAkGA1UEBhMCRlIxDTALBgNVBAUTBDQ1MDExEzARBgNVBAMTCm1
5YmFuay5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgGrz9EkgkX2HZ2bivWSMHC_9b4b9gz5yUbsZjAZaKHdjbYdmcGYyf
Yip_i5eLC3L2UgLGt0E1xTpvv0Nj8aY1sDmPXp2y4EiplKrzIy1d8OkLw5LsPLo7GMXIxmsDggSqqO8MSYkLlpehoEPd7EQIO-xGAHXyM2grK
rYINaCDbbC4vPsjQH9Pa0zbqE8tHDwp8zylDVs9RwWf-dQoKtbtZzYohYY_Cw-YvbhVVy3OFRaSv6ce5H9EqzYoB9_RJhOlYSXIRq7sCoeIcA
6Gc-cY7F9vuvpXUBsPH4X3mBIMW2gU9FaE0kOeDWocjbdQP_s41MYgr8jgjrLWt_uvbpMNAgMBAAGjXTBbMAkGA1UdEwQCMAAwDgYDVR0PAQH
_BAQDAgP4MB0GA1UdDgQWBBQdQK8rMT47vQ3jckD9a7rtWay9VzAfBgNVHSMEGDAWgBQTRrd3etVZI1YQdQFC63ncCTQ3iTAMBggqhkjOPQQD
BAUAA4GLADCBhwJBAwwUu_xDa2VZndcos1TZ6OfkHw-6qxQk1rCV6fxy3LzDXRJeWJoOfDMhHBz78mH_DD65JvuPgNZggQ8XNsiKTQgCQgDFa
Q4M-jenftprkztNkTbuoGbXuzP6riiStJzH6cmgC4ivGDeQ-u4zTD2Wx9DoEMNlN2qa4jBjn3PQD4e_CmqyFA",
"MIIDtTCCAZ2gAwIBAgIBAzANBgkqhkiG9w0BAQ0FADAwMQswCQYDVQQGEwJVUzEhMB8GA1UEAxMYUGF5bWVudCBOZXR3b3JrIFJvb3
QgQ0ExMB4XDTE2MDcxMDEwMDAwMFoXDTI1MDcxMDA5NTk1OVowLzELMAkGA1UEBhMCRVUxIDAeBgNVBAMTF1BheW1lbnQgTmV0d29yayBTdWI
gQ0EzMIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAXt9fTiM4nZ9KPkzqOXrE1Ng7CthaAQ-m7DU1ULIfpK-n-vEsE1KqUhG5t_uqNpuBc3Dh
xsJ4V46EsE_6Q0IlFcAAS-p3J-1RBaKEo8eTqF8eC72GTiMuheictaAS9NT_IcsgEbXoNHwFbUxs0El2A-Boyh9BF_rja-XuQ-A1qgZ5_F-jY
zBhMA8GA1UdEwEB_wQFMAMBAf8wDgYDVR0PAQH_BAQDAgEGMB0GA1UdDgQWBBQTRrd3etVZI1YQdQFC63ncCTQ3iTAfBgNVHSMEGDAWgBQE9W
2T-nrW1SZqkrC0lUkcShmpvzANBgkqhkiG9w0BAQ0FAAOCAgEAbghYHRipnsMlY_unWECPIdDpqWlB4FvFtCKvPOdCTyu0HAVkN5foFEoecEu
qhtLpSrHmMkNIJh33IqbZx00NYqDJ4DHoyv8lia3-pApec43p6_2CrC3fYV9Z8RmTO9cP3TIbeHLDdxNNXoI7kKlLdGsk63m6Tyl7kafTEsV8
L8Loso_set0LwQPJJxBZJDnUGCauIEfLSGsLmDcW9oMPkUcSp2n5YwjTxFXOawZ5Rl04rS5KNgDaPyPT0FV-bI0ewRwzhn-_LDFLyhvlSltxE
kwLEZFRlezPwQRo_rp8jea6APPVBQSC-B8MNPl8V3Whs_fmmWD1rcIl7VOaKaIR9-lwi2na-lctIEFg2tf8o9PYPf7MVyQ2OgOYPmB1qOJ8UC
IOYJB6UxfZ-DTx4i3H4k3P-GcvGFWT5fg1DwapjrWkgEqS_ZXOQe3_r81-MSom2E-HcLjYQQhyoKy-GUzGvE21AQm9jBw3549HOCaT3FFTiE-
-aluX42HvuzAMIBAywnyQFK2g6o7F8-Ykne7aog3Q3oEMS6DzWVfs7TXZPW3sRz_UP54d3gyFezOjWlk-BhTPsFQ43340OuKFUH-D7n6Vr6sq
pAUov4GjRMcjeTzIfw_qWPUamLgTFBNZ4bDpDH9FALvq9MTGFxvERcAxhit94491sV8SHz-IgMHmDdE"
],
"value": "jeAU4mL-D_oVSE4PvYeZeJWhavC3SOt9qH9In9Q5rveGgRogqyxVv8n8EAKYIvlYuWzn0dcv9bYgnKYRg-ZLEG1loxeNz-N
R4D1eE75E7JCUGVXjBT2GQWhO8iJORGFtVWfh8OUnGIpduLh--H7u6hqXIIJD6ajT4-YEtEwxLVAnhH18YIO9qx2LiawQ3888OHIFtr3KUaf4
1txKxe75L7M8uiFr7T3DXXHmM4PBTYdCAP2jEfiRfe8yLw8uxxlJXNiy2mN1yMF89msXxoZYr_wFBmbwFQ8hdlW2wih7zbLrCl1OXtmIRz069
beKCX-a3QJSFUwdfThOybO_VVdxwA"
}
}
The following signature object is referring to a
remoteKey which in turn should be identical to the key used in the previous RSA examples:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "RS256",
"remoteKey": {
"uri": "https://cyberphone.github.io/doc/openkeystore/r2048.jwk",
"format": "JWK-PUB-KEY"
},
"value": "EPIURyLoT6bi9JNvHZKgBBxdczLjt9Cw6iafkgNkTD1W6ib74Pxy0LRrUhJctTZLuNB0UGdXJR1zuCMSn6XNd7CxBkpV1jk
wy6S-9C0ms-Gpa4p-MlrZdOLwGDHhYjniV_2INRiLXgZk4Vj2uUbmE700d_yTR3vWXhQjvCZuQGQQGsP2lz3wpQxIAvl7zxteQgIwBw-bmh_h
5RBYFY12h5pelDseDkVZkeCFydRHSL05hgkZ_BKziMiZ1LclIrxgtg7vDj6YVPYbxqvrhJn9kjs1LC7S498p44sFCZ3BXhsGf6t8LxKLBhpuU
1YqVFI4UxXi8pX3PloyQ3nZj53iSg"
}
}
HMAC key named
"s256bitkey" here provided in Base64URL notation:
f92FGjudLa_F8NAAMOIrk0OQDNQu3klIVopKLuZVKRo
Signature object requiring the key above for validation:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "HS256",
"keyId": "s256bitkey",
"value": "XjcYdnda0l2eng625fSqbkPe7bRarHksa5m7lRhpkwU"
}
}
HMAC key named
"s384bitkey" here provided in Base64URL notation:
N7fa7tw0A-uGWlBsGVl6N1gq1QWeCEOK2ov1RO5EuzAkoV-PoZG756UzpWyfwdsd
Signature object requiring the key above for validation:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "HS384",
"keyId": "s384bitkey",
"value": "lmYpsMW5GnvV1wtE7fJdenxyO-cV_fPyFbNotC35CrvEBkI4_w3pUDWB1Qt2V_VP"
}
}
HMAC key named
"s512bitkey" here provided in Base64URL notation:
g9JulrcaXddnwhXyAe9YhPsD3-Wo7pYS1OPJQuhNRd_cWAHLg3mVjzr2ANaOuhoU6UXJDxZVZx8ELOp7NNUyNg
Signature object requiring the key above for validation:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signature": {
"algorithm": "HS512",
"keyId": "s512bitkey",
"value": "Ar0obOHcCi9ry3PqEla4ltBF9Jd1y2qu_IjnznBHylG9-1WuarhUoVlDqTuwiYDtuFvjqAW_2ns55rAzG_l68Q"
}
}
The following is a multiple signature (see
Multiple Signatures) using the
"20170101:mybank:p256" and
"20170101:mybank:r2048" keys:
{
"now": "2017-04-16T11:23:06Z",
"escapeMe": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/",
"numbers": [1e+30,4.5,6],
"signatures": [
{
"algorithm": "ES256",
"publicKey": {
"kty": "EC",
"crv": "P-256",
"x": "_gow8fcS3Dx9z6j57U5q8tunnRBdrgLU9A7CZTYCnqU",
"y": "bdfJGraBVL5aPj38TG4tHwxpU2VKwG1XBp0wQfCLOFQ"
},
"value": "9Y-zE1B88sBMtHNYgtTp2YwmPIj42guyp-8KR2e2Cwz_1PnT6Nwh7e2A49fhrwfRJCCnUhSM6J3wbGQ34UGNeQ"
},
{
"algorithm": "RS256",
"publicKey": {
"kty": "RSA",
"n": "oBq8_RJIJF9h2dm4r1kjBwv_W-G_YM-clG7GYwGWih3Y22HZnBmMn2Iqf4uXiwty9lICxrdBNcU6b79DY_GmNbA5j16dsuB
IqZSq8yMtXfDpC8OS7Dy6OxjFyMZrA4IEqqjvDEmJC5aXoaBD3exECDvsRgB18jNoKyq2CDWgg22wuLz7I0B_T2tM26hPLRw8KfM8pQ1bPUcF
n_nUKCrW7Wc2KIWGPwsPmL24VVctzhUWkr-nHuR_RKs2KAff0SYTpWElyEau7AqHiHAOhnPnGOxfb7r6V1AbDx-F95gSDFtoFPRWhNJDng1qH
I23UD_7ONTGIK_I4I6y1rf7r26TDQ",
"e": "AQAB"
},
"value": "b4TKIx1VHJ_d-AWBC2eGbcmsZ04HoHkmiD8H_4Dckgut7dXVCKGOOwGHmn8fh-4pyufj4Ub6pj6vXnYSngiCVOyqUWDPu
sLFk5hC6b8Bi9mUvTsd6a99H0F_WdSe3OkL_K3H7VQLFH-yjTgGku9LvchLYEx_31Y21vP3UO3YKkKWJYYai537OzAiJv9Y8_5ZzwmYx8WtNF
fX4q2Y1xolwQmT1bbxaMZ1rKgmub8baBc26ES9GCiGQeE37IzL-pNXGPNFBDWbSWn596AfCUi45U8nhOeRmiXGk0m3PpNFIU9ZAdMOM5pDjs_
HdV4pMG-_7dvVoKnv6hvGSrarb_FIBQ"
}
]
}
The certificate based signatures share a common root (here supplied in PEM
[RFC7468] format), which can be used for path validation:
-----BEGIN CERTIFICATE-----
MIIFPjCCAyagAwIBAgIBATANBgkqhkiG9w0BAQ0FADAwMQswCQYDVQQGEwJVUzEhMB8GA1UEAxMY
UGF5bWVudCBOZXR3b3JrIFJvb3QgQ0ExMB4XDTE1MDcxMDEwMDAwMFoXDTMwMDcxMDA5NTk1OVow
MDELMAkGA1UEBhMCVVMxITAfBgNVBAMTGFBheW1lbnQgTmV0d29yayBSb290IENBMTCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBALeOSacU7QdPttNbR6CqRfZrwiRNT5P9dxpJJGc/Gv4k
3Vigz+eK8DaguAJS0jDdhK7uzi5aOsf066U8ygbYdWvgigNTuuiX8T/rUBe+Xiy0pPKC9ivVem1o
zTtjed19cBWeoihcJQRyRdgek8oMeB4ShyoFZpV6ptraY0SGN4XkwjqHVakkoiX0nkQdlpW9D2Zm
HxDinZWOxBTxHchH66BHX6dDeg6QcPGA7qp6hHsJpUVe/n0F1eRHyuUh8opy+qNjpBuPAJ3DJMwL
ahlRY/7iNU0OJXgngUmsRz+yeUNq5ijzh3wdhJDvpj0J4ircaPsLhLlDvfLQ5rEajaABX/QpXkON
ox8yfIZYFhSgKOEP8anfCoCz3afnpd2CQCZ/zmzOOCIum20F4lcOrTndDVRIIRrz/4tXRKeA3k/A
QWUSHPSsatpITjtKgbDv5o+YfKYesxzL/yoeYPBOiwN1wE3+VfWRK809RVoHmW9do+GKCub3Xc7P
Ae35nLJSu+oP8cnU4pi/rcRx+9Hfua2HhOwzOQ4oDrRReJMBrpaPrQVR/KNC+NDOSOilAEdUmRtJ
BflijQyathXbiAk0l+QTAsshysb/cjPQPTP1qS3OlpjOvWY2ztB7oDFaltfaaVQvj2u7UfvMZ85u
HNQ/tbYYURGBWCTCm2Pf81S98NhslctrAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
AQH/BAQDAgEGMB0GA1UdDgQWBBQE9W2T+nrW1SZqkrC0lUkcShmpvzAfBgNVHSMEGDAWgBQE9W2T
+nrW1SZqkrC0lUkcShmpvzANBgkqhkiG9w0BAQ0FAAOCAgEArV8eDz06juudum+sQhMZHhB0sci9
w1DB7dRVJ7PsSssSMHwOn0cz3CzTIprb7g5xLro3coOQO3KfJg6t/SrTXTiBdv3nNeFOAmHBCeya
2tzCjSQCXlHj00RWYwzw53RhKCcUEK/XgsBoP5osi9l5jBD9v+CRogZJNr4LJ+Dkc3c8w4p6FezQ
Adc07xyxoji3xatq2vRaUW6RD5LDftnuuz7XeOWu0K8uFxd/lYU1y3c3F+0QLTxpSK+33YIZswhg
Q4OP4GC6qNOPFUdYj8mOb5EiIinnx1GV/QKJvYHA5LF8U5uEeV1BzxUACBOLSxMoigZYq3s0f7Ae
GNu6ZbzQMGdXaN4vzcUNU45waN9G45p0hlgMMxFxOSDhUHDyMpfJx8um1hC9PeIWD1yCx+drJx7G
GHzAZi4aEfntwbFEffjySIa6JZddlVCoAT+ScGzUxpVSwWCozSNsY8+ohqc0Dh8pdiqpuZA3ndsu
2NOwYlnhzXV9mCiSJvkqGIvZ8JyiLVixzjQvztWunFbyMujNnb+5vF/uLgp4WYsOYhicwh83a3on
a0YirxX/fYrnFAwriAsop0wuubm9VwPkjFhgSg/WSRev4TBReFT3UGgWt4qzUYhgJTpjATzuXTgo
oWnLQxEU/YmcVaY2YyhOhnJpa5jrg3H7nPKC8qphGHE70Wc=
-----END CERTIFICATE-----