diff --git a/attestations/cnf/U2F/openssl_cert_flex.cnf b/attestations/cnf/U2F/openssl_cert_flex.cnf index aeb6c9ff..cc4b3f8c 100644 --- a/attestations/cnf/U2F/openssl_cert_flex.cnf +++ b/attestations/cnf/U2F/openssl_cert_flex.cnf @@ -11,4 +11,4 @@ CN = Ledger Flex FIDO 1 Attestation Batch 1 [v3_req] subjectKeyIdentifier = none authorityKeyIdentifier = none -1.3.6.1.4.1.45724.2.1.1=DER:03:02:05:20 # USB +1.3.6.1.4.1.45724.2.1.1=DER:03:02:04:30 # USB + NFC diff --git a/attestations/data/prod/FIDO2/flex-cert.der b/attestations/data/prod/FIDO2/flex-cert.der new file mode 100644 index 00000000..d888b5d3 Binary files /dev/null and b/attestations/data/prod/FIDO2/flex-cert.der differ diff --git a/attestations/data/prod/U2F/flex-cert.der b/attestations/data/prod/U2F/flex-cert.der new file mode 100644 index 00000000..35eb1cdf Binary files /dev/null and b/attestations/data/prod/U2F/flex-cert.der differ diff --git a/attestations/data/test/FIDO2/flex-cert.der b/attestations/data/test/FIDO2/flex-cert.der index 61558cdf..ff4bc39c 100644 Binary files a/attestations/data/test/FIDO2/flex-cert.der and b/attestations/data/test/FIDO2/flex-cert.der differ diff --git a/attestations/data/test/U2F/flex-cert.der b/attestations/data/test/U2F/flex-cert.der index f64580a9..953f0baa 100644 Binary files a/attestations/data/test/U2F/flex-cert.der and b/attestations/data/test/U2F/flex-cert.der differ diff --git a/conformance/prod-flex.json b/conformance/prod-flex.json new file mode 100644 index 00000000..00297c15 --- /dev/null +++ b/conformance/prod-flex.json @@ -0,0 +1,87 @@ +{ + "legalHeader": "Submission of this statement and retrieval and use of this statement indicates acceptance of the appropriate agreement located at https://fidoalliance.org/metadata/metadata-legal-terms/.", + "aaguid": "1d8cac46-47a1-3386-af50-e88ae46fe802", + "description": "Ledger Flex FIDO2 Authenticator", + "alternativeDescriptions": {}, + "authenticatorVersion": 1, + "protocolFamily": "fido2", + "schema": 3, + "upv": [{ + "major": 1, + "minor": 0 + }], + "authenticationAlgorithms": [ + "secp256r1_ecdsa_sha256_raw", + "secp256k1_ecdsa_sha256_raw", + "ed25519_eddsa_sha512_raw" + ], + "publicKeyAlgAndEncodings": ["cose"], + "attestationTypes": [ + "basic_full" + ], + "userVerificationDetails": [ + [{ + "userVerificationMethod": "none" + } + ], + [{ + "userVerificationMethod": "presence_internal" + } + ], + [{ + "userVerificationMethod": "passcode_external" + } + ], + [{ + "userVerificationMethod": "presence_internal" + }, + { + "userVerificationMethod": "passcode_external" + } + ], + [{ + "userVerificationMethod": "passcode_internal", + "caDesc": { + "base": 10, + "minLength": 4, + "maxRetries": 3 + } + } + ], + [{ + "userVerificationMethod": "presence_internal" + }, + { + "userVerificationMethod": "passcode_internal", + "caDesc": { + "base": 10, + "minLength": 4, + "maxRetries": 3 + } + } + ] + ], + "keyProtection": ["hardware", "secure_element"], + "matcherProtection": ["on_chip"], + "cryptoStrength": 128, + "attachmentHint": ["external", "wired"], + "tcDisplay": ["any", "hardware"], + "tcDisplayContentType": "text/plain", + "attestationRootCertificates": [ + "MIIBgTCCAScCFBlo0s5QYFdXbfusRdQeoLX6QenlMAoGCCqGSM49BAMCMEMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQKDAZMZWRnZXIxIzAhBgNVBAMMGkxlZGdlciBGSURPIEF0dGVzdGF0aW9uIENBMB4XDTIzMDIyMzEwMzMwOFoXDTMzMDIyMDEwMzMwOFowQzELMAkGA1UEBhMCRlIxDzANBgNVBAoMBkxlZGdlcjEjMCEGA1UEAwwaTGVkZ2VyIEZJRE8gQXR0ZXN0YXRpb24gQ0EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATK7nXyH4pgN3TMwCWSoMDRe4EV8Jl3XzuhicZ/2gvh+zz3WmW0OZ/EcRYEA8F26ceeuMcd21WQRRKWpjWD+JWiMAoGCCqGSM49BAMCA0gAMEUCIQCwcsHuL8ZFL3FNyU/DOQn3bmx08lnn0O5RktLbOnoPHQIgOEi6ImAZ181q8RJiL0hbw7ZquuniRq6fjWjGoBu1Moo=" + ], + "icon": "data:image/png;base64,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", + "authenticatorGetInfo": { + "versions": ["U2F_V2", "FIDO_2_0"], + "extensions": ["hmac-secret", "txAuthSimple"], + "aaguid": "1d8cac4647a13386af50e88ae46fe802", + "options": { + "rk": true, + "up": true, + "uv": true, + "clientPin": true + }, + "maxMsgSize": 1024, + "pinUvAuthProtocols": [1] + } +} diff --git a/conformance/test-flex.json b/conformance/test-flex.json new file mode 100644 index 00000000..f782cc4b --- /dev/null +++ b/conformance/test-flex.json @@ -0,0 +1,87 @@ +{ + "legalHeader": "Submission of this statement and retrieval and use of this statement indicates acceptance of the appropriate agreement located at https://fidoalliance.org/metadata/metadata-legal-terms/.", + "aaguid": "1d8cac46-47a1-3386-af50-e88ae46fe802", + "description": "Ledger Flex FIDO2 Authenticator", + "alternativeDescriptions": {}, + "authenticatorVersion": 1, + "protocolFamily": "fido2", + "schema": 3, + "upv": [{ + "major": 1, + "minor": 0 + }], + "authenticationAlgorithms": [ + "secp256r1_ecdsa_sha256_raw", + "secp256k1_ecdsa_sha256_raw", + "ed25519_eddsa_sha512_raw" + ], + "publicKeyAlgAndEncodings": ["cose"], + "attestationTypes": [ + "basic_full" + ], + "userVerificationDetails": [ + [{ + "userVerificationMethod": "none" + } + ], + [{ + "userVerificationMethod": "presence_internal" + } + ], + [{ + "userVerificationMethod": "passcode_external" + } + ], + [{ + "userVerificationMethod": "presence_internal" + }, + { + "userVerificationMethod": "passcode_external" + } + ], + [{ + "userVerificationMethod": "passcode_internal", + "caDesc": { + "base": 10, + "minLength": 4, + "maxRetries": 3 + } + } + ], + [{ + "userVerificationMethod": "presence_internal" + }, + { + "userVerificationMethod": "passcode_internal", + "caDesc": { + "base": 10, + "minLength": 4, + "maxRetries": 3 + } + } + ] + ], + "keyProtection": ["hardware", "secure_element"], + "matcherProtection": ["on_chip"], + "cryptoStrength": 128, + "attachmentHint": ["external", "wired"], + "tcDisplay": ["any", "hardware"], + "tcDisplayContentType": "text/plain", + "attestationRootCertificates": [ + "MIIBgTCCAScCFCCm+doNCJYpK4mBmyd2xdAMieATMAoGCCqGSM49BAMCMEMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQKDAZMZWRnZXIxIzAhBgNVBAMMGkxlZGdlciBGSURPIEF0dGVzdGF0aW9uIENBMB4XDTIyMDkyNjA4MDUzN1oXDTMyMDkyMzA4MDUzN1owQzELMAkGA1UEBhMCRlIxDzANBgNVBAoMBkxlZGdlcjEjMCEGA1UEAwwaTGVkZ2VyIEZJRE8gQXR0ZXN0YXRpb24gQ0EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQBNQxWyIb4hypWXXlxpGG0VMc5xyFsg/A5wq8q7NoNcHmNAkBtn7EOB21c107fcO1DC3OjNxqo6keVIGOj09hJMAoGCCqGSM49BAMCA0gAMEUCIQDirkVesYHsQU+cZiZA3K14MgBl0naL4BfAXdsAYgSBkgIgI9YDiMQGWt9eQPkBAyGv0A2Xx/+jRbkU9c0umz1cSXs=" + ], + "icon": "data:image/png;base64,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", + "authenticatorGetInfo": { + "versions": ["U2F_V2", "FIDO_2_0"], + "extensions": ["hmac-secret", "txAuthSimple"], + "aaguid": "1d8cac4647a13386af50e88ae46fe802", + "options": { + "rk": true, + "up": true, + "uv": true, + "clientPin": true + }, + "maxMsgSize": 1024, + "pinUvAuthProtocols": [1] + } +} diff --git a/include/crypto_data.h b/include/crypto_data.h index 018b7453..2096d3c8 100644 --- a/include/crypto_data.h +++ b/include/crypto_data.h @@ -639,31 +639,91 @@ static const uint8_t TEST_FIDO2_STAX_ATTESTATION_CERT[] = { #if defined(PROD_U2F_FLEX_PRIVATE_KEY) static const uint8_t PROD_U2F_FLEX_ATTESTATION_KEY[] = {PROD_U2F_FLEX_PRIVATE_KEY}; #endif - -static const uint8_t PROD_U2F_FLEX_ATTESTATION_CERT[] = {}; +static const uint8_t PROD_U2F_FLEX_ATTESTATION_CERT[] = { + 0x30, 0x82, 0x01, 0xce, 0x30, 0x82, 0x01, 0x75, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x07, + 0x68, 0x7b, 0xad, 0x3a, 0x2c, 0x16, 0xb0, 0x33, 0x90, 0x78, 0x7a, 0x16, 0x34, 0x6d, 0x9d, 0x73, + 0x6f, 0x22, 0x23, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, + 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x46, 0x52, 0x31, 0x0f, + 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x06, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x31, + 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x20, 0x46, 0x49, 0x44, 0x4f, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x35, 0x31, 0x36, 0x30, 0x39, + 0x31, 0x33, 0x31, 0x39, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x35, 0x31, 0x34, 0x30, 0x39, 0x31, + 0x33, 0x31, 0x39, 0x5a, 0x30, 0x73, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x46, 0x52, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x06, 0x4c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x19, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x0c, 0x26, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x46, 0x6c, 0x65, 0x78, 0x20, 0x46, + 0x49, 0x44, 0x4f, 0x20, 0x31, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x42, 0x61, 0x74, 0x63, 0x68, 0x20, 0x31, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, + 0x03, 0x42, 0x00, 0x04, 0x4a, 0xe1, 0x7b, 0x51, 0x09, 0x55, 0x7e, 0x43, 0x5b, 0xce, 0x15, 0x93, + 0xd1, 0xd3, 0x66, 0x8c, 0xcc, 0xe2, 0x5e, 0x8b, 0x97, 0xbc, 0x6a, 0x64, 0x4e, 0x97, 0x58, 0x42, + 0xb2, 0x10, 0x3d, 0x17, 0xc3, 0xeb, 0xe8, 0x93, 0x02, 0x59, 0xc7, 0xe5, 0x63, 0x92, 0x50, 0x40, + 0x0a, 0x0e, 0x80, 0xb0, 0xcb, 0xd7, 0xc3, 0x32, 0xbd, 0x26, 0x21, 0xc0, 0x5c, 0xda, 0xa2, 0xd5, + 0xc6, 0xea, 0x5f, 0x4a, 0xa3, 0x17, 0x30, 0x15, 0x30, 0x13, 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, + 0x01, 0x82, 0xe5, 0x1c, 0x02, 0x01, 0x01, 0x04, 0x04, 0x03, 0x02, 0x04, 0x30, 0x30, 0x0a, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x47, 0x00, 0x30, 0x44, 0x02, 0x20, + 0x40, 0x02, 0xe5, 0xe2, 0xd1, 0x64, 0x88, 0x90, 0x2d, 0x36, 0xf5, 0xb2, 0x77, 0x83, 0xc2, 0x90, + 0x25, 0x1e, 0x5f, 0xb5, 0xcf, 0x2e, 0xa8, 0x5d, 0x68, 0xa9, 0x8f, 0xdb, 0xcd, 0x8e, 0x5e, 0x6a, + 0x02, 0x20, 0x26, 0xdd, 0x62, 0x08, 0xed, 0x59, 0xcf, 0x48, 0xa4, 0x1e, 0xcd, 0x3d, 0x09, 0xc8, + 0xfd, 0xfd, 0x46, 0xf5, 0x06, 0x8e, 0xf5, 0x04, 0x02, 0x1e, 0x20, 0xc9, 0x1a, 0xb3, 0x3b, 0x2a, + 0xaa, 0x95}; /* FIDO2 PROD env */ #if defined(PROD_FIDO2_FLEX_PRIVATE_KEY) static const uint8_t PROD_FIDO2_FLEX_ATTESTATION_KEY[] = {PROD_FIDO2_FLEX_PRIVATE_KEY}; #endif -static const uint8_t PROD_FIDO2_FLEX_ATTESTATION_CERT[] = {}; +static const uint8_t PROD_FIDO2_FLEX_ATTESTATION_CERT[] = { + 0x30, 0x82, 0x01, 0xeb, 0x30, 0x82, 0x01, 0x91, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x7e, + 0xbc, 0xf5, 0xf9, 0xc1, 0xd2, 0x9f, 0x87, 0x8e, 0xe0, 0x97, 0xd9, 0x55, 0xd6, 0x60, 0x3b, 0x52, + 0xc8, 0x7d, 0xf8, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, + 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x46, 0x52, 0x31, 0x0f, + 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x06, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x31, + 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x20, 0x46, 0x49, 0x44, 0x4f, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x35, 0x31, 0x36, 0x30, 0x39, + 0x31, 0x33, 0x31, 0x37, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x35, 0x31, 0x34, 0x30, 0x39, 0x31, + 0x33, 0x31, 0x37, 0x5a, 0x30, 0x73, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x46, 0x52, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x06, 0x4c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x19, 0x41, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x41, 0x74, 0x74, + 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x2f, 0x30, 0x2d, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x0c, 0x26, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x46, 0x6c, 0x65, 0x78, 0x20, 0x46, + 0x49, 0x44, 0x4f, 0x20, 0x32, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x42, 0x61, 0x74, 0x63, 0x68, 0x20, 0x31, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, + 0x03, 0x42, 0x00, 0x04, 0xfd, 0x3d, 0x6a, 0x61, 0xa9, 0x3d, 0x84, 0xa9, 0x46, 0x02, 0x2d, 0xd8, + 0xd7, 0x5d, 0x6c, 0x67, 0x3e, 0x95, 0x07, 0xfd, 0x5b, 0x23, 0xd6, 0x8f, 0x32, 0x8c, 0xc4, 0x9e, + 0x7a, 0x31, 0x21, 0x11, 0xde, 0x50, 0x5f, 0xda, 0xe7, 0x54, 0xd2, 0xed, 0x52, 0x11, 0x1a, 0xcc, + 0x9a, 0x45, 0xcd, 0xcf, 0xd8, 0x3e, 0xaa, 0xbf, 0x52, 0xd3, 0x2e, 0x08, 0xda, 0x95, 0xfe, 0xb6, + 0x44, 0x78, 0x64, 0x45, 0xa3, 0x33, 0x30, 0x31, 0x30, 0x21, 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, + 0x01, 0x82, 0xe5, 0x1c, 0x01, 0x01, 0x04, 0x04, 0x12, 0x04, 0x10, 0x1d, 0x8c, 0xac, 0x46, 0x47, + 0xa1, 0x33, 0x86, 0xaf, 0x50, 0xe8, 0x8a, 0xe4, 0x6f, 0xe8, 0x02, 0x30, 0x0c, 0x06, 0x03, 0x55, + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, + 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xc6, 0x8a, 0xf1, + 0xf7, 0x9a, 0x87, 0x7a, 0xe1, 0xb5, 0xc5, 0x0b, 0x2f, 0xd2, 0x0a, 0xd5, 0x03, 0xf1, 0xe2, 0x3f, + 0xbc, 0x88, 0x0a, 0x97, 0xd4, 0xf7, 0xb9, 0x17, 0x55, 0x5c, 0x27, 0xc5, 0xb3, 0x02, 0x20, 0x6a, + 0xdd, 0xe5, 0x8d, 0x46, 0x98, 0x45, 0x1f, 0x13, 0x80, 0x02, 0x44, 0xb8, 0x5d, 0x14, 0x12, 0x9f, + 0x82, 0xab, 0x10, 0x58, 0xab, 0x38, 0x9d, 0x7c, 0x1b, 0x6b, 0xde, 0xd3, 0x81, 0x02, 0xe0}; /* U2F TEST env */ static const uint8_t TEST_U2F_FLEX_ATTESTATION_KEY[] = { 0xd2, 0xa4, 0x23, 0x1f, 0xff, 0xf0, 0x38, 0x49, 0xdf, 0xe9, 0x95, 0xaa, 0x50, 0x87, 0xf7, 0x4c, 0x2c, 0x02, 0xc5, 0x16, 0x92, 0x0d, 0xf1, 0x5a, 0xc3, 0x4e, 0xdc, 0x81, 0x48, 0x04, 0x8a, 0x28}; static const uint8_t TEST_U2F_FLEX_ATTESTATION_CERT[] = { - 0x30, 0x82, 0x01, 0xd0, 0x30, 0x82, 0x01, 0x75, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x04, - 0x68, 0xe4, 0x3f, 0xcf, 0xbc, 0x6e, 0x9f, 0xa0, 0x3e, 0xe4, 0x3d, 0xf4, 0x8f, 0xbb, 0x52, 0x81, - 0x9a, 0x9b, 0x22, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, + 0x30, 0x82, 0x01, 0xcf, 0x30, 0x82, 0x01, 0x75, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x33, + 0x61, 0x56, 0xf5, 0x2d, 0xd6, 0x04, 0xc0, 0xe3, 0x6e, 0x34, 0x9d, 0x93, 0xda, 0x81, 0x99, 0x3e, + 0xbd, 0xdc, 0x52, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x46, 0x52, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x06, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x46, 0x49, 0x44, 0x4f, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x35, 0x30, 0x32, 0x31, 0x35, - 0x33, 0x30, 0x31, 0x38, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x34, 0x33, 0x30, 0x31, 0x35, 0x33, - 0x30, 0x31, 0x38, 0x5a, 0x30, 0x73, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x6e, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x35, 0x31, 0x36, 0x31, 0x32, + 0x35, 0x31, 0x31, 0x36, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x35, 0x31, 0x34, 0x31, 0x32, 0x35, + 0x31, 0x31, 0x36, 0x5a, 0x30, 0x73, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x46, 0x52, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x06, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x19, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x41, 0x74, 0x74, @@ -677,28 +737,29 @@ static const uint8_t TEST_U2F_FLEX_ATTESTATION_CERT[] = { 0x15, 0x58, 0x89, 0x31, 0xf4, 0x5f, 0xd2, 0x45, 0xea, 0x04, 0x90, 0x7c, 0x2f, 0xd9, 0x81, 0xb4, 0xa8, 0x65, 0x86, 0xf3, 0x2c, 0x0c, 0xb8, 0x36, 0xc4, 0xd3, 0x91, 0x98, 0x90, 0x9a, 0xab, 0x8e, 0xc1, 0x08, 0xb6, 0xb3, 0xa3, 0x17, 0x30, 0x15, 0x30, 0x13, 0x06, 0x0b, 0x2b, 0x06, 0x01, 0x04, - 0x01, 0x82, 0xe5, 0x1c, 0x02, 0x01, 0x01, 0x04, 0x04, 0x03, 0x02, 0x05, 0x20, 0x30, 0x0a, 0x06, - 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, - 0x00, 0xd1, 0x0c, 0xd7, 0xbb, 0x2d, 0x64, 0x49, 0x21, 0x6b, 0x59, 0x39, 0xaa, 0x44, 0x96, 0x69, - 0xc0, 0x8d, 0x8c, 0xf7, 0xf5, 0xee, 0x87, 0x05, 0x92, 0xc8, 0x36, 0x7e, 0xa0, 0xe0, 0x0e, 0x16, - 0xf6, 0x02, 0x21, 0x00, 0xdc, 0xd4, 0xd7, 0xaf, 0xe5, 0x3b, 0x26, 0xee, 0x13, 0xef, 0x97, 0xa5, - 0x1d, 0x01, 0x0b, 0x7d, 0xe0, 0x54, 0xd9, 0xa6, 0x8d, 0x63, 0x2c, 0x7f, 0x61, 0x79, 0x62, 0x5a, - 0x89, 0x92, 0x59, 0xbb}; + 0x01, 0x82, 0xe5, 0x1c, 0x02, 0x01, 0x01, 0x04, 0x04, 0x03, 0x02, 0x04, 0x30, 0x30, 0x0a, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, + 0x00, 0xfd, 0xde, 0x13, 0x0a, 0x07, 0x61, 0x81, 0x2d, 0x9c, 0x69, 0x23, 0x3f, 0x9d, 0x9e, 0x3f, + 0xf2, 0x6d, 0xb7, 0x86, 0x8c, 0xa1, 0x63, 0x8d, 0xc0, 0x4f, 0xde, 0xd5, 0x1f, 0xd4, 0x56, 0x0c, + 0x45, 0x02, 0x20, 0x72, 0x63, 0x8f, 0x13, 0x14, 0x9a, 0x3f, 0x90, 0x55, 0x82, 0x4a, 0xfc, 0x75, + 0x82, 0xc1, 0x62, 0x7a, 0x2e, 0x8e, 0x7e, 0xea, 0xaa, 0xf4, 0xeb, 0x7a, 0xcd, 0x6b, 0xe5, 0x88, + 0x94, 0xce, 0x53}; + /* FIDO2 TEST env */ static const uint8_t TEST_FIDO2_FLEX_ATTESTATION_KEY[] = { 0x06, 0x60, 0x95, 0x28, 0x0e, 0x32, 0xbf, 0x5b, 0xee, 0xd3, 0xbd, 0x5e, 0xb9, 0x5d, 0xe9, 0x3c, 0x62, 0x11, 0x63, 0xe9, 0x22, 0x0d, 0xe1, 0xcb, 0x01, 0x69, 0x5c, 0xee, 0xeb, 0xa0, 0x00, 0xca}; static const uint8_t TEST_FIDO2_FLEX_ATTESTATION_CERT[] = { - 0x30, 0x82, 0x01, 0xea, 0x30, 0x82, 0x01, 0x91, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x02, - 0x9c, 0xa8, 0xb4, 0x33, 0xb5, 0x7f, 0x20, 0x46, 0x6a, 0xbf, 0xf9, 0xb1, 0xe9, 0xf6, 0x9f, 0xe5, - 0x7f, 0x95, 0xd4, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, + 0x30, 0x82, 0x01, 0xeb, 0x30, 0x82, 0x01, 0x91, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x14, 0x4a, + 0x0b, 0x8e, 0x86, 0xa0, 0x20, 0x22, 0x32, 0x3f, 0x3a, 0x93, 0x82, 0xc8, 0x6a, 0x5a, 0x14, 0xf4, + 0x99, 0x34, 0x47, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x43, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x46, 0x52, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x06, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x1a, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x46, 0x49, 0x44, 0x4f, 0x20, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x35, 0x30, 0x32, 0x31, 0x35, - 0x33, 0x30, 0x32, 0x37, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x34, 0x33, 0x30, 0x31, 0x35, 0x33, - 0x30, 0x32, 0x37, 0x5a, 0x30, 0x73, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x6e, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x35, 0x31, 0x36, 0x31, 0x32, + 0x35, 0x31, 0x32, 0x34, 0x5a, 0x17, 0x0d, 0x33, 0x34, 0x30, 0x35, 0x31, 0x34, 0x31, 0x32, 0x35, + 0x31, 0x32, 0x34, 0x5a, 0x30, 0x73, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x46, 0x52, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x06, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x19, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x41, 0x74, 0x74, @@ -715,11 +776,11 @@ static const uint8_t TEST_FIDO2_FLEX_ATTESTATION_CERT[] = { 0x01, 0x82, 0xe5, 0x1c, 0x01, 0x01, 0x04, 0x04, 0x12, 0x04, 0x10, 0x1d, 0x8c, 0xac, 0x46, 0x47, 0xa1, 0x33, 0x86, 0xaf, 0x50, 0xe8, 0x8a, 0xe4, 0x6f, 0xe8, 0x02, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, - 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x47, 0x00, 0x30, 0x44, 0x02, 0x20, 0x3a, 0x45, 0x7e, 0xf1, - 0xdb, 0x61, 0x58, 0xda, 0xe8, 0x02, 0xfa, 0xde, 0x01, 0xb0, 0x55, 0x22, 0x2c, 0x3c, 0xbb, 0x08, - 0xf5, 0x28, 0x35, 0x9c, 0x4d, 0xcb, 0xa0, 0x7c, 0x25, 0x63, 0x5c, 0x22, 0x02, 0x20, 0x18, 0xb4, - 0x6c, 0x16, 0x52, 0xfb, 0x14, 0xf5, 0xb6, 0x95, 0xd5, 0xf3, 0x5a, 0xa7, 0xdb, 0xc3, 0xb2, 0xe3, - 0xa1, 0x2f, 0x40, 0x4b, 0xe3, 0x6d, 0xd9, 0x88, 0x6c, 0x42, 0x02, 0xb9, 0xae, 0xda}; + 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x0a, 0x3a, 0x0f, 0xd9, + 0xed, 0x7c, 0x27, 0x9c, 0xff, 0x20, 0xe7, 0x2f, 0x9f, 0x9f, 0x0c, 0xcc, 0x1d, 0xa2, 0xe7, 0x63, + 0xc0, 0xc5, 0xfc, 0x30, 0x23, 0xcb, 0x84, 0x90, 0xe4, 0x7a, 0xf6, 0xdf, 0x02, 0x21, 0x00, 0x89, + 0x69, 0xa3, 0x26, 0x81, 0xd3, 0x32, 0x0e, 0xeb, 0x81, 0x47, 0x2e, 0x43, 0x72, 0x71, 0x81, 0xaa, + 0xdb, 0x77, 0x0a, 0xc8, 0x4c, 0xb6, 0x8a, 0x98, 0x54, 0xa8, 0x7a, 0x41, 0x1c, 0x60, 0xdf}; /******************************************/ /* Target attestation definition */