From 1e9fea9d3956534a92adcb6a61a7d161a6d722ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Mon, 3 Apr 2006 05:13:48 +0000 Subject: [PATCH] (pkcs10_create): implement git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16970 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/hx509/hxtool.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/lib/hx509/hxtool.c b/lib/hx509/hxtool.c index 9ed0a281d..4c79c01c9 100644 --- a/lib/hx509/hxtool.c +++ b/lib/hx509/hxtool.c @@ -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; }