Skip to content

Commit 9c2c462

Browse files
Implement Serial for PublicKeyCredentialCreationOptions
Signed-off-by: Tran Ngoc Nhan <[email protected]>
1 parent d117372 commit 9c2c462

20 files changed

+94
-19
lines changed

config/src/test/java/org/springframework/security/SpringSecurityCoreVersionSerializableTests.java

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,23 @@
194194
import org.springframework.security.web.webauthn.api.AttestationConveyancePreference;
195195
import org.springframework.security.web.webauthn.api.AuthenticatorAttachment;
196196
import org.springframework.security.web.webauthn.api.AuthenticatorSelectionCriteria;
197+
import org.springframework.security.web.webauthn.api.AuthenticatorTransport;
197198
import org.springframework.security.web.webauthn.api.Bytes;
199+
import org.springframework.security.web.webauthn.api.COSEAlgorithmIdentifier;
200+
import org.springframework.security.web.webauthn.api.CredentialRecord;
201+
import org.springframework.security.web.webauthn.api.ImmutableAuthenticationExtensionsClientInput;
202+
import org.springframework.security.web.webauthn.api.ImmutableAuthenticationExtensionsClientInputs;
198203
import org.springframework.security.web.webauthn.api.PublicKeyCredentialCreationOptions;
204+
import org.springframework.security.web.webauthn.api.PublicKeyCredentialDescriptor;
205+
import org.springframework.security.web.webauthn.api.PublicKeyCredentialParameters;
199206
import org.springframework.security.web.webauthn.api.PublicKeyCredentialRpEntity;
207+
import org.springframework.security.web.webauthn.api.PublicKeyCredentialType;
200208
import org.springframework.security.web.webauthn.api.ResidentKeyRequirement;
209+
import org.springframework.security.web.webauthn.api.TestCredentialRecord;
210+
import org.springframework.security.web.webauthn.api.TestPublicKeyCredentialCreationOptions;
211+
import org.springframework.security.web.webauthn.api.TestPublicKeyCredentialUserEntity;
201212
import org.springframework.security.web.webauthn.api.UserVerificationRequirement;
213+
import org.springframework.security.web.webauthn.management.TestPublicKeyCredentialRpEntity;
202214

203215
import static org.assertj.core.api.Assertions.assertThat;
204216
import static org.assertj.core.api.Assertions.fail;
@@ -518,17 +530,39 @@ class SpringSecurityCoreVersionSerializableTests {
518530
(r) -> new HttpSessionCreatedEvent(new MockHttpSession()));
519531

520532
// webauthn
521-
generatorByClassName.put(PublicKeyCredentialCreationOptions.class,
522-
(r) -> PublicKeyCredentialCreationOptions.builder().build());
533+
generatorByClassName.put(PublicKeyCredentialCreationOptions.class, (r) -> {
534+
CredentialRecord credentialRecord = TestCredentialRecord.userCredential().build();
535+
PublicKeyCredentialDescriptor descriptor = PublicKeyCredentialDescriptor.builder()
536+
.id(credentialRecord.getCredentialId())
537+
.transports(credentialRecord.getTransports())
538+
.build();
539+
return TestPublicKeyCredentialCreationOptions.createPublicKeyCredentialCreationOptions()
540+
.rp(TestPublicKeyCredentialRpEntity.createRpEntity().build())
541+
.user(TestPublicKeyCredentialUserEntity.userEntity().build())
542+
.excludeCredentials(List.of(descriptor))
543+
.build();
544+
});
523545
generatorByClassName.put(PublicKeyCredentialRpEntity.class,
524-
(r) -> PublicKeyCredentialRpEntity.builder().build());
546+
(r) -> TestPublicKeyCredentialRpEntity.createRpEntity().build());
525547
generatorByClassName.put(Bytes.class, (r) -> Bytes.random());
526548
generatorByClassName.put(AuthenticatorSelectionCriteria.class,
527549
(r) -> AuthenticatorSelectionCriteria.builder().build());
528550
generatorByClassName.put(AuthenticatorAttachment.class, (r) -> AuthenticatorAttachment.CROSS_PLATFORM);
529551
generatorByClassName.put(ResidentKeyRequirement.class, (r) -> ResidentKeyRequirement.REQUIRED);
530552
generatorByClassName.put(UserVerificationRequirement.class, (r) -> UserVerificationRequirement.REQUIRED);
531553
generatorByClassName.put(AttestationConveyancePreference.class, (r) -> AttestationConveyancePreference.NONE);
554+
generatorByClassName.put(PublicKeyCredentialParameters.class, (r) -> PublicKeyCredentialParameters.EdDSA);
555+
generatorByClassName.put(COSEAlgorithmIdentifier.class, (r) -> COSEAlgorithmIdentifier.EdDSA);
556+
generatorByClassName.put(ImmutableAuthenticationExtensionsClientInputs.class,
557+
(r) -> new ImmutableAuthenticationExtensionsClientInputs(
558+
ImmutableAuthenticationExtensionsClientInput.credProps));
559+
generatorByClassName.put(PublicKeyCredentialDescriptor.class,
560+
(r) -> PublicKeyCredentialDescriptor.builder()
561+
.transports(AuthenticatorTransport.HYBRID)
562+
.id(Bytes.fromBase64("ChfoCM8CJA_wwUGDdzdtuw"))
563+
.build());
564+
generatorByClassName.put(PublicKeyCredentialType.class, (r) -> PublicKeyCredentialType.PUBLIC_KEY);
565+
generatorByClassName.put(AuthenticatorTransport.class, (r) -> AuthenticatorTransport.HYBRID);
532566
}
533567

534568
@ParameterizedTest

0 commit comments

Comments
 (0)