xdv-universal-wallet-core
v0.6.3
Published
The base business logic for the universal wallet
Downloads
97
Readme
xdv-universal-wallet
XDV Universal Wallet
Install
npm i xdv-universal-wallet-core
Features
- RxDB storage with encryption enabled
- DID and IPLD ready
- Supports ES256K, Ed25519 and RS256
- Aggregation signatures - BLS
- Signs hardware based PKCS#11 using XDV Signer
Quickstart
- This repository uses NPM Workspaces.
- On the root path, install all modules:
npm install
- To compile a new version of the Core Module:
npm run build --workspace core
- To run the NextJS frontend:
npm run dev --workspace frontend
- To run tests on all modules:
npm run test
- To build a production version of the NextJS frontend:
npm run build --workspace frontend
Example
import { Wallet } from "xdv-universal-wallet-core";
const did = await Wallet.create3IDEd25519({
passphrase: 'abcdef123456',
})
expect(did.id.length).to.be.above(0)
const ipfsManager = new IPFSManager(did.did)
await ipfsManager.start()
const fil = Buffer.from('fffffffffffffffffffffff')
// auth
await did.did.authenticate()
const cid = await ipfsManager.addSignedObject(fil, {
name: 'UnitTest.txt',
contentType: 'text/text',
lastModified: new Date(),
})
expect(cid.length).to.be.above(0)
const res = await ipfsManager.getObject(cid)
expect(res.value.name).equal('UnitTest.txt')
API
crypto/Wallet
BLS Signatures (aggregation)
async aggregateSign(options: any, message: Uint8Array)
Signs message with a selected wallet id
Parameters
options.walletid
: A wallet id, set it to load a previously created wallet, otherwise leave emptymesssage
: Uint8Array data to sign
Returns a Promise<Uint8Array>
async getBlsPublicKey(options: any)
Gets public key with a selected wallet id
Parameters
options.walletid
: A wallet id, set it to load a previously created wallet, otherwise leave empty
Returns a Uint8Array
async verifyAggregatedPubkeys(signatures: any[], message: any, publicKeys: any[])
Verifies aggregated signatures, one message signed by many
Returns a Promise<Uint8Array>
async verifyBatch(signatures: any[], messages: any[], publicKeys: any[])
Verifies aggregated signatures, many messages signed by many
Returns a Promise<Uint8Array>
static async createES256K(options: any)
Creates an ES256K universal wallet
Parameters
passphrase
: Passphrasewalletid
: A wallet id, set it to load a previously created wallet, otherwise leave emptyrpcUrl
: An EVM Compatible chain (Ethereum, Binance Smart Chain, etc)registry
: Contract address for EVM compatible ethr-did registry
Returns a XDVUniversalProvider
did
: A DID object from 3ID library. Allows to authenticate and sign with IPLDsecureMesssage
: UsesEthCrypto
for encrypting and decryptingpublicKey
: A public key as an array likeissuer
: A DID object for issue signersweb3
: Web3 instance used by DAppsid
: A wallet idaddress
: Wallet address
static async create3IDEd25519(options: any)
Creates an Ed25519 universal wallet
Note: Signing only, support for X25519 will be added later
Creates an universal wallet for ES256K
Parameters
passphrase
: Passphrasewalletid
: A wallet id, set it to load a previously created wallet, otherwise leave empty
Returns a XDVUniversalProvider
did
: A DID object from 3ID library. Allows to authenticate and sign with IPLDsecureMesssage
: UsesEthCrypto
for encrypting and decryptingpublicKey
: A public key as an array likeissuer
: A DID object for issue signersweb3
: Web3 instance used by DAppsid
: A wallet idaddress
: Wallet address
static async createWeb3Provider(options: any)
Creates a Web3 provider universal wallet
Parameters
passphrase
: Passphrasewalletid
: A wallet id, set it to load a previously created wallet, otherwise leave emptyrpcUrl
: An EVM Compatible chain (Ethereum, Binance Smart Chain, etc)registry
: Contract address for EVM compatible ethr-did registry
3id/DIDManager
async create3ID_RSA(kp: any)
Creates a RS256 did
Parameter
kp
: RSA keypair
Returns a DIDContext
did
: A DID object from 3ID library. Allows to authenticate and sign with IPLDissuer
: A DID object for issue signers
async create3ID_PKCS11(pin: any)
Creates a RS256 did from a HSM
Parameter
pin
: HSM pin
Returns a DIDContext
did
: A DID object from 3ID library. Allows to authenticate and sign with IPLD
3id/DriveManager
3id/IPFSManager
3id/W3CVerifiedCredential
issueCredential(did: DID, issuer: any, holderInfo: any)
Issues a Verified Credential
Parameters
- @param options { passphrase, walletid, rpcUrl }