-#include <arpa/inet.h>
+/*
+ * Copyright (c) 2019-2020 Dmitry Belyavskiy <beldmit@gmail.com>
+ *
+ * Contents licensed under the terms of the OpenSSL license
+ * See https://www.openssl.org/source/license.html for details
+ */
+#ifdef _MSC_VER
+# pragma warning(push, 3)
+# include <openssl/applink.c>
+# pragma warning(pop)
+# include <Winsock2.h>
+# include <stdlib.h>
+#else
+# include <arpa/inet.h>
+#endif
#include <string.h>
#include <stdio.h>
#include <string.h>
#include "e_gost_err.h"
#include "gost_grasshopper_cipher.h"
-#define T(e) if (!(e)) {\
- ERR_print_errors_fp(stderr);\
- OpenSSLDie(__FILE__, __LINE__, #e);\
+#define T(e) \
+ if (!(e)) { \
+ ERR_print_errors_fp(stderr); \
+ OpenSSLDie(__FILE__, __LINE__, #e); \
}
static void hexdump(FILE *f, const char *title, const unsigned char *s, int l)
unsigned char tlsseq[8];
unsigned char out[32];
+#ifdef _MSC_VER
+ _putenv_s("OPENSSL_ENGINES", ENGINE_DIR);
+#else
setenv("OPENSSL_ENGINES", ENGINE_DIR, 0);
+#endif
OPENSSL_add_all_algorithms_conf();
ERR_load_crypto_strings();
ENGINE *eng;
if (ret <= 0) {
ERR_print_errors_fp(stderr);
- err = 1;
+ err = 1;
} else {
hexdump(stdout, "Magma key export", buf, 40);
if (memcmp(buf, magma_export, 40) != 0) {
fprintf(stdout, "ERROR! test failed\n");
- err = 2;
+ err = 2;
}
}
if (ret <= 0) {
ERR_print_errors_fp(stderr);
- err = 3;
+ err = 3;
} else {
hexdump(stdout, "Magma key import", buf, 32);
if (memcmp(buf, shared_key, 32) != 0) {
fprintf(stdout, "ERROR! test failed\n");
- err = 4;
+ err = 4;
}
}
kdf_seed, 8, 1);
if (ret <= 0) {
ERR_print_errors_fp(stderr);
- err = 5;
+ err = 5;
} else {
hexdump(stdout, "KDF TREE", kdf_result, 64);
if (memcmp(kdf_result, kdf_etalon, 64) != 0) {
fprintf(stdout, "ERROR! test failed\n");
- err = 6;
+ err = 6;
}
}
ret = gost_tlstree(NID_grasshopper_cbc, kroot, out, tlsseq);
if (ret <= 0) {
ERR_print_errors_fp(stderr);
- err = 7;
+ err = 7;
} else {
hexdump(stdout, "Gost TLSTREE - grasshopper", out, 32);
if (memcmp(out, tlstree_gh_etalon, 32) != 0) {
fprintf(stdout, "ERROR! test failed\n");
- err = 8;
+ err = 8;
}
}