Author: lha Date: 2007-06-26 12:45:44 +0000 (Tue, 26 Jun 2007) New Revision: 762
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=lorikeet&rev=762 Log: Merged with Heimdal svn revision 21340 Modified: trunk/heimdal/lib/hx509/ChangeLog trunk/heimdal/lib/hx509/hxtool.c trunk/heimdal/lib/hx509/req.c trunk/heimdal/lib/hx509/version-script.map Changeset: Modified: trunk/heimdal/lib/hx509/ChangeLog =================================================================== --- trunk/heimdal/lib/hx509/ChangeLog 2007-06-26 12:12:22 UTC (rev 761) +++ trunk/heimdal/lib/hx509/ChangeLog 2007-06-26 12:45:44 UTC (rev 762) @@ -1,5 +1,11 @@ 2007-06-26 Love H�rnquist �strand <[EMAIL PROTECTED]> + * version-script.map: Add initialize_hx_error_table_r. + + * req.c: Move _hx509_request_print here. + + * hxtool.c: use _hx509_request_print + * version-script.map: Export more crap^W semiprivate functions. * hxtool.c: don't _hx509_abort Modified: trunk/heimdal/lib/hx509/hxtool.c =================================================================== --- trunk/heimdal/lib/hx509/hxtool.c 2007-06-26 12:12:22 UTC (rev 761) +++ trunk/heimdal/lib/hx509/hxtool.c 2007-06-26 12:45:44 UTC (rev 762) @@ -32,7 +32,7 @@ */ #include "hx_locl.h" -RCSID("$Id: hxtool.c 21330 2007-06-26 11:09:55Z lha $"); +RCSID("$Id: hxtool.c 21338 2007-06-26 12:40:56Z lha $"); #include <hxtool-commands.h> #include <sl.h> @@ -1204,58 +1204,21 @@ int pkcs10_print(struct pkcs10_print_options *opt, int argc, char **argv) { - size_t size, length; + size_t length; int ret, i; void *p; printf("pkcs10 print\n"); for (i = 0; i < argc; i++) { - CertificationRequest req; - CertificationRequestInfo *rinfo; - ret = _hx509_map_file(argv[i], &p, &length, NULL); if (ret) err(1, "map_file: %s: %d", argv[i], ret); - ret = decode_CertificationRequest(p, length, &req, &size); + ret = _hx509_request_print(context, stdout, p, length); _hx509_unmap_file(p, length); if (ret) - errx(1, "failed to parse file %s: %d", argv[i], ret); - - rinfo = &req.certificationRequestInfo; - - { - char *subject; - hx509_name n; - - ret = _hx509_name_from_Name(&rinfo->subject, &n); - if (ret) - abort(); - - ret = hx509_name_to_string(n, &subject); - hx509_name_free(&n); - if (ret) - abort(); - - printf("name: %s\n", subject); - free(subject); - } - - if (rinfo->attributes && rinfo->attributes->len) { - int j; - - printf("Attributes:\n"); - - for (j = 0; j < rinfo->attributes->len; j++) { - char *str; - hx509_oid_sprint(&rinfo->attributes->val[j].type, &str); - printf("\toid: %s\n", str); - free(str); - } - } - - free_CertificationRequest(&req); + hx509_err(context, 1, ret, "Failed to print file %s", argv[ i]); } return 0; Modified: trunk/heimdal/lib/hx509/req.c =================================================================== --- trunk/heimdal/lib/hx509/req.c 2007-06-26 12:12:22 UTC (rev 761) +++ trunk/heimdal/lib/hx509/req.c 2007-06-26 12:45:44 UTC (rev 762) @@ -33,7 +33,7 @@ #include "hx_locl.h" #include <pkcs10_asn1.h> -RCSID("$Id: req.c 20934 2007-06-06 15:30:02Z lha $"); +RCSID("$Id: req.c 21335 2007-06-26 12:18:33Z lha $"); struct hx509_request_data { hx509_name name; @@ -215,3 +215,58 @@ return ret; } + +int +_hx509_request_print(hx509_context context, FILE *f, const void *data, size_t len) +{ + CertificationRequest req; + CertificationRequestInfo *rinfo; + size_t size; + int ret; + + ret = decode_CertificationRequest(data, len, &req, &size); + if (ret) { + hx509_set_error_string(context, 0, ret, "Failed to decode request"); + return ret; + } + + rinfo = &req.certificationRequestInfo; + + { + char *subject; + hx509_name n; + + ret = _hx509_name_from_Name(&rinfo->subject, &n); + if (ret) { + hx509_set_error_string(context, 0, ret, "Failed to extract name"); + free_CertificationRequest(&req); + return ret; + } + ret = hx509_name_to_string(n, &subject); + hx509_name_free(&n); + if (ret) { + hx509_set_error_string(context, 0, ret, "Failed to print name"); + free_CertificationRequest(&req); + return ret; + } + + fprintf(f, "name: %s\n", subject); + free(subject); + } + + if (rinfo->attributes && rinfo->attributes->len) { + int j; + + fprintf(f, "Attributes:\n"); + + for (j = 0; j < rinfo->attributes->len; j++) { + char *str; + hx509_oid_sprint(&rinfo->attributes->val[j].type, &str); + fprintf(f, "\toid: %s\n", str); + free(str); + } + } + free_CertificationRequest(&req); + return 0; +} + Modified: trunk/heimdal/lib/hx509/version-script.map =================================================================== --- trunk/heimdal/lib/hx509/version-script.map 2007-06-26 12:12:22 UTC (rev 761) +++ trunk/heimdal/lib/hx509/version-script.map 2007-06-26 12:45:44 UTC (rev 762) @@ -2,6 +2,7 @@ HEIMDAL_X509_1.0 { global: + initialize_hx_error_table_r; hx509_bitstring_print; hx509_ca_sign; hx509_ca_sign_self; @@ -202,6 +203,7 @@ _hx509_request_to_pkcs10; _hx509_request_to_pkcs10; _hx509_request_free; + _hx509_request_print; _hx509_private_key_ref; _hx509_private_key_free; _hx509_private_key2SPKI; @@ -213,8 +215,6 @@ _hx509_cert_assign_key; _hx509_cert_private_key; _hx509_name_from_Name; - decode_CertificationRequest; - free_CertificationRequest; local: *; };