1.1.2 • Published 1 year ago
d-auth-sdk v1.1.2
Decentralized Auth SDK
An SDK based on Lit-protocol for generating secure dapps.
Demo
- Coming soon
Working on
- Solana Network (devnet available)
- Ethereum (coming soon)
- Polygon (coming soon)
- Optimism (coming soon)
- Hardware device (coming soon)
Solana implementation
Connect to Solana cluster and set provider:
import { Connection, clusterApiUrl } from '@solana/web3.js'
const connection = new Connection(clusterApiUrl('devnet'));
const wallet = window.solana;
Also, we recomend PhantomWalletAdapter:
import { PhantomWalletAdapter } from '@solana/wallet-adapter-phantom';
const wallet = new PhantomWalletAdapter();
await wallet.connect();
Create transaction to sign and sent to generate a new code:
import { createCodeSolana } from 'd-auth-sdk';
// Generate the transaction and code
const data = await createCodeSolana(connection, wallet.publicKey);
// Sign transaction with user wallet
const transactionSigned = await wallet.signTransaction(data.transaction);
// Send transaction to save code on Solana
const tx = await connection.sendRawTransaction(transactionSigned.serialize());
In mobile dapps, you can use Deeplink methods signTransaction or signAndSendTransaction
Get all codes in Solana Network by user wallet address:
import { getAllCodesSolana } from 'd-auth-sdk';
const codes = await getAllCodesSolana(connection, wallet.publicKey);
console.log('codes', codes);
Validate code in Solana Network, if true returns a JWT. You must use the function getMessageToSign()
to create the message that will be signed.
import { validateCodeSolana, getMessageToSign } from 'd-auth-sdk';
const code = '132456';
const messageToSign = getMessageToSign(wallet.publicKey, code);
const encodedMessage = new TextEncoder().encode(messageToSign);
const userSignature = wallet.signMessage(encodedMessage);
const jwt = await validateCodeSolana(connection, wallet.publicKey, userSignature, code);
console.log('jwt', jwt)
To generate a signature with Phantom, see Signing a Message for desktop dapps or the Deeplink method SignMessage for mobile.
Validate Lit-protocol JWT:
import { verifyLitProtocolJWT } from 'd-auth-sdk';
const jwt = '...';
const valid = verifyLitProtocolJWT(jwt);
console.log('valid', valid)