UNPKG

@useorbis/db-sdk

Version:

Orbis' Typescript SDK for building open-data experiences.

58 lines (57 loc) 1.8 kB
import { SiwTezosMessage } from "@didtools/cacao"; import { normalizeProvider } from "../providers/index.js"; import { SupportedChains, } from "../types/providers.js"; import { authenticateDidWithSiwx } from "./common.js"; export class OrbisTezosAuth { orbisAuthId = "orbis-tezos"; chain = SupportedChains.tezos; #provider; constructor(provider) { this.#provider = normalizeProvider({ provider, chain: this.chain }); } get provider() { return this.#provider; } async getUserInformation() { await this.#provider.connect(); const address = await this.#provider.getAddress(); // mainnet chain NetXdQprcVkpaWU // devnet chain NetXm8tYqnMWky1 const did = `did:pkh:tezos:NetXdQprcVkpaWU:${address}`; const chain = this.chain; return { did, chain, metadata: { address, }, }; } async signSiwx(siwx) { await this.#provider.connect(); const user = await this.getUserInformation(); const siwtMessage = new SiwTezosMessage(siwx); const messageToSign = siwtMessage.signMessage(); const signature = await this.#provider.signMessage(messageToSign); siwtMessage.signature = signature; return { chain: this.chain, user, siwx: { message: siwtMessage, serialized: messageToSign, signature, }, }; } async authenticateDid({ siwxOverwrites, params } = {}) { const { did, session } = await authenticateDidWithSiwx({ authenticator: this, siwxOverwrites, }); return { did, session, }; } }