Solana Auth 方法和验证器
支持对索拉纳账户进行认证、授权和核实,例如:pkh与SIWS(X)和ACAO.
与 did-session 财务报告和审定财务报表 @didtools/cacao。 。 。 .
安装
npm install --save @didtools/pkh-solana
授权使用
对基于网络的 Env 中的 Auth , 使用任何执行标准钱包/ 提供者接口的注入的 Solana 提供者 SolanaWebAuth。 。 。 .
// Web Auth Usage
import { SolanaWebAuth, getAccountIdByNetwork } from '@didtools/pkh-solana'
// ...
const solProvider = // import/get your Solana provider (ie: window.phantom.solana)
const address = await solProvider.connect()
const accountId = getAccountIdByNetwork('mainnet', address.publicKey.toString())
const authMethod = await SolanaWebAuth.getAuthMethod(solProvider, accountId)
要使用基于节点的 Env 中的 Auth, 请使用任何标准的 Solana 提供者接口 SolanaNodeAuth
// Node Auth Usage
import { SolanaNodeAuth, getAccountIdByNetwork } from '@didtools/pkh-solana'
// ...
const solProvider = // import/get your Solana provider (ie: window.phantom.solana)
const address = await solProvider.connect()
const accountId = getAccountIdByNetwork('mainnet', address.publicKey.toString())
const appName = 'MyNodeApp'
const authMethod = await SolanaWebAuth.getAuthMethod(solProvider, accountId, appName)
与多会和参考多会文件一起使用,以获取更多细节.
const client = new ComposeClient({ceramic, definition})
const resources = client.resources
const session = await DIDSession.authorize(authMethod, { resources })
client.setDID(session.did)
配置
AuthMethod 创建者消费标准索拉纳供应商和 AccountId. 账号跟随
CAIP10标准. 帮助方法 getAccountIdByNetwork 财务报告和审定财务报表 getAccountId ,但您也可以创建账户ID
直接使用 CAIP 库.
import { AccountId } from 'caip'
import { getAccountIdByNetwork, getAccountId } from '@didtools/pkh-solana'
import { Connection, clusterApiUrl } from "@solana/web3.js"
// Using network string
const accountId = getAccountIdByNetwork('mainnet', address)
// With CAIP
const ethMainnetChainId = '1'
const chainNameSpace = 'eip155'
const chainId = `${chainNameSpace}:${ethMainnetChainId}`
const accountIdCAIP = new AccountId({ address, chainId })
// Using Solana Connection to query connect network/chain
const connection = new Connection(solanaWeb3.clusterApiUrl("mainnet-beta"))
const accountIdByConnection = await getAccountIdSolana(connection, address)
// accountId = accountIdCAIP = accountIdByConnection
这个 SolanaNodeAuth 额外消耗应用程序名称。 “ SolanaWebAuth” 方法使用您
默认应用域名.
import { SolanaNodeAuth } from '@didtools/pkh-solana'
const appName = 'MyNodeApp'
const authMethod = SolanaNodeAuth.getAuthMethod(solProvider, accountId, appName)
验证使用
需要验证器来验证使用CACAO的已签名的有效载荷。 需要它们的图书馆 输入一个验证符地图,允许您注册您想要支持的验证符.
import { Cacao } from '@didtools/cacao'
import { getSolanaVerifier } from '@didtools/pkh-solana'
import { DID } from 'dids'
const verifiers = {
...getSolanaVerifier()
}
// 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})
许可证
Apache-2.0或麻省理工学院