Skip to content

Commit 75324b0

Browse files
committed
add sign extension to yubico authenticators
1 parent 0ffb2f4 commit 75324b0

1 file changed

Lines changed: 23 additions & 2 deletions

File tree

wrapper/src/main/java/io/yubicolabs/wwwwallet/credentials/YubicoContainer.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ import com.yubico.yubikit.core.util.Callback
2424
import com.yubico.yubikit.core.util.Result
2525
import com.yubico.yubikit.fido.client.BasicWebAuthnClient
2626
import com.yubico.yubikit.fido.client.MultipleAssertionsAvailable
27+
import com.yubico.yubikit.fido.client.extensions.CredBlobExtension
28+
import com.yubico.yubikit.fido.client.extensions.CredPropsExtension
29+
import com.yubico.yubikit.fido.client.extensions.CredProtectExtension
30+
import com.yubico.yubikit.fido.client.extensions.HmacSecretExtension
31+
import com.yubico.yubikit.fido.client.extensions.LargeBlobExtension
32+
import com.yubico.yubikit.fido.client.extensions.MinPinLengthExtension
33+
import com.yubico.yubikit.fido.client.extensions.SignExtension
2734
import com.yubico.yubikit.fido.ctap.Ctap2Session
2835
import com.yubico.yubikit.fido.webauthn.PublicKeyCredential
2936
import com.yubico.yubikit.fido.webauthn.PublicKeyCredentialCreationOptions
@@ -200,7 +207,7 @@ class YubicoContainer(
200207
operation: CreateOperation,
201208
pin: String?,
202209
) {
203-
val client = BasicWebAuthnClient(session)
210+
val client = createClient(session)
204211

205212
val createOptions = operation.options
206213
val publicKey = createOptions.publicKey!!
@@ -244,6 +251,20 @@ class YubicoContainer(
244251
}
245252
}
246253

254+
private fun createClient(session: Ctap2Session) =
255+
BasicWebAuthnClient(
256+
session,
257+
listOf(
258+
CredPropsExtension(),
259+
CredBlobExtension(),
260+
CredProtectExtension(),
261+
HmacSecretExtension(),
262+
MinPinLengthExtension(),
263+
LargeBlobExtension(),
264+
SignExtension(),
265+
),
266+
)
267+
247268
private fun getWithDevice(
248269
device: YubiKeyDevice,
249270
operation: GetOperation,
@@ -268,7 +289,7 @@ class YubicoContainer(
268289
operation: GetOperation,
269290
pin: String?,
270291
) {
271-
val client = BasicWebAuthnClient(session)
292+
val client = createClient(session)
272293

273294
val getOptions = operation.options
274295
val publicKey = getOptions.publicKey!!

0 commit comments

Comments
 (0)