@credify/crypto (JavaScript)
Crypto related functions and helpers for JavaScript implemented in TypeScript.
How to install
NPM
// yarn
$ yarn add @credify/crypto
// npm
$ npm install @credify/crypto
How to use
Encryption (RSA)
import { Encryption } from "@credify/crypto";
const privateKeyPem =
`-----BEGIN PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDrEavVupOf+G7U
83oh0TKLK0U+9BdY4cgPCe66gyLodY9NF7+r9NgZHlsSOaXXTCEJOo8/rb+JFW34
....
agUydf7cXbP1YoOBizTgt/WBiQk47Ym4JvEWDTHmEsT4snYjujiMvAlAS37JyvWD
osQZlO5eDVv0XR3aNy5pOR/ouC0o8a8=
-----END PRIVATE KEY-----`;
const cipherText = "XGI1icHgMVuTvYLMEwXp...YCfEqkHxv5FdyWaw=";
const encryptionSample = async () => {
const encryption = new Encryption();
await encryption.importPrivateKey(privateKeyPem);
const plainText = await encryption.decryptBase64StringToString(cipherText);
console.log(plainText);
}
Signing (EdDSA)
import { Signing } from "@credify/crypto";
const privateKeyPem = `-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIPqO4b4UtXSaWGp5u38rCXYu4/LdbaSk7lD46LtRUu44
-----END PRIVATE KEY-----`;
const message = "test message";
const signing = new Signing();
signing.importPrivateKey(privateKeyPem);
const sign = signing.sign(message, { input: "utf8" });
const verified = signing.verify(message, sign);
console.log(verified)
Signing (ECDSA)
import { EcdsaKey } from "@credify/crypto";
const privateKeyPem = `-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIPqO4b4UtXSaWGp5u38rCXYu4/LdbaSk7lD46LtRUu44
-----END PRIVATE KEY-----`;
const message = "test message";
const signing = new EcdsaKey();
await signing.importPrivateKey(privateKeyPem);
const sign = await signing.sign(message, { input: "utf8" });
const verified = await signing.verify(message, sign);
console.log(verified)
Asymmetric Encryption
@credify/crypto supports RSA encryption with 3072 bit length keys by default. Its padding scheme uses OAEP.
Signing
@credify/crypto supports
PKCS #8
In order to simply deal with private keys, this uses PKCS #8.
More information
https://developers.credify.one/
Requirements
Currently, it does not work with Webpack 5 due to Node.js core dependencies.
License
@credify/crypto is released under the MIT license. See LICENSE for details.