{"version":3,"sources":["webpack:///./node_modules/jwa/index.js"],"names":["bufferEqual","Buffer","crypto","formatEcdsa","util","MSG_INVALID_SECRET","MSG_INVALID_VERIFIER_KEY","supportsKeyObjects","createPublicKey","checkIsPublicKey","key","isBuffer","typeError","type","asymmetricKeyType","export","checkIsPrivateKey","fromBase64","base64","replace","toBase64","base64url","padding","toString","length","i","template","args","slice","call","arguments","errMsg","format","bind","apply","TypeError","normalizeInput","thing","obj","JSON","stringify","createHmacSigner","bits","secret","checkIsSecretKey","hmac","createHmac","update","digest","createHmacVerifier","signature","computedSig","from","createKeySigner","privateKey","signer","createSign","sign","createKeyVerifier","publicKey","verifier","createVerify","verify","createPSSKeySigner","constants","RSA_PKCS1_PSS_PADDING","saltLength","RSA_PSS_SALTLEN_DIGEST","createPSSKeyVerifier","createECDSASigner","inner","derToJose","createECDSAVerifer","joseToDer","createNoneSigner","createNoneVerifier","module","exports","algorithm","signerFactories","hs","rs","ps","es","none","verifierFactories","match","algo","toLowerCase"],"mappings":"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","file":"yarn.jwa.becc34fe6fa559c58c21.js","sourcesContent":["var bufferEqual = require('buffer-equal-constant-time');\nvar Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n"],"sourceRoot":""}