UNPKG

otplib

Version:

TypeScript-first library for TOTP and HOTP with multi-runtime and plugin support

2 lines 3.71 kB
"use strict";var d=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var r in e)d(t,r,{get:e[r],enumerable:!0})},R=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of b(e))!x.call(t,o)&&o!==r&&d(t,o,{get:()=>e[o],enumerable:!(a=V(e,o))||a.enumerable});return t};var k=t=>R(d({},"__esModule",{value:!0}),t);var z={};H(z,{generate:()=>C,generateSecret:()=>v,generateSync:()=>D,generateURI:()=>G,verify:()=>w,verifySync:()=>B});module.exports=k(z);var l=require("@otplib/core"),g=require("@otplib/hotp"),u=require("@otplib/totp"),O=require("@otplib/uri");var S=require("@otplib/core"),f=require("@otplib/plugin-base32-scure"),T=require("@otplib/plugin-crypto-noble");function m(t){return{secret:t.secret,strategy:t.strategy??"totp",crypto:t.crypto??T.crypto,base32:t.base32??f.base32,algorithm:t.algorithm??"sha1",digits:t.digits??6,period:t.period??30,epoch:t.epoch??Math.floor(Date.now()/1e3),t0:t.t0??0,counter:t.counter,guardrails:t.guardrails??(0,S.createGuardrails)(),hooks:t.hooks}}function P(t){return{...m(t),token:t.token,epochTolerance:t.epochTolerance??0,counterTolerance:t.counterTolerance??0,afterTimeStep:t.afterTimeStep}}function y(t,e,r){if(t==="totp")return r.totp();if(t==="hotp"){if(e===void 0)throw new l.ConfigurationError("Counter is required for HOTP strategy. Example: { strategy: 'hotp', counter: 0 }");return r.hotp(e)}throw new l.ConfigurationError(`Unknown OTP strategy: ${t}. Valid strategies are 'totp' or 'hotp'.`)}function v(t){let{crypto:e=T.crypto,base32:r=f.base32,length:a=20}=t||{};return(0,l.generateSecret)({crypto:e,base32:r,length:a})}function G(t){let{strategy:e="totp",issuer:r,label:a,secret:o,algorithm:i="sha1",digits:n=6,period:s=30,counter:p}=t;return y(e,p,{totp:()=>(0,O.generateTOTP)({issuer:r,label:a,secret:o,algorithm:i,digits:n,period:s}),hotp:c=>(0,O.generateHOTP)({issuer:r,label:a,secret:o,algorithm:i,digits:n,counter:c})})}async function C(t){let e=m(t),{secret:r,crypto:a,base32:o,algorithm:i,digits:n,hooks:s}=e,p={secret:r,crypto:a,base32:o,algorithm:i,digits:n,hooks:s};return y(e.strategy,e.counter,{totp:()=>(0,u.generate)({...p,period:e.period,epoch:e.epoch,t0:e.t0,guardrails:e.guardrails}),hotp:c=>(0,g.generate)({...p,counter:c,guardrails:e.guardrails})})}function D(t){let e=m(t),{secret:r,crypto:a,base32:o,algorithm:i,digits:n}=e,s={secret:r,crypto:a,base32:o,algorithm:i,digits:n};return y(e.strategy,e.counter,{totp:()=>(0,u.generateSync)({...s,period:e.period,epoch:e.epoch,t0:e.t0,guardrails:e.guardrails}),hotp:p=>(0,g.generateSync)({...s,counter:p,guardrails:e.guardrails})})}async function w(t){let e=P(t),{secret:r,token:a,crypto:o,base32:i,algorithm:n,digits:s,hooks:p}=e,c={secret:r,token:a,crypto:o,base32:i,algorithm:n,digits:s,hooks:p};return y(e.strategy,e.counter,{totp:()=>(0,u.verify)({...c,period:e.period,epoch:e.epoch,t0:e.t0,epochTolerance:e.epochTolerance,afterTimeStep:e.afterTimeStep,guardrails:e.guardrails}),hotp:h=>(0,g.verify)({...c,counter:h,counterTolerance:e.counterTolerance,guardrails:e.guardrails})})}function B(t){let e=P(t),{secret:r,token:a,crypto:o,base32:i,algorithm:n,digits:s,hooks:p}=e,c={secret:r,token:a,crypto:o,base32:i,algorithm:n,digits:s,hooks:p};return y(e.strategy,e.counter,{totp:()=>(0,u.verifySync)({...c,period:e.period,epoch:e.epoch,t0:e.t0,epochTolerance:e.epochTolerance,afterTimeStep:e.afterTimeStep,guardrails:e.guardrails}),hotp:h=>(0,g.verifySync)({...c,counter:h,counterTolerance:e.counterTolerance,guardrails:e.guardrails})})}0&&(module.exports={generate,generateSecret,generateSync,generateURI,verify,verifySync}); //# sourceMappingURL=functional.cjs.map