mirror of
https://github.com/venera-app/venera.git
synced 2025-12-15 22:51:15 +00:00
Add encryptAes for js_engine (#645)
This commit is contained in:
@@ -190,6 +190,21 @@ let Convert = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ArrayBuffer} value
|
||||||
|
* @param {ArrayBuffer} key
|
||||||
|
* @returns {ArrayBuffer}
|
||||||
|
*/
|
||||||
|
encryptAesEcb: (value, key) => {
|
||||||
|
return sendMessage({
|
||||||
|
method: "convert",
|
||||||
|
type: "aes-ecb",
|
||||||
|
value: value,
|
||||||
|
key: key,
|
||||||
|
isEncode: true
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {ArrayBuffer} value
|
* @param {ArrayBuffer} value
|
||||||
* @param {ArrayBuffer} key
|
* @param {ArrayBuffer} key
|
||||||
@@ -205,6 +220,23 @@ let Convert = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ArrayBuffer} value
|
||||||
|
* @param {ArrayBuffer} key
|
||||||
|
* @param {ArrayBuffer} iv
|
||||||
|
* @returns {ArrayBuffer}
|
||||||
|
*/
|
||||||
|
encryptAesCbc: (value, key, iv) => {
|
||||||
|
return sendMessage({
|
||||||
|
method: "convert",
|
||||||
|
type: "aes-cbc",
|
||||||
|
value: value,
|
||||||
|
key: key,
|
||||||
|
iv: iv,
|
||||||
|
isEncode: true
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {ArrayBuffer} value
|
* @param {ArrayBuffer} value
|
||||||
* @param {ArrayBuffer} key
|
* @param {ArrayBuffer} key
|
||||||
@@ -225,20 +257,58 @@ let Convert = {
|
|||||||
/**
|
/**
|
||||||
* @param {ArrayBuffer} value
|
* @param {ArrayBuffer} value
|
||||||
* @param {ArrayBuffer} key
|
* @param {ArrayBuffer} key
|
||||||
|
* @param {ArrayBuffer} iv
|
||||||
* @param {number} blockSize
|
* @param {number} blockSize
|
||||||
* @returns {ArrayBuffer}
|
* @returns {ArrayBuffer}
|
||||||
*/
|
*/
|
||||||
decryptAesCfb: (value, key, blockSize) => {
|
encryptAesCfb: (value, key, iv, blockSize) => {
|
||||||
return sendMessage({
|
return sendMessage({
|
||||||
method: "convert",
|
method: "convert",
|
||||||
type: "aes-cfb",
|
type: "aes-cfb",
|
||||||
value: value,
|
value: value,
|
||||||
key: key,
|
key: key,
|
||||||
|
iv: iv,
|
||||||
|
blockSize: blockSize,
|
||||||
|
isEncode: true
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ArrayBuffer} value
|
||||||
|
* @param {ArrayBuffer} key
|
||||||
|
* @param {ArrayBuffer} iv
|
||||||
|
* @param {number} blockSize
|
||||||
|
* @returns {ArrayBuffer}
|
||||||
|
*/
|
||||||
|
decryptAesCfb: (value, key, iv, blockSize) => {
|
||||||
|
return sendMessage({
|
||||||
|
method: "convert",
|
||||||
|
type: "aes-cfb",
|
||||||
|
value: value,
|
||||||
|
key: key,
|
||||||
|
iv: iv,
|
||||||
blockSize: blockSize,
|
blockSize: blockSize,
|
||||||
isEncode: false
|
isEncode: false
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ArrayBuffer} value
|
||||||
|
* @param {ArrayBuffer} key
|
||||||
|
* @param {number} blockSize
|
||||||
|
* @returns {ArrayBuffer}
|
||||||
|
*/
|
||||||
|
encryptAesOfb: (value, key, blockSize) => {
|
||||||
|
return sendMessage({
|
||||||
|
method: "convert",
|
||||||
|
type: "aes-ofb",
|
||||||
|
value: value,
|
||||||
|
key: key,
|
||||||
|
blockSize: blockSize,
|
||||||
|
isEncode: true
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {ArrayBuffer} value
|
* @param {ArrayBuffer} value
|
||||||
* @param {ArrayBuffer} key
|
* @param {ArrayBuffer} key
|
||||||
|
|||||||
@@ -436,83 +436,72 @@ mixin class _JSEngineApi {
|
|||||||
return Uint8List.fromList(hmac.convert(value).bytes);
|
return Uint8List.fromList(hmac.convert(value).bytes);
|
||||||
}
|
}
|
||||||
case "aes-ecb":
|
case "aes-ecb":
|
||||||
if (!isEncode) {
|
var key = data["key"];
|
||||||
var key = data["key"];
|
var cipher = ECBBlockCipher(AESEngine());
|
||||||
var cipher = ECBBlockCipher(AESEngine());
|
cipher.init(
|
||||||
cipher.init(
|
isEncode,
|
||||||
false,
|
KeyParameter(key),
|
||||||
KeyParameter(key),
|
);
|
||||||
|
var offset = 0;
|
||||||
|
var result = Uint8List(value.length);
|
||||||
|
while (offset < value.length) {
|
||||||
|
offset += cipher.processBlock(
|
||||||
|
value,
|
||||||
|
offset,
|
||||||
|
result,
|
||||||
|
offset,
|
||||||
);
|
);
|
||||||
var offset = 0;
|
|
||||||
var result = Uint8List(value.length);
|
|
||||||
while (offset < value.length) {
|
|
||||||
offset += cipher.processBlock(
|
|
||||||
value,
|
|
||||||
offset,
|
|
||||||
result,
|
|
||||||
offset,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
return null;
|
return result;
|
||||||
case "aes-cbc":
|
case "aes-cbc":
|
||||||
if (!isEncode) {
|
var key = data["key"];
|
||||||
var key = data["key"];
|
var iv = data["iv"];
|
||||||
var iv = data["iv"];
|
var cipher = CBCBlockCipher(AESEngine());
|
||||||
var cipher = CBCBlockCipher(AESEngine());
|
cipher.init(isEncode, ParametersWithIV(KeyParameter(key), iv));
|
||||||
cipher.init(false, ParametersWithIV(KeyParameter(key), iv));
|
var offset = 0;
|
||||||
var offset = 0;
|
var result = Uint8List(value.length);
|
||||||
var result = Uint8List(value.length);
|
while (offset < value.length) {
|
||||||
while (offset < value.length) {
|
offset += cipher.processBlock(
|
||||||
offset += cipher.processBlock(
|
value,
|
||||||
value,
|
offset,
|
||||||
offset,
|
result,
|
||||||
result,
|
offset,
|
||||||
offset,
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
return null;
|
return result;
|
||||||
case "aes-cfb":
|
case "aes-cfb":
|
||||||
if (!isEncode) {
|
var key = data["key"];
|
||||||
var key = data["key"];
|
var iv = data["iv"];
|
||||||
var blockSize = data["blockSize"];
|
var blockSize = data["blockSize"];
|
||||||
var cipher = CFBBlockCipher(AESEngine(), blockSize);
|
var cipher = CFBBlockCipher(AESEngine(), blockSize);
|
||||||
cipher.init(false, KeyParameter(key));
|
cipher.init(isEncode, ParametersWithIV(KeyParameter(key), iv));
|
||||||
var offset = 0;
|
var offset = 0;
|
||||||
var result = Uint8List(value.length);
|
var result = Uint8List(value.length);
|
||||||
while (offset < value.length) {
|
while (offset < value.length) {
|
||||||
offset += cipher.processBlock(
|
offset += cipher.processBlock(
|
||||||
value,
|
value,
|
||||||
offset,
|
offset,
|
||||||
result,
|
result,
|
||||||
offset,
|
offset,
|
||||||
);
|
);
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
return null;
|
return result;
|
||||||
case "aes-ofb":
|
case "aes-ofb":
|
||||||
if (!isEncode) {
|
var key = data["key"];
|
||||||
var key = data["key"];
|
var blockSize = data["blockSize"];
|
||||||
var blockSize = data["blockSize"];
|
var cipher = OFBBlockCipher(AESEngine(), blockSize);
|
||||||
var cipher = OFBBlockCipher(AESEngine(), blockSize);
|
cipher.init(isEncode, KeyParameter(key));
|
||||||
cipher.init(false, KeyParameter(key));
|
var offset = 0;
|
||||||
var offset = 0;
|
var result = Uint8List(value.length);
|
||||||
var result = Uint8List(value.length);
|
while (offset < value.length) {
|
||||||
while (offset < value.length) {
|
offset += cipher.processBlock(
|
||||||
offset += cipher.processBlock(
|
value,
|
||||||
value,
|
offset,
|
||||||
offset,
|
result,
|
||||||
result,
|
offset,
|
||||||
offset,
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
return null;
|
return result;
|
||||||
case "rsa":
|
case "rsa":
|
||||||
if (!isEncode) {
|
if (!isEncode) {
|
||||||
var key = data["key"];
|
var key = data["key"];
|
||||||
|
|||||||
Reference in New Issue
Block a user