@@ -139,6 +139,7 @@ object RegistrationTestDataGenerator extends App {
139139 td.NoneAttestation .Default ,
140140 td.Packed .BasicAttestation ,
141141 td.Packed .BasicAttestationEdDsa ,
142+ td.Packed .BasicAttestationEd448 ,
142143 td.Packed .BasicAttestationRsa ,
143144 td.Packed .BasicAttestationRs384 ,
144145 td.Packed .BasicAttestationRs512 ,
@@ -181,6 +182,7 @@ object RegistrationTestData {
181182 NoneAttestation .Default ,
182183 Packed .BasicAttestation ,
183184 Packed .BasicAttestationEdDsa ,
185+ Packed .BasicAttestationEd448 ,
184186 Packed .BasicAttestationRsa ,
185187 Packed .BasicAttestationRs384 ,
186188 Packed .BasicAttestationRs512 ,
@@ -432,6 +434,43 @@ object RegistrationTestData {
432434 )
433435 }
434436
437+ val BasicAttestationEd448 : RegistrationTestData = new RegistrationTestData (
438+ alg = COSEAlgorithmIdentifier .EdDSA ,
439+ attestationObject =
440+ ByteArray.fromHex("a3686175746844617461588149960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97634100000539000102030405060708090a0b0c0d0e0f0020b9ad79ab995dde21321b6a04b7a71e2769e3c000dcc9f969c17cc719c7f49473a4010103272006215820c200f60e3bdb0fc3bf5e178cd68ff8e15b47716b03f7e67c08cf9ea989498b0063666d74667061636b65646761747453746d74a363616c67266373696758463044022051b2cf7b51bc6956d512a1974dd6eab35adab213d219ea06edf6261b86d97d3902202dcf7fc49968decce6fe4385d1850b0c83b16b6bfb5237e102bdeaaa3c3ee60a63783563815901bf308201bb30820162a00302010202022708300a06082a8648ce3d04030230673123302106035504030c1a59756269636f20576562417574686e20756e6974207465737473310f300d060355040a0c0659756269636f31223020060355040b0c1941757468656e74696361746f72204174746573746174696f6e310b3009060355040613025345301e170d3138303930363137343230305a170d3138303931333137343230305a30673123302106035504030c1a59756269636f20576562417574686e20756e6974207465737473310f300d060355040a0c0659756269636f31223020060355040b0c1941757468656e74696361746f72204174746573746174696f6e310b30090603550406130253453059301306072a8648ce3d020106082a8648ce3d030107034200044ad6b73044981f8725951227fa9b3a78f5fab1a816b41a6f49a02628d3d570dee44207365177fa3c4660351c08bb29af686eb140fa4861cdb60b179c0a5c8e6f300a06082a8648ce3d0403020347003044022028a86c2820577920e1401086f16e6c4c6237e47b4ebd97ae519bbe7774ef64490220041ce97d4679269e7fde235786381e630a77b47e80ba9f60edfec7f0fd00c012"),
441+ clientDataJson = """ {"challenge":"AAEBAgMFCA0VIjdZEGl5Yls","origin":"https://localhost","type":"webauthn.create","tokenBinding":{"status":"supported"}}""" ,
442+ privateKey = Some (
443+ ByteArray .fromHex(" 308183020101300506032b6571043b04399d78cbed100b03f5abf6c6abed37f9c4a0a620f17b64b7e252b2287bc6c4a9d09d240fd3d1f17ce0a47f4757824a3fdedc3e48562edfe6d5dc813a00d659ca2d581ce4e64747654f3e57db0846721f8ab8936f04f5c200f60e3bdb0fc3bf5e178cd68ff8e15b47716b03f7e67c08cf9ea989498b00" )
444+ ),
445+ attestationCertChain = List (
446+ RegistrationTestDataGenerator .importAttestationCa(
447+ " MIIBuzCCAWKgAwIBAgICJwgwCgYIKoZIzj0EAwIwZzEjMCEGA1UEAwwaWXViaWNvIFdlYkF1dGhuIHVuaXQgdGVzdHMxDzANBgNVBAoMBll1YmljbzEiMCAGA1UECwwZQXV0aGVudGljYXRvciBBdHRlc3RhdGlvbjELMAkGA1UEBhMCU0UwHhcNMTgwOTA2MTc0MjAwWhcNMTgwOTEzMTc0MjAwWjBnMSMwIQYDVQQDDBpZdWJpY28gV2ViQXV0aG4gdW5pdCB0ZXN0czEPMA0GA1UECgwGWXViaWNvMSIwIAYDVQQLDBlBdXRoZW50aWNhdG9yIEF0dGVzdGF0aW9uMQswCQYDVQQGEwJTRTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABErWtzBEmB+HJZUSJ/qbOnj1+rGoFrQab0mgJijT1XDe5EIHNlF3+jxGYDUcCLspr2husUD6SGHNtgsXnApcjm8wCgYIKoZIzj0EAwIDRwAwRAIgKKhsKCBXeSDhQBCG8W5sTGI35HtOvZeuUZu+d3TvZEkCIAQc6X1GeSaef94jV4Y4HmMKd7R+gLqfYO3+x/D9AMAS" ,
448+ " EC" ,
449+ " MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg1KdUwnJnE3sFiWc/RC1UZv6JHL+hZSI5ro7MfFCzBROgCgYIKoZIzj0DAQehRANCAARK1rcwRJgfhyWVEif6mzp49fqxqBa0Gm9JoCYo09Vw3uRCBzZRd/o8RmA1HAi7Ka9obrFA+khhzbYLF5wKXI5v" ,
450+ )
451+ ),
452+ assertion = Some (
453+ AssertionTestData (
454+ request = JacksonCodecs
455+ .json()
456+ .readValue(
457+ """ {"publicKeyCredentialRequestOptions":{"challenge":"N3LjI2J5ylyWe3ED5OT4XHLRqHwm_J48_D_hoJOFf30","hints":[],"userVerification":"preferred","extensions":{}},"username":"test@test.org"}""" ,
458+ classOf [AssertionRequest ],
459+ ),
460+ response =
461+ PublicKeyCredential .parseAssertionResponseJson(""" {"id":"ua15q5ld3iEyG2oEt6ceJ2njwADcyflpwXzHGcf0lHM","response":{"authenticatorData":"SZYN5YgOjGh0NBcPZHZgW4_krrmihjLHmVzzuoMdl2MBAAAFOQ","clientDataJSON":"eyJjaGFsbGVuZ2UiOiJOM0xqSTJKNXlseVdlM0VENU9UNFhITFJxSHdtX0o0OF9EX2hvSk9GZjMwIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3QiLCJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwidG9rZW5CaW5kaW5nIjp7InN0YXR1cyI6InN1cHBvcnRlZCJ9fQ","signature":"1HIBzD_eMRlwSIgYwnmC7yvBBCQEJ1uA-Kmw5LPiQ8813XiMQK0h9ceB72rist0_80UCA7g-RpOAe4ZFTReT9VI0Ecr4hRGEKJQftpK334hFd-43aknPjMdv65baV14MZyO3dTHDOeyivN9yJMvkMyUA"},"clientExtensionResults":{},"type":"public-key"}""" ),
462+ )
463+ ),
464+ ) {
465+ override def regenerate () =
466+ TestAuthenticator .createBasicAttestedCredential(
467+ keyAlgorithm = COSEAlgorithmIdentifier .Ed448 ,
468+ attestationMaker = AttestationMaker .packed(
469+ AttestationSigner .selfsigned(COSEAlgorithmIdentifier .ES256 )
470+ ),
471+ )
472+ }
473+
435474 val BasicAttestationRsa : RegistrationTestData = new RegistrationTestData (
436475 alg = COSEAlgorithmIdentifier .RS256 ,
437476 attestationObject =
@@ -1212,6 +1251,7 @@ case class RegistrationTestData(
12121251 PublicKeyCredentialParameters .EdDSA ,
12131252 PublicKeyCredentialParameters .ES384 ,
12141253 PublicKeyCredentialParameters .ES512 ,
1254+ PublicKeyCredentialParameters .Ed448 ,
12151255 PublicKeyCredentialParameters .RS256 ,
12161256 PublicKeyCredentialParameters .RS384 ,
12171257 PublicKeyCredentialParameters .RS512 ,
0 commit comments