New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@solana-mobile/seed-vault-lib

Package Overview
Dependencies
Maintainers
7
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@solana-mobile/seed-vault-lib

A React Native wrapper of the Solana Mobile, Seed Vault SDK. Apps can use this to interact with seed vault implementations on Android

  • 0.3.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
7
Weekly downloads
 
Created
Source

@solana-mobile/seedvaultlib

A React Native wrapper of the Seed Vault SDK.

Usage

Check if Seed Vault is Available

We first need to check if the seed vault service is available on the device. Currently only Saga implementes a seed vault.

const allowSimulated = false; // use true to allow simulated seed vault (for dev/testing)
const seedVaultAvailable = await SolanaMobileSeedVaultLib.isSeedVaultAvailable(allowSimulated);
if (!seedVaultAvailable) {
  // seed vault is not available, we cant use it
}

Request Seed Vault Permission

Before we can interact with Seed vault, we must request permission for our app to use Seed Vault.

import { PermissionsAndroid } from 'react-native';
import { SeedVaultPermissionAndroid } from '@solana-mobile/seed-vault-lib';

const permissionResult = await PermissionsAndroid.request(
  SeedVaultPermissionAndroid,
  { // customize verbage here to your liking 
    title: 'Seed Vault Permission',
    message: 
      'This app needs your permission to access Seed Vault',
    buttonNeutral: 'Ask Me Later',
    buttonNegative: 'Cancel',
    buttonPositive: 'OK',
  },
);

if (permissionResult === PermissionsAndroid.RESULTS.GRANTED) {
  // we can use seed vault, continue
} else {
  // permission was denied, fallback
}

Read more about requesting Android Permission in React Natvie here.

Authorize a Seed

Before our app can access any seeds in the seed vault, we must first request authorization for our app to use a seed from the user.

import { SeedVault } from "@solana-mobile/seed-vault-lib";

const result = await SeedVault.authorizeNewSeed();
console.log(`New seed authorized! auth token: ${result.authToken}`);

Retreive a list of Authorized Seeds

To retreive a list of all the seeds our app has been authorized to use, call getAuthorizedSeeds().

const authorizedSeeds = await SeedVault.getAuthorizedSeeds()

This will return a list of Seed objects with the following structure

{
  authToken: number;
  name: string;
  purpose: int;
} 

Get Accounts for a given seed

Once we have obtained an authorized seed, we can get a list of all the accounts (public keys) assocaited with that seed

const seed = authorizedSeeds[0]
const accounts = await SeedVault.getAccounts(seed.authToken)

Retreive the PublicKey of an Account

Once we have obtained an authorized seed, we can get a list of all the accounts (public keys) assocaited with that seed

const account = account[0]
const publicKey = await SeedVault.getPublicKey(seed.authToken, account.derivationPath);
// can now build transaction using the public key

This will return a SeedPublicKey object with the following structure

{
  publicKey: Uint8Array;
  publicKeyEncoded: string;
  resolvedDerivationPath: string;
}

Sign a Payload

Once we have obtained an account, we can request signatures from seed vault for that account:

SeedVault.signMessage(seed.authToken, account.derivationPath, messageBytes);
SeedVault.signTransaction(seed.authToken, account.derivationPath, transactionByteArray);

FAQs

Package last updated on 13 Apr 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc