Mercurial > dovecot > core-2.2
changeset 20498:43c279a779f5
lib-dcrypt: tell in error_r that RSA key has to be converted to pkey
author | Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi> |
---|---|
date | Mon, 04 Jul 2016 11:57:43 +0300 |
parents | 06399223cc5e |
children | f5fa391e098a |
files | src/lib-dcrypt/dcrypt-openssl.c src/lib-dcrypt/test-crypto.c |
diffstat | 2 files changed, 38 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-dcrypt/dcrypt-openssl.c Mon Jul 04 18:25:23 2016 +0300 +++ b/src/lib-dcrypt/dcrypt-openssl.c Mon Jul 04 11:57:43 2016 +0300 @@ -1762,6 +1762,13 @@ format = DCRYPT_FORMAT_PEM; version = DCRYPT_KEY_VERSION_NA; key_data += 11; + if (strncmp(key_data, "RSA ", 4) == 0) { + if (error_r != NULL) + *error_r = "RSA private key format not " + "supported, convert it to PKEY format " + "with openssl pkey"; + return FALSE; + } if (strncmp(key_data, "ENCRYPTED ", 10) == 0) { encryption_type = DCRYPT_KEY_ENCRYPTION_TYPE_PASSWORD; key_data += 10;
--- a/src/lib-dcrypt/test-crypto.c Mon Jul 04 18:25:23 2016 +0300 +++ b/src/lib-dcrypt/test-crypto.c Mon Jul 04 11:57:43 2016 +0300 @@ -533,6 +533,36 @@ test_end(); } +static +void test_get_info_rsa_private_key(void) +{ + test_begin("test_get_info_rsa_private_key"); + + const char *key = "-----BEGIN RSA PRIVATE KEY-----\n" +"MIICXQIBAAKBgQC89q02I9NezBLQ+otn5XLYE7S+GsKUz59ogr45DA/6MI9jey0W\n" +"56SeWQ1FJD1vDhAx/TRBMfOmhcIPsBjc5sakYOawPdoiqLjOIlO+iHwnbbmLuMsq\n" +"ue09vgvZsKjuTr2F5DOFQY43Bq/Nd+4bjHJItdOM58+xwA2I/8vDbtI8jwIDAQAB\n" +"AoGBAJCUrTMfdjqyKjN7f+6ewKBTc5eBIiB6O53ba3B6qj7jqNKVDIrZ8jq2KFEe\n" +"yWKPgBS/h5vafHKNJU6bjmp2qMUJPB7PTA876eDo0cq9PplUqihiTlXJFwNQYtF+\n" +"o27To5t25+5qdSAj657+lQfFT9Xn9fzYHDmotURxH10FgFkBAkEA+7Ny6lBTeb3W\n" +"LnP0UPfPzQLilEr8u81PLWe69RGtsEaMQHGpHOl4e+bvvVYbG1cgxwxI1m01uR9r\n" +"qpD3qLUdrQJBAMAw6UvN8R+opYTZzwqK7Nliil2QZMPmXM04SV1iFq26NM60w2Fm\n" +"HqOOh0EbpSWsFtIgxJFWoZOtrguxqCJuUqsCQF3EoXf3StHczhDqM8eCOpD2lTCH\n" +"qxXPy8JvlW+9EUbNUWykq0rRE4idJQ0VKe4KjHR6+Buh/dSkhvi5Hvpj1tUCQHRv\n" +"LWeXZLVhXqWVrzEb6VHpuRnmGKX2MdLCfu/sNQEbBlMUgCnJzFYaSybOsMaZ81lq\n" +"MKw8Z7coSYEcKFhzrfECQQD7l+4Bhy8Zuz6VoGGIZwIhxkJrImBFmaUwx8N6jg20\n" +"sgDRYwCoGkGd7B8uIHZLJoWzSSutHiu5i5PYUy5VT1yT\n" +"-----END RSA PRIVATE KEY-----\n"; + + const char *error = NULL; + + test_assert(!dcrypt_key_string_get_info(key, NULL, NULL, + NULL, NULL, NULL, NULL, &error)); + test_assert(error != NULL && strstr(error, "pkey") != NULL); + + test_end(); +} + int main(void) { random_init(); dcrypt_initialize("openssl", NULL, NULL); @@ -548,6 +578,7 @@ test_load_v2_public_key, test_get_info_v2_key, test_gen_and_get_info_rsa_pem, + test_get_info_rsa_private_key, NULL };