Add Fernet encrypt/decrypt
This commit is contained in:
parent
21ea4b9c0e
commit
dcee118f4a
23
package-lock.json
generated
23
package-lock.json
generated
@ -4725,11 +4725,29 @@
|
|||||||
"pend": "~1.2.0"
|
"pend": "~1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
<<<<<<< HEAD
|
||||||
"figgy-pudding": {
|
"figgy-pudding": {
|
||||||
"version": "3.5.1",
|
"version": "3.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
|
||||||
"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
|
"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
|
=======
|
||||||
|
"fernet": {
|
||||||
|
"version": "0.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/fernet/-/fernet-0.3.1.tgz",
|
||||||
|
"integrity": "sha512-7KnsrcpLkUsKy6aH6Ow68hrMWhvE25rTDd3370+xVGkpqZta05cUCmdJQPyLBKTsNdPUB5NumJZBgJIJ60aQqw==",
|
||||||
|
"requires": {
|
||||||
|
"crypto-js": "~3.1.2-1",
|
||||||
|
"urlsafe-base64": "1.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"crypto-js": {
|
||||||
|
"version": "3.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.8.tgz",
|
||||||
|
"integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>>>>>>> Add Fernet encrypt/decrypt
|
||||||
},
|
},
|
||||||
"figures": {
|
"figures": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
@ -12952,6 +12970,11 @@
|
|||||||
"requires-port": "^1.0.0"
|
"requires-port": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"urlsafe-base64": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/urlsafe-base64/-/urlsafe-base64-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-I/iQaabGL0bPOh07ABac77kL4MY="
|
||||||
|
},
|
||||||
"use": {
|
"use": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
|
||||||
|
|||||||
@ -97,6 +97,7 @@
|
|||||||
"esmangle": "^1.0.1",
|
"esmangle": "^1.0.1",
|
||||||
"esprima": "^4.0.1",
|
"esprima": "^4.0.1",
|
||||||
"exif-parser": "^0.1.12",
|
"exif-parser": "^0.1.12",
|
||||||
|
"fernet": "^0.3.1",
|
||||||
"file-saver": "^2.0.0",
|
"file-saver": "^2.0.0",
|
||||||
"geodesy": "^1.1.3",
|
"geodesy": "^1.1.3",
|
||||||
"highlight.js": "^9.13.1",
|
"highlight.js": "^9.13.1",
|
||||||
|
|||||||
@ -73,6 +73,8 @@
|
|||||||
"DES Decrypt",
|
"DES Decrypt",
|
||||||
"Triple DES Encrypt",
|
"Triple DES Encrypt",
|
||||||
"Triple DES Decrypt",
|
"Triple DES Decrypt",
|
||||||
|
"Fernet Encrypt",
|
||||||
|
"Fernet Decrypt",
|
||||||
"RC2 Encrypt",
|
"RC2 Encrypt",
|
||||||
"RC2 Decrypt",
|
"RC2 Decrypt",
|
||||||
"RC4",
|
"RC4",
|
||||||
|
|||||||
58
src/core/operations/FernetDecrypt.mjs
Normal file
58
src/core/operations/FernetDecrypt.mjs
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/**
|
||||||
|
* @author kassi [kassi@noreply.com]
|
||||||
|
* @copyright KS 2018
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Operation from '../Operation';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FernetDecrypt operation
|
||||||
|
*/
|
||||||
|
class FernetDecrypt extends Operation {
|
||||||
|
/**
|
||||||
|
* FernetDecrypt constructor
|
||||||
|
*/
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.name = 'Fernet Decrypt';
|
||||||
|
this.module = 'Default';
|
||||||
|
this.description = 'Fernet is a symmetric encryption method which makes sure that the message encrypted cannot be manipulated/read without the key. It uses URL safe encoding for the keys. Fernet uses 128-bit AES in CBC mode and PKCS7 padding, with HMAC using SHA256 for authentication. The IV is created from os.random().';
|
||||||
|
this.infoURL = 'https://asecuritysite.com/encryption/fer';
|
||||||
|
this.inputType = 'string';
|
||||||
|
this.outputType = 'string';
|
||||||
|
this.args = [
|
||||||
|
{
|
||||||
|
'name': 'Secret',
|
||||||
|
'type': 'string',
|
||||||
|
'value': ""
|
||||||
|
},
|
||||||
|
];
|
||||||
|
this.patterns = [
|
||||||
|
{
|
||||||
|
match: "^[A-Z\\d\\-_=]{20,}$",
|
||||||
|
flags: "i",
|
||||||
|
args: []
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param {String} input
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {String}
|
||||||
|
*/
|
||||||
|
run(input, args) {
|
||||||
|
const [secretInput] = args;
|
||||||
|
var fernet = require('fernet');
|
||||||
|
var secret = new fernet.Secret(secretInput);
|
||||||
|
var token = new fernet.Token({
|
||||||
|
secret: secret,
|
||||||
|
token: input
|
||||||
|
})
|
||||||
|
return token.decode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default FernetDecrypt;
|
||||||
50
src/core/operations/FernetEncrypt.mjs
Normal file
50
src/core/operations/FernetEncrypt.mjs
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/**
|
||||||
|
* @author kassi [kassi@noreply.com]
|
||||||
|
* @copyright KS 2018
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Operation from '../Operation';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FernetEncrypt operation
|
||||||
|
*/
|
||||||
|
class FernetEncrypt extends Operation {
|
||||||
|
/**
|
||||||
|
* FernetEncrypt constructor
|
||||||
|
*/
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.name = 'Fernet Encrypt';
|
||||||
|
this.module = 'Default';
|
||||||
|
this.description = 'Fernet is a symmetric encryption method which makes sure that the message encrypted cannot be manipulated/read without the key. It uses URL safe encoding for the keys. Fernet uses 128-bit AES in CBC mode and PKCS7 padding, with HMAC using SHA256 for authentication. The IV is created from os.random().';
|
||||||
|
this.infoURL = 'https://asecuritysite.com/encryption/fer';
|
||||||
|
this.inputType = 'string';
|
||||||
|
this.outputType = 'string';
|
||||||
|
this.args = [
|
||||||
|
{
|
||||||
|
'name': 'Secret',
|
||||||
|
'type': 'string',
|
||||||
|
'value': ""
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param {String} input
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {String}
|
||||||
|
*/
|
||||||
|
run(input, args) {
|
||||||
|
const [secretInput] = args;
|
||||||
|
var fernet = require('fernet');
|
||||||
|
var secret = new fernet.Secret(secretInput);
|
||||||
|
var token = new fernet.Token({
|
||||||
|
secret: secret,
|
||||||
|
})
|
||||||
|
return token.encode(input);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default FernetEncrypt;
|
||||||
Loading…
x
Reference in New Issue
Block a user