}
}
-void _pubkey_info(FILE * outfile,
- gnutls_certificate_print_formats_t format,
- gnutls_pubkey_t pubkey)
+void print_pubkey_info(gnutls_pubkey_t pubkey,
+ FILE *outfile,
+ gnutls_certificate_print_formats_t format,
+ gnutls_x509_crt_fmt_t outcert_format,
+ unsigned int outtext)
{
gnutls_datum_t data;
int ret;
size_t size;
- fix_lbuffer(0);
+ if (outtext) {
+ ret = gnutls_pubkey_print(pubkey, format, &data);
+ if (ret < 0) {
+ fprintf(stderr, "pubkey_print error: %s\n",
+ gnutls_strerror(ret));
+ app_exit(1);
+ }
- ret = gnutls_pubkey_print(pubkey, format, &data);
- if (ret < 0) {
- fprintf(stderr, "pubkey_print error: %s\n",
- gnutls_strerror(ret));
- app_exit(1);
+ fprintf(outfile, "%s\n\n", data.data);
+ gnutls_free(data.data);
}
- fprintf(outfile, "%s\n", data.data);
- gnutls_free(data.data);
+ fix_lbuffer(0);
size = lbuffer_size;
ret =
- gnutls_pubkey_export(pubkey, GNUTLS_X509_FMT_PEM, lbuffer,
+ gnutls_pubkey_export(pubkey, outcert_format, lbuffer,
&size);
if (ret < 0) {
fprintf(stderr, "export error: %s\n", gnutls_strerror(ret));
app_exit(1);
}
- fprintf(outfile, "\n%s\n", lbuffer);
+ fwrite(lbuffer, 1, size, outfile);
}
static void
app_exit(1);
}
- if (ci->outcert_format == GNUTLS_X509_FMT_PEM)
+ if (ci->outtext)
print_dh_info(outfile, &p, &g, q_bits, ci->cprint);
if (!ci->cprint) { /* generate a PKCS#3 structure */
/* Only print private key parameters when an unencrypted
* format is used */
- if (cinfo->outcert_format == GNUTLS_X509_FMT_PEM)
+ if (cinfo->outtext)
privkey_info_int(outfile, cinfo, key);
switch_to_pkcs8_when_needed(cinfo, key, gnutls_x509_privkey_get_pk_algorithm(key));
#endif
}
- if (info->outcert_format == GNUTLS_X509_FMT_PEM)
+ if (info->outtext)
print_dh_info(outfile, &p, &g, q_bits, info->cprint);
if (!info->cprint) { /* generate a PKCS#3 structure */
static FILE *stdlog = NULL;
-static void print_crl_info(gnutls_x509_crl_t crl, FILE * out);
+static void print_crl_info(gnutls_x509_crl_t crl, FILE * out, common_info_st *cinfo);
void pkcs7_info(common_info_st *cinfo, unsigned display_data);
void pkcs7_sign(common_info_st *, unsigned embed);
void pkcs7_generate(common_info_st *);
void pkcs8_info(void);
void pkcs8_info_int(gnutls_datum_t *data, unsigned format,
unsigned ignore_err, FILE *out, const char *tab);
-void crq_info(void);
+void crq_info(common_info_st *cinfo);
void smime_to_pkcs7(void);
void pkcs12_info(common_info_st *);
void generate_pkcs12(common_info_st *);
void verify_pkcs7(common_info_st * cinfo, const char *purpose, unsigned display_data);
void pubkey_info(gnutls_x509_crt_t crt, common_info_st *);
void certificate_info(int, common_info_st *);
-void crl_info(void);
+void crl_info(common_info_st *cinfo);
void privkey_info(common_info_st *);
static void cmd_parser(int argc, char **argv);
void generate_self_signed(common_info_st *);
app_exit(1);
}
- print_crl_info(crl, stdlog);
+ print_crl_info(crl, stdlog, cinfo);
gnutls_privkey_deinit(ca_key);
gnutls_x509_crl_deinit(crl);
cinfo.pkcs8 = HAVE_OPT(PKCS8);
cinfo.incert_format = incert_format;
cinfo.outcert_format = outcert_format;
+ cinfo.outtext = ENABLED_OPT(TEXT) && outcert_format == GNUTLS_X509_FMT_PEM;
if (HAVE_OPT(LOAD_CERTIFICATE))
cinfo.cert = OPT_ARG(LOAD_CERTIFICATE);
else if (HAVE_OPT(GET_DH_PARAMS))
generate_prime(outfile, 0, &cinfo);
else if (HAVE_OPT(CRL_INFO))
- crl_info();
+ crl_info(&cinfo);
else if (HAVE_OPT(P7_INFO))
pkcs7_info(&cinfo, ENABLED_OPT(P7_SHOW_DATA));
else if (HAVE_OPT(P7_GENERATE))
else if (HAVE_OPT(TO_P8))
generate_pkcs8(&cinfo);
else if (HAVE_OPT(CRQ_INFO))
- crq_info();
+ crq_info(&cinfo);
else
USAGE(1);
if (i > 0)
fprintf(outfile, "\n");
- if (outcert_format == GNUTLS_X509_FMT_PEM)
+ if (cinfo->outtext)
print_certificate_info(crts[i], outfile, 1);
if (pubkey) {
}
}
-static void print_crl_info(gnutls_x509_crl_t crl, FILE * out)
+static void print_crl_info(gnutls_x509_crl_t crl, FILE * out, common_info_st *cinfo)
{
gnutls_datum_t data;
gnutls_datum_t cout;
int ret;
- if (outcert_format == GNUTLS_X509_FMT_PEM) {
+ if (cinfo->outtext) {
ret = gnutls_x509_crl_print(crl, full_format, &data);
if (ret < 0) {
fprintf(stderr, "crl_print: %s\n", gnutls_strerror(ret));
gnutls_free(cout.data);
}
-void crl_info(void)
+void crl_info(common_info_st *cinfo)
{
gnutls_x509_crl_t crl;
int ret;
app_exit(1);
}
- print_crl_info(crl, outfile);
+ print_crl_info(crl, outfile, cinfo);
gnutls_x509_crl_deinit(crl);
}
-static void print_crq_info(gnutls_x509_crq_t crq, FILE * out)
+static void print_crq_info(gnutls_x509_crq_t crq, FILE * out, common_info_st *cinfo)
{
gnutls_datum_t data;
int ret;
size_t size;
- if (outcert_format == GNUTLS_X509_FMT_PEM) {
+ if (cinfo->outtext) {
ret = gnutls_x509_crq_print(crq, full_format, &data);
if (ret < 0) {
fprintf(stderr, "crq_print: %s\n",
ret = gnutls_x509_crq_verify(crq, 0);
if (ret < 0) {
- fprintf(outcert_format == GNUTLS_X509_FMT_PEM ? out : stderr,
+ fprintf(cinfo->outtext ? out : stderr,
"Self signature: FAILED\n\n");
} else {
- fprintf(outcert_format == GNUTLS_X509_FMT_PEM ? out : stderr,
+ fprintf(cinfo->outtext ? out : stderr,
"Self signature: verified\n\n");
}
fwrite(lbuffer, 1, size, outfile);
}
-void crq_info(void)
+void crq_info(common_info_st *cinfo)
{
gnutls_x509_crq_t crq;
int ret;
app_exit(1);
}
- print_crq_info(crq, outfile);
+ print_crq_info(crq, outfile, cinfo);
gnutls_x509_crq_deinit(crq);
}
app_exit(1);
}
- print_crq_info(crq, outfile);
+ print_crq_info(crq, outfile, cinfo);
gnutls_x509_crq_deinit(crq);
gnutls_privkey_deinit(pkey);
app_exit(1);
}
- print_crl_info(crl, outfile);
+ print_crl_info(crl, outfile, cinfo);
ret = gnutls_x509_crl_verify(crl, &issuer, 1, 0, &output);
if (ret < 0) {
void pubkey_info(gnutls_x509_crt_t crt, common_info_st * cinfo)
{
gnutls_pubkey_t pubkey;
- int ret;
- size_t size;
pubkey = find_pubkey(crt, cinfo);
if (pubkey == 0) {
app_exit(1);
}
- if (outcert_format == GNUTLS_X509_FMT_DER) {
- size = lbuffer_size;
- ret =
- gnutls_pubkey_export(pubkey, outcert_format, lbuffer,
- &size);
- if (ret < 0) {
- fprintf(stderr, "export error: %s\n",
- gnutls_strerror(ret));
- app_exit(1);
- }
-
- fwrite(lbuffer, 1, size, outfile);
-
- gnutls_pubkey_deinit(pubkey);
-
- return;
- }
-
- /* PEM */
-
- _pubkey_info(outfile, full_format, pubkey);
+ print_pubkey_info(pubkey, outfile, full_format, outcert_format, cinfo->outtext);
gnutls_pubkey_deinit(pubkey);
}