UNPKG

@useorbis/db-sdk

Version:

Orbis' Typescript SDK for building open-data experiences.

64 lines (63 loc) 2.05 kB
import { SiweMessage } from "@didtools/cacao"; import { normalizeProvider } from "../providers/index.js"; import { SupportedChains, } from "../types/providers.js"; import { normalizeEVMProvider } from "../providers/evm.js"; import { authenticateDidWithSiwx } from "./common.js"; export class OrbisEVMAuth { orbisAuthId = "orbis-evm"; chain = SupportedChains.ethereum; #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(); const did = `did:pkh:eip155:1:${address.toLowerCase()}`; const chain = this.chain; return { did, chain, metadata: { address, }, }; } async signSiwx(siwx) { await this.#provider.connect(); const user = await this.getUserInformation(); const siweMessage = new SiweMessage(siwx); const messageToSign = siweMessage.signMessage(); const signature = await this.#provider.signMessage(messageToSign); siweMessage.signature = signature; return { user, chain: this.chain, siwx: { message: siweMessage, serialized: messageToSign, signature, }, }; } async authenticateDid({ siwxOverwrites, params } = {}) { const { did, session } = await authenticateDidWithSiwx({ authenticator: this, siwxOverwrites, }); return { did, session, }; } } export class OrbisWeb3AuthEVMAuth extends OrbisEVMAuth { orbisAuthId = "orbis-evm-web3auth"; constructor(provider) { const sanitizedProvider = Object.assign(normalizeEVMProvider({ provider }), { connect: async () => { } }); super(sanitizedProvider); } }