Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jacobbubu/webcrypto-ed25519
https://github.com/jacobbubu/webcrypto-ed25519
Last synced: 14 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/jacobbubu/webcrypto-ed25519
- Owner: jacobbubu
- License: mit
- Created: 2022-10-16T16:01:53.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-10-17T01:18:39.000Z (over 2 years ago)
- Last Synced: 2024-04-24T15:13:25.823Z (9 months ago)
- Language: TypeScript
- Size: 186 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# @jacobbubu/webcrypto-ed25519
[![Build Status](https://github.com/jacobbubu/webcrypto-ed25519/workflows/Build%20and%20Release/badge.svg)](https://github.com/jacobbubu/webcrypto-ed25519/actions?query=workflow%3A%22Build+and+Release%22)
[![Coverage Status](https://coveralls.io/repos/github/jacobbubu/webcrypto-ed25519/badge.svg)](https://coveralls.io/github/jacobbubu/webcrypto-ed25519)
[![npm](https://img.shields.io/npm/v/@jacobbubu/webcrypto-ed25519.svg)](https://www.npmjs.com/package/@jacobbubu/webcrypto-ed25519/)# Ed25519 Ponyfill & Polyfill for WebCrypto
`@yoursunny/webcrypto-ed25519` package adds [Ed25519](https://ed25519.cr.yp.to/) crypto algorithm to [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) in browsers.
The crypto implementation comes from [@noble/ed25519](https://www.npmjs.com/package/@noble/ed25519) library.## Caution
This library should be considered suitable for research and experimentation.
Further code and security review is needed before utilization in a production application.## Usage
```js
import { Ed25519Algorithm, polyfillEd25519, ponyfillEd25519 } from "@yoursunny/webcrypto-ed25519";// ponyfill: crypto.subtle remains unchanged; call methods on the returned SubtleCrypto instance.
const subtlePonyfill = ponyfillEd25519();
subtlePonyfill.generateKey(Ed25519Algorithm, true, ["sign", "verify"]);// polyfill: crypto.subtle is patched to support Ed25519 and NODE-ED25519 algorithms.
polyfillEd25519();
crypto.subtle.generateKey(Ed25519Algorithm, true, ["sign", "verify"]);
```## Algorithm Identifier
The ponyfill and polyfill for browser recognize two forms of algorithm identifier:
* `{ name: "Ed25519" }`, as specified in [Secure Curves in the Web Cryptography API](https://wicg.github.io/webcrypto-secure-curves/) draft and implemented in Node.js 18.4.0 and later.
* `{ name: "NODE-ED25519", namedCurve: "NODE-ED25519" }`, as implemented in Node.js 18.3.0 and earlier.This package does not provide any ponyfill or polyfill for Node.js.
The exported `Ed25519Algorithm` variable gives a suitable algorithm identifier for the current Node.js version, which helps you writing code to support Node.js before and after 18.4.0.## Features
* `subtle.generateKey`
* `subtle.exportKey`
* format: `"jwk"` or `"spki"`
* `subtle.importKey`
* format: `"jwk"` or `"spki"`
* `subtle.sign`
* `subtle.verify`All other methods and non-Ed25519 keys are passed to the original `SubtleCrypto` implementation.