npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@alessiofrittoli/crypto-algorithm

v1.2.0

Published

Lightweight TypeScript library with Node.js Crypto Algortihm utilities

Downloads

377

Readme

Crypto Algorithm 📟

Version 1.2.0

Lightweight TypeScript library with Node.js Crypto Algortihm utilities

Table of Contents


Getting started

Run the following command to start using crypto-algorithm in your projects:

npm i @alessiofrittoli/crypto-algorithm

or using pnpm

pnpm i @alessiofrittoli/crypto-algorithm

Algorithm utility Class

The Algorithm class is designed to manage cryptographic algorithm schemas, including their mappings and retrievals based on various criteria.

Overview

The Algorithm class provides utilities to manage and retrieve cryptographic algorithm specifications. The specifications include details like key type (kty), cryptographic algorithm identifier (alg), curve parameters, hash functions, and web crypto API names.

The algorithms supported by this class conform to COSE Algorithms and the Web Cryptography API.

Static Properties

KTY

A map of key type constants. The supported key types are:

| Key | Value | Description | |-------|-------|--------------------| | OKP | 1 | Octet Key Pair | | EC2 | 2 | Elliptic Curve (2) | | RSA | 3 | RSA |

Algorithm.MAP

A Map object that associates algorithm identifiers with their corresponding schemas. The schema includes:

  • kty: Key type.
  • alg: Algorithm identifier.
  • crv: Curve identifier (for elliptic curves).
  • name: Name of the algorithm.
  • hash: Hash function used.
  • crvSchemeName: Curve scheme name.
  • namedCurve: Named curve for elliptic curve algorithms.
  • webcryptoName: Corresponding Web Crypto API algorithm name.
  • jwkAlg: JSON Web Key (JWK) algorithm name.

Static Methods

Algorithm.by()

Retrieves an algorithm schema based on a partial schema or KeyAlgorithm.

Parameters
  • scheme (Partial<Algo.Schema> | KeyAlgorithm): A partial schema or KeyAlgorithm object.
Returns
  • (Algo.Schema | undefined): The matching algorithm schema, or undefined if no match is found.
Implementation
  • If the scheme contains an alg property, the method directly retrieves the schema from the Algorithm.MAP.
  • Otherwise, the method iterates through the Algorithm.MAP entries and performs a property-based match.

Algorithm.byId()

Retrieves an algorithm schema by its identifier.

Parameters
  • alg (Algo.Id): The algorithm identifier.
Returns
  • (Algo.Schema | undefined): The schema associated with the provided identifier, or undefined if no match is found.
Implementation
  • Internally calls the Algorithm.by() method with an object containing the alg property.

Usage examples

Retrieve Schema by Algorithm ID

import Algorithm from '@alessiofrittoli/crypto-algorithm'

const schema = Algorithm.byId( -7 )
console.log( schema )
// Output: Schema details for ECDSA using SHA-256

Retrieve Schema by Partial Properties

import Algorithm from '@alessiofrittoli/crypto-algorithm'
import type Algo from '@alessiofrittoli/crypto-algorithm/types'

const partialScheme: Partial<Algo.Schema> = { name: 'RSA-PSS', hash: 'SHA-256' }
const schema = Algorithm.by( partialScheme )
console.log( schema )
// Output: Schema details for RSA-PSS with SHA-256

Supported Algorithms in Algorithm.MAP

The Algorithm.MAP includes schemas for:

  • ECDSA (Elliptic Curve Digital Signature Algorithm)
  • EdDSA (Edwards-curve Digital Signature Algorithm)
  • RSA-PSS (RSA Probabilistic Signature Scheme)
  • RSASSA-PKCS1-v1_5 (RSA Signature Scheme with Appendix)
  • HMAC (Hash-based Message Authentication Code)
  • DSA (Digital Signature Algorithm)

Refer to the Algorithm.MAP implementation for specific algorithm configurations.


Security

If you believe you have found a security vulnerability, we encourage you to responsibly disclose this and NOT open a public issue. We will investigate all legitimate reports. Email [email protected] to disclose any security vulnerabilities.

Made with ☕