diff --git a/src/core/config/Categories.json b/src/core/config/Categories.json
index 43c23c62..307270d2 100644
--- a/src/core/config/Categories.json
+++ b/src/core/config/Categories.json
@@ -75,7 +75,6 @@
"AES Decrypt",
"Blowfish Encrypt",
"Blowfish Decrypt",
- "ChaCha",
"DES Encrypt",
"DES Decrypt",
"Triple DES Encrypt",
@@ -86,6 +85,8 @@
"RC2 Decrypt",
"RC4",
"RC4 Drop",
+ "ChaCha",
+ "Rabbit",
"SM4 Encrypt",
"SM4 Decrypt",
"ROT13",
@@ -134,8 +135,7 @@
"Typex",
"Lorenz",
"Colossus",
- "SIGABA",
- "Rabbit Stream Cipher"
+ "SIGABA"
]
},
{
diff --git a/src/core/operations/RabbitStreamCipher.mjs b/src/core/operations/Rabbit.mjs
similarity index 94%
rename from src/core/operations/RabbitStreamCipher.mjs
rename to src/core/operations/Rabbit.mjs
index 7d030a6f..91ff24a3 100644
--- a/src/core/operations/RabbitStreamCipher.mjs
+++ b/src/core/operations/Rabbit.mjs
@@ -10,19 +10,19 @@ import { toHexFast } from "../lib/Hex.mjs";
import OperationError from "../errors/OperationError.mjs";
/**
- * Rabbit Stream Cipher operation
+ * Rabbit operation
*/
-class RabbitStreamCipher extends Operation {
+class Rabbit extends Operation {
/**
- * RabbitStreamCipher constructor
+ * Rabbit constructor
*/
constructor() {
super();
- this.name = "Rabbit Stream Cipher";
+ this.name = "Rabbit";
this.module = "Ciphers";
- this.description = "Rabbit Stream Cipher, a stream cipher algorithm defined in RFC4503.
The cipher uses a 128-bit key and an optional 64-bit initialization vector (IV).
big-endian: based on RFC4503 and RFC3447
little-endian: compatible with Crypto++";
+ this.description = "Rabbit is a high-speed stream cipher introduced in 2003 and defined in RFC 4503.
The cipher uses a 128-bit key and an optional 64-bit initialization vector (IV).
big-endian: based on RFC4503 and RFC3447
little-endian: compatible with Crypto++";
this.infoURL = "https://wikipedia.org/wiki/Rabbit_(cipher)";
this.inputType = "string";
this.outputType = "string";
@@ -244,4 +244,4 @@ class RabbitStreamCipher extends Operation {
}
-export default RabbitStreamCipher;
+export default Rabbit;
diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs
index cb410915..7a3361f2 100644
--- a/tests/operations/index.mjs
+++ b/tests/operations/index.mjs
@@ -129,7 +129,7 @@ import "./tests/Shuffle.mjs";
import "./tests/FletcherChecksum.mjs";
import "./tests/CMAC.mjs";
import "./tests/AESKeyWrap.mjs";
-import "./tests/RabbitStreamCipher.mjs";
+import "./tests/Rabbit.mjs";
// Cannot test operations that use the File type yet
// import "./tests/SplitColourChannels.mjs";
diff --git a/tests/operations/tests/RabbitStreamCipher.mjs b/tests/operations/tests/Rabbit.mjs
similarity index 81%
rename from tests/operations/tests/RabbitStreamCipher.mjs
rename to tests/operations/tests/Rabbit.mjs
index fd22ffbd..ca3156fa 100644
--- a/tests/operations/tests/RabbitStreamCipher.mjs
+++ b/tests/operations/tests/Rabbit.mjs
@@ -8,12 +8,12 @@ import TestRegister from "../../lib/TestRegister.mjs";
TestRegister.addTests([
{
- name: "Rabbit Stream Cipher: RFC Test vector, without IV 1",
+ name: "Rabbit: RFC Test vector, without IV 1",
input: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
expectedOutput: "b15754f036a5d6ecf56b45261c4af70288e8d815c59c0c397b696c4789c68aa7f416a1c3700cd451da68d1881673d696",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "00000000000000000000000000000000"},
{"option": "Hex", "string": ""},
@@ -23,12 +23,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: RFC Test vector, without IV 2",
+ name: "Rabbit: RFC Test vector, without IV 2",
input: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
expectedOutput: "3d2df3c83ef627a1e97fc38487e2519cf576cd61f4405b8896bf53aa8554fc19e5547473fbdb43508ae53b20204d4c5e",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "912813292e3d36fe3bfc62f1dc51c3ac"},
{"option": "Hex", "string": ""},
@@ -38,12 +38,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: RFC Test vector, without IV 3",
+ name: "Rabbit: RFC Test vector, without IV 3",
input: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
expectedOutput: "0cb10dcda041cdac32eb5cfd02d0609b95fc9fca0f17015a7b7092114cff3ead9649e5de8bfc7f3f924147ad3a947428",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "8395741587e0c733e9e9ab01c09b0043"},
{"option": "Hex", "string": ""},
@@ -53,12 +53,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: RFC Test vector, with IV 1",
+ name: "Rabbit: RFC Test vector, with IV 1",
input: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
expectedOutput: "c6a7275ef85495d87ccd5d376705b7ed5f29a6ac04f5efd47b8f293270dc4a8d2ade822b29de6c1ee52bdb8a47bf8f66",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "00000000000000000000000000000000"},
{"option": "Hex", "string": "0000000000000000"},
@@ -68,12 +68,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: RFC Test vector, with IV 2",
+ name: "Rabbit: RFC Test vector, with IV 2",
input: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
expectedOutput: "1fcd4eb9580012e2e0dccc9222017d6da75f4e10d12125017b2499ffed936f2eebc112c393e738392356bdd012029ba7",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "00000000000000000000000000000000"},
{"option": "Hex", "string": "c373f575c1267e59"},
@@ -83,12 +83,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: RFC Test vector, with IV 3",
+ name: "Rabbit: RFC Test vector, with IV 3",
input: "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
expectedOutput: "445ad8c805858dbf70b6af23a151104d96c8f27947f42c5baeae67c6acc35b039fcbfc895fa71c17313df034f01551cb",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "00000000000000000000000000000000"},
{"option": "Hex", "string": "a6eb561ad2f41727"},
@@ -98,12 +98,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: generated stream should be XORed with the input",
+ name: "Rabbit: generated stream should be XORed with the input",
input: "cedda96c054e3ddd93da7ed05e2a4b7bdb0c00fe214f03502e2708b2c2bfc77aa2311b0b9af8aa78d119f92b26db0a6b",
expectedOutput: "7f8afd9c33ebeb3166b13bf64260bc7953e4d8ebe4d30f69554e64f54b794ddd5627bac8eaf47e290b7128a330a8dcfd",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "00000000000000000000000000000000"},
{"option": "Hex", "string": ""},
@@ -113,12 +113,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: least significant bits should be used for the last block",
+ name: "Rabbit: least significant bits should be used for the last block",
input: "0000000000000000",
expectedOutput: "f56b45261c4af702",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "00000000000000000000000000000000"},
{"option": "Hex", "string": ""},
@@ -128,12 +128,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: invalid key length",
+ name: "Rabbit: invalid key length",
input: "",
expectedOutput: "Invalid key length: 8 bytes (expected: 16)",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "0000000000000000"},
{"option": "Hex", "string": ""},
@@ -143,12 +143,12 @@ TestRegister.addTests([
]
},
{
- name: "Rabbit Stream Cipher: invalid IV length",
+ name: "Rabbit: invalid IV length",
input: "",
expectedOutput: "Invalid IV length: 4 bytes (expected: 0 or 8)",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "00000000000000000000000000000000"},
{"option": "Hex", "string": "00000000"},
@@ -160,12 +160,12 @@ TestRegister.addTests([
{
// this testcase is taken from the first example on Crypto++ Wiki
// https://www.cryptopp.com/wiki/Rabbit
- name: "Rabbit Stream Cipher: little-endian mode (Crypto++ compatible)",
+ name: "Rabbit: little-endian mode (Crypto++ compatible)",
input: "Rabbit stream cipher test",
expectedOutput: "1ae2d4edcf9b6063b00fd6fda0b223aded157e77031cf0440b",
recipeConfig: [
{
- "op": "Rabbit Stream Cipher",
+ "op": "Rabbit",
"args": [
{"option": "Hex", "string": "23c2731e8b5469fd8dabb5bc592a0f3a"},
{"option": "Hex", "string": "712906405ef03201"},