Skip to content

Commit e369465

Browse files
committed
Add public factory function LargeBlobRegistrationOutput.supported(boolean)
1 parent a269d19 commit e369465

File tree

7 files changed

+27
-12
lines changed

7 files changed

+27
-12
lines changed

NEWS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ New features:
77
** Thanks to Jakob Heher (A-SIT) for the contribution, see
88
https://github.com/Yubico/java-webauthn-server/pull/299
99
* Added public builder to `CredentialPropertiesOutput`.
10+
* Added public factory function
11+
`LargeBlobRegistrationOutput.supported(boolean)`.
1012
* (Experimental) Added option `isSecurePaymentConfirmation(boolean)` to
1113
`FinishAssertionOptions`. When set, `RelyingParty.finishAssertion()` will
1214
adapt the validation logic for a Secure Payment Confirmation (SPC) response

webauthn-server-core/src/main/java/com/yubico/webauthn/data/Extensions.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,9 @@ public static Set<LargeBlobSupport> values() {
216216
* Extension inputs for the Large blob storage extension (<code>largeBlob</code>) in
217217
* authentication ceremonies.
218218
*
219+
* <p>Use the {@link #read()} and {@link #write(ByteArray)} factory functions to construct this
220+
* type.
221+
*
219222
* @see <a
220223
* href="https://www.w3.org/TR/2021/REC-webauthn-2-20210408/#sctn-large-blob-extension">§10.5.
221224
* Large blob storage extension (largeBlob)</a>
@@ -311,6 +314,8 @@ public Optional<ByteArray> getWrite() {
311314
* Extension outputs for the Large blob storage extension (<code>largeBlob</code>) in
312315
* registration ceremonies.
313316
*
317+
* <p>Use the {@link #supported(boolean)} factory function to construct this type.
318+
*
314319
* @see <a
315320
* href="https://www.w3.org/TR/2021/REC-webauthn-2-20210408/#sctn-large-blob-extension">§10.5.
316321
* Large blob storage extension (largeBlob)</a>
@@ -328,9 +333,21 @@ public static class LargeBlobRegistrationOutput {
328333
@JsonProperty private final boolean supported;
329334

330335
@JsonCreator
331-
LargeBlobRegistrationOutput(@JsonProperty("supported") boolean supported) {
336+
private LargeBlobRegistrationOutput(@JsonProperty("supported") boolean supported) {
332337
this.supported = supported;
333338
}
339+
340+
/**
341+
* Create a Large blob storage extension output with the <code>supported</code> output set to
342+
* the given value.
343+
*
344+
* @see <a
345+
* href="https://www.w3.org/TR/2021/REC-webauthn-2-20210408/#dictdef-authenticationextensionslargebloboutputs">
346+
* dictionary AuthenticationExtensionsLargeBlobOutputs</a>
347+
*/
348+
public static LargeBlobRegistrationOutput supported(boolean supported) {
349+
return new LargeBlobRegistrationOutput(supported);
350+
}
334351
}
335352

336353
/**

webauthn-server-core/src/test/scala/com/yubico/webauthn/RelyingPartyRegistrationSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ import com.yubico.webauthn.data.ClientRegistrationExtensionOutputs
5454
import com.yubico.webauthn.data.CollectedClientData
5555
import com.yubico.webauthn.data.Extensions.CredentialProperties.CredentialPropertiesOutput
5656
import com.yubico.webauthn.data.Extensions.LargeBlob.LargeBlobRegistrationInput.LargeBlobSupport
57+
import com.yubico.webauthn.data.Extensions.LargeBlob.LargeBlobRegistrationOutput
5758
import com.yubico.webauthn.data.Extensions.Uvm.UvmEntry
5859
import com.yubico.webauthn.data.Generators._
5960
import com.yubico.webauthn.data.PublicKeyCredential
6061
import com.yubico.webauthn.data.PublicKeyCredentialCreationOptions
6162
import com.yubico.webauthn.data.PublicKeyCredentialParameters
62-
import com.yubico.webauthn.data.ReexportHelpers
6363
import com.yubico.webauthn.data.RegistrationExtensionInputs
6464
import com.yubico.webauthn.data.RelyingPartyIdentity
6565
import com.yubico.webauthn.data.UserIdentity
@@ -4302,7 +4302,7 @@ class RelyingPartyRegistrationSpec
43024302
ClientRegistrationExtensionOutputs
43034303
.builder()
43044304
.largeBlob(
4305-
ReexportHelpers.newLargeBlobRegistrationOutput(true)
4305+
LargeBlobRegistrationOutput.supported(true)
43064306
)
43074307
.build()
43084308
)

webauthn-server-core/src/test/scala/com/yubico/webauthn/RelyingPartyV2RegistrationSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ import com.yubico.webauthn.data.ClientRegistrationExtensionOutputs
5454
import com.yubico.webauthn.data.CollectedClientData
5555
import com.yubico.webauthn.data.Extensions.CredentialProperties.CredentialPropertiesOutput
5656
import com.yubico.webauthn.data.Extensions.LargeBlob.LargeBlobRegistrationInput.LargeBlobSupport
57+
import com.yubico.webauthn.data.Extensions.LargeBlob.LargeBlobRegistrationOutput
5758
import com.yubico.webauthn.data.Extensions.Uvm.UvmEntry
5859
import com.yubico.webauthn.data.Generators._
5960
import com.yubico.webauthn.data.PublicKeyCredential
6061
import com.yubico.webauthn.data.PublicKeyCredentialCreationOptions
6162
import com.yubico.webauthn.data.PublicKeyCredentialParameters
62-
import com.yubico.webauthn.data.ReexportHelpers
6363
import com.yubico.webauthn.data.RegistrationExtensionInputs
6464
import com.yubico.webauthn.data.RelyingPartyIdentity
6565
import com.yubico.webauthn.data.UserIdentity
@@ -4297,7 +4297,7 @@ class RelyingPartyV2RegistrationSpec
42974297
ClientRegistrationExtensionOutputs
42984298
.builder()
42994299
.largeBlob(
4300-
ReexportHelpers.newLargeBlobRegistrationOutput(true)
4300+
LargeBlobRegistrationOutput.supported(true)
43014301
)
43024302
.build()
43034303
)

webauthn-server-core/src/test/scala/com/yubico/webauthn/data/ExtensionsSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ class ExtensionsSpec
327327
Set("largeBlob")
328328
)
329329
registrationCred.getClientExtensionResults.getLargeBlob.toScala should equal(
330-
Some(new LargeBlobRegistrationOutput(true))
330+
Some(LargeBlobRegistrationOutput.supported(true))
331331
)
332332

333333
assertionCred.getClientExtensionResults.getExtensionIds.asScala should equal(
@@ -347,7 +347,7 @@ class ExtensionsSpec
347347
Set("largeBlob")
348348
)
349349
registrationCred.getClientExtensionResults.getLargeBlob.toScala should equal(
350-
Some(new LargeBlobRegistrationOutput(true))
350+
Some(LargeBlobRegistrationOutput.supported(true))
351351
)
352352

353353
assertionCred.getClientExtensionResults.getExtensionIds.asScala should equal(

webauthn-server-core/src/test/scala/com/yubico/webauthn/data/Generators.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -883,7 +883,7 @@ object Generators {
883883
def largeBlobRegistrationOutput: Gen[LargeBlobRegistrationOutput] =
884884
for {
885885
supported <- arbitrary[Boolean]
886-
} yield new LargeBlobRegistrationOutput(supported)
886+
} yield LargeBlobRegistrationOutput.supported(supported)
887887

888888
def largeBlobAuthenticationInput: Gen[LargeBlobAuthenticationInput] =
889889
halfsized(

webauthn-server-core/src/test/scala/com/yubico/webauthn/data/ReexportHelpers.scala

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package com.yubico.webauthn.data
22

33
import com.yubico.webauthn.data.Extensions.LargeBlob.LargeBlobAuthenticationOutput
4-
import com.yubico.webauthn.data.Extensions.LargeBlob.LargeBlobRegistrationOutput
54

65
/** Public re-exports of things in the com.yubico.webauthn.data package, so that
76
* tests can access them but dependent projects cannot (unless they do this
87
* same workaround hack).
98
*/
109
object ReexportHelpers {
1110

12-
def newLargeBlobRegistrationOutput(
13-
supported: Boolean
14-
): LargeBlobRegistrationOutput = new LargeBlobRegistrationOutput(supported)
1511
def newLargeBlobAuthenticationOutput(
1612
blob: Option[ByteArray],
1713
written: Option[Boolean],

0 commit comments

Comments
 (0)