diff options
| author | William Ahern <william@25thandclement.com> | 2016-10-29 16:58:34 -0700 |
|---|---|---|
| committer | William Ahern <william@25thandclement.com> | 2016-10-29 16:58:34 -0700 |
| commit | 38e4043d735f406c81173322f30e2a37d97101f5 (patch) | |
| tree | 1c81611454c2756a8786bd22f528b12bbf3a49be /src | |
| parent | 8aa467e04b93b62fef6a1b225944d82f00ff2168 (diff) | |
| download | luaossl-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')
| -rw-r--r-- | src/openssl.c | 37 |
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 | ||
| 3394 | static 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 | |||
| 3394 | enum pk_param { | 3414 | enum 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; |
| 5743 | unknown: | 5762 | unknown: |
| 5744 | return EVP_md_null(); | 5763 | return EVP_sha1(); |
| 5745 | } /* xc_signature() */ | 5764 | } /* xc_signature() */ |
| 5746 | 5765 | ||
| 5747 | static int xc_sign(lua_State *L) { | 5766 | static int xc_sign(lua_State *L) { |
