(pkcs10_create): implement

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16970 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2006-04-03 05:13:48 +00:00
parent d612a40b89
commit 1e9fea9d39

View File

@@ -743,6 +743,60 @@ ocsp_fetch(struct ocsp_fetch_options *opt, int argc, char **argv)
int
pkcs10_create(struct pkcs10_create_options *opt, int argc, char **argv)
{
heim_octet_string request;
hx509_request req;
hx509_name name = NULL;
int ret;
void *data;
size_t len;
hx509_private_key signer;
SubjectPublicKeyInfo key;
memset(&key, 0, sizeof(key));
ret = _hx509_map_file(argv[0], &data, &len, NULL);
if (ret)
err(1, "map_file: %s: %d", argv[0], ret);
ret = _hx509_parse_private_key(oid_id_pkcs1_rsaEncryption(),
data,
len,
&signer);
_hx509_unmap_file(data, len);
if (ret)
errx(1, "_hx509_parse_private_key: %d", ret);
_hx509_request_init(context, &req);
hx509_parse_name("CN=Love,DC=it,DC=su,DC=se", &name);
_hx509_request_set_name(context, req, name);
if (opt->verbose_flag) {
char *s;
hx509_name_to_string(name, &s);
printf("%s\n", s);
}
ret = _hx509_private_key2SPKI(context, signer, &key);
ret = _hx509_request_set_SubjectPublicKeyInfo(context,
req,
&key);
if (ret)
errx(1, "_hx509_request_set_SubjectPublicKeyInfo: %d", ret);
ret = _hx509_request_to_pkcs10(context,
req,
signer,
&request);
_hx509_request_free(&req);
if (ret == 0)
rk_dumpdata(argv[1], request.data, request.length);
free_octet_string(&request);
return 0;
}