Skip to content

Commit

Permalink
expose credential public key as a PublicKey object
Browse files Browse the repository at this point in the history
  • Loading branch information
iaik-jheher committed Jun 21, 2023
1 parent f207b27 commit 0836704
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ out/
*.iws
.attach_pid*

# VS Code
.vscode/

# Mac
.DS_Store

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

package com.yubico.webauthn;

import COSE.CoseException;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yubico.webauthn.data.AttestedCredentialData;
Expand All @@ -33,6 +34,10 @@
import com.yubico.webauthn.data.COSEAlgorithmIdentifier;
import com.yubico.webauthn.data.PublicKeyCredentialDescriptor;
import com.yubico.webauthn.data.UserIdentity;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.spec.InvalidKeySpecException;
import java.util.Optional;
import lombok.AccessLevel;
import lombok.Builder;
Expand Down Expand Up @@ -83,6 +88,18 @@ public final class RegisteredCredential {
*/
@NonNull private final ByteArray publicKeyCose;

/**
* The credential public key, as a {@link java.security.PublicKey} object.
*
* <p>Provided for convenience.
*/
@NonNull
@JsonIgnore
public PublicKey getPublicKeyAsPublicKey()
throws InvalidKeySpecException, NoSuchAlgorithmException, CoseException, IOException {
return WebAuthnCodecs.importCosePublicKey(getPublicKeyCose());
}

/**
* The stored <a href="https://www.w3.org/TR/2021/REC-webauthn-2-20210408/#signcount">signature
* count</a> of the credential.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

package com.yubico.webauthn;

import COSE.CoseException;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
Expand All @@ -38,9 +39,13 @@
import com.yubico.webauthn.data.ClientRegistrationExtensionOutputs;
import com.yubico.webauthn.data.PublicKeyCredential;
import com.yubico.webauthn.data.PublicKeyCredentialDescriptor;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.security.spec.InvalidKeySpecException;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -263,6 +268,17 @@ public ByteArray getPublicKeyCose() {
.getCredentialPublicKey();
}

/**
* The public key of the created credential, as a {@link java.security.PublicKey} object.
* <p>Provided for convenience.
*/
@NonNull
@JsonIgnore
public PublicKey getPublicKeyAsPublicKey()
throws InvalidKeySpecException, NoSuchAlgorithmException, CoseException, IOException {
return WebAuthnCodecs.importCosePublicKey(getPublicKeyCose());
}

/**
* The <a
* href="https://www.w3.org/TR/2021/REC-webauthn-2-20210408/#client-extension-output">client
Expand Down

0 comments on commit 0836704

Please sign in to comment.