diff options
author | Matthew Miller <matthew@millerti.me> | 2020-06-08 17:38:36 -0700 |
---|---|---|
committer | Matthew Miller <matthew@millerti.me> | 2020-06-08 17:38:36 -0700 |
commit | 66d6a1385767e5635b42dfad9cae43465d60d580 (patch) | |
tree | 623809381bd15e64c3549a6f364f7768ef865f21 | |
parent | 98ceb56ebd82dd688ff335cbb99539ad7effba3c (diff) |
Require a version be set in Android SafetyNet resp
-rw-r--r-- | packages/server/src/attestation/verifications/verifyAndroidSafetyNet.ts | 9 | ||||
-rw-r--r-- | packages/server/src/helpers/decodeAttestationObject.ts | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/packages/server/src/attestation/verifications/verifyAndroidSafetyNet.ts b/packages/server/src/attestation/verifications/verifyAndroidSafetyNet.ts index 9e0c080..efd9c6f 100644 --- a/packages/server/src/attestation/verifications/verifyAndroidSafetyNet.ts +++ b/packages/server/src/attestation/verifications/verifyAndroidSafetyNet.ts @@ -17,13 +17,18 @@ type Options = { */ export default function verifyAttestationAndroidSafetyNet(options: Options): boolean { const { attStmt, clientDataHash, authData } = options; + const { response, ver } = attStmt; - if (!attStmt.response) { + if (!ver) { + throw new Error('No ver value in attestation (SafetyNet)'); + } + + if (!response) { throw new Error('No response was included in attStmt by authenticator (SafetyNet)'); } // Prepare to verify a JWT - const jwt = attStmt.response.toString('utf8'); + const jwt = response.toString('utf8'); const jwtParts = jwt.split('.'); const HEADER: SafetyNetJWTHeader = JSON.parse(base64url.decode(jwtParts[0])); diff --git a/packages/server/src/helpers/decodeAttestationObject.ts b/packages/server/src/helpers/decodeAttestationObject.ts index 4e53ccf..34b069b 100644 --- a/packages/server/src/helpers/decodeAttestationObject.ts +++ b/packages/server/src/helpers/decodeAttestationObject.ts @@ -32,4 +32,5 @@ export type AttestationStatement = { x5c?: Buffer[]; response?: Buffer; alg?: number; + ver?: string; }; |