* See https://www.openssl.org/source/license.html for details
*/
-#include "e_gost_err.h"
+#ifdef _MSC_VER
+# pragma warning(push, 3)
+# include <openssl/applink.c>
+# pragma warning(pop)
+#endif
#include "gost_lcl.h"
#include <openssl/evp.h>
#include <openssl/rand.h>
#include <openssl/ec.h>
#include <openssl/bn.h>
#include <openssl/store.h>
+#include <openssl/engine.h>
#include <string.h>
#include <stdlib.h>
-#define T(e) ({ if (!(e)) { \
- ERR_print_errors_fp(stderr); \
- OpenSSLDie(__FILE__, __LINE__, #e); \
- } \
- })
-#define TE(e) ({ if (!(e)) { \
- ERR_print_errors_fp(stderr); \
- fprintf(stderr, "Error at %s:%d %s\n", __FILE__, __LINE__, #e); \
- return -1; \
- } \
- })
+#define T(e) \
+ if (!(e)) { \
+ ERR_print_errors_fp(stderr); \
+ OpenSSLDie(__FILE__, __LINE__, #e); \
+ }
+#define TE(e) \
+ if (!(e)) { \
+ ERR_print_errors_fp(stderr); \
+ fprintf(stderr, "Error at %s:%d %s\n", __FILE__, __LINE__, #e); \
+ return -1; \
+ }
#define cRED "\033[1;31m"
#define cDRED "\033[0;31m"
#define cCYAN "\033[1;36m"
#define cNORM "\033[m"
#define TEST_ASSERT(e) {if ((test = (e))) \
- printf(cRED " Test FAILED\n" cNORM); \
+ printf(cRED " Test FAILED" cNORM "\n"); \
else \
- printf(cGREEN " Test passed\n" cNORM);}
+ printf(cGREEN " Test passed" cNORM "\n");}
struct test_sign {
const char *name;
- unsigned int nid;
+ int nid;
size_t bits;
const char *paramset;
};
static void print_test_tf(int err, int val, const char *t, const char *f)
{
if (err == 1)
- printf(cGREEN "%s\n" cNORM, t);
+ printf(cGREEN "%s" cNORM "\n", t);
else
- printf(cRED "%s [%d]\n" cNORM, f, val);
+ printf(cRED "%s [%d]" cNORM "\n", f, val);
}
static void print_test_result(int err)
{
if (err == 1)
- printf(cGREEN "success\n" cNORM);
+ printf(cGREEN "success" cNORM "\n");
else if (err == 0)
- printf(cRED "failure\n" cNORM);
+ printf(cRED "failure" cNORM "\n");
else
ERR_print_errors_fp(stderr);
}
int ret = 0, err;
size_t len = t->bits / 8;
- printf(cBLUE "Test %s:\n" cNORM, t->name);
+ printf(cBLUE "Test %s:" cNORM "\n", t->name);
/* Signature type from size. */
int type = 0;
case 512:
type = NID_id_GostR3410_2012_512;
algname = "gost2012_512";
+ break;
+ default:
+ return -1;
}
/* Keygen. */
fflush(stdout);
pkey = NULL;
OSSL_STORE_CTX *cts;
- T(cts = OSSL_STORE_attach(bp, "file", NULL, NULL, NULL, NULL, NULL, NULL));
+ T(cts = OSSL_STORE_attach(bp, "file", NULL, NULL, NULL, NULL, NULL, NULL, NULL));
for (;;) {
OSSL_STORE_INFO *info = OSSL_STORE_load(cts);
if (!info) {
ret |= err;
EVP_PKEY_free(pkey);
} else
- printf(cCYAN "skipped\n" cNORM);
+ printf(cCYAN "skipped" cNORM "\n");
BIO_free(bp);
/* Convert to DER and back, using memory API. */
const EC_GROUP *group = EC_KEY_get0_group(ec);
int curve_name = EC_GROUP_get_curve_name(group);
err = curve_name == t->nid;
- printf("\tcurve_name (%u):\t", t->nid);
+ printf("\tcurve_name (%d):\t", t->nid);
print_test_tf(err, curve_name, "match", "mismatch");
ret |= !err;
{
int ret = 0;
- setenv("OPENSSL_ENGINES", ENGINE_DIR, 0);
OPENSSL_add_all_algorithms_conf();
- ERR_load_crypto_strings();
- ENGINE *eng;
- T(eng = ENGINE_by_id("gost"));
- T(ENGINE_init(eng));
- T(ENGINE_set_default(eng, ENGINE_METHOD_ALL));
struct test_sign *sp;
for (sp = test_signs; sp->name; sp++)
ret |= test_sign(sp);
- ENGINE_finish(eng);
- ENGINE_free(eng);
-
if (ret)
- printf(cDRED "= Some tests FAILED!\n" cNORM);
+ printf(cDRED "= Some tests FAILED!" cNORM "\n");
else
- printf(cDGREEN "= All tests passed!\n" cNORM);
+ printf(cDGREEN "= All tests passed!" cNORM "\n");
return ret;
}