OpenSSL_add_all_algorithms();
/* md context */
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_MD_CTX ctx = { 0, };
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX *ctx;
+ ctx = EVP_MD_CTX_new();
+#endif
EVP_PKEY_CTX *pctx = NULL;
switch (type) {
break;
/* ECDSA */
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
case 4:
/* md */
md = EVP_get_digestbyname("sha1");
/* engine */
engine = ENGINE_get_default_ECDSA();
break;
-
+#endif
default:
result = -1;
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L // OpenSSL 1.1.1
+ EVP_MD_CTX_free(ctx);
+#endif
return result;
}
/* pkey */
pkey = _load_key(key_file, OPENSSL_FORMAT_PKCS12, password, NULL);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
if (!EVP_DigestSignInit(&ctx, &pctx, md, engine, pkey)) {
result = -1;
return result;
result = -1;
return result;
}
+#else // OpenSSL 1.1.1
+ if (!EVP_DigestSignInit(ctx, &pctx, md, engine, pkey)) {
+ result = -1;
+ EVP_MD_CTX_free(ctx);
+ return result;
+ }
+
+ if (!EVP_DigestSignUpdate(ctx, buffer, length)) {
+ result = -1;
+ EVP_MD_CTX_free(ctx);
+ return result;
+ }
+
+ if (!EVP_DigestSignFinal(ctx, sign, (size_t *)sign_len)) {
+ result = -1;
+ EVP_MD_CTX_free(ctx);
+ return result;
+ }
+ EVP_MD_CTX_free(ctx);
+#endif
return result;
}
OpenSSL_add_all_algorithms();
/* md context */
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_MD_CTX ctx = { 0, };
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX *ctx;
+ ctx = EVP_MD_CTX_new();
+#endif
EVP_PKEY_CTX *pctx = NULL;
switch (type) {
break;
/* ECDSA */
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
case 4:
/* md */
md = EVP_get_digestbyname("sha1");
/* engine */
engine = ENGINE_get_default_ECDSA();
break;
-
+#endif
default:
result = -1;
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L // OpenSSL 1.1.1
+ EVP_MD_CTX_free(ctx);
+#endif
return result;
}
/* pkey */
X509 *x509 = _load_certificate_from_mem(0, cert, cert_len, NULL);
- if (x509 == NULL)
+ if (x509 == NULL) {
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L // OpenSSL 1.1.1
+ EVP_MD_CTX_free(ctx);
+#endif
return 0;
+ }
pkey = X509_PUBKEY_get(X509_get_X509_PUBKEY(x509));
X509_free(x509);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_DigestVerifyInit(&ctx, &pctx, md, engine, pkey);
EVP_DigestVerifyUpdate(&ctx, buffer, length);
result = EVP_DigestVerifyFinal(&ctx, sign, sign_len);
-
+#else // OpenSSL 1.1.1
+ EVP_DigestVerifyInit(ctx, &pctx, md, engine, pkey);
+ EVP_DigestVerifyUpdate(ctx, buffer, length);
+ result = EVP_DigestVerifyFinal(ctx, sign, sign_len);
+ EVP_MD_CTX_free(ctx);
+#endif
DEBUG_MSG("EVP_DigestVerifyFinal returns %d", result);
-
return result;
}
if ((md = EVP_get_digestbyname(algorithm)) != NULL) {
_net_nfc_util_alloc_mem(temp, EVP_MAX_MD_SIZE);
if (temp != NULL) {
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_MD_CTX mdCtx;
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX *mdCtx;
+ mdCtx = EVP_MD_CTX_new();
+#endif
unsigned int resultLen = 0;
memset(temp, 0, EVP_MAX_MD_SIZE);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_DigestInit(&mdCtx, md);
if (EVP_DigestUpdate(&mdCtx, buffer, buf_len) != 0)
DEBUG_ERR_MSG("EVP_DigestUpdate failed");
EVP_DigestFinal(&mdCtx, temp, &resultLen);
-
+#else // OpenSSL 1.1.1
+ EVP_DigestInit(mdCtx, md);
+ if (EVP_DigestUpdate(mdCtx, buffer, buf_len) != 0)
+ DEBUG_ERR_MSG("EVP_DigestUpdate failed");
+ EVP_DigestFinal(mdCtx, temp, &resultLen);
+ EVP_MD_CTX_free(mdCtx);
+#endif
if (*out_len >= resultLen) {
*out_len = resultLen;
memcpy(result, temp, *out_len);