@sqds/grid-crypto
v0.1.5
Published
Cryptographic utilities for Grid SDK - Standalone package for key generation, signing, and encryption
Readme
@sqds/grid-crypto
Cryptographic utilities for the Grid SDK. This standalone package provides key generation, signing, and encryption functions for multiple providers.
Features
- Turnkey Crypto: P-256 key pair generation, credential decryption, and signing
- Solana Crypto: Ed25519 keypair generation and management
- Passkey Crypto: WebAuthn credential creation and assertion parameters
- Privy Crypto: HPKE encryption/decryption and P-256 ECDSA signing
Installation
npm install @sqds/grid-cryptoPlatform Support
This package supports both web/Node.js and React Native environments:
- Web/Node.js: Uses standard exports
- React Native: Automatically uses
.native.jsbuild viareact-nativefield in package.json
Usage
Turnkey Crypto
import {
generateTurnkeyKeyPair,
decryptTurnkeyCredentials,
getPublicKeyFromDecryptedData,
signWithApiKey
} from '@sqds/grid-crypto';
// Generate a new Turnkey key pair
const keyPair = await generateTurnkeyKeyPair();
console.log(keyPair.publicKey);
console.log(keyPair.privateKey);
console.log(keyPair.publicKeyUncompressed);
// Decrypt credentials
const decryptedData = await decryptTurnkeyCredentials(encryptedCredentials, privateKey);
// Get public key from decrypted data
const publicKey = await getPublicKeyFromDecryptedData(decryptedData);
// Sign a payload with API key
const signature = await signWithApiKey({
payload: 'data to sign',
privateKey: apiKey
});Solana Crypto
import {
generateSolanaKeyPair,
createKeypairFromPrivateKey
} from '@sqds/grid-crypto';
// Generate a new Solana keypair
const keypair = await generateSolanaKeyPair();
console.log(keypair.publicKey.toBase58());
// Create keypair from existing private key
const restoredKeypair = createKeypairFromPrivateKey(base64PrivateKey);Passkey Crypto
import {
getCreateParams,
getAssertionParams,
bufferToBase64
} from '@sqds/grid-crypto';
// Get creation parameters for passkey
const createParams = getCreateParams(challenge, userId, appName);
// Get assertion parameters for authentication
const assertionParams = getAssertionParams(challenge);
// Convert buffer to base64
const base64String = bufferToBase64(arrayBuffer);Privy Crypto
import {
generateHPKEKeyPair,
signWithPrivy,
signWithDecryptedAuthorizationKey
} from '@sqds/grid-crypto';
// Generate HPKE key pair
const keyPair = await generateHPKEKeyPair();
// Sign with Privy (uses encrypted authorization key)
const signature = await signWithPrivy(payload, encryptedAuthKey, recipientPrivateKey);
// Sign with already decrypted authorization key
const signature2 = await signWithDecryptedAuthorizationKey(payload, decryptedAuthKey);Dependencies
Core cryptographic dependencies:
@noble/curves: Elliptic curve cryptography@noble/hashes: Cryptographic hash functions@noble/ciphers: Symmetric encryption (ChaCha20-Poly1305)@turnkey/crypto: Turnkey's cryptographic utilities@solana/web3.js: Solana blockchain utilitiessha256-uint8array: SHA-256 hashingcanonicalize: JSON canonicalization for signing
License
MIT
