This commit is contained in:
Manav Rathi 2024-05-23 19:38:23 +05:30
parent 11453b327f
commit 9bae31d748
No known key found for this signature in database

View file

@ -77,12 +77,23 @@ export const codeFromURIString = (id: string, uriString: string): Code => {
issuer: _getIssuer(uriPath, uriParams), issuer: _getIssuer(uriPath, uriParams),
digits: parseDigits(uriParams), digits: parseDigits(uriParams),
period: parsePeriod(uriParams), period: parsePeriod(uriParams),
secret: getSanitizedSecret(uriParams), secret: parseSecret(uriParams),
algorithm: parseAlgorithm(uriParams), algorithm: parseAlgorithm(uriParams),
uriString, uriString,
}; };
}; };
const _getType = (uriPath: string): Code["type"] => {
const oauthType = uriPath.split("/")[0].substring(0);
if (oauthType.toLowerCase() === "totp") {
return "totp";
} else if (oauthType.toLowerCase() === "hotp") {
return "hotp";
}
throw new Error(`Unsupported format with host ${oauthType}`);
};
const _getAccount = (uriPath: string): string => { const _getAccount = (uriPath: string): string => {
try { try {
const path = decodeURIComponent(uriPath); const path = decodeURIComponent(uriPath);
@ -138,19 +149,8 @@ const parseAlgorithm = (uriParams): Code["algorithm"] => {
} }
}; };
const _getType = (uriPath: string): Code["type"] => { const parseSecret = (uriParams): string =>
const oauthType = uriPath.split("/")[0].substring(0); uriParams["secret"].replaceAll(" ", "").toUpperCase();
if (oauthType.toLowerCase() === "totp") {
return "totp";
} else if (oauthType.toLowerCase() === "hotp") {
return "hotp";
}
throw new Error(`Unsupported format with host ${oauthType}`);
};
const getSanitizedSecret = (uriParams): string => {
return uriParams["secret"].replace(/ /g, "").toUpperCase();
};
/** /**
* Generate a pair of OTPs (one time passwords) from the given {@link code}. * Generate a pair of OTPs (one time passwords) from the given {@link code}.