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

2.0.0 • Public • Published

npm npm-downloads
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.

[!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.

[!NOTE] Native CryptoKeys can be stored in IndexedDB but the keys created by this polyfill can not. This is because, unlike native CryptoKeys, our polyfilled key objects can not implement the structured clone algorithm.

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.

import { install } from '@solana/webcrypto-ed25519-polyfill';

// Calling this will shim methods on `SubtleCrypto`, adding Ed25519 support.
install();

// 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

1,757

Version

2.0.0

License

MIT

Unpacked Size

386 kB

Total Files

19

Last publish

Collaborators

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