@libp2p/aes-ctr
Version:
Streaming AES-CTR for node and browsers
53 lines • 1.76 kB
TypeScript
/**
* @packageDocumentation
*
* WebCrypto does not support streaming encryption - https://github.com/w3c/webcrypto/issues/73
*
* In browsers this module uses `node-forge` to expose a streaming interface to AES encryption (formerly Rijndael), as defined in U.S. Federal Information Processing Standards Publication 197.
*
* In node.js it uses the regular streaming API exported by the `crypto` module.
*
* This uses `CTR` mode.
*
* @example
*
* ```js
* import { create } from '@libp2p/aes-ctr'
*
* // Setting up Key and IV
*
* // A 16 bytes array, 128 Bits, AES-128 is chosen
* const key128 = Uint8Array.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
*
* // A 16 bytes array, 128 Bits,
* const IV = Uint8Array.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
*
* const decryptedMessage = 'Hello, world!'
*
* // Encrypting
* const cipher = create(key128, IV)
* const encryptedBuffer = cipher.encrypt(Uint8Array.from(decryptedMessage))
* console.log(encryptedBuffer)
* // prints: <Uint8Array 42 f1 67 d9 2e 42 d0 32 9e b1 f8 3c>
*
* // Decrypting
* const decipher = create(key128, IV)
* const decryptedBuffer = decipher.decrypt(encryptedBuffer)
*
* console.log(decryptedBuffer)
* // prints: <Uint8Array 42 f1 67 d9 2e 42 d0 32 9e b1 f8 3c>
*
* console.log(decryptedBuffer.toString('utf-8'))
* // prints: Hello, world!
* ```
*/
export interface AESCipher {
encrypt(data: Uint8Array): Uint8Array;
decrypt(data: Uint8Array): Uint8Array;
}
/**
* @param key - The key, if length `16` then `AES 128` is used. For length `32`, `AES 256` is used
* @param iv - Must have length `16`
*/
export declare function create(key: Uint8Array, iv: Uint8Array): AESCipher;
//# sourceMappingURL=index.d.ts.map