{"version":3,"file":"index.cjs","sources":["../src/configuration.ts","../src/WalrusDIDController.ts","../src/WalrusDidResolver.ts"],"sourcesContent":["export type Network = 'testnet' | 'devnet'\n\nexport const Publisher: { [key in Network]: string } = {\n  testnet: 'https://publisher-devnet.walrus.space/v1', // TODO: update\n  devnet: 'https://publisher-devnet.walrus.space/v1', // TODO: update\n}\n\nexport const Aggregator: { [key in Network]: string } = {\n  testnet: 'https://aggregator-devnet.walrus.space/v1', // TODO: update\n  devnet: 'https://aggregator-devnet.walrus.space/v1', // TODO: update\n}\n\nexport const Rpc: { [key in Network]: string } = {\n  testnet: 'https://fullnode.testnet.sui.io',\n  devnet: 'https://fullnode.devnet.sui.io',\n}\n\nexport const Graphql: { [key in Network]: string } = {\n  testnet: 'https://sui-testnet.mystenlabs.com/graphql',\n  devnet: 'https://sui-devnet.mystenlabs.com/graphql',\n}\n","import { base64ToBytes, bytesToBase58 } from 'did-jwt'\nimport { DIDResolutionResult } from 'did-resolver'\nimport { Secp256r1Keypair } from '@mysten/sui/keypairs/secp256r1'\nimport { toB64, fromB64 } from '@mysten/sui/utils'\nimport { SIGNATURE_FLAG_TO_SCHEME } from '@mysten/sui/cryptography'\nimport { bcs } from '@mysten/sui/bcs'\nimport { Network, Publisher } from './configuration'\n\nexport class WalrusDIDController {\n  private readonly signer: Secp256r1Keypair\n  private readonly network: Network\n  private publicKey: string\n\n  constructor(network: Network, privateKey: string) {\n    this.network = network\n    this.signer = Secp256r1Keypair.fromSecretKey(fromB64(privateKey))\n    this.publicKey = this.signer.getPublicKey().toBase64()\n  }\n\n  private static GetSerializer() {\n    const Serializer = bcs.struct('SigData', {\n      data: bcs.string(),\n      publicKey: bcs.string(),\n      signature: bcs.string(),\n    })\n    return Serializer\n  }\n\n  async create(\n    payload: { subject: string; publicKey: string; signature: string },\n    epochs: number = 1\n  ): Promise<DIDResolutionResult> {\n    if (this.signer && payload.subject.match(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/)) {\n      const Serializer = WalrusDIDController.GetSerializer()\n      const data = Serializer.serialize({\n        data: payload.subject,\n        publicKey: payload.publicKey,\n        signature: payload.signature,\n      })\n      const signature = await this.signer.sign(data.toBytes())\n      const created = new Date().toISOString()\n      const metaData = {\n        created,\n        epochs,\n        issuer: this.signer.getPublicKey().toBase64(),\n        walrus: Serializer.serialize({\n          data: data.toBase64(),\n          publicKey: this.signer.getPublicKey().toBase64(),\n          signature: toB64(signature),\n        }).toBase64(),\n      }\n      const url = Publisher[this.network]\n      const res = await fetch(`${url}/store?epochs=${epochs}`, {\n        method: 'PUT',\n        body: JSON.stringify(metaData),\n      })\n      if (res.status === 200) {\n        const { newlyCreated } = await res.json()\n        if (newlyCreated && newlyCreated.blobObject) {\n          const identifier = bytesToBase58(base64ToBytes(newlyCreated.blobObject.blobId))\n          const did =\n            (this.network as any) !== 'mainnet'\n              ? `did:walrus:${this.network}:${identifier}`\n              : `did:walrus:${identifier}`\n          return WalrusDIDController.CreateDoc(did, metaData)\n        } else {\n          throw new Error('Something went wrong when storing the blob! (2)')\n        }\n      } else {\n        throw new Error('Something went wrong when storing the blob! (1)')\n      }\n    } else {\n      throw new Error('signer error')\n    }\n  }\n\n  public getPublicKey(): string {\n    return this.publicKey\n  }\n\n  static CreateDoc(did: string, metaData: any): DIDResolutionResult {\n    const Serializer = WalrusDIDController.GetSerializer()\n    const publicKey = fromB64(Serializer.fromBase64(Serializer.fromBase64(metaData.walrus).data).publicKey)\n    const signatureScheme = SIGNATURE_FLAG_TO_SCHEME[publicKey[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME]\n    const type = signatureScheme === 'Secp256r1' ? 'EcdsaSecp256r1VerificationKey2019' : 'zkLoginSignatureVerification'\n    return {\n      didDocumentMetadata: { ...metaData },\n      didResolutionMetadata: { contentType: 'application/did+ld+json' },\n      didDocument: {\n        '@context': ['https://www.w3.org/ns/did/v1'],\n        id: did,\n        verificationMethod: [\n          {\n            id: `${did}#keys-1`,\n            controller: `${did}`,\n            type,\n            publicKeyBase64: toB64(publicKey.slice(1)),\n          },\n        ],\n        authentication: [],\n        assertionMethod: [],\n      },\n    }\n  }\n}\n","import { base58ToBytes, bytesToBase64url } from 'did-jwt'\nimport { DIDResolutionResult, DIDResolver } from 'did-resolver'\nimport { Aggregator } from './configuration'\nimport { WalrusDIDController } from './WalrusDIDController'\n\nexport class WalrusDIDResolver {\n  private aggregator: { [key: string]: string } = {}\n\n  constructor(network?: { aggregator: { [key: string]: string } }) {\n    this.aggregator = (network && network.aggregator) || Aggregator\n  }\n\n  async resolve(did: string): Promise<DIDResolutionResult> {\n    const parsedId = did.split(':')\n    const fullId = parsedId[parsedId.length - 1].match(/^[1-9A-HJ-NP-Za-km-z]+$/)\n    if (!fullId || (parsedId.length !== 3 && parsedId.length !== 4)) {\n      return {\n        didResolutionMetadata: {\n          error: 'invalid did',\n          message: `Not a valid did: ${did}`,\n        },\n        didDocumentMetadata: {},\n        didDocument: null,\n      }\n    }\n\n    const network = parsedId.length === 3 ? 'mainnet' : parsedId[2]\n    if (network !== 'mainnet' && network !== 'testnet' && network !== 'devnet') {\n      return {\n        didResolutionMetadata: {\n          error: 'invalid network',\n          message: `Not a valid network: ${network}`,\n        },\n        didDocumentMetadata: {},\n        didDocument: null,\n      }\n    }\n\n    try {\n      const blobId = bytesToBase64url(base58ToBytes(parsedId[parsedId.length - 1]))\n      const res = await fetch(`${this.aggregator[network]}/${blobId}`)\n      const metadata = JSON.parse(await res.text())\n      return WalrusDIDController.CreateDoc(did, metadata)\n    } catch (error: any) {\n      return {\n        didResolutionMetadata: {\n          error: 'notFound',\n          message: error.toString(),\n        },\n        didDocumentMetadata: {},\n        didDocument: null,\n      }\n    }\n  }\n\n  build(): Record<string, DIDResolver> {\n    return { walrus: this.resolve.bind(this) }\n  }\n}\n"],"names":["Publisher","testnet","devnet","Aggregator","WalrusDIDController","constructor","network","privateKey","signer","publicKey","Secp256r1Keypair","fromSecretKey","fromB64","getPublicKey","toBase64","GetSerializer","Serializer","bcs","struct","data","string","signature","create","payload","epochs","_this","subject","match","serialize","Promise","resolve","sign","toBytes","then","created","Date","toISOString","metaData","issuer","walrus","toB64","url","fetch","method","body","JSON","stringify","res","status","json","newlyCreated","blobObject","identifier","bytesToBase58","base64ToBytes","blobId","did","CreateDoc","Error","e","reject","fromBase64","signatureScheme","SIGNATURE_FLAG_TO_SCHEME","type","didDocumentMetadata","didResolutionMetadata","contentType","didDocument","id","verificationMethod","controller","publicKeyBase64","slice","authentication","assertionMethod","WalrusDIDResolver","aggregator","parsedId","split","fullId","length","error","message","_catch","bytesToBase64url","base58ToBytes","text","_res$text","metadata","parse","toString","build","bind"],"mappings":"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"}