hx509: Make various functions used by Samba public.
* hx509_cert_public_encrypt * hx509_parse_private_key * hx509_private_key_assign_rsa * hx509_private_key_free * hx509_private_key_private_decrypt * hx509_private_key_init * hx509_private_key2SPKI * hx509_request_get_name * hx509_request_get_SubjectPublicKeyInfo * hx509_request_free * hx509_request_init * hx509_request_set_name * hx509_request_set_SubjectPublicKeyInfo Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
This commit is contained in:

committed by
Love Hornquist Astrand

parent
6ee82593ec
commit
36ade8b509
@@ -310,7 +310,7 @@ int
|
||||
_hx509_cert_assign_key(hx509_cert cert, hx509_private_key private_key)
|
||||
{
|
||||
if (cert->private_key)
|
||||
_hx509_private_key_free(&cert->private_key);
|
||||
hx509_private_key_free(&cert->private_key);
|
||||
cert->private_key = _hx509_private_key_ref(private_key);
|
||||
return 0;
|
||||
}
|
||||
@@ -341,7 +341,7 @@ hx509_cert_free(hx509_cert cert)
|
||||
(cert->release)(cert, cert->ctx);
|
||||
|
||||
if (cert->private_key)
|
||||
_hx509_private_key_free(&cert->private_key);
|
||||
hx509_private_key_free(&cert->private_key);
|
||||
|
||||
free_Certificate(cert->data);
|
||||
free(cert->data);
|
||||
@@ -1607,7 +1607,7 @@ _hx509_cert_private_decrypt(hx509_context context,
|
||||
return HX509_PRIVATE_KEY_MISSING;
|
||||
}
|
||||
|
||||
return _hx509_private_key_private_decrypt(context,
|
||||
return hx509_private_key_private_decrypt(context,
|
||||
ciphertext,
|
||||
encryption_oid,
|
||||
p->private_key,
|
||||
@@ -1615,7 +1615,7 @@ _hx509_cert_private_decrypt(hx509_context context,
|
||||
}
|
||||
|
||||
int
|
||||
_hx509_cert_public_encrypt(hx509_context context,
|
||||
hx509_cert_public_encrypt(hx509_context context,
|
||||
const heim_octet_string *cleartext,
|
||||
const hx509_cert p,
|
||||
heim_oid *encryption_oid,
|
||||
|
@@ -665,7 +665,7 @@ hx509_cms_envelope_1(hx509_context context,
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = _hx509_cert_public_encrypt(context,
|
||||
ret = hx509_cert_public_encrypt(context,
|
||||
&key, cert,
|
||||
&ri->keyEncryptionAlgorithm.algorithm,
|
||||
&ri->encryptedKey);
|
||||
|
@@ -105,7 +105,7 @@ free_private_key(struct private_key *key)
|
||||
{
|
||||
free_AlgorithmIdentifier(&key->alg);
|
||||
if (key->private_key)
|
||||
_hx509_private_key_free(&key->private_key);
|
||||
hx509_private_key_free(&key->private_key);
|
||||
der_free_octet_string(&key->localKeyId);
|
||||
free(key);
|
||||
}
|
||||
@@ -143,7 +143,7 @@ _hx509_collector_private_key_add(hx509_context context,
|
||||
if (private_key) {
|
||||
key->private_key = private_key;
|
||||
} else {
|
||||
ret = _hx509_parse_private_key(context, alg,
|
||||
ret = hx509_parse_private_key(context, alg,
|
||||
key_data->data, key_data->length,
|
||||
HX509_KEY_FORMAT_DER,
|
||||
&key->private_key);
|
||||
|
@@ -1715,7 +1715,7 @@ _hx509_public_encrypt(hx509_context context,
|
||||
}
|
||||
|
||||
int
|
||||
_hx509_private_key_private_decrypt(hx509_context context,
|
||||
hx509_private_key_private_decrypt(hx509_context context,
|
||||
const heim_octet_string *ciphertext,
|
||||
const heim_oid *encryption_oid,
|
||||
hx509_private_key p,
|
||||
@@ -1758,7 +1758,7 @@ _hx509_private_key_private_decrypt(hx509_context context,
|
||||
|
||||
|
||||
int
|
||||
_hx509_parse_private_key(hx509_context context,
|
||||
hx509_parse_private_key(hx509_context context,
|
||||
const AlgorithmIdentifier *keyai,
|
||||
const void *data,
|
||||
size_t len,
|
||||
@@ -1776,7 +1776,7 @@ _hx509_parse_private_key(hx509_context context,
|
||||
return HX509_SIG_ALG_NO_SUPPORTED;
|
||||
}
|
||||
|
||||
ret = _hx509_private_key_init(private_key, ops, NULL);
|
||||
ret = hx509_private_key_init(private_key, ops, NULL);
|
||||
if (ret) {
|
||||
hx509_set_error_string(context, 0, ret, "out of memory");
|
||||
return ret;
|
||||
@@ -1784,7 +1784,7 @@ _hx509_parse_private_key(hx509_context context,
|
||||
|
||||
ret = (*ops->import)(context, keyai, data, len, format, *private_key);
|
||||
if (ret)
|
||||
_hx509_private_key_free(private_key);
|
||||
hx509_private_key_free(private_key);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1794,7 +1794,7 @@ _hx509_parse_private_key(hx509_context context,
|
||||
*/
|
||||
|
||||
int
|
||||
_hx509_private_key2SPKI(hx509_context context,
|
||||
hx509_private_key2SPKI(hx509_context context,
|
||||
hx509_private_key private_key,
|
||||
SubjectPublicKeyInfo *spki)
|
||||
{
|
||||
@@ -1871,7 +1871,7 @@ _hx509_generate_private_key(hx509_context context,
|
||||
return HX509_SIG_ALG_NO_SUPPORTED;
|
||||
}
|
||||
|
||||
ret = _hx509_private_key_init(private_key, ops, NULL);
|
||||
ret = hx509_private_key_init(private_key, ops, NULL);
|
||||
if (ret) {
|
||||
hx509_set_error_string(context, 0, ret, "out of memory");
|
||||
return ret;
|
||||
@@ -1879,7 +1879,7 @@ _hx509_generate_private_key(hx509_context context,
|
||||
|
||||
ret = (*ops->generate_private_key)(context, ctx, *private_key);
|
||||
if (ret)
|
||||
_hx509_private_key_free(private_key);
|
||||
hx509_private_key_free(private_key);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1976,7 +1976,7 @@ const AlgorithmIdentifier * _hx509_crypto_default_secret_alg =
|
||||
*/
|
||||
|
||||
int
|
||||
_hx509_private_key_init(hx509_private_key *key,
|
||||
hx509_private_key_init(hx509_private_key *key,
|
||||
hx509_private_key_ops *ops,
|
||||
void *keydata)
|
||||
{
|
||||
@@ -2007,7 +2007,7 @@ _hx509_private_pem_name(hx509_private_key key)
|
||||
}
|
||||
|
||||
int
|
||||
_hx509_private_key_free(hx509_private_key *key)
|
||||
hx509_private_key_free(hx509_private_key *key)
|
||||
{
|
||||
if (key == NULL || *key == NULL)
|
||||
return 0;
|
||||
@@ -2033,7 +2033,7 @@ _hx509_private_key_free(hx509_private_key *key)
|
||||
}
|
||||
|
||||
void
|
||||
_hx509_private_key_assign_rsa(hx509_private_key key, void *ptr)
|
||||
hx509_private_key_assign_rsa(hx509_private_key key, void *ptr)
|
||||
{
|
||||
if (key->private_key.rsa)
|
||||
RSA_free(key->private_key.rsa);
|
||||
|
@@ -1294,7 +1294,7 @@ request_create(struct request_create_options *opt, int argc, char **argv)
|
||||
opt->key_bits_integer,
|
||||
&signer);
|
||||
|
||||
_hx509_request_init(context, &req);
|
||||
hx509_request_init(context, &req);
|
||||
|
||||
if (opt->subject_string) {
|
||||
hx509_name name = NULL;
|
||||
@@ -1302,7 +1302,7 @@ request_create(struct request_create_options *opt, int argc, char **argv)
|
||||
ret = hx509_parse_name(context, opt->subject_string, &name);
|
||||
if (ret)
|
||||
errx(1, "hx509_parse_name: %d\n", ret);
|
||||
_hx509_request_set_name(context, req, name);
|
||||
hx509_request_set_name(context, req, name);
|
||||
|
||||
if (opt->verbose_flag) {
|
||||
char *s;
|
||||
@@ -1327,16 +1327,16 @@ request_create(struct request_create_options *opt, int argc, char **argv)
|
||||
}
|
||||
|
||||
|
||||
ret = _hx509_private_key2SPKI(context, signer, &key);
|
||||
ret = hx509_private_key2SPKI(context, signer, &key);
|
||||
if (ret)
|
||||
errx(1, "_hx509_private_key2SPKI: %d\n", ret);
|
||||
errx(1, "hx509_private_key2SPKI: %d\n", ret);
|
||||
|
||||
ret = _hx509_request_set_SubjectPublicKeyInfo(context,
|
||||
ret = hx509_request_set_SubjectPublicKeyInfo(context,
|
||||
req,
|
||||
&key);
|
||||
free_SubjectPublicKeyInfo(&key);
|
||||
if (ret)
|
||||
hx509_err(context, 1, ret, "_hx509_request_set_SubjectPublicKeyInfo");
|
||||
hx509_err(context, 1, ret, "hx509_request_set_SubjectPublicKeyInfo");
|
||||
|
||||
ret = _hx509_request_to_pkcs10(context,
|
||||
req,
|
||||
@@ -1345,8 +1345,8 @@ request_create(struct request_create_options *opt, int argc, char **argv)
|
||||
if (ret)
|
||||
hx509_err(context, 1, ret, "_hx509_request_to_pkcs10");
|
||||
|
||||
_hx509_private_key_free(&signer);
|
||||
_hx509_request_free(&req);
|
||||
hx509_private_key_free(&signer);
|
||||
hx509_request_free(&req);
|
||||
|
||||
if (ret == 0)
|
||||
rk_dumpdata(outfile, request.data, request.length);
|
||||
@@ -1370,7 +1370,7 @@ request_print(struct request_print_options *opt, int argc, char **argv)
|
||||
hx509_err(context, 1, ret, "parse_request: %s", argv[i]);
|
||||
|
||||
ret = _hx509_request_print(context, req, stdout);
|
||||
_hx509_request_free(&req);
|
||||
hx509_request_free(&req);
|
||||
if (ret)
|
||||
hx509_err(context, 1, ret, "Failed to print file %s", argv[i]);
|
||||
}
|
||||
@@ -1814,9 +1814,9 @@ hxtool_ca(struct certificate_sign_options *opt, int argc, char **argv)
|
||||
if (ret)
|
||||
err(1, "read_private_key");
|
||||
|
||||
ret = _hx509_private_key2SPKI(context, private_key, &spki);
|
||||
ret = hx509_private_key2SPKI(context, private_key, &spki);
|
||||
if (ret)
|
||||
errx(1, "_hx509_private_key2SPKI: %d\n", ret);
|
||||
errx(1, "hx509_private_key2SPKI: %d\n", ret);
|
||||
|
||||
if (opt->self_signed_flag)
|
||||
cert_key = private_key;
|
||||
@@ -1828,13 +1828,13 @@ hxtool_ca(struct certificate_sign_options *opt, int argc, char **argv)
|
||||
ret = _hx509_request_parse(context, opt->req_string, &req);
|
||||
if (ret)
|
||||
hx509_err(context, 1, ret, "parse_request: %s", opt->req_string);
|
||||
ret = _hx509_request_get_name(context, req, &subject);
|
||||
ret = hx509_request_get_name(context, req, &subject);
|
||||
if (ret)
|
||||
hx509_err(context, 1, ret, "get name");
|
||||
ret = _hx509_request_get_SubjectPublicKeyInfo(context, req, &spki);
|
||||
ret = hx509_request_get_SubjectPublicKeyInfo(context, req, &spki);
|
||||
if (ret)
|
||||
hx509_err(context, 1, ret, "get spki");
|
||||
_hx509_request_free(&req);
|
||||
hx509_request_free(&req);
|
||||
}
|
||||
|
||||
if (opt->generate_key_string) {
|
||||
@@ -1859,9 +1859,9 @@ hxtool_ca(struct certificate_sign_options *opt, int argc, char **argv)
|
||||
if (ret)
|
||||
hx509_err(context, 1, ret, "generate private key");
|
||||
|
||||
ret = _hx509_private_key2SPKI(context, cert_key, &spki);
|
||||
ret = hx509_private_key2SPKI(context, cert_key, &spki);
|
||||
if (ret)
|
||||
errx(1, "_hx509_private_key2SPKI: %d\n", ret);
|
||||
errx(1, "hx509_private_key2SPKI: %d\n", ret);
|
||||
|
||||
if (opt->self_signed_flag)
|
||||
private_key = cert_key;
|
||||
@@ -2015,8 +2015,8 @@ hxtool_ca(struct certificate_sign_options *opt, int argc, char **argv)
|
||||
free_SubjectPublicKeyInfo(&spki);
|
||||
|
||||
if (private_key != cert_key)
|
||||
_hx509_private_key_free(&private_key);
|
||||
_hx509_private_key_free(&cert_key);
|
||||
hx509_private_key_free(&private_key);
|
||||
hx509_private_key_free(&cert_key);
|
||||
|
||||
hx509_ca_tbs_free(&tbs);
|
||||
|
||||
|
@@ -781,6 +781,6 @@ _hx509_certs_keys_free(hx509_context context,
|
||||
{
|
||||
int i;
|
||||
for (i = 0; keys[i]; i++)
|
||||
_hx509_private_key_free(&keys[i]);
|
||||
hx509_private_key_free(&keys[i]);
|
||||
free(keys);
|
||||
}
|
||||
|
@@ -259,7 +259,7 @@ set_private_key(hx509_context context,
|
||||
RSA *rsa;
|
||||
int ret;
|
||||
|
||||
ret = _hx509_private_key_init(&key, NULL, NULL);
|
||||
ret = hx509_private_key_init(&key, NULL, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -302,7 +302,7 @@ set_private_key(hx509_context context,
|
||||
if (ret != 1)
|
||||
_hx509_abort("RSA_set_app_data");
|
||||
|
||||
_hx509_private_key_assign_rsa(key, rsa);
|
||||
hx509_private_key_assign_rsa(key, rsa);
|
||||
_hx509_cert_assign_key(cert, key);
|
||||
|
||||
return 0;
|
||||
|
@@ -78,7 +78,7 @@ mem_free(hx509_certs certs, void *data)
|
||||
hx509_cert_free(mem->certs.val[i]);
|
||||
free(mem->certs.val);
|
||||
for (i = 0; mem->keys && mem->keys[i]; i++)
|
||||
_hx509_private_key_free(&mem->keys[i]);
|
||||
hx509_private_key_free(&mem->keys[i]);
|
||||
free(mem->keys);
|
||||
free(mem->name);
|
||||
free(mem);
|
||||
@@ -167,7 +167,7 @@ mem_getkeys(hx509_context context,
|
||||
(*keys)[i] = _hx509_private_key_ref(mem->keys[i]);
|
||||
if ((*keys)[i] == NULL) {
|
||||
while (--i >= 0)
|
||||
_hx509_private_key_free(&(*keys)[i]);
|
||||
hx509_private_key_free(&(*keys)[i]);
|
||||
hx509_set_error_string(context, 0, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
|
@@ -613,7 +613,7 @@ collect_private_key(hx509_context context,
|
||||
localKeyId.data = query[0].pValue;
|
||||
localKeyId.length = query[0].ulValueLen;
|
||||
|
||||
ret = _hx509_private_key_init(&key, NULL, NULL);
|
||||
ret = hx509_private_key_init(&key, NULL, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -648,7 +648,7 @@ collect_private_key(hx509_context context,
|
||||
if (ret != 1)
|
||||
_hx509_abort("RSA_set_app_data");
|
||||
|
||||
_hx509_private_key_assign_rsa(key, rsa);
|
||||
hx509_private_key_assign_rsa(key, rsa);
|
||||
|
||||
ret = _hx509_collector_private_key_add(context,
|
||||
collector,
|
||||
@@ -658,7 +658,7 @@ collect_private_key(hx509_context context,
|
||||
&localKeyId);
|
||||
|
||||
if (ret) {
|
||||
_hx509_private_key_free(&key);
|
||||
hx509_private_key_free(&key);
|
||||
return ret;
|
||||
}
|
||||
return 0;
|
||||
|
@@ -46,7 +46,7 @@ struct hx509_request_data {
|
||||
*/
|
||||
|
||||
int
|
||||
_hx509_request_init(hx509_context context, hx509_request *req)
|
||||
hx509_request_init(hx509_context context, hx509_request *req)
|
||||
{
|
||||
*req = calloc(1, sizeof(**req));
|
||||
if (*req == NULL)
|
||||
@@ -56,7 +56,7 @@ _hx509_request_init(hx509_context context, hx509_request *req)
|
||||
}
|
||||
|
||||
void
|
||||
_hx509_request_free(hx509_request *req)
|
||||
hx509_request_free(hx509_request *req)
|
||||
{
|
||||
if ((*req)->name)
|
||||
hx509_name_free(&(*req)->name);
|
||||
@@ -69,7 +69,7 @@ _hx509_request_free(hx509_request *req)
|
||||
}
|
||||
|
||||
int
|
||||
_hx509_request_set_name(hx509_context context,
|
||||
hx509_request_set_name(hx509_context context,
|
||||
hx509_request req,
|
||||
hx509_name name)
|
||||
{
|
||||
@@ -84,7 +84,7 @@ _hx509_request_set_name(hx509_context context,
|
||||
}
|
||||
|
||||
int
|
||||
_hx509_request_get_name(hx509_context context,
|
||||
hx509_request_get_name(hx509_context context,
|
||||
hx509_request req,
|
||||
hx509_name *name)
|
||||
{
|
||||
@@ -96,7 +96,7 @@ _hx509_request_get_name(hx509_context context,
|
||||
}
|
||||
|
||||
int
|
||||
_hx509_request_set_SubjectPublicKeyInfo(hx509_context context,
|
||||
hx509_request_set_SubjectPublicKeyInfo(hx509_context context,
|
||||
hx509_request req,
|
||||
const SubjectPublicKeyInfo *key)
|
||||
{
|
||||
@@ -105,7 +105,7 @@ _hx509_request_set_SubjectPublicKeyInfo(hx509_context context,
|
||||
}
|
||||
|
||||
int
|
||||
_hx509_request_get_SubjectPublicKeyInfo(hx509_context context,
|
||||
hx509_request_get_SubjectPublicKeyInfo(hx509_context context,
|
||||
hx509_request req,
|
||||
SubjectPublicKeyInfo *key)
|
||||
{
|
||||
@@ -271,7 +271,7 @@ _hx509_request_parse(hx509_context context,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = _hx509_request_init(context, req);
|
||||
ret = hx509_request_init(context, req);
|
||||
if (ret) {
|
||||
free_CertificationRequest(&r);
|
||||
return ret;
|
||||
@@ -279,25 +279,25 @@ _hx509_request_parse(hx509_context context,
|
||||
|
||||
rinfo = &r.certificationRequestInfo;
|
||||
|
||||
ret = _hx509_request_set_SubjectPublicKeyInfo(context, *req,
|
||||
ret = hx509_request_set_SubjectPublicKeyInfo(context, *req,
|
||||
&rinfo->subjectPKInfo);
|
||||
if (ret) {
|
||||
free_CertificationRequest(&r);
|
||||
_hx509_request_free(req);
|
||||
hx509_request_free(req);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = _hx509_name_from_Name(&rinfo->subject, &subject);
|
||||
if (ret) {
|
||||
free_CertificationRequest(&r);
|
||||
_hx509_request_free(req);
|
||||
hx509_request_free(req);
|
||||
return ret;
|
||||
}
|
||||
ret = _hx509_request_set_name(context, *req, subject);
|
||||
ret = hx509_request_set_name(context, *req, subject);
|
||||
hx509_name_free(&subject);
|
||||
free_CertificationRequest(&r);
|
||||
if (ret) {
|
||||
_hx509_request_free(req);
|
||||
hx509_request_free(req);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -4,7 +4,6 @@ HEIMDAL_X509_1.2 {
|
||||
global:
|
||||
_hx509_cert_assign_key;
|
||||
_hx509_cert_private_key;
|
||||
_hx509_cert_public_encrypt;
|
||||
_hx509_certs_keys_free;
|
||||
_hx509_certs_keys_get;
|
||||
_hx509_expr_eval;
|
||||
@@ -17,24 +16,12 @@ HEIMDAL_X509_1.2 {
|
||||
_hx509_generate_private_key_is_ca;
|
||||
_hx509_map_file_os;
|
||||
_hx509_name_from_Name;
|
||||
_hx509_parse_private_key;
|
||||
_hx509_private_key_assign_rsa;
|
||||
_hx509_private_key2SPKI;
|
||||
_hx509_private_key_free;
|
||||
_hx509_private_key_init;
|
||||
_hx509_private_key_private_decrypt;
|
||||
_hx509_private_key_ref;
|
||||
_hx509_request_add_dns_name;
|
||||
_hx509_request_add_email;
|
||||
_hx509_request_free;
|
||||
_hx509_request_get_SubjectPublicKeyInfo;
|
||||
_hx509_request_get_name;
|
||||
_hx509_request_init;
|
||||
_hx509_request_parse;
|
||||
_hx509_request_print;
|
||||
_hx509_request_set_SubjectPublicKeyInfo;
|
||||
_hx509_request_set_email;
|
||||
_hx509_request_set_name;
|
||||
_hx509_request_to_pkcs10;
|
||||
_hx509_request_to_pkcs10;
|
||||
_hx509_unmap_file_os;
|
||||
@@ -87,6 +74,7 @@ HEIMDAL_X509_1.2 {
|
||||
hx509_cert_init;
|
||||
hx509_cert_init_data;
|
||||
hx509_cert_keyusage_print;
|
||||
hx509_cert_public_encrypt;
|
||||
hx509_cert_ref;
|
||||
hx509_cert_set_friendly_name;
|
||||
hx509_certs_add;
|
||||
@@ -180,6 +168,7 @@ HEIMDAL_X509_1.2 {
|
||||
hx509_oid_print;
|
||||
hx509_oid_sprint;
|
||||
hx509_parse_name;
|
||||
hx509_parse_private_key;
|
||||
hx509_peer_info_add_cms_alg;
|
||||
hx509_peer_info_alloc;
|
||||
hx509_peer_info_free;
|
||||
@@ -192,6 +181,11 @@ HEIMDAL_X509_1.2 {
|
||||
hx509_pem_write;
|
||||
hx509_print_stdout;
|
||||
hx509_print_cert;
|
||||
hx509_private_key_assign_rsa;
|
||||
hx509_private_key_free;
|
||||
hx509_private_key_private_decrypt;
|
||||
hx509_private_key_init;
|
||||
hx509_private_key2SPKI;
|
||||
hx509_prompt_hidden;
|
||||
hx509_query_alloc;
|
||||
hx509_query_free;
|
||||
@@ -203,6 +197,12 @@ HEIMDAL_X509_1.2 {
|
||||
hx509_query_match_option;
|
||||
hx509_query_statistic_file;
|
||||
hx509_query_unparse_stats;
|
||||
hx509_request_get_name;
|
||||
hx509_request_get_SubjectPublicKeyInfo;
|
||||
hx509_request_free;
|
||||
hx509_request_init;
|
||||
hx509_request_set_name;
|
||||
hx509_request_set_SubjectPublicKeyInfo;
|
||||
hx509_revoke_add_crl;
|
||||
hx509_revoke_add_ocsp;
|
||||
hx509_revoke_free;
|
||||
|
Reference in New Issue
Block a user