summaryrefslogtreecommitdiff
path: root/src/openssl.c
diff options
context:
space:
mode:
authorWilliam Ahern <william@25thandclement.com>2016-10-29 16:58:34 -0700
committerWilliam Ahern <william@25thandclement.com>2016-10-29 16:58:34 -0700
commit38e4043d735f406c81173322f30e2a37d97101f5 (patch)
tree1c81611454c2756a8786bd22f528b12bbf3a49be /src/openssl.c
parent8aa467e04b93b62fef6a1b225944d82f00ff2168 (diff)
downloadluaossl-38e4043d735f406c81173322f30e2a37d97101f5.tar.gz
luaossl-38e4043d735f406c81173322f30e2a37d97101f5.tar.bz2
luaossl-38e4043d735f406c81173322f30e2a37d97101f5.zip
add and use pkey:getDefaultDigestName because the old digest type names used in examples/vrfy.sig are not accepted by OpenSSL 1.1
Diffstat (limited to 'src/openssl.c')
-rw-r--r--src/openssl.c37
1 files changed, 28 insertions, 9 deletions
diff --git a/src/openssl.c b/src/openssl.c
index 2fb7367..88c34d8 100644
--- a/src/openssl.c
+++ b/src/openssl.c
@@ -1336,7 +1336,7 @@ static int compat_EVP_PKEY_get_default_digest_nid(EVP_PKEY *key, int *nid) {
1336 *nid = EVP_MD_nid(EVP_ecdsa()); 1336 *nid = EVP_MD_nid(EVP_ecdsa());
1337 break; 1337 break;
1338 default: 1338 default:
1339 *nid = EVP_MD_nid(EVP_md_null()); 1339 *nid = EVP_MD_nid(EVP_sha1());
1340 break; 1340 break;
1341 } 1341 }
1342 1342
@@ -3391,6 +3391,26 @@ static int pk_toPEM(lua_State *L) {
3391} /* pk_toPEM() */ 3391} /* pk_toPEM() */
3392 3392
3393 3393
3394static int pk_getDefaultDigestName(lua_State *L) {
3395 EVP_PKEY *key = checksimple(L, 1, PKEY_CLASS);
3396 int nid;
3397 char txt[256];
3398 size_t len;
3399
3400 if (!(EVP_PKEY_get_default_digest_nid(key, &nid) > 0))
3401 return auxL_error(L, auxL_EOPENSSL, "pkey:getDefaultDigestName");
3402
3403 if (!(len = auxS_nid2txt(txt, sizeof txt, nid)))
3404 return auxL_error(L, auxL_EOPENSSL, "pkey:getDefaultDigestName");
3405 if (len > sizeof txt)
3406 return auxL_error(L, EOVERFLOW, "pkey:getDefaultDigestName");
3407
3408 lua_pushlstring(L, txt, len);
3409
3410 return 1;
3411} /* pk_getDefaultDigestName() */
3412
3413
3394enum pk_param { 3414enum pk_param {
3395#define PK_RSA_OPTLIST { "n", "e", "d", "p", "q", "dmp1", "dmq1", "iqmp", NULL } 3415#define PK_RSA_OPTLIST { "n", "e", "d", "p", "q", "dmp1", "dmq1", "iqmp", NULL }
3396#define PK_RSA_OPTOFFSET PK_RSA_N 3416#define PK_RSA_OPTOFFSET PK_RSA_N
@@ -3944,6 +3964,7 @@ static const auxL_Reg pk_methods[] = {
3944 { "setPrivateKey", &pk_setPrivateKey }, 3964 { "setPrivateKey", &pk_setPrivateKey },
3945 { "sign", &pk_sign }, 3965 { "sign", &pk_sign },
3946 { "verify", &pk_verify }, 3966 { "verify", &pk_verify },
3967 { "getDefaultDigestName", &pk_getDefaultDigestName },
3947 { "toPEM", &pk_toPEM }, 3968 { "toPEM", &pk_toPEM },
3948 { "getParameters", &pk_getParameters }, 3969 { "getParameters", &pk_getParameters },
3949 { "setParameters", &pk_setParameters }, 3970 { "setParameters", &pk_setParameters },
@@ -5730,18 +5751,16 @@ static const EVP_MD *xc_signature(lua_State *L, int index, EVP_PKEY *key) {
5730 if ((id = luaL_optstring(L, index, NULL))) { 5751 if ((id = luaL_optstring(L, index, NULL))) {
5731 if (!(md = EVP_get_digestbyname(id))) 5752 if (!(md = EVP_get_digestbyname(id)))
5732 goto unknown; 5753 goto unknown;
5733 5754 } else {
5734 return md; 5755 if (!(EVP_PKEY_get_default_digest_nid(key, &nid) > 0))
5756 goto unknown;
5757 if (!(md = EVP_get_digestbynid(nid)))
5758 goto unknown;
5735 } 5759 }
5736 5760
5737 if (!(EVP_PKEY_get_default_digest_nid(key, &nid) > 0))
5738 goto unknown;
5739 if (!(md = EVP_get_digestbynid(nid)))
5740 goto unknown;
5741
5742 return md; 5761 return md;
5743unknown: 5762unknown:
5744 return EVP_md_null(); 5763 return EVP_sha1();
5745} /* xc_signature() */ 5764} /* xc_signature() */
5746 5765
5747static int xc_sign(lua_State *L) { 5766static int xc_sign(lua_State *L) {