polyfill-crypto-methods
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

Polyfill-Crypto-Methods

This is a polyfill for the Crypto instance methods of the Web Crypto API:

You just need to import this library at the top of your code entry.

This library was originally developed for WeChat Miniprogram because it does not support the Web Crypto API. This lack of support prevents the use of some third-party encryption libraries, such as crypto-js, jsencrypt, @noble/curves, etc.


向不支持 Web Crypto API 的运行环境,全局注入 Crypto 实例方法

你只需在代码入口的顶部导入这个库。

该库最初用于微信小程序,由于小程序不支持 Web Crypto API,导致无法使用一些第三方加密库,比如 crypto-jsjsencrypt@noble/curves 等。

Usage

NPM

npm i polyfill-crypto-methods

YARN

yarn add polyfill-crypto-methods

Examples

import 'polyfill-crypto-methods';

// Output: true
console.log(globalThis.crypto === crypto);

const int8 = crypto.getRandomValues(new Int8Array(4));
const int16 = crypto.getRandomValues(new Int16Array(4));
const int32 = crypto.getRandomValues(new Int32Array(4));
const uint8 = crypto.getRandomValues(new Uint8Array(4));
const uint16 = crypto.getRandomValues(new Uint16Array(4));
const uint32 = crypto.getRandomValues(new Uint32Array(4));

// Output: [-69, 52, -69, 8]
console.log(int8);
// Output: [-12857, 11870, 1874, -30545]
console.log(int16);
// Output: [740598374, 1682174651, -440338757, -391071704]
console.log(int32);
// Output: [133, 69, 14, 216]
console.log(uint8);
// Output: [45360, 53346, 43256, 34054]
console.log(uint16);
// Output: [1771376779, 3593883952, 3543639388, 2288005852]
console.log(uint32);

const uuid = crypto.randomUUID();
// Output: "e6c5350a-b7f3-9b9c-3a3c-d0eab9e63122"
console.log(uuid);

// Sync
const bytes = crypto.randomBytes(4);
// Output: [123, 56, 189, 201]
console.log(bytes);

// Async
const ret = crypto.randomBytes(4, (err, arr) => {
	// Output: null, [92, 112, 228, 144]
  console.log(err, arr);
});
import { crypto as myCrypto } from 'polyfill-crypto-methods';

// Output: true
console.log(globalThis.crypto === myCrypto);

// Sync
const bytes = myCrypto.randomBytes(4);
// Output: [123, 56, 189, 201]
console.log(bytes);

// Async
const ret = myCrypto.randomBytes(4, (err, arr) => {
	// Output: null, [92, 112, 228, 144]
  console.log(err, arr);
});

Package Sidebar

Install

npm i polyfill-crypto-methods

Weekly Downloads

1,252

Version

0.2.1

License

MIT

Unpacked Size

11.3 kB

Total Files

5

Last publish

Collaborators

  • atypiape