npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@solana-mobile/seed-vault-lib

v0.3.0

Published

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

Downloads

11

Readme

@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);