This commit is contained in:
n1474335 2022-11-25 15:30:32 +00:00
parent 55809b2e87
commit 3f85c32c7c
2 changed files with 16 additions and 15 deletions

View file

@ -381,6 +381,7 @@ class Utils {
} }
} }
/** /**
* Converts a byte array to an integer. * Converts a byte array to an integer.
* *
@ -409,6 +410,7 @@ class Utils {
return value; return value;
} }
/** /**
* Converts an integer to a byte array of {length} bytes. * Converts an integer to a byte array of {length} bytes.
* *
@ -443,6 +445,7 @@ class Utils {
return arr; return arr;
} }
/** /**
* Converts a string to an ArrayBuffer. * Converts a string to an ArrayBuffer.
* Treats the string as UTF-8 if any values are over 255. * Treats the string as UTF-8 if any values are over 255.

View file

@ -159,9 +159,12 @@ class ChaCha extends Operation {
ChaCha uses a key of 16 or 32 bytes (128 or 256 bits).`); ChaCha uses a key of 16 or 32 bytes (128 or 256 bits).`);
} }
let counter, nonce;
let counterLength; let counter, nonce, counterLength;
if (nonceType !== "Integer") { if (nonceType === "Integer") {
nonce = Utils.intToByteArray(parseInt(args[1].string, 10), 12, "little");
counterLength = 4;
} else {
nonce = Utils.convertToByteArray(args[1].string, args[1].option); nonce = Utils.convertToByteArray(args[1].string, args[1].option);
if (!(nonce.length === 12 || nonce.length === 8)) { if (!(nonce.length === 12 || nonce.length === 8)) {
throw new OperationError(`Invalid nonce length: ${nonce.length} bytes. throw new OperationError(`Invalid nonce length: ${nonce.length} bytes.
@ -169,15 +172,10 @@ ChaCha uses a key of 16 or 32 bytes (128 or 256 bits).`);
ChaCha uses a nonce of 8 or 12 bytes (64 or 96 bits).`); ChaCha uses a nonce of 8 or 12 bytes (64 or 96 bits).`);
} }
counterLength = 16 - nonce.length; counterLength = 16 - nonce.length;
counter = Utils.intToByteArray(args[2], counterLength, "little");
} }
if (nonceType === "Integer") {
nonce = Utils.intToByteArray(parseInt(args[1].string, 10), 12, "little");
counterLength = 4;
counter = Utils.intToByteArray(args[2], counterLength, "little"); counter = Utils.intToByteArray(args[2], counterLength, "little");
}
const output = new Array(); const output = [];
input = Utils.convertToByteArray(input, inputType); input = Utils.convertToByteArray(input, inputType);
let counterAsInt = Utils.byteArrayToInt(counter, "little"); let counterAsInt = Utils.byteArrayToInt(counter, "little");