/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef _BASIC_UTILS_H_ #define _BASIC_UTILS_H_ #include "seccomon.h" #include "secitem.h" #include "secoid.h" #include "secoidt.h" #include "secport.h" #include "prerror.h" #include "base64.h" #include "secasn1.h" #include "secder.h" #include "ecl-exp.h" #include #ifdef SECUTIL_NEW typedef int (*SECU_PPFunc)(PRFileDesc *out, SECItem *item, char *msg, int level); #else typedef int (*SECU_PPFunc)(FILE *out, SECItem *item, char *msg, int level); #endif /* print out an error message */ extern void SECU_PrintError(const char *progName, const char *msg, ...); /* print out a system error message */ extern void SECU_PrintSystemError(const char *progName, const char *msg, ...); /* print a formatted error message */ extern void SECU_PrintErrMsg(FILE *out, int level, const char *progName, const char *msg, ...); /* Read the contents of a file into a SECItem */ extern SECStatus SECU_FileToItem(SECItem *dst, PRFileDesc *src); extern SECStatus SECU_TextFileToItem(SECItem *dst, PRFileDesc *src); /* Indent based on "level" */ extern void SECU_Indent(FILE *out, int level); /* Print a newline to out */ extern void SECU_Newline(FILE *out); /* Print integer value and hex */ extern void SECU_PrintInteger(FILE *out, const SECItem *i, const char *m, int level); /* Print SECItem as hex */ extern void SECU_PrintAsHex(FILE *out, const SECItem *i, const char *m, int level); /* dump a buffer in hex and ASCII */ extern void SECU_PrintBuf(FILE *out, const char *msg, const void *vp, int len); #ifdef HAVE_EPV_TEMPLATE /* Dump contents of private key */ extern int SECU_PrintPrivateKey(FILE *out, SECItem *der, char *m, int level); #endif /* Init PKCS11 stuff */ extern SECStatus SECU_PKCS11Init(PRBool readOnly); /* Dump contents of signed data */ extern int SECU_PrintSignedData(FILE *out, SECItem *der, const char *m, int level, SECU_PPFunc inner); extern void SECU_PrintString(FILE *out, const SECItem *si, const char *m, int level); extern void SECU_PrintAny(FILE *out, const SECItem *i, const char *m, int level); extern void SECU_PrintPRandOSError(const char *progName); /* Caller ensures that dst is at least item->len*2+1 bytes long */ void SECU_SECItemToHex(const SECItem *item, char *dst); /* Requires 0x prefix. Case-insensitive. Will do in-place replacement if * successful */ SECStatus SECU_SECItemHexStringToBinary(SECItem *srcdest); /* ** Read a hex string into a SecItem. */ extern SECItem *SECU_HexString2SECItem(PLArenaPool *arena, SECItem *item, const char *str); extern SECStatus SECU_ecName2params(ECCurveName curve, SECItem *params); /* * * Utilities for parsing security tools command lines * */ /* A single command flag */ typedef struct { char flag; PRBool needsArg; char *arg; PRBool activated; char *longform; } secuCommandFlag; /* A full array of command/option flags */ typedef struct { int numCommands; int numOptions; secuCommandFlag *commands; secuCommandFlag *options; } secuCommand; /* fill the "arg" and "activated" fields for each flag */ SECStatus SECU_ParseCommandLine(int argc, char **argv, char *progName, const secuCommand *cmd); char * SECU_GetOptionArg(const secuCommand *cmd, int optionNum); /* * * Error messaging * */ void printflags(char *trusts, unsigned int flags); #if !defined(XP_UNIX) && !defined(XP_OS2) extern int ffs(unsigned int i); #endif #include "secerr.h" extern const char *hex; extern const char printable[]; #endif /* _BASIC_UTILS_H_ */