1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
14 * The Original Code is the Netscape security libraries.
16 * The Initial Developer of the Original Code is
17 * Netscape Communications Corporation.
18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
19 * the Initial Developer. All Rights Reserved.
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 * in which case the provisions of the GPL or the LGPL are applicable instead
27 * of those above. If you wish to allow use of your version of this file only
28 * under the terms of either the GPL or the LGPL, and not to allow others to
29 * use your version of this file under the terms of the MPL, indicate your
30 * decision by deleting the provisions above and replace them with the notice
31 * and other provisions required by the GPL or the LGPL. If you do not delete
32 * the provisions above, a recipient may use your version of this file under
33 * the terms of any one of the MPL, the GPL or the LGPL.
35 * ***** END LICENSE BLOCK ***** */
41 #if defined(XP_WIN) || (defined(__sun) && !defined(SVR4))
43 extern int fprintf(FILE *, char *, ...);
48 static void Usage(char *progName
)
51 "Usage: %s [-r] [-i input] [-o output]\n",
53 fprintf(stderr
, "%-20s For formatted items, dump raw bytes as well\n",
55 fprintf(stderr
, "%-20s Define an input file to use (default is stdin)\n",
57 fprintf(stderr
, "%-20s Define an output file to use (default is stdout)\n",
62 int main(int argc
, char **argv
)
70 PRBool raw
= PR_FALSE
;
74 progName
= strrchr(argv
[0], '/');
75 progName
= progName
? progName
+1 : argv
[0];
77 /* Parse command line arguments */
80 optstate
= PL_CreateOptState(argc
, argv
, "i:o:r");
81 while ((status
= PL_GetNextOpt(optstate
)) == PL_OPT_OK
) {
82 switch (optstate
->option
) {
84 inFile
= PR_Open(optstate
->value
, PR_RDONLY
, 0);
86 fprintf(stderr
, "%s: unable to open \"%s\" for reading\n",
87 progName
, optstate
->value
);
93 outFile
= fopen(optstate
->value
, "w");
95 fprintf(stderr
, "%s: unable to open \"%s\" for writing\n",
96 progName
, optstate
->value
);
110 if (status
== PL_OPT_BAD
)
113 if (!inFile
) inFile
= PR_STDIN
;
114 if (!outFile
) outFile
= stdout
;
116 rv
= NSS_NoDB_Init(NULL
); /* XXX */
117 if (rv
!= SECSuccess
) {
118 SECU_PrintPRandOSError(progName
);
122 rv
= SECU_ReadDERFromFile(&der
, inFile
, PR_FALSE
);
123 if (rv
== SECSuccess
) {
124 rv
= DER_PrettyPrint(outFile
, &der
, raw
);
125 if (rv
== SECSuccess
)
129 xp_error
= PORT_GetError();
131 SECU_PrintError(progName
, "error %d", xp_error
);
134 SECU_PrintSystemError(progName
, "errno=%d", errno
);