mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-13 17:20:21 +00:00
fish: Misc test cleanups
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
/*
|
||||
|
||||
Copyright (c) 2020 <bakasura@protonmail.ch>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
@@ -22,22 +21,19 @@
|
||||
|
||||
*/
|
||||
|
||||
#ifndef PLUGIN_HEXCHAT_FISHLIM_TEST_H
|
||||
#define PLUGIN_HEXCHAT_FISHLIM_TEST_H
|
||||
|
||||
// Libs
|
||||
#include <glib.h>
|
||||
// Project Libs
|
||||
#include "../fish.h"
|
||||
#include "../utils.h"
|
||||
#include "old_version/fish.h"
|
||||
|
||||
#include "fish.h"
|
||||
#include "utils.h"
|
||||
|
||||
/**
|
||||
* Auxiliary function: Generate a random string
|
||||
* @param out Preallocated string to fill
|
||||
* @param len Size of bytes to fill
|
||||
*/
|
||||
void random_string(char *out, size_t len) {
|
||||
static void
|
||||
random_string(char *out, size_t len)
|
||||
{
|
||||
GRand *rand = NULL;
|
||||
int i = 0;
|
||||
|
||||
@@ -51,13 +47,14 @@ void random_string(char *out, size_t len) {
|
||||
g_rand_free(rand);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check encrypt and decrypt in ECB mode and compare with old implementation
|
||||
* Check encrypt and decrypt in ECB mode
|
||||
*/
|
||||
void __ecb(void) {
|
||||
char *bo64 = NULL, *b64 = NULL;
|
||||
char *deo = NULL, *de = NULL;
|
||||
static void
|
||||
test_ecb(void)
|
||||
{
|
||||
char *b64 = NULL;
|
||||
char *de = NULL;
|
||||
int key_len, message_len = 0;
|
||||
char key[57];
|
||||
char message[1000];
|
||||
@@ -71,36 +68,20 @@ void __ecb(void) {
|
||||
random_string(message, message_len);
|
||||
|
||||
/* Encrypt */
|
||||
bo64 = __old_fish_encrypt(key, key_len, message);
|
||||
g_assert_nonnull(bo64);
|
||||
b64 = fish_encrypt(key, key_len, message, message_len, FISH_ECB_MODE);
|
||||
g_assert_nonnull(b64);
|
||||
g_assert_cmpuint(g_strcmp0(b64, bo64), == , 0);
|
||||
|
||||
/* Decrypt */
|
||||
/* Linear */
|
||||
deo = __old_fish_decrypt(key, key_len, bo64);
|
||||
de = fish_decrypt_str(key, key_len, b64, FISH_ECB_MODE);
|
||||
g_assert_nonnull(deo);
|
||||
g_assert_nonnull(de);
|
||||
g_assert_cmpuint(g_strcmp0(de, message), == , 0);
|
||||
g_assert_cmpuint(g_strcmp0(deo, message), == , 0);
|
||||
g_assert_cmpuint(g_strcmp0(de, deo), == , 0);
|
||||
g_free(deo);
|
||||
g_assert_cmpstr (de, ==, message);
|
||||
g_free(de);
|
||||
|
||||
/* Mixed */
|
||||
deo = __old_fish_decrypt(key, key_len, b64);
|
||||
de = fish_decrypt_str(key, key_len, bo64, FISH_ECB_MODE);
|
||||
g_assert_nonnull(deo);
|
||||
g_assert_nonnull(de);
|
||||
g_assert_cmpuint(g_strcmp0(de, message), == , 0);
|
||||
g_assert_cmpuint(g_strcmp0(deo, message), == , 0);
|
||||
g_assert_cmpuint(g_strcmp0(de, deo), == , 0);
|
||||
g_free(deo);
|
||||
de = fish_decrypt_str(key, key_len, b64, FISH_ECB_MODE);
|
||||
g_assert_cmpstr (de, ==, message);
|
||||
g_free(de);
|
||||
|
||||
/* Free */
|
||||
g_free(bo64);
|
||||
g_free(b64);
|
||||
}
|
||||
}
|
||||
@@ -109,7 +90,9 @@ void __ecb(void) {
|
||||
/**
|
||||
* Check encrypt and decrypt in CBC mode
|
||||
*/
|
||||
void __cbc(void) {
|
||||
static void
|
||||
test_cbc(void)
|
||||
{
|
||||
char *b64 = NULL;
|
||||
char *de = NULL;
|
||||
int key_len, message_len = 0;
|
||||
@@ -131,11 +114,9 @@ void __cbc(void) {
|
||||
/* Decrypt */
|
||||
/* Linear */
|
||||
de = fish_decrypt_str(key, key_len, b64, FISH_CBC_MODE);
|
||||
g_assert_nonnull(de);
|
||||
g_assert_cmpuint(g_strcmp0(de, message), == , 0);
|
||||
g_assert_cmpstr (de, ==, message);
|
||||
g_free(de);
|
||||
|
||||
/* Free */
|
||||
g_free(b64);
|
||||
}
|
||||
}
|
||||
@@ -144,13 +125,14 @@ void __cbc(void) {
|
||||
/**
|
||||
* Check the calculation of final length from an encoded string in Base64
|
||||
*/
|
||||
void __base64_len(void) {
|
||||
static void
|
||||
test_base64_len (void)
|
||||
{
|
||||
char *b64 = NULL;
|
||||
int i, message_len = 0;
|
||||
char message[1000];
|
||||
|
||||
for (i = 0; i < 10; ++i) {
|
||||
|
||||
for (message_len = 1; message_len < 1000; ++message_len) {
|
||||
random_string(message, message_len);
|
||||
b64 = g_base64_encode((const unsigned char *) message, message_len);
|
||||
@@ -164,7 +146,9 @@ void __base64_len(void) {
|
||||
/**
|
||||
* Check the calculation of final length from an encoded string in BlowcryptBase64
|
||||
*/
|
||||
void __base64_fish_len(void) {
|
||||
static void
|
||||
test_base64_fish_len (void)
|
||||
{
|
||||
char *b64 = NULL;
|
||||
int i, message_len = 0;
|
||||
char message[1000];
|
||||
@@ -181,11 +165,12 @@ void __base64_fish_len(void) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check the calculation of final length from an encrypted string in ECB mode
|
||||
*/
|
||||
void __base64_ecb_len(void) {
|
||||
static void
|
||||
test_base64_ecb_len(void)
|
||||
{
|
||||
char *b64 = NULL;
|
||||
int key_len, message_len = 0;
|
||||
char key[57];
|
||||
@@ -209,7 +194,9 @@ void __base64_ecb_len(void) {
|
||||
/**
|
||||
* Check the calculation of final length from an encrypted string in CBC mode
|
||||
*/
|
||||
void __base64_cbc_len(void) {
|
||||
static void
|
||||
test_base64_cbc_len(void)
|
||||
{
|
||||
char *b64 = NULL;
|
||||
int key_len, message_len = 0;
|
||||
char key[57];
|
||||
@@ -233,7 +220,9 @@ void __base64_cbc_len(void) {
|
||||
/**
|
||||
* Check the calculation of length limit for a plaintext in each encryption mode
|
||||
*/
|
||||
void __max_text_command_len(void) {
|
||||
static void
|
||||
test_max_text_command_len(void)
|
||||
{
|
||||
int max_encoded_len, plaintext_len;
|
||||
enum fish_mode mode;
|
||||
|
||||
@@ -248,7 +237,9 @@ void __max_text_command_len(void) {
|
||||
/**
|
||||
* Check the calculation of length limit for a plaintext in each encryption mode
|
||||
*/
|
||||
void __foreach_utf8_data_chunks(void) {
|
||||
static void
|
||||
test_foreach_utf8_data_chunks(void)
|
||||
{
|
||||
GRand *rand = NULL;
|
||||
GString *chunks = NULL;
|
||||
int tests, max_chunks_len, chunks_len;
|
||||
@@ -277,21 +268,19 @@ void __foreach_utf8_data_chunks(void) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int
|
||||
main(int argc, char *argv[]) {
|
||||
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
|
||||
g_test_add_func("/fishlim/__ecb", __ecb);
|
||||
g_test_add_func("/fishlim/__cbc", __ecb);
|
||||
g_test_add_func("/fishlim/__base64_len", __base64_len);
|
||||
g_test_add_func("/fishlim/__base64_fish_len", __base64_fish_len);
|
||||
g_test_add_func("/fishlim/__base64_ecb_len", __base64_ecb_len);
|
||||
g_test_add_func("/fishlim/__base64_cbc_len", __base64_cbc_len);
|
||||
g_test_add_func("/fishlim/__max_text_command_len", __max_text_command_len);
|
||||
g_test_add_func("/fishlim/__foreach_utf8_data_chunks", __foreach_utf8_data_chunks);
|
||||
g_test_add_func("/fishlim/ecb", test_ecb);
|
||||
g_test_add_func("/fishlim/cbc", test_cbc);
|
||||
g_test_add_func("/fishlim/base64_len", test_base64_len);
|
||||
g_test_add_func("/fishlim/base64_fish_len", test_base64_fish_len);
|
||||
g_test_add_func("/fishlim/base64_ecb_len", test_base64_ecb_len);
|
||||
g_test_add_func("/fishlim/base64_cbc_len", test_base64_cbc_len);
|
||||
g_test_add_func("/fishlim/max_text_command_len", test_max_text_command_len);
|
||||
g_test_add_func("/fishlim/foreach_utf8_data_chunks", test_foreach_utf8_data_chunks);
|
||||
|
||||
return g_test_run();
|
||||
}
|
||||
|
||||
#endif //PLUGIN_HEXCHAT_FISHLIM_TEST_H
|
||||
Reference in New Issue
Block a user