{"version":3,"file":"index.cjs","sources":["../src/JWT/type.ts","../src/JWT/resolveAuthenticator.ts","../src/JWT/verifierZkLogin.ts","../src/JWT/verifierAlgorithm.ts","../src/JWT/verifyJWTDecoded.ts","../src/JWT/conditionalAlgorithm.ts","../../../node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../../node_modules/uint8arrays/esm/src/alloc.js","../../../node_modules/uint8arrays/esm/src/concat.js","../../../node_modules/multiformats/esm/vendor/base-x.js","../../../node_modules/multiformats/esm/src/bytes.js","../../../node_modules/multiformats/esm/src/bases/base.js","../../../node_modules/multiformats/esm/src/bases/identity.js","../../../node_modules/multiformats/esm/src/bases/base2.js","../../../node_modules/multiformats/esm/src/bases/base8.js","../../../node_modules/multiformats/esm/src/bases/base10.js","../../../node_modules/multiformats/esm/src/bases/base16.js","../../../node_modules/multiformats/esm/src/bases/base32.js","../../../node_modules/multiformats/esm/src/bases/base36.js","../../../node_modules/multiformats/esm/src/bases/base58.js","../../../node_modules/multiformats/esm/src/bases/base64.js","../../../node_modules/multiformats/esm/src/bases/base256emoji.js","../../../node_modules/multiformats/esm/src/codecs/json.js","../../../node_modules/multiformats/esm/src/basics.js","../../../node_modules/uint8arrays/esm/src/util/bases.js","../../../node_modules/uint8arrays/esm/src/from-string.js","../../../node_modules/uint8arrays/esm/src/to-string.js","../src/JWT/encodeSection.ts","../src/JWT/signerAlgorithm.ts","../src/JWT/createJWS.ts","../src/JWT/index.ts","../src/WalrusDID.ts"],"sourcesContent":["import { Signer } from 'did-jwt'\n\nexport type KNOWN_VERIFICATION_METHOD = 'zkLoginSignatureVerification'\n\nexport type PublicKeyTypes = Record<KNOWN_JWA, KNOWN_VERIFICATION_METHOD[]>\n\nexport type KNOWN_JWA = 'zkLogin'\n\nexport const SUPPORTED_PUBLIC_KEY_TYPES: PublicKeyTypes = {\n  zkLogin: ['zkLoginSignatureVerification'],\n}\n\nexport interface EcdsaSignature {\n  r: string\n  s: string\n  recoveryParam?: number\n}\n\nexport const NBF_SKEW = 300\n\nexport interface JWSCreationOptions {\n  canonicalize?: boolean\n}\n\nexport type SignerAlgorithm = (payload: string, signer: Signer) => Promise<string>\n","import { JWT_ERROR } from 'did-jwt'\nimport { DIDDocument, DIDResolutionResult, Resolvable, VerificationMethod } from 'did-resolver'\nimport { KNOWN_JWA, SUPPORTED_PUBLIC_KEY_TYPES } from './type'\n\nexport type ProofPurposeTypes =\n  | 'assertionMethod'\n  | 'authentication'\n  // | 'keyAgreement' // keyAgreement VerificationMethod should not be used for signing\n  | 'capabilityDelegation'\n  | 'capabilityInvocation'\n\nconst DID_JSON = 'application/did+json'\n\ninterface DIDAuthenticator {\n  authenticators: VerificationMethod[]\n  issuer: string\n  didResolutionResult: DIDResolutionResult\n}\n\ntype LegacyVerificationMethod = { publicKey?: string }\n\nexport async function resolveAuthenticator(\n  resolver: Resolvable,\n  alg: string,\n  issuer: string,\n  proofPurpose?: ProofPurposeTypes\n): Promise<DIDAuthenticator> {\n  const types: string[] = SUPPORTED_PUBLIC_KEY_TYPES[alg as KNOWN_JWA]\n  if (!types || types.length === 0) {\n    throw new Error(`${JWT_ERROR.NOT_SUPPORTED}: No supported signature types for algorithm ${alg}`)\n  }\n  let didResult: DIDResolutionResult\n\n  const result = (await resolver.resolve(issuer, { accept: DID_JSON })) as unknown\n  // support legacy resolvers that do not produce DIDResolutionResult\n  if (Object.getOwnPropertyNames(result).indexOf('didDocument') === -1) {\n    didResult = {\n      didDocument: result as DIDDocument,\n      didDocumentMetadata: {},\n      didResolutionMetadata: { contentType: DID_JSON },\n    }\n  } else {\n    didResult = result as DIDResolutionResult\n  }\n\n  if (didResult.didResolutionMetadata?.error || didResult.didDocument == null) {\n    const { error, message } = didResult.didResolutionMetadata\n    throw new Error(\n      `${JWT_ERROR.RESOLVER_ERROR}: Unable to resolve DID document for ${issuer}: ${error}, ${message || ''}`\n    )\n  }\n\n  const getPublicKeyById = (verificationMethods: VerificationMethod[], pubid?: string): VerificationMethod | null => {\n    const filtered = verificationMethods.filter(({ id }) => pubid === id)\n    return filtered.length > 0 ? filtered[0] : null\n  }\n\n  let publicKeysToCheck: VerificationMethod[] = [\n    ...(didResult?.didDocument?.verificationMethod || []),\n    ...(didResult?.didDocument?.publicKey || []),\n  ]\n  if (typeof proofPurpose === 'string') {\n    // support legacy DID Documents that do not list assertionMethod\n    if (\n      proofPurpose.startsWith('assertion') &&\n      !Object.getOwnPropertyNames(didResult?.didDocument).includes('assertionMethod')\n    ) {\n      didResult.didDocument = { ...(<DIDDocument>didResult.didDocument) }\n      didResult.didDocument.assertionMethod = [...publicKeysToCheck.map((pk) => pk.id)]\n    }\n\n    publicKeysToCheck = (didResult.didDocument[proofPurpose] || [])\n      .map((verificationMethod) => {\n        if (typeof verificationMethod === 'string') {\n          return getPublicKeyById(publicKeysToCheck, verificationMethod)\n        } else if (typeof (<LegacyVerificationMethod>verificationMethod).publicKey === 'string') {\n          // this is a legacy format\n          return getPublicKeyById(publicKeysToCheck, (<LegacyVerificationMethod>verificationMethod).publicKey)\n        } else {\n          return <VerificationMethod>verificationMethod\n        }\n      })\n      .filter((key) => key != null) as VerificationMethod[]\n  }\n\n  const authenticators: VerificationMethod[] = publicKeysToCheck.filter(({ type }) =>\n    types.find((supported) => supported === type)\n  )\n\n  if (typeof proofPurpose === 'string' && (!authenticators || authenticators.length === 0)) {\n    throw new Error(\n      `${JWT_ERROR.NO_SUITABLE_KEYS}: DID document for ${issuer} does not have public keys suitable for ${alg} with ${proofPurpose} purpose`\n    )\n  }\n  if (!authenticators || authenticators.length === 0) {\n    throw new Error(`${JWT_ERROR.NO_SUITABLE_KEYS}: DID document for ${issuer} does not have public keys for ${alg}`)\n  }\n  return { authenticators, issuer, didResolutionResult: didResult }\n}\n","import { base64ToBytes, extractPublicKeyBytes } from 'did-jwt'\nimport { VerificationMethod } from 'did-resolver'\nimport { sha256 as sha256Hash } from '@noble/hashes/sha256'\nimport { SuiGraphQLClient } from '@mysten/sui/graphql'\nimport { ZkLoginPublicIdentifier } from '@mysten/sui/zklogin'\n\nexport async function verifierZkLogin(\n  data: string,\n  signature: string,\n  authenticators: VerificationMethod[]\n): Promise<VerificationMethod> {\n  let signer: VerificationMethod | undefined = undefined\n\n  if (authenticators[0]) {\n    try {\n      const { keyBytes } = extractPublicKeyBytes(authenticators[0])\n      const parsed = authenticators[0].controller.split(':')\n      const network = parsed.length === 3 ? 'mainnet' : parsed[2]\n      const client = new SuiGraphQLClient({\n        url: `https://sui-${network}.mystenlabs.com/graphql`,\n      })\n      const zkLoginPublicIdentifier = new ZkLoginPublicIdentifier(keyBytes, { client })\n      const bytes = base64ToBytes(signature)\n      const result = await zkLoginPublicIdentifier.verifyPersonalMessage(\n        sha256Hash(new TextEncoder().encode(data)),\n        bytes\n      )\n      if (result) {\n        signer = authenticators[0]\n      }\n    } catch (error) {\n      console.error(error)\n    }\n  }\n  if (!signer) throw new Error('invalid_signature: Signature invalid for JWT')\n  return signer\n}\n","import { base64ToBytes, bytesToHex } from 'did-jwt'\nimport { VerificationMethod } from 'did-resolver'\nimport { EcdsaSignature, KNOWN_JWA } from './type'\nimport { verifierZkLogin } from './verifierZkLogin'\n\ntype Verifier = (data: string, signature: string, authenticators: VerificationMethod[]) => Promise<VerificationMethod>\n\ntype Algorithms = Record<KNOWN_JWA, Verifier>\n\nconst algorithms: Algorithms = {\n  zkLogin: verifierZkLogin,\n}\n\nexport function toSignatureObject(signature: string, recoverable = false): EcdsaSignature {\n  const rawSig: Uint8Array = base64ToBytes(signature)\n  if (rawSig.length !== (recoverable ? 65 : 64)) {\n    throw new Error('wrong signature length')\n  }\n  const r: string = bytesToHex(rawSig.slice(0, 32))\n  const s: string = bytesToHex(rawSig.slice(32, 64))\n  const sigObj: EcdsaSignature = { r, s }\n  if (recoverable) {\n    sigObj.recoveryParam = rawSig[64]\n  }\n  return sigObj\n}\n\nfunction VerifierAlgorithm(alg: string): Verifier {\n  const impl: Verifier = algorithms[alg as KNOWN_JWA]\n  if (!impl) throw new Error(`not_supported: Unsupported algorithm ${alg}`)\n  return impl\n}\n\nVerifierAlgorithm.toSignatureObject = toSignatureObject\n\nexport default VerifierAlgorithm\n","import { VerificationMethod } from 'did-resolver'\nimport { decodeJWT, JWT_ERROR } from 'did-jwt'\nimport VerifierAlgorithm from './verifierAlgorithm'\nimport { JWTDecoded } from './conditionalAlgorithm'\n\nexport async function verifyJWTDecoded(\n  { header, payload, data, signature }: JWTDecoded,\n  pubKeys: VerificationMethod | VerificationMethod[]\n): Promise<VerificationMethod> {\n  if (!Array.isArray(pubKeys)) pubKeys = [pubKeys]\n\n  const iss = payload.iss\n  let recurse = true\n  do {\n    if (iss !== payload.iss) throw new Error(`${JWT_ERROR.INVALID_JWT}: multiple issuers`)\n\n    try {\n      const result = VerifierAlgorithm(header.alg)(data, signature, pubKeys)\n\n      return result\n    } catch (e) {\n      if (!(e as Error).message.startsWith(JWT_ERROR.INVALID_SIGNATURE)) throw e\n    }\n\n    // TODO probably best to create copy objects than replace reference objects\n    if (header.cty !== 'JWT') {\n      recurse = false\n    } else {\n      ;({ payload, header, signature, data } = decodeJWT(payload.jwt, false))\n    }\n  } while (recurse)\n\n  throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: no matching public key found`)\n}\n","import { JWT_ERROR, JWTHeader, JWTPayload, JWTVerifyOptions, verifyJWT } from 'did-jwt'\nimport { VerificationMethod } from 'did-resolver'\nimport { verifyJWTDecoded } from './verifyJWTDecoded'\nimport { resolveAuthenticator } from './resolveAuthenticator'\n\nexport interface JWTDecoded {\n  header: JWTHeader\n  payload: JWTPayload\n  signature: string\n  data: string\n}\n\nexport const CONDITIONAL_PROOF_2022 = 'ConditionalProof2022'\n\nexport async function verifyProof(\n  jwt: string,\n  { header, payload, signature, data }: JWTDecoded,\n  authenticator: VerificationMethod,\n  options: JWTVerifyOptions\n): Promise<VerificationMethod> {\n  if (authenticator.type === CONDITIONAL_PROOF_2022) {\n    return verifyConditionalProof(jwt, { payload, header, signature, data }, authenticator, options)\n  } else {\n    return verifyJWTDecoded({ header, payload, data, signature }, [authenticator])\n  }\n}\n\nexport async function verifyConditionalProof(\n  jwt: string,\n  { header, payload, signature, data }: JWTDecoded,\n  authenticator: VerificationMethod,\n  options: JWTVerifyOptions\n): Promise<VerificationMethod> {\n  // Validate the condition according to its condition property\n  if (authenticator.conditionWeightedThreshold) {\n    return verifyConditionWeightedThreshold(jwt, { header, payload, data, signature }, authenticator, options)\n  } else if (authenticator.conditionDelegated) {\n    return verifyConditionDelegated(jwt, { header, payload, data, signature }, authenticator, options)\n  }\n  // TODO other conditions\n\n  throw new Error(\n    `${JWT_ERROR.INVALID_JWT}: conditional proof type did not find condition for authenticator ${authenticator.id}.`\n  )\n}\n\nexport async function verifyConditionWeightedThreshold(\n  jwt: string,\n  { header, payload, data, signature }: JWTDecoded,\n  authenticator: VerificationMethod,\n  options: JWTVerifyOptions\n): Promise<VerificationMethod> {\n  if (!authenticator.conditionWeightedThreshold || !authenticator.threshold) {\n    throw new Error('Expected conditionWeightedThreshold and threshold')\n  }\n\n  const issuers: string[] = []\n  const threshold = authenticator.threshold\n  let weightCount = 0\n\n  for (const weightedCondition of authenticator.conditionWeightedThreshold) {\n    const currentCondition = weightedCondition.condition\n    let foundSigner: VerificationMethod | undefined\n\n    try {\n      if (currentCondition.type === CONDITIONAL_PROOF_2022) {\n        if (!options.didAuthenticator) {\n          throw new Error('Expected didAuthenticator')\n        }\n\n        const newOptions: JWTVerifyOptions = {\n          ...options,\n          didAuthenticator: {\n            didResolutionResult: options.didAuthenticator?.didResolutionResult,\n            authenticators: [currentCondition],\n            issuer: currentCondition.id,\n          },\n        }\n        const { verified } = await verifyJWT(jwt, newOptions)\n        if (verified) {\n          foundSigner = currentCondition\n        }\n      } else {\n        foundSigner = await verifyJWTDecoded({ header, payload, data, signature }, currentCondition)\n      }\n    } catch (e) {\n      if (!(e as Error).message.startsWith(JWT_ERROR.INVALID_SIGNATURE)) throw e\n    }\n\n    if (foundSigner && !issuers.includes(foundSigner.id)) {\n      issuers.push(foundSigner.id)\n      weightCount += weightedCondition.weight\n\n      if (weightCount >= threshold) {\n        return authenticator\n      }\n    }\n  }\n  throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: condition for authenticator ${authenticator.id} is not met.`)\n}\n\nexport async function verifyConditionDelegated(\n  jwt: string,\n  { header, payload, data, signature }: JWTDecoded,\n  authenticator: VerificationMethod,\n  options: JWTVerifyOptions\n): Promise<VerificationMethod> {\n  if (!authenticator.conditionDelegated) {\n    throw new Error('Expected conditionDelegated')\n  }\n  if (!options.resolver) {\n    throw new Error('Expected resolver')\n  }\n\n  let foundSigner: VerificationMethod | undefined\n\n  const issuer = authenticator.conditionDelegated\n  const didAuthenticator = await resolveAuthenticator(options.resolver, header.alg, issuer, options.proofPurpose)\n  const didResolutionResult = didAuthenticator.didResolutionResult\n\n  if (!didResolutionResult?.didDocument) {\n    throw new Error(`${JWT_ERROR.RESOLVER_ERROR}: Could not resolve delegated DID ${issuer}.`)\n  }\n\n  const delegatedAuthenticator = didAuthenticator.authenticators.find((authenticator) => authenticator.id === issuer)\n  if (!delegatedAuthenticator) {\n    throw new Error(\n      `${JWT_ERROR.NO_SUITABLE_KEYS}: Could not find delegated authenticator ${issuer} in it's DID Document`\n    )\n  }\n\n  if (delegatedAuthenticator.type === CONDITIONAL_PROOF_2022) {\n    const { verified } = await verifyJWT(jwt, {\n      ...options,\n      ...{\n        didAuthenticator: {\n          didResolutionResult,\n          authenticators: [delegatedAuthenticator],\n          issuer: delegatedAuthenticator.id,\n        },\n      },\n    })\n    if (verified) {\n      foundSigner = delegatedAuthenticator\n    }\n  } else {\n    try {\n      foundSigner = await verifyJWTDecoded({ header, payload, data, signature }, delegatedAuthenticator)\n    } catch (e) {\n      if (!(e as Error).message.startsWith('invalid_signature:')) throw e\n    }\n  }\n\n  if (foundSigner) {\n    return authenticator\n  }\n\n  throw new Error(`${JWT_ERROR.INVALID_SIGNATURE}: condition for authenticator ${authenticator.id} is not met.`)\n}\n","export function asUint8Array(buf) {\n  if (globalThis.Buffer != null) {\n    return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n  }\n  return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n  if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n    return asUint8Array(globalThis.Buffer.alloc(size));\n  }\n  return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n  if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n    return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n  }\n  return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function concat(arrays, length) {\n  if (!length) {\n    length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n  }\n  const output = allocUnsafe(length);\n  let offset = 0;\n  for (const arr of arrays) {\n    output.set(arr, offset);\n    offset += arr.length;\n  }\n  return asUint8Array(output);\n}","function base(ALPHABET, name) {\n  if (ALPHABET.length >= 255) {\n    throw new TypeError('Alphabet too long');\n  }\n  var BASE_MAP = new Uint8Array(256);\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255;\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i);\n    var xc = x.charCodeAt(0);\n    if (BASE_MAP[xc] !== 255) {\n      throw new TypeError(x + ' is ambiguous');\n    }\n    BASE_MAP[xc] = i;\n  }\n  var BASE = ALPHABET.length;\n  var LEADER = ALPHABET.charAt(0);\n  var FACTOR = Math.log(BASE) / Math.log(256);\n  var iFACTOR = Math.log(256) / Math.log(BASE);\n  function encode(source) {\n    if (source instanceof Uint8Array);\n    else if (ArrayBuffer.isView(source)) {\n      source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n    } else if (Array.isArray(source)) {\n      source = Uint8Array.from(source);\n    }\n    if (!(source instanceof Uint8Array)) {\n      throw new TypeError('Expected Uint8Array');\n    }\n    if (source.length === 0) {\n      return '';\n    }\n    var zeroes = 0;\n    var length = 0;\n    var pbegin = 0;\n    var pend = source.length;\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++;\n      zeroes++;\n    }\n    var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n    var b58 = new Uint8Array(size);\n    while (pbegin !== pend) {\n      var carry = source[pbegin];\n      var i = 0;\n      for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n        carry += 256 * b58[it1] >>> 0;\n        b58[it1] = carry % BASE >>> 0;\n        carry = carry / BASE >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      pbegin++;\n    }\n    var it2 = size - length;\n    while (it2 !== size && b58[it2] === 0) {\n      it2++;\n    }\n    var str = LEADER.repeat(zeroes);\n    for (; it2 < size; ++it2) {\n      str += ALPHABET.charAt(b58[it2]);\n    }\n    return str;\n  }\n  function decodeUnsafe(source) {\n    if (typeof source !== 'string') {\n      throw new TypeError('Expected String');\n    }\n    if (source.length === 0) {\n      return new Uint8Array();\n    }\n    var psz = 0;\n    if (source[psz] === ' ') {\n      return;\n    }\n    var zeroes = 0;\n    var length = 0;\n    while (source[psz] === LEADER) {\n      zeroes++;\n      psz++;\n    }\n    var size = (source.length - psz) * FACTOR + 1 >>> 0;\n    var b256 = new Uint8Array(size);\n    while (source[psz]) {\n      var carry = BASE_MAP[source.charCodeAt(psz)];\n      if (carry === 255) {\n        return;\n      }\n      var i = 0;\n      for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n        carry += BASE * b256[it3] >>> 0;\n        b256[it3] = carry % 256 >>> 0;\n        carry = carry / 256 >>> 0;\n      }\n      if (carry !== 0) {\n        throw new Error('Non-zero carry');\n      }\n      length = i;\n      psz++;\n    }\n    if (source[psz] === ' ') {\n      return;\n    }\n    var it4 = size - length;\n    while (it4 !== size && b256[it4] === 0) {\n      it4++;\n    }\n    var vch = new Uint8Array(zeroes + (size - it4));\n    var j = zeroes;\n    while (it4 !== size) {\n      vch[j++] = b256[it4++];\n    }\n    return vch;\n  }\n  function decode(string) {\n    var buffer = decodeUnsafe(string);\n    if (buffer) {\n      return buffer;\n    }\n    throw new Error(`Non-${ name } character`);\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n  const hexes = hex.match(/../g);\n  return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n  if (aa === bb)\n    return true;\n  if (aa.byteLength !== bb.byteLength) {\n    return false;\n  }\n  for (let ii = 0; ii < aa.byteLength; ii++) {\n    if (aa[ii] !== bb[ii]) {\n      return false;\n    }\n  }\n  return true;\n};\nconst coerce = o => {\n  if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n    return o;\n  if (o instanceof ArrayBuffer)\n    return new Uint8Array(o);\n  if (ArrayBuffer.isView(o)) {\n    return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n  }\n  throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n  equals,\n  coerce,\n  isBinary,\n  fromHex,\n  toHex,\n  fromString,\n  toString,\n  empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n  constructor(name, prefix, baseEncode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n  }\n  encode(bytes) {\n    if (bytes instanceof Uint8Array) {\n      return `${ this.prefix }${ this.baseEncode(bytes) }`;\n    } else {\n      throw Error('Unknown type, must be binary type');\n    }\n  }\n}\nclass Decoder {\n  constructor(name, prefix, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    if (prefix.codePointAt(0) === undefined) {\n      throw new Error('Invalid prefix character');\n    }\n    this.prefixCodePoint = prefix.codePointAt(0);\n    this.baseDecode = baseDecode;\n  }\n  decode(text) {\n    if (typeof text === 'string') {\n      if (text.codePointAt(0) !== this.prefixCodePoint) {\n        throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n      }\n      return this.baseDecode(text.slice(this.prefix.length));\n    } else {\n      throw Error('Can only multibase decode strings');\n    }\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n}\nclass ComposedDecoder {\n  constructor(decoders) {\n    this.decoders = decoders;\n  }\n  or(decoder) {\n    return or(this, decoder);\n  }\n  decode(input) {\n    const prefix = input[0];\n    const decoder = this.decoders[prefix];\n    if (decoder) {\n      return decoder.decode(input);\n    } else {\n      throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n    }\n  }\n}\nexport const or = (left, right) => new ComposedDecoder({\n  ...left.decoders || { [left.prefix]: left },\n  ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n  constructor(name, prefix, baseEncode, baseDecode) {\n    this.name = name;\n    this.prefix = prefix;\n    this.baseEncode = baseEncode;\n    this.baseDecode = baseDecode;\n    this.encoder = new Encoder(name, prefix, baseEncode);\n    this.decoder = new Decoder(name, prefix, baseDecode);\n  }\n  encode(input) {\n    return this.encoder.encode(input);\n  }\n  decode(input) {\n    return this.decoder.decode(input);\n  }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n  const {encode, decode} = basex(alphabet, name);\n  return from({\n    prefix,\n    name,\n    encode,\n    decode: text => coerce(decode(text))\n  });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n  const codes = {};\n  for (let i = 0; i < alphabet.length; ++i) {\n    codes[alphabet[i]] = i;\n  }\n  let end = string.length;\n  while (string[end - 1] === '=') {\n    --end;\n  }\n  const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n  let bits = 0;\n  let buffer = 0;\n  let written = 0;\n  for (let i = 0; i < end; ++i) {\n    const value = codes[string[i]];\n    if (value === undefined) {\n      throw new SyntaxError(`Non-${ name } character`);\n    }\n    buffer = buffer << bitsPerChar | value;\n    bits += bitsPerChar;\n    if (bits >= 8) {\n      bits -= 8;\n      out[written++] = 255 & buffer >> bits;\n    }\n  }\n  if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n    throw new SyntaxError('Unexpected end of data');\n  }\n  return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n  const pad = alphabet[alphabet.length - 1] === '=';\n  const mask = (1 << bitsPerChar) - 1;\n  let out = '';\n  let bits = 0;\n  let buffer = 0;\n  for (let i = 0; i < data.length; ++i) {\n    buffer = buffer << 8 | data[i];\n    bits += 8;\n    while (bits > bitsPerChar) {\n      bits -= bitsPerChar;\n      out += alphabet[mask & buffer >> bits];\n    }\n  }\n  if (bits) {\n    out += alphabet[mask & buffer << bitsPerChar - bits];\n  }\n  if (pad) {\n    while (out.length * bitsPerChar & 7) {\n      out += '=';\n    }\n  }\n  return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n  return from({\n    prefix,\n    name,\n    encode(input) {\n      return encode(input, alphabet, bitsPerChar);\n    },\n    decode(input) {\n      return decode(input, alphabet, bitsPerChar, name);\n    }\n  });\n};","import { from } from './base.js';\nimport {\n  fromString,\n  toString\n} from '../bytes.js';\nexport const identity = from({\n  prefix: '\\0',\n  name: 'identity',\n  encode: buf => toString(buf),\n  decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n  prefix: '0',\n  name: 'base2',\n  alphabet: '01',\n  bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n  prefix: '7',\n  name: 'base8',\n  alphabet: '01234567',\n  bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n  prefix: '9',\n  name: 'base10',\n  alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n  prefix: 'f',\n  name: 'base16',\n  alphabet: '0123456789abcdef',\n  bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n  prefix: 'F',\n  name: 'base16upper',\n  alphabet: '0123456789ABCDEF',\n  bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n  prefix: 'b',\n  name: 'base32',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n  bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n  prefix: 'B',\n  name: 'base32upper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n  bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n  prefix: 'c',\n  name: 'base32pad',\n  alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n  bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n  prefix: 'C',\n  name: 'base32padupper',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n  bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n  prefix: 'v',\n  name: 'base32hex',\n  alphabet: '0123456789abcdefghijklmnopqrstuv',\n  bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n  prefix: 'V',\n  name: 'base32hexupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n  bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n  prefix: 't',\n  name: 'base32hexpad',\n  alphabet: '0123456789abcdefghijklmnopqrstuv=',\n  bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n  prefix: 'T',\n  name: 'base32hexpadupper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n  bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n  prefix: 'h',\n  name: 'base32z',\n  alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n  bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n  prefix: 'k',\n  name: 'base36',\n  alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n  prefix: 'K',\n  name: 'base36upper',\n  alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n  name: 'base58btc',\n  prefix: 'z',\n  alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n  name: 'base58flickr',\n  prefix: 'Z',\n  alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n  prefix: 'm',\n  name: 'base64',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n  bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n  prefix: 'M',\n  name: 'base64pad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n  bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n  prefix: 'u',\n  name: 'base64url',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n  bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n  prefix: 'U',\n  name: 'base64urlpad',\n  alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n  bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n  p[i] = c;\n  return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n  p[c.codePointAt(0)] = i;\n  return p;\n}, []);\nfunction encode(data) {\n  return data.reduce((p, c) => {\n    p += alphabetBytesToChars[c];\n    return p;\n  }, '');\n}\nfunction decode(str) {\n  const byts = [];\n  for (const char of str) {\n    const byt = alphabetCharsToBytes[char.codePointAt(0)];\n    if (byt === undefined) {\n      throw new Error(`Non-base256emoji character: ${ char }`);\n    }\n    byts.push(byt);\n  }\n  return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n  prefix: '\\uD83D\\uDE80',\n  name: 'base256emoji',\n  encode,\n  decode\n});","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n  CID,\n  hasher,\n  digest,\n  varint,\n  bytes\n} from './index.js';\nconst bases = {\n  ...identityBase,\n  ...base2,\n  ...base8,\n  ...base10,\n  ...base16,\n  ...base32,\n  ...base36,\n  ...base58,\n  ...base64,\n  ...base256emoji\n};\nconst hashes = {\n  ...sha2,\n  ...identity\n};\nconst codecs = {\n  raw,\n  json\n};\nexport {\n  CID,\n  hasher,\n  digest,\n  varint,\n  bytes,\n  hashes,\n  bases,\n  codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n  return {\n    name,\n    prefix,\n    encoder: {\n      name,\n      prefix,\n      encode\n    },\n    decoder: { decode }\n  };\n}\nconst string = createCodec('utf8', 'u', buf => {\n  const decoder = new TextDecoder('utf8');\n  return 'u' + decoder.decode(buf);\n}, str => {\n  const encoder = new TextEncoder();\n  return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n  let string = 'a';\n  for (let i = 0; i < buf.length; i++) {\n    string += String.fromCharCode(buf[i]);\n  }\n  return string;\n}, str => {\n  str = str.substring(1);\n  const buf = allocUnsafe(str.length);\n  for (let i = 0; i < str.length; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n});\nconst BASES = {\n  utf8: string,\n  'utf-8': string,\n  hex: bases.base16,\n  latin1: ascii,\n  ascii: ascii,\n  binary: ascii,\n  ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n  const base = bases[encoding];\n  if (!base) {\n    throw new Error(`Unsupported encoding \"${ encoding }\"`);\n  }\n  if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n  }\n  return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n  const base = bases[encoding];\n  if (!base) {\n    throw new Error(`Unsupported encoding \"${ encoding }\"`);\n  }\n  if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n    return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n  }\n  return base.encoder.encode(array).substring(1);\n}","import canonicalizeData from 'canonicalize'\nimport { bytesToBase64url } from 'did-jwt'\nimport { concat, fromString, toString } from 'uint8arrays'\n\nconst u8a = { toString, fromString, concat }\n\nexport function encodeBase64url(s: string): string {\n  return bytesToBase64url(u8a.fromString(s))\n}\n\nexport function encodeSection(data: any, shouldCanonicalize = false): string {\n  if (shouldCanonicalize) {\n    return encodeBase64url(<string>canonicalizeData(data))\n  } else {\n    return encodeBase64url(JSON.stringify(data))\n  }\n}\n","import { Signer } from 'did-jwt'\nimport { EcdsaSignature, SignerAlgorithm } from './type'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction instanceOfEcdsaSignature(object: any): object is EcdsaSignature {\n  return typeof object === 'object' && 'r' in object && 's' in object\n}\n\nexport function ZkLoginSignerAlg(): SignerAlgorithm {\n  return async function sign(payload: string, signer: Signer): Promise<string> {\n    const signature: EcdsaSignature | string = await signer(payload)\n    if (!instanceOfEcdsaSignature(signature)) {\n      return signature\n    } else {\n      throw new Error('invalid_config: expected a signer function that returns a string instead of signature object')\n    }\n  }\n}\n\ninterface SignerAlgorithms {\n  [alg: string]: SignerAlgorithm\n}\n\nconst algorithms: SignerAlgorithms = {\n  zkLogin: ZkLoginSignerAlg(),\n}\n\nfunction SignerAlg(alg: string): SignerAlgorithm {\n  const impl: SignerAlgorithm = algorithms[alg]\n  if (!impl) throw new Error(`not_supported: Unsupported algorithm ${alg}`)\n  return impl\n}\n\nexport default SignerAlg\n","import { JWTHeader, JWTPayload, Signer } from 'did-jwt'\nimport { JWSCreationOptions, SignerAlgorithm } from './type'\nimport { encodeSection } from './encodeSection'\nimport SignerAlg from './signerAlgorithm'\n\nexport async function createJWS(\n  payload: string | Partial<JWTPayload>,\n  signer: Signer,\n  header: Partial<JWTHeader> = {},\n  options: JWSCreationOptions = {}\n): Promise<string> {\n  if (!header.alg) header.alg = 'zkLogin'\n  const encodedPayload = typeof payload === 'string' ? payload : encodeSection(payload, options.canonicalize)\n  const signingInput: string = [encodeSection(header, options.canonicalize), encodedPayload].join('.')\n\n  const jwtSigner: SignerAlgorithm = SignerAlg(header.alg)\n  const signature: string = await jwtSigner(signingInput, signer)\n\n  // JWS Compact Serialization\n  // https://www.rfc-editor.org/rfc/rfc7515#section-7.1\n  return [signingInput, signature].join('.')\n}\n","import { JWTHeader, JWTOptions, JWTPayload, JWTVerified, JWTVerifyOptions, JWT_ERROR, Signer, decodeJWT } from 'did-jwt'\nimport { DIDResolutionResult, parse, ParsedDID, VerificationMethod } from 'did-resolver'\nimport { NBF_SKEW } from './type'\nimport { ProofPurposeTypes, resolveAuthenticator } from './resolveAuthenticator'\nimport { verifyProof } from './conditionalAlgorithm'\nimport { createJWS } from './createJWS'\n\nexport async function createZkLoginJWT(\n  payload: Partial<JWTPayload>,\n  { issuer, signer, alg, expiresIn, canonicalize }: JWTOptions,\n  header: Partial<JWTHeader> = {}\n): Promise<string> {\n  if (!signer) throw new Error('missing_signer: No Signer functionality has been configured')\n  if (!issuer) throw new Error('missing_issuer: No issuing DID has been configured')\n  if (!header.typ) header.typ = 'JWT'\n  if (!header.alg) header.alg = alg\n  const timestamps: Partial<JWTPayload> = {\n    iat: Math.floor(Date.now() / 1000),\n    exp: undefined,\n  }\n  if (expiresIn) {\n    if (typeof expiresIn === 'number') {\n      timestamps.exp = <number>(payload.nbf || timestamps.iat) + Math.floor(expiresIn)\n    } else {\n      throw new Error('invalid_argument: JWT expiresIn is not a number')\n    }\n  }\n  const fullPayload = { ...timestamps, ...payload, iss: issuer }\n  return createJWS(fullPayload, signer, header, { canonicalize })\n}\n\nexport const verifyZkLoginJWT = async (jwt: string, options: JWTVerifyOptions): Promise<JWTVerified> => {\n  if (!options.resolver) throw new Error('missing_resolver: No DID resolver has been configured')\n  const { payload, header, signature, data } = decodeJWT(jwt, false)\n\n  const proofPurpose: ProofPurposeTypes | undefined = Object.prototype.hasOwnProperty.call(options, 'auth')\n    ? options.auth\n      ? 'authentication'\n      : undefined\n    : options.proofPurpose\n\n  let didUrl: string | undefined\n\n  if (!payload.iss && !payload.client_id) {\n    throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT iss or client_id are required`)\n  }\n\n  if (options.didAuthenticator) {\n    didUrl = options.didAuthenticator.issuer\n  } else if (!payload.iss && payload.scope === 'openid' && payload.redirect_uri) {\n    // SIOP Request payload\n    // https://identity.foundation/jwt-vc-presentation-profile/#self-issued-op-request-object\n    if (!payload.client_id) {\n      throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT client_id is required`)\n    }\n    didUrl = payload.client_id\n  } else {\n    didUrl = payload.iss\n  }\n\n  if (!didUrl) {\n    throw new Error(`${JWT_ERROR.INVALID_JWT}: No DID has been found in the JWT`)\n  }\n\n  let authenticators: VerificationMethod[]\n  let issuer: string\n  let didResolutionResult: DIDResolutionResult\n  if (options.didAuthenticator) {\n    ;({ didResolutionResult, authenticators, issuer } = options.didAuthenticator)\n  } else {\n    ;({ didResolutionResult, authenticators, issuer } = await resolveAuthenticator(\n      options.resolver,\n      header.alg,\n      didUrl,\n      proofPurpose\n    ))\n    // Add to options object for recursive reference\n    options.didAuthenticator = { didResolutionResult, authenticators, issuer }\n  }\n\n  const { did } = parse(didUrl) as ParsedDID\n\n  let signer: VerificationMethod | null = null\n\n  if (did !== didUrl) {\n    const authenticator = authenticators.find((auth) => auth.id === didUrl)\n    if (!authenticator) {\n      throw new Error(`${JWT_ERROR.INVALID_JWT}: No authenticator found for did URL ${didUrl}`)\n    }\n\n    signer = await verifyProof(jwt, { payload, header, signature, data }, authenticator, options)\n  } else {\n    let i = 0\n    while (!signer && i < authenticators.length) {\n      const authenticator = authenticators[i]\n      try {\n        signer = await verifyProof(jwt, { payload, header, signature, data }, authenticator, options)\n      } catch (e) {\n        if (!(e as Error).message.includes(JWT_ERROR.INVALID_SIGNATURE) || i === authenticators.length - 1) throw e\n      }\n\n      i++\n    }\n  }\n\n  if (signer) {\n    const now: number = typeof options.policies?.now === 'number' ? options.policies.now : Math.floor(Date.now() / 1000)\n    const skewTime = typeof options.skewTime !== 'undefined' && options.skewTime >= 0 ? options.skewTime : NBF_SKEW\n\n    const nowSkewed = now + skewTime\n    if (options.policies?.nbf !== false && payload.nbf) {\n      if (payload.nbf > nowSkewed) {\n        throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT not valid before nbf: ${payload.nbf}`)\n      }\n    } else if (options.policies?.iat !== false && payload.iat && payload.iat > nowSkewed) {\n      throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT not valid yet (issued in the future) iat: ${payload.iat}`)\n    }\n    if (options.policies?.exp !== false && payload.exp && payload.exp <= now - skewTime) {\n      throw new Error(`${JWT_ERROR.INVALID_JWT}: JWT has expired: exp: ${payload.exp} < now: ${now}`)\n    }\n    if (options.policies?.aud !== false && payload.aud) {\n      if (!options.audience && !options.callbackUrl) {\n        throw new Error(\n          `${JWT_ERROR.INVALID_AUDIENCE}: JWT audience is required but your app address has not been configured`\n        )\n      }\n      const audArray = Array.isArray(payload.aud) ? payload.aud : [payload.aud]\n      const matchedAudience = audArray.find((item) => options.audience === item || options.callbackUrl === item)\n\n      if (typeof matchedAudience === 'undefined') {\n        throw new Error(`${JWT_ERROR.INVALID_AUDIENCE}: JWT audience does not match your DID or callback url`)\n      }\n    }\n\n    return { verified: true, payload, didResolutionResult, issuer, signer, jwt, policies: options.policies }\n  }\n  throw new Error(\n    `${JWT_ERROR.INVALID_SIGNATURE}: JWT not valid. issuer DID document does not contain a verificationMethod that matches the signature.`\n  )\n}\n","import {\n  createJWT,\n  JWTVerified,\n  Signer as JWTSigner,\n  verifyJWT,\n  JWTPayload,\n  decodeJWT,\n  bytesToBase64url,\n  base64ToBytes,\n} from 'did-jwt'\nimport { Resolvable } from 'did-resolver'\nimport { sha256 as sha256Hash } from '@noble/hashes/sha256'\nimport { toZkLoginPublicIdentifier, ZkLoginPublicIdentifier } from '@mysten/sui/zklogin'\nimport { Secp256r1Keypair, Secp256r1PublicKey } from '@mysten/sui/keypairs/secp256r1'\nimport { fromB64, toB64 } from '@mysten/sui/utils'\nimport { getZkLoginSignature } from '@mysten/zklogin'\nimport { bcs } from '@mysten/sui/bcs'\nimport { SIGNATURE_FLAG_TO_SCHEME } from '@mysten/sui/cryptography'\nimport { SuiGraphQLClient } from '@mysten/sui/graphql'\nimport { createZkLoginJWT, verifyZkLoginJWT } from './JWT'\n\nexport class WalrusDID {\n  private readonly alg: string\n  private readonly signer?: JWTSigner\n  private readonly publicKey: string\n\n  constructor(signer: {\n    privateKey: string\n    zkLogin?: {\n      addressSeed: string\n      iss: string\n      proof: string\n      maxEpoch: number\n    }\n  }) {\n    this.alg = signer.zkLogin ? 'zkLogin' : 'ES256'\n    this.publicKey = signer.zkLogin\n      ? toZkLoginPublicIdentifier(BigInt(signer.zkLogin.addressSeed), signer.zkLogin.iss).toSuiPublicKey()\n      : Secp256r1Keypair.fromSecretKey(fromB64(signer.privateKey)).getPublicKey().toSuiPublicKey()\n    this.signer = signer.zkLogin\n      ? async (data: string | Uint8Array): Promise<string> => {\n          const { signature } = await Secp256r1Keypair.fromSecretKey(fromB64(signer.privateKey)).signPersonalMessage(\n            sha256Hash(typeof data === 'string' ? new TextEncoder().encode(data) : data)\n          )\n          const zkLoginSignature = getZkLoginSignature({\n            inputs: {\n              ...JSON.parse(signer.zkLogin!.proof),\n              addressSeed: signer.zkLogin?.addressSeed,\n            },\n            maxEpoch: signer.zkLogin!.maxEpoch,\n            userSignature: signature,\n          })\n          return bytesToBase64url(fromB64(zkLoginSignature))\n        }\n      : async (data: string | Uint8Array): Promise<string> => {\n          const userSignature = await Secp256r1Keypair.fromSecretKey(fromB64(signer.privateKey)).sign(\n            typeof data === 'string' ? new TextEncoder().encode(data) : data\n          )\n          return bytesToBase64url(userSignature)\n        }\n  }\n\n  public getPublicKey(): string {\n    return this.publicKey\n  }\n\n  async sign(data: string | Uint8Array): Promise<string> {\n    if (this.signer) {\n      return this.signer(data) as Promise<string>\n    }\n    throw new Error('signer error')\n  }\n\n  async signJWT(did: string, payload: Partial<JWTPayload>, expiresIn?: number): Promise<string> {\n    if (this.signer) {\n      const options = {\n        signer: this.signer,\n        alg: this.alg,\n        issuer: did,\n      }\n      if (expiresIn) (<any>options)['expiresIn'] = expiresIn\n      if (this.alg === 'zkLogin') {\n        return createZkLoginJWT(payload, options)\n      }\n      return createJWT(payload, options)\n    }\n    throw new Error('signer error')\n  }\n\n  static async verifyJWT(jwt: string, resolver: Resolvable, audience: string): Promise<JWTVerified> {\n    const decoded = decodeJWT(jwt)\n    if (decoded.header.alg === 'zkLogin') {\n      return verifyZkLoginJWT(jwt, { resolver, audience })\n    }\n    return verifyJWT(jwt, { resolver, audience })\n  }\n\n  static async VerifyMetaData(verified: JWTVerified, issuer?: string): Promise<boolean> {\n    try {\n      const { walrus } = verified.didResolutionResult.didDocumentMetadata\n      const Serializer = bcs.struct('SigData', {\n        data: bcs.string(),\n        publicKey: bcs.string(),\n        signature: bcs.string(),\n      })\n      const parsed = Serializer.fromBase64(walrus)\n      const { data, publicKey, signature } = Serializer.fromBase64(parsed.data)\n      const signatureScheme = SIGNATURE_FLAG_TO_SCHEME[fromB64(publicKey)[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME]\n\n      if (issuer) {\n        const pubKey = new Secp256r1PublicKey(fromB64(issuer))\n        const verify = await pubKey.verify(fromB64(parsed.data), fromB64(parsed.signature))\n        if (!verify || issuer !== parsed.publicKey) {\n          return false\n        }\n      }\n\n      if (signatureScheme === 'Secp256r1') {\n        const pubKey = new Secp256r1PublicKey(fromB64(publicKey).slice(1))\n        return (\n          toB64(fromB64(publicKey).slice(1)) === verified.signer.publicKeyBase64 &&\n          (await pubKey.verify(fromB64(data), fromB64(signature)))\n        )\n      } else if (signatureScheme === 'ZkLogin') {\n        const parsed = verified.issuer.split(':')\n        const network = parsed.length === 3 ? 'mainnet' : parsed[2]\n        const client = new SuiGraphQLClient({\n          url: `https://sui-${network}.mystenlabs.com/graphql`,\n        })\n        const zkLoginPublicIdentifier = new ZkLoginPublicIdentifier(fromB64(publicKey), { client })\n        const bytes = base64ToBytes(signature)\n        const verifySubject = await zkLoginPublicIdentifier.verifyPersonalMessage(sha256Hash(fromB64(data)), bytes)\n        const split = verified.jwt.split('.')\n        const verifyJwt = await zkLoginPublicIdentifier.verifyPersonalMessage(\n          sha256Hash(new TextEncoder().encode(`${split[0]}.${split[1]}`)),\n          base64ToBytes(split[2])\n        )\n        return verifySubject && verifyJwt\n      }\n      return false\n    } catch (error) {\n      return false\n    }\n  }\n}\n"],"names":["SUPPORTED_PUBLIC_KEY_TYPES","zkLogin","NBF_SKEW","resolveAuthenticator","resolver","alg","issuer","proofPurpose","types","length","Error","JWT_ERROR","NOT_SUPPORTED","didResult","Promise","resolve","accept","DID_JSON","then","result","Object","getOwnPropertyNames","indexOf","didDocument","didDocumentMetadata","didResolutionMetadata","contentType","error","message","RESOLVER_ERROR","getPublicKeyById","verificationMethods","pubid","filtered","filter","id","publicKeysToCheck","verificationMethod","publicKey","startsWith","includes","assertionMethod","map","pk","key","authenticators","type","find","supported","NO_SUITABLE_KEYS","didResolutionResult","e","reject","verifierZkLogin","data","signature","_temp3","signer","undefined","_temp2","_temp","_catch","keyBytes","extractPublicKeyBytes","parsed","controller","split","network","client","SuiGraphQLClient","url","zkLoginPublicIdentifier","ZkLoginPublicIdentifier","bytes","base64ToBytes","verifyPersonalMessage","sha256Hash","TextEncoder","encode","console","algorithms","toSignatureObject","recoverable","rawSig","r","bytesToHex","slice","s","sigObj","recoveryParam","VerifierAlgorithm","impl","verifyJWTDecoded","header","payload","pubKeys","Array","isArray","iss","recurse","INVALID_JWT","INVALID_SIGNATURE","cty","decodeJWT","jwt","_settle","pact","state","value","_Pact","v","bind","observer","o","prototype","onFulfilled","callback","onRejected","_this","thenable","_forTo","array","body","check","i","verifyConditionDelegated","authenticator","options","conditionDelegated","foundSigner","didAuthenticator","_exit2","_temp6","_result4","delegatedAuthenticator","_temp5","CONDITIONAL_PROOF_2022","verifyJWT","verified","_verifyJWTDecoded2","verifyConditionWeightedThreshold","_exit","_temp4","_result3","conditionWeightedThreshold","threshold","issuers","weightCount","_forOf","weightedCondition","_result2","push","weight","currentCondition","condition","newOptions","_verifyJWTDecoded","verifyConditionalProof","verifyProof","fromString","toString","basex","decode","base2","base8","base10","base16","base32","base36","base64","base256emoji","bases","u8a","concat","encodeBase64url","bytesToBase64url","encodeSection","shouldCanonicalize","canonicalizeData","JSON","stringify","instanceOfEcdsaSignature","object","ZkLoginSignerAlg","sign","SignerAlg","createJWS","encodedPayload","canonicalize","signingInput","join","jwtSigner","_isSettledPact","createZkLoginJWT","expiresIn","typ","timestamps","iat","Math","floor","Date","now","exp","nbf","fullPayload","verifyZkLoginJWT","_result","policies","skewTime","nowSkewed","aud","audience","callbackUrl","INVALID_AUDIENCE","audArray","matchedAudience","item","did","parse","didUrl","auth","_verifyProof","_for","_verifyProof2","hasOwnProperty","call","client_id","scope","redirect_uri","_resolveAuthenticator","WalrusDID","constructor","toZkLoginPublicIdentifier","BigInt","addressSeed","toSuiPublicKey","Secp256r1Keypair","fromSecretKey","fromB64","privateKey","getPublicKey","signPersonalMessage","zkLoginSignature","getZkLoginSignature","inputs","proof","maxEpoch","userSignature","signJWT","_this2","createJWT","decoded","VerifyMetaData","_temp7","signatureScheme","pubKey","Secp256r1PublicKey","toB64","publicKeyBase64","verify","verifySubject","verifyJwt","walrus","Serializer","bcs","struct","string","fromBase64","SIGNATURE_FLAG_TO_SCHEME"],"mappings":"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"}