Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 9 additions & 11 deletions src/Fernet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,36 +72,34 @@ export class Fernet {
}

/**
* Returns decrypted plain text from provided Fernet token.
* Returns decrypted data from provided Fernet token.
*
* @remarks
* This method decrypts Fernet token with the given key.
* Returns decrypted string as plain text.
* The decrypted string is encoded as utf-8 encoded string.
* Returns decrypted data as a Buffer.
*
* @param token - Fernet token
* @returns Decrypted utf-8 encoded string.
* @returns Decrypted data as a Buffer.
*
*/
decrypt(token: string): string {
decrypt(token: string): Buffer {
return Fernet.decrypt(token, this.key);
}

/**
* Returns decrypted plain text from provided Fernet token.
* Returns decrypted data from provided Fernet token.
*
* @remarks
* This method decrypts Fernet token with the given key.
* Returns decrypted string as plain text.
* The decrypted string is encoded as utf-8 encoded string.
* Returns decrypted data as a Buffer.
*
* @param token - Fernet token
* @param key - The provided 32-byte long base64url encoded key
* @returns Decrypted utf-8 encoded string.
* @returns Decrypted data as a Buffer.
* @throws Error if the key, token or cipher text is invalid
*
*/
static decrypt(token: string, key: string): string {
static decrypt(token: string, key: string): Buffer {
try {
Fernet.checkKey(key);
const keyBuffer = fromBase64Url(key);
Expand Down Expand Up @@ -132,7 +130,7 @@ export class Fernet {
throw new Error('Invalid signature. Signature did not match digest.');
}
const decrypted = aesDecrypt(cipherText, encryptionKey, iv);
return decrypted.toString('utf-8');
return decrypted;
} catch (err) {
throw err;
}
Expand Down
9 changes: 8 additions & 1 deletion tests/fernet.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,14 @@ describe('Fernet', () => {
const fernet = new Fernet(key);
const token = fernet.encrypt(text);
const decryptedText = fernet.decrypt(token);
expect(decryptedText).toEqual(text);
expect(decryptedText.toString('utf-8')).toEqual(text);
});

it('should return a Buffer from decrypt', () => {
const fernet = new Fernet(key);
const token = fernet.encrypt(text);
const decrypted = fernet.decrypt(token);
expect(Buffer.isBuffer(decrypted)).toBe(true);
});

it('should throw error when the key is invalid', () => {
Expand Down