0.4.3 • Published 9 months ago

@b127/crypto v0.4.3

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

crypto

File encryption in Nodejs

This package contains functions to encrypt and decrypt files using AES in Node.js.

!WARNING Cryptography is hard. A simple mistake can compromise security. I'm by no means an expert on the subject. Use at own risk.

Install

npm install @b127/crypto

Usage

import { encrypt, decrypt } from '@b127/crypto';

(async () => {
  // encrypt file.txt to current directory
  await encrypt('./file.txt', 'passphrase', './');

  // decrypt encryptedFile to current directory
  await decrypt('./encryptedFile', 'passphrase', './');
})();

Types

interface Metadata {
  iv: Buffer;
  file: string;
  ext: string;
  version?: string;
}

interface ResultEntry {
  file: string;
  target: string;
}

type Result = ResultEntry | ResultEntry[];

interface DecryptToStreamResult {
  metadata: Metadata;
  stream: Stream;
}

API

encrypt(file, passphrase, targetDir, targetFileName?)

Encrypt a file or directory (non recursive). Returns a Promise<Result | Result[]> or rejects CryptoError.

file

Type: string

File or directory to encrypt.

passphrase

Type: string

Passphrase to use for encryption and decryption.

targetDir

Type string

Directory to write encrypted file(s) to.

targetFileName

Type string | undefined\ Default: undefined

Name for the encrypted file. When left to undefined the file name will be the input file name without extension.

decrypt(file, passphrase, targetDir, targetFileName?)

Decrypt a file or directory (non recursive). Returns a Promise<Result | Result[]> or rejects CryptoError.

file

Type: string

File or directory to decrypt.

passphrase

Type: string

Passphrase to use for decryption.

targetDir

Type string

Directory to write decrypted file(s) to.

targetFileName

Type string | undefined\ Default: undefined

Name for the decrypted file. When left to undefined the filename will be the original filename.

decryptToStream(file, passphrase)

Decrypt a single file and returns a stream. Returns a Promise<DecryptToStreamResult> or rejects CryptoError.

file

Type: string

File to decrypt.

passphrase

Type: string

Passphrase to use for decryption.

getMetadata(file)

Get metadata from encrypted file. Returns a Promise<Metadata> or rejects CryptoError.

file

Type: string

File to read metadata from.

0.4.3

9 months ago

0.4.2

10 months ago

0.4.1

10 months ago