code refactor

This commit is contained in:
MaysWind
2023-06-18 09:20:02 +08:00
parent fd01c9269f
commit 4f2b9d39da
2 changed files with 13 additions and 4 deletions
+8
View File
@@ -159,6 +159,14 @@ export function base64encode(arrayBuffer) {
return btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));
}
export function base64decode(str) {
if (!str) {
return '';
}
return atob(str);
}
export function arrayBufferToString(arrayBuffer) {
return String.fromCharCode.apply(null, new Uint8Array(arrayBuffer));
}
+5 -4
View File
@@ -4,7 +4,8 @@ import {
isFunction,
stringToArrayBuffer,
arrayBufferToString,
base64encode
base64encode,
base64decode
} from './common.js';
import {
generateRandomString
@@ -84,7 +85,7 @@ function registerCredential({ username, secret }, { nickname }) {
const clientData = rawCredential ? parseClientData(rawCredential) : null;
const publicKey = rawCredential ? parsePublicKeyFromAttestationData(rawCredential) : null;
const challengeFromClientData = clientData && clientData.challenge ? atob(clientData.challenge) : null;
const challengeFromClientData = clientData && clientData.challenge ? base64decode(clientData.challenge) : null;
logger.debug('webauthn create raw response', rawCredential);
@@ -146,7 +147,7 @@ function verifyCredential({ username }, credentialId) {
challenge: stringToArrayBuffer(challenge),
rpId: window.location.hostname
});
publicKeyCredentialRequestOptions.allowCredentials[0].id = stringToArrayBuffer(atob(credentialId));
publicKeyCredentialRequestOptions.allowCredentials[0].id = stringToArrayBuffer(base64decode(credentialId));
logger.debug('webauthn get options', publicKeyCredentialRequestOptions);
@@ -154,7 +155,7 @@ function verifyCredential({ username }, credentialId) {
publicKey: publicKeyCredentialRequestOptions
}).then(rawCredential => {
const clientData = rawCredential ? parseClientData(rawCredential) : null;
const challengeFromClientData = clientData && clientData.challenge ? atob(clientData.challenge) : null;
const challengeFromClientData = clientData && clientData.challenge ? base64decode(clientData.challenge) : null;
const userIdParts = rawCredential && rawCredential.response && rawCredential.response.userHandle ? arrayBufferToString(rawCredential.response.userHandle).split('|') : null;
logger.debug('webauthn get raw response', rawCredential);