summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/server/src/authentication/verifyAuthenticationResponse.test.ts2
-rw-r--r--packages/server/src/authentication/verifyAuthenticationResponse.ts8
-rw-r--r--packages/server/src/helpers/verifySignature.ts42
3 files changed, 27 insertions, 25 deletions
diff --git a/packages/server/src/authentication/verifyAuthenticationResponse.test.ts b/packages/server/src/authentication/verifyAuthenticationResponse.test.ts
index bb12818..3c9a5b3 100644
--- a/packages/server/src/authentication/verifyAuthenticationResponse.test.ts
+++ b/packages/server/src/authentication/verifyAuthenticationResponse.test.ts
@@ -139,7 +139,7 @@ test('should throw error if assertion RP ID is unexpected value', async () => {
expectedOrigin: assertionOrigin,
expectedRPID: 'dev.dontneeda.pw',
authenticator: authenticator,
- })
+ }),
).rejects.toThrow(/rp id/i);
});
diff --git a/packages/server/src/authentication/verifyAuthenticationResponse.ts b/packages/server/src/authentication/verifyAuthenticationResponse.ts
index adf15e3..d25d521 100644
--- a/packages/server/src/authentication/verifyAuthenticationResponse.ts
+++ b/packages/server/src/authentication/verifyAuthenticationResponse.ts
@@ -22,8 +22,8 @@ export type VerifyAuthenticationResponseOpts = {
authenticator: AuthenticatorDevice;
requireUserVerification?: boolean;
advancedFIDOConfig?: {
- userVerification?: UserVerificationRequirement,
- },
+ userVerification?: UserVerificationRequirement;
+ };
};
/**
@@ -165,9 +165,7 @@ export async function verifyAuthenticationResponse(
}
if (advancedFIDOConfig !== undefined) {
- const {
- userVerification: fidoUserVerification,
- } = advancedFIDOConfig;
+ const { userVerification: fidoUserVerification } = advancedFIDOConfig;
/**
* Use FIDO Conformance-defined rules for verifying UP and UV flags
diff --git a/packages/server/src/helpers/verifySignature.ts b/packages/server/src/helpers/verifySignature.ts
index 6716317..de8a56e 100644
--- a/packages/server/src/helpers/verifySignature.ts
+++ b/packages/server/src/helpers/verifySignature.ts
@@ -7,17 +7,17 @@ import { convertCertBufferToPEM } from './convertCertBufferToPEM';
import { convertPublicKeyToPEM } from './convertPublicKeyToPEM';
type VerifySignatureOptsLeafCert = {
- signature: Buffer,
- signatureBase: Buffer,
- leafCert: Buffer,
- hashAlgorithm?: string,
+ signature: Buffer;
+ signatureBase: Buffer;
+ leafCert: Buffer;
+ hashAlgorithm?: string;
};
type VerifySignatureOptsCredentialPublicKey = {
- signature: Buffer,
- signatureBase: Buffer,
- credentialPublicKey: Buffer,
- hashAlgorithm?: string,
+ signature: Buffer;
+ signatureBase: Buffer;
+ credentialPublicKey: Buffer;
+ hashAlgorithm?: string;
};
/**
@@ -28,21 +28,19 @@ type VerifySignatureOptsCredentialPublicKey = {
* @param publicKey Authenticator's public key as a PEM certificate
* @param algo Which algorithm to use to verify the signature (default: `'sha256'`)
*/
-export async function verifySignature(opts: VerifySignatureOptsLeafCert | VerifySignatureOptsCredentialPublicKey): Promise<boolean> {
- const {
- signature,
- signatureBase,
- hashAlgorithm = 'sha256',
- } = opts;
+export async function verifySignature(
+ opts: VerifySignatureOptsLeafCert | VerifySignatureOptsCredentialPublicKey,
+): Promise<boolean> {
+ const { signature, signatureBase, hashAlgorithm = 'sha256' } = opts;
const _isLeafcertOpts = isLeafCertOpts(opts);
const _isCredPubKeyOpts = isCredPubKeyOpts(opts);
if (!_isLeafcertOpts && !_isCredPubKeyOpts) {
- throw new Error('Must declare either `leafCert` or `credentialPublicKey`')
+ throw new Error('Must declare either "leafCert" or "credentialPublicKey"');
}
if (_isLeafcertOpts && _isCredPubKeyOpts) {
- throw new Error('Must not declare both `leafCert` and `credentialPublicKey`');
+ throw new Error('Must not declare both "leafCert" and "credentialPublicKey"');
}
let publicKeyPEM = '';
@@ -89,10 +87,16 @@ export async function verifySignature(opts: VerifySignatureOptsLeafCert | Verify
return crypto.createVerify(hashAlgorithm).update(signatureBase).verify(publicKeyPEM, signature);
}
-function isLeafCertOpts(opts: VerifySignatureOptsLeafCert | VerifySignatureOptsCredentialPublicKey): opts is VerifySignatureOptsLeafCert {
+function isLeafCertOpts(
+ opts: VerifySignatureOptsLeafCert | VerifySignatureOptsCredentialPublicKey,
+): opts is VerifySignatureOptsLeafCert {
return Object.keys(opts as VerifySignatureOptsLeafCert).indexOf('leafCert') >= 0;
}
-function isCredPubKeyOpts(opts: VerifySignatureOptsLeafCert | VerifySignatureOptsCredentialPublicKey): opts is VerifySignatureOptsCredentialPublicKey {
- return Object.keys(opts as VerifySignatureOptsCredentialPublicKey).indexOf('credentialPublicKey') >= 0;
+function isCredPubKeyOpts(
+ opts: VerifySignatureOptsLeafCert | VerifySignatureOptsCredentialPublicKey,
+): opts is VerifySignatureOptsCredentialPublicKey {
+ return (
+ Object.keys(opts as VerifySignatureOptsCredentialPublicKey).indexOf('credentialPublicKey') >= 0
+ );
}