dograma
Version:
NodeJS/Browser MTProto API Telegram client library,
62 lines (60 loc) • 2.53 kB
JavaScript
const AES = require("../../gramjs/crypto/AES");
const AESModeCTR = require("../../gramjs/crypto/AESCTR");
describe("IGE encrypt function", () => {
test(
"it should return 4a657a834edc2956ec95b2a42ec8c1f2d1f0a6028ac26fd830ed23855574b4e69dd1a2be2ba18a53a49b879b2" +
"45e1065e14b6e8ac5ba9b24befaff3209b77b5f",
() => {
const plainText = Buffer.from(
"this should hold a 64 characters long string. only 10 more left."
);
const iv = Buffer.from("the iv needs 32 characters long.");
const key = Buffer.from("the key needs 32 characters long");
const encrypted = Buffer.from(
"4a657a834edc2956ec95b2a42ec8c1f2d1f0a6028ac26fd830ed23855574b4e69dd1a2be" +
"2ba18a53a49b879b245e1065e14b6e8ac5ba9b24befaff3209b77b5f",
"hex"
);
expect(AES.encryptIge(plainText, key, iv)).toEqual(encrypted);
}
);
});
describe("IGE decrypt function", () => {
test('it should return "this should hold a 64 characters long string. only 10 more left."', () => {
const encrypted = Buffer.from(
"4a657a834edc2956ec95b2a42ec8c1f2d1f0a6028ac26fd830ed23855574b4e69dd1a2be" +
"2ba18a53a49b879b245e1065e14b6e8ac5ba9b24befaff3209b77b5f",
"hex"
);
const iv = Buffer.from("the iv needs 32 characters long.");
const key = Buffer.from("the key needs 32 characters long");
const plainText = Buffer.from(
"this should hold a 64 characters long string. only 10 more left."
);
expect(AES.decryptIge(encrypted, key, iv)).toEqual(plainText);
});
});
describe("CTR encrypt function", () => {
test(
"it should return 5f40f14f8b70178f70e8045b44eff5f1b148714f23cd and" +
" cd0779d148b466935cf573450212451692bc82fccd5b106e53",
() => {
const encryptKey = Buffer.from("the key needs 32 characters long");
const encryptIv = Buffer.from("the iv does not.");
const encryptor = new AESModeCTR(encryptKey, encryptIv);
const firstData = Buffer.from("this can be any length");
const firstResult = encryptor.encrypt(firstData);
const secondData = Buffer.from("this also can be anything");
const secondResult = encryptor.encrypt(secondData);
const outputFirst = Buffer.from(
"5f40f14f8b70178f70e8045b44eff5f1b148714f23cd",
"hex"
);
const outputSecond = Buffer.from(
"cd0779d148b466935cf573450212451692bc82fccd5b106e53",
"hex"
);
expect([firstResult, secondResult]).toEqual([outputFirst, outputSecond]);
}
);
});