4.3.8 • Published 2 years ago

@stacks/keychain v4.3.8

Weekly downloads
3
License
MIT
Repository
github
Last release
2 years ago

@stacks/keychain

Create and manage keys/wallets for the Stacks blockchain.

Installation

npm install @stacks/keychain

Mnemonic

Generate encrypted mnemonic

import { decrypt, generateEncryptedMnemonicRootKeychain } from '@stacks/keychain';

const password = '427706da374f435f959283de93652375';
const twelveWorder = await generateEncryptedMnemonicRootKeychain(password, 128);
const twentyFourWorder = await generateEncryptedMnemonicRootKeychain(password, 256);

const twelveWordDecrypted = await decrypt(twelveWorder.encryptedMnemonicPhrase, password);
console.log(twelveWordDecrypted);
  
const twentyFourWordDecrypted = await decrypt(twentyFourWorder.encryptedMnemonicPhrase, password);
console.log(twentyFourWordDecrypted);

Restore keychain from mnemonic

import { deriveRootKeychainFromMnemonic } from '@stacks/keychain';

const phrase =
    'eternal army wreck noodle click shock include orchard jungle only middle forget idle pulse give empower iron curtain silent blush blossom chef animal sphere';

const rootNode = await deriveRootKeychainFromMnemonic(phrase);
const privateKey = rootNode.privateKey?.toString('hex');
// privateKey

Encryption

Encrypt and decrypt

import { decrypt, encrypt } from '@stacks/keychain';

const phrase = 'vivid oxygen neutral wheat find thumb cigar wheel board kiwi portion business';
const password = 'supersecret';

const encryptedText = await encrypt(phrase, password);
const plainTextBuffer = await decrypt(encryptedText, password);
console.log(plainTextBuffer);

Wallet

Generate and restore wallet

import keychain, { decrypt } from '@stacks/keychain';
import { ChainID } from '@stacks/transactions';
import { Buffer } from '@stacks/common';

const password = 'password';
const generated = await keychain.Wallet.generate(password, ChainID.Testnet);

const encryptedBackupPhrase = generated.encryptedBackupPhrase;

const plainTextBuffer = await decrypt(Buffer.from(encryptedBackupPhrase, 'hex'), password);

const backupPhrase = plainTextBuffer.toString();

const restored = await keychain.Wallet.restore(password, backupPhrase, ChainID.Mainnet);

console.log(restored.identityPublicKeychain === generated.identityPublicKeychain);
// true

Get profile from auth response

import keychain from '@stacks/keychain';
import { ChainID } from '@stacks/transactions';
import { getPublicKeyFromPrivate, makeECPrivateKey } from '@stacks/encryption';
import { decodeToken } from 'jsontokens';

const password = 'password';
const generated = await keychain.Wallet.generate(password, ChainID.Testnet);
const [identity] = generated.identities;

const appDomain = 'https://banter.pub';
const gaiaUrl = 'https://hub.blockstack.org';
const transitPrivateKey = makeECPrivateKey();
const transitPublicKey = getPublicKeyFromPrivate(transitPrivateKey);

const authResponse = await identity.makeAuthResponse({
  appDomain,
  gaiaUrl,
  transitPublicKey,
  scopes: ['publish_data'],
});
const decoded = decodeToken(authResponse);
console.log(decoded);

Get a STX address

import keychain from '@stacks/keychain';
import { ChainID, TransactionVersion } from '@stacks/transactions';

const password = 'password';
const generated = await keychain.Wallet.generate(password, ChainID.Testnet);
const signer = generated.getSigner();
const mainnetAddress = signer.getSTXAddress(TransactionVersion.Mainnet);
console.log(mainnetAddress);

const testnetAddress = signer.getSTXAddress(TransactionVersion.Testnet);
console.log(testnetAddress);
4.3.8-beta.0

2 years ago

4.3.6

2 years ago

4.3.5

2 years ago

4.3.8

2 years ago

4.3.7

2 years ago

4.3.7-beta.1

2 years ago

4.3.7-beta.0

2 years ago

4.3.6-beta.0

2 years ago

4.3.5-beta.2

2 years ago

4.3.4-beta.0

2 years ago

4.3.1-beta.0

2 years ago

4.3.1-beta.3

2 years ago

4.3.1-beta.4

2 years ago

4.3.1-beta.1

2 years ago

4.3.1-beta.2

2 years ago

4.3.1-beta.7

2 years ago

4.3.1-beta.8

2 years ago

4.3.1-beta.5

2 years ago

4.3.1-beta.6

2 years ago

4.3.1-beta.9

2 years ago

4.3.5-beta.0

2 years ago

4.3.5-beta.1

2 years ago

4.3.2

2 years ago

4.3.3-beta.0

2 years ago

4.3.1

2 years ago

4.3.4

2 years ago

4.3.3-beta.1

2 years ago

4.3.2-beta.1

2 years ago

4.3.3

2 years ago

4.3.2-beta.0

2 years ago

4.3.0

2 years ago

4.3.1-beta.10

2 years ago

4.3.1-pr

2 years ago

4.2.3-beta.0

2 years ago

4.0.1

2 years ago

4.0.2

2 years ago

4.2.0-beta.4

2 years ago

4.2.0-beta.3

2 years ago

4.2.0-beta.6

2 years ago

4.2.0-beta.5

2 years ago

4.2.0-beta.0

2 years ago

4.2.0-beta.2

2 years ago

4.2.0-beta.1

2 years ago

4.0.2-beta.0

2 years ago

4.0.2-beta.1

2 years ago

4.2.2-beta.0

2 years ago

3.5.1

2 years ago

4.3.0-beta.2

2 years ago

4.3.0-beta.1

2 years ago

4.3.0-beta.0

2 years ago

4.2.1-beta.0

2 years ago

4.2.2

2 years ago

4.2.1

2 years ago

4.2.0

2 years ago

4.0.3-beta.0

2 years ago

4.0.1-beta.1

2 years ago

4.1.0

2 years ago

4.1.2

2 years ago

4.0.0

2 years ago

3.5.1-beta.1

2 years ago

3.5.1-beta.3

2 years ago

3.5.1-beta.2

2 years ago

3.5.1-beta.4

2 years ago

4.0.0-beta.2

2 years ago

4.0.0-beta.1

2 years ago

3.5.1-beta.0

2 years ago

3.5.0

2 years ago

3.5.0-beta.3

2 years ago

3.5.0-beta.1

2 years ago

3.5.0-beta.2

2 years ago

3.5.0-beta.0

2 years ago

3.4.1-beta.0

2 years ago

3.4.1-beta.1

2 years ago

3.2.0

2 years ago

3.2.1-alpha.0

2 years ago

3.3.0

2 years ago

3.2.1-beta.0

2 years ago

3.1.0

2 years ago

3.0.0

2 years ago

2.0.1

3 years ago

2.0.1-beta.2

3 years ago

2.0.1-beta.1

3 years ago

3.0.0-beta.0

3 years ago

2.0.0

3 years ago

2.0.0-beta.1

3 years ago

2.0.0-beta.0

3 years ago

1.5.0-alpha.1

3 years ago

1.5.0-alpha.0

3 years ago

0.17.18

3 years ago

0.17.17

3 years ago

1.4.1

3 years ago

1.3.5

3 years ago

1.3.3

3 years ago

1.3.0

3 years ago

1.2.4

3 years ago

1.2.3

3 years ago

1.2.1-alpha.0

3 years ago

1.2.2

3 years ago

1.2.2-alpha.0

3 years ago

1.2.0

3 years ago

1.1.1-alpha.0

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.17.15

3 years ago

0.17.14

3 years ago

0.17.13

3 years ago

0.17.12

3 years ago

0.17.7

3 years ago

0.17.6

3 years ago

0.17.5

3 years ago

0.17.4

3 years ago

0.17.3

3 years ago

0.17.2

3 years ago

1.0.0-beta.20

3 years ago

1.0.0-beta.21

3 years ago

0.17.1

3 years ago

1.0.0-alpha.19

3 years ago

1.0.0-beta.19

3 years ago

1.0.0-beta.18

3 years ago

1.0.0-beta.17

3 years ago

1.0.0-beta.16

3 years ago

1.0.0-beta.15

3 years ago

1.0.0-beta.14

3 years ago

0.17.0

3 years ago

1.0.0-beta.13

3 years ago

1.0.0-beta.11

3 years ago

1.0.0-beta.12

3 years ago

0.16.4

3 years ago

1.0.0-beta.10

3 years ago

0.16.3

3 years ago

0.16.2

3 years ago

0.16.1

3 years ago

0.16.0

3 years ago

1.0.0-beta.9

3 years ago

0.15.4

3 years ago

0.15.2

3 years ago

0.15.3

3 years ago

0.15.1

3 years ago

0.15.0

3 years ago

0.14.1

3 years ago

0.14.0

4 years ago

0.12.10

4 years ago

1.0.0-alpha.9

4 years ago

1.0.0-alpha.10

4 years ago

1.0.0-beta.8

4 years ago

1.0.0-beta.6

4 years ago

1.0.0-beta.7

4 years ago

1.0.0-beta.5

4 years ago

1.0.0-beta.2

4 years ago

1.0.0-beta.1

4 years ago