Generate Secrets

Generate secrets

1auth requires four cryptographic secrets for encryption, signing, and digest operations. Use the following script to generate them:

import {
  randomChecksumPepper,
  randomChecksumSalt,
  symmetricRandomEncryptionKey,
  symmetricRandomSignatureSecret,
} from "@1auth/crypto";

const secrets = {
  symmetricEncryptionKey: symmetricRandomEncryptionKey().toString("base64"),
  symmetricSignatureSecret: symmetricRandomSignatureSecret().toString("base64"),
  digestChecksumSalt: randomChecksumSalt().toString("base64"),
  digestChecksumPepper: randomChecksumPepper().toString("base64"),
};
console.log(secrets);

Run

node -e "
import {
  randomChecksumPepper,
  randomChecksumSalt,
  symmetricRandomEncryptionKey,
  symmetricRandomSignatureSecret,
} from '@1auth/crypto';

console.log({
  symmetricEncryptionKey: symmetricRandomEncryptionKey().toString('base64'),
  symmetricSignatureSecret: symmetricRandomSignatureSecret().toString('base64'),
  digestChecksumSalt: randomChecksumSalt().toString('base64'),
  digestChecksumPepper: randomChecksumPepper().toString('base64'),
});
"

Usage

Store the generated values as environment variables:

VariableSecret
SYMMETRIC_ENCRYPTION_KEYsymmetricEncryptionKey
SYMMETRIC_SIGNATURE_SECRETsymmetricSignatureSecret
DIGEST_CHECKSUM_SALTdigestChecksumSalt
DIGEST_CHECKSUM_PEPPERdigestChecksumPepper

These are passed to @1auth/crypto during initialization. See Quick Start for the full setup example.