(pkcs10_create): implement
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16970 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -743,6 +743,60 @@ ocsp_fetch(struct ocsp_fetch_options *opt, int argc, char **argv)
|
|||||||
int
|
int
|
||||||
pkcs10_create(struct pkcs10_create_options *opt, int argc, char **argv)
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user