@didtools/pkh-tezos
Version:
Implements support to authenticate, authorize and verify with Tezos accounts as a did:pkh with SIWE(X) and CACAO. Primarly used with `did-session` and `@didtools/cacao`.
82 lines (81 loc) • 2.65 kB
JavaScript
/**
* ## Tezos AuthMethod and Verifier
* Implements support to authenticate, authorize and verify with Tezos accounts as a did:pkh with SIWE(X) and CACAO.
* Primarly used with `did-session` and `@didtools/cacao`.
*
* ## Installation
*
* ```
* npm install --save @didtools/pkh-tezos
* ```
*
* ## Auth Usage
*
* To Auth in web based env, use any injected web3 provider that implements the standard interface with `TezosWebAuth`.
*
* ```ts
* // Web Auth Usage
* import { TezosWebAuth, getAccountId, verifyTezosSignature} from '@didtools/pkh-tezos'
* // ...
*
* let activeAccount = await tzProvider.getActiveAccount()
* if (!activeAccount) {
* const permissions = await tzProvider.requestPermissions()
* let activeAccount = permissions
* }
* const address = await activeAccount.address
* const accountId = await getAccountId(tzProvider, address)
* const authMethod = await TezosWebAuth.getAuthMethod(tzProvider, accountId, publicKey)
* ```
*
* To use with did-session and reference did-session docs for more details.
*
* ```js
* const session = await DIDSession.authorize(authMethod, { resources: ['ceramic://*'] })
* ```
*
* ## Configuration
*
* AuthMethod creators consume a standard Tezos provider and an AccountId. AccountID follows the
* CAIP10 standard. The helper methods `getAccountIdByNetwork` and `getAccountId` are provided, but you can also create an AccountID
* using the CAIP library directly.
*
* ```js
* import { AccountId } from 'caip'
* import { getAccountIdByNetwork, getAccountId } from '@didtools/pkh-tezos'
*
* // Using network string
* const accountId = getAccountIdByNetwork('mainnet', address)
*
* // With CAIP
* const tezosMainnetChainId = 'NetXdQprcVkpaWU'
* const chainNameSpace = 'tezos'
* const chainId = `${chainNameSpace}:${tezosMainnetChainId}`
* const accountIdCAIP = new AccountId({ address, chainId })
* ```
*
* ## Verifier Usage
*
* Verifiers are needed to verify different did:pkh signed payloads using CACAO. Libraries that need them will
* consume a verifiers map allowing your to register the verifiers you want to support.
*
* ```ts
* import { Cacao } from '@didtools/cacao'
* import { getTezosVerifier } from '@didtools/pkh-tezos'
* import { DID } from 'dids'
*
* const verifiers = {
* ...getTezosVerifier()
* }
*
* // Directly with cacao
* Cacao.verify(cacao, { verifiers, ...opts})
*
* // With DIDS, reference DIDS for more details
* const dids = //configured dids instance
* await dids.verifyJWS(jws, { capability, verifiers, ...opts})
* ```
*
* @module pkh-tezos
*/ export * from './authmethod.js';
export * from './verifier.js';