@1auth/crypto
Cryptographic utilities for encryption, hashing, and signing with modern algorithms.
Install
npm i @1auth/crypto Usage
import crypto from '@1auth/crypto'
crypto({
symmetricEncryptionKey: process.env.SYMMETRIC_ENCRYPTION_KEY,
symmetricSignatureSecret: process.env.SYMMETRIC_SIGNATURE_SECRET,
digestChecksumSalt: process.env.DIGEST_CHECKSUM_SALT,
digestChecksumPepper: process.env.DIGEST_CHECKSUM_PEPPER
}) Configuration options
| Option | Type | Default | Description |
|---|---|---|---|
symmetricEncryptionKey | string | required | Key for symmetric encryption |
symmetricSignatureSecret | string | — | Secret for HMAC signing |
digestChecksumSalt | string | — | Salt for digest computation |
digestChecksumPepper | string | — | Pepper for additional digest security |
symmetricEncryptionAlgorithm | string | chacha20-poly1305 | Encryption algorithm |
digestAlgorithm | string | sha3-384 | Digest algorithm |
asymmetricEncryptionCurve | string | P-384 | Asymmetric key curve |
API
Random generation
randomBytes(length)— Generate random bytesrandomInt(min, max)— Generate random integerrandomCharacters(options)— Generate random string from character setrandomAlphaNumeric(options)— Generate alphanumeric stringrandomNumeric(options)— Generate numeric string
Digests
createChecksum(value)— Create a checksum digestcreateDigest(value)— Create a digestcreateSeasonedDigest(value)— Create a seasoned digestcreateSaltedDigest(value)— Create a salted digestcreatePepperedDigest(value)— Create a peppered digest
Secret hashing
createSecretHash(secret)— Hash a secret with Argon2idverifySecretHash(secret, hash)— Verify a secret against its hash
Symmetric encryption
symmetricGenerateEncryptionKey()— Generate a new encryption keysymmetricEncrypt(value, key)— Encrypt a valuesymmetricDecrypt(encrypted, key)— Decrypt a valuesymmetricEncryptFields(fields, values, key)— Encrypt specific fields in an objectsymmetricDecryptFields(fields, values, key)— Decrypt specific fields in an objectsymmetricRotation(encrypted, oldKey, newKey)— Re-encrypt with a new key
Symmetric signatures
symmetricSignatureSign(value)— Sign a value with HMACsymmetricSignatureVerify(value, signature)— Verify an HMAC signature
Asymmetric keys
makeAsymmetricKeys()— Generate asymmetric key pairmakeAsymmetricSignature(data, privateKey)— Sign data with private keyverifyAsymmetricSignature(data, signature, publicKey)— Verify signature
Utilities
nowInSeconds()— Current timestamp in secondssafeEqual(a, b)— Timing-safe string comparisongetOptions()— Get current configuration