Socket
Socket
Sign inDemoInstall

webcrypto-core

Package Overview
Dependencies
6
Maintainers
2
Versions
76
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    webcrypto-core

Common layer to be used by crypto libraries based on WebCrypto API for input validation.


Version published
Weekly downloads
2.7M
decreased by-18.88%
Maintainers
2
Install size
840 kB
Created
Weekly downloads
 

Package description

What is webcrypto-core?

The webcrypto-core package is a JavaScript implementation of the Web Cryptography API specification. It provides a common interface for cryptographic operations such as hashing, signing, encryption, decryption, and key generation. This package is designed to be extensible, allowing for the addition of new cryptographic algorithms and their parameters.

What are webcrypto-core's main functionalities?

Hashing

This feature allows for the hashing of data using various algorithms. The code sample demonstrates how to hash a message using the SHA-256 algorithm.

const { Sha256 } = require('webcrypto-core');
let sha256 = new Sha256();
sha256.digest({name: 'SHA-256'}, Buffer.from('message')).then(digest => {
  console.log(digest);
});

Encryption/Decryption

This feature enables encryption and decryption of data. The code sample shows how to encrypt data using the AES-GCM algorithm.

const { AesGcm } = require('webcrypto-core');
let aesGcm = new AesGcm();
aesGcm.encrypt({name: 'AES-GCM', iv: Buffer.from(iv)}, key, Buffer.from(data)).then(encrypted => {
  console.log(encrypted);
});

Signing/Verification

This feature is used for signing data and verifying signatures. The code sample illustrates how to sign data using the RSA-PSS algorithm.

const { RsaPss } = require('webcrypto-core');
let rsaPss = new RsaPss();
rsaPss.sign({name: 'RSA-PSS', saltLength: 32}, privateKey, Buffer.from(data)).then(signature => {
  console.log(signature);
});

Other packages similar to webcrypto-core

Changelog

Source

1.7.9 (2024-03-28)

Bug Fixes

  • nullability checks in AesGcmProvider (7b57920)

Readme

Source

License test Coverage Status npm version

NPM

webcrypto-core

We have created a number of WebCrypto polyfills including: node-webcrypto-ossl, node-webcrypto-p11, and webcrypto-liner. webcrypto-core was designed to be a common layer to be used by all of these libraries for input validation.

Unless you intend to create a WebCrypto polyfill this library is probably not useful to you.

Installing

npm install webcrypto-core

Example

Current examples shows how you can implement your own WebCrypt interface

const core = require(".");
const crypto = require("crypto");

class Sha1Provider extends core.ProviderCrypto {

  constructor() {
    super();

    this.name = "SHA-1";
    this.usages = [];
  }

  async onDigest(algorithm, data) {
    const hash = crypto.createHash("SHA1").update(Buffer.from(data)).digest();
    return new Uint8Array(hash).buffer;
  }

}

class SubtleCrypto extends core.SubtleCrypto {
  constructor() {
    super();

    // Add SHA1 provider to SubtleCrypto
    this.providers.set(new Sha1Provider());
  }
}

class Crypto extends core.Crypto {

  constructor() {
    this.subtle = new SubtleCrypto();
  }

  getRandomValues(array) {
    const buffer = Buffer.from(array.buffer);
    crypto.randomFillSync(buffer);
    return array;
  }

}

const webcrypto = new Crypto();
webcrypto.subtle.digest("SHA-1", Buffer.from("TEST MESSAGE"))
  .then((hash) => {
    console.log(Buffer.from(hash).toString("hex")); // dbca505deb07e1612d944a69c0c851f79f3a4a60
  })
  .catch((err) => {
    console.error(err);
  });

Keywords

FAQs

Last updated on 28 Mar 2024

Did you know?

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc