@solana/webcrypto-ed25519-polyfill
TypeScript icon, indicating that this package has built-in type declarations

2.0.0-experimental.f1279e6 • Public • Published

npm npm-downloads semantic-release
code-style-prettier

@solana/webcrypto-ed25519-polyfill

This package contains a polyfill that enables Ed25519 key manipulation in environments where it is not yet implemented. It does so by proxying calls to SubtleCrypto instance methods to an Ed25519 implementation in userspace.

Security warning

Because this package's implementation of Ed25519 key generation exists in userspace, it can't guarantee that the keys you generate with it are non-exportable. Untrusted code running in your JavaScript context may still be able to gain access to and/or exfiltrate secret key material.

Usage

Environments that support Ed25519 (see https://github.com/WICG/webcrypto-secure-curves/issues/20) do not require this polyfill.

For all others, simply import this polyfill before use.

// Importing this will shim methods on `SubtleCrypto`, adding Ed25519 support.
import '@solana/webcrypto-ed25519-polyfill';

// Now you can do this, in environments that do not otherwise support Ed25519.
const keyPair = await crypto.subtle.generateKey('Ed25519', false, ['sign']);
const publicKeyBytes = await crypto.subtle.exportKey('raw', keyPair.publicKey);
const data = new Uint8Array([1, 2, 3]);
const signature = await crypto.subtle.sign('Ed25519', keyPair.privateKey, data);
if (await crypto.subtle.verify('Ed25519', keyPair.publicKey, signature, data)) {
    console.log('Data was signed using the private key associated with this public key');
} else {
    throw new Error('Signature verification error');
}

Readme

Keywords

Package Sidebar

Install

npm i @solana/webcrypto-ed25519-polyfill

Weekly Downloads

2,938

Version

2.0.0-experimental.f1279e6

License

MIT

Unpacked Size

386 kB

Total Files

21

Last publish

Collaborators

  • nickfrosty
  • mcintyre94
  • 2501babe
  • lorisleiva
  • buffalojoec
  • ngundotra
  • _chido
  • steveluscher
  • seanyoung
  • tyera
  • joncinque
  • ryoqun
  • trent-solana
  • jordansexton