Blame nss/cmd/lib/basicutil.h

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