New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

webnative-walletauth

Package Overview
Dependencies
Maintainers
8
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webnative-walletauth

Use the [Webnative SDK](https://github.com/fission-codes/webnative#readme) with a blockchain wallet. Access your personal encrypted file system with your wallet keys.

latest
Source
npmnpm
Version
0.2.2
Version published
Maintainers
8
Created
Source

Use the Webnative SDK with a blockchain wallet. Access your personal encrypted file system with your wallet keys.

Usage

Uses Ethereum by default with window.ethereum as the provider. Currently only works with MetaMask because it's the only wallet with encryption and decryption.

import * as walletauth from "webnative-walletauth"
import { AppScenario } from "webnative"

// Initialise

const program = await walletauth.program({
  // optional event handlers
  onAccountChange: (newProgram) => handleProgram(newProgram),
  onDisconnect: () => { /* eg. logout() */ }
})

handleProgram(program)

function handleProgram(program) {
  if (program.session) {
    // ✅ Authenticated
  } else {
    // Failed to authenticate with wallet
  }
}

Use a custom Ethereum provider:

import * as ethereum from "webnative-walletauth/wallet/ethereum"

ethereum.setProvider(window.ethereum)

You can also write an implementation for other wallets. Note that the DID method has to be supported by the Fission server, unless you're using other services with Webnative. At the moment of writing, you can only use the key method for DIDs with the Fission servers. It supports ED25519, RSA and SECP256K1 keys, same for the UCAN algorithms.

import { Implementation } from "webnative-walletauth/wallet/implementation"

const impl: Implementation = {
  decrypt: (encryptedMessage: Uint8Array) => Promise<Uint8Array>,
  encrypt: (storage: Storage.Implementation, data: Uint8Array) => Promise<Uint8Array>,
  init: (storage: Storage.Implementation, args: InitArgs) => Promise<void>,
  publicSignature: {
    type: string
    magicBytes: Uint8Array
    key: (storage: Storage.Implementation) => Promise<Uint8Array>
  },
  sign: (data: Uint8Array) => Promise<Uint8Array>,
  ucanAlgorithm: string,
  username: () => Promise<string>,
  verifySignedMessage: (storage: Storage.Implementation, args: VerifyArgs) => Promise<boolean>,
}

// When creating a Program indicate that you want to use your custom wallet implementation.
walletauth.program({
  wallet: impl
})

Keywords

webnative

FAQs

Package last updated on 24 Feb 2023

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