⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sta_xdmp.c

📁 SecuDe是一个由安全应用程序接口组成,对验证机制、证件处理、PEM、X.400报文处理和密钥管理提供支持。SecuDe提供DES、 RSA杂凑函数、密钥生成以及数字签名的生成和核实等多种密码机制。
💻 C
字号:
/*-------------------------------------------------------+-----*//*                                                       | GMD *//*   SYSTEM   STAMOD  -  Version 2.0                     +-----*//*                                                             *//*-------------------------------------------------------------*//*                                                             *//*    PACKAGE   AUX_XDUMP                 VERSION 2.0          *//*                                         DATE                *//*                                           BY Levona Eckstein*//*                                                             *//*    FILENAME                                                 *//*      sta_xdmp.c                                             *//*                                                             *//*    DESCRIPTION                                              *//*      Auxiliary functions for trace                          *//*                                                             *//*                                                             *//*    EXPORT                DESCRIPTION                        *//*      sta_aux_sct_apdu     print SCT-APDU in file            *//*                                                             *//*      sta_aux_sct_resp     print SCT-RESP in file            *//*                                                             *//*      sta_aux_sc_apdu      print SC-APDU in file             *//*                                                             *//*      sta_aux_sc_resp      print SC-RESP in file             *//*                                                             *//*-------------------------------------------------------------*//*-------------------------------------------------------------*//*   include-Files                                             *//*-------------------------------------------------------------*/#ifndef MAC#include <sys/types.h>#include <sys/stat.h>#else #include "MacTypes.h"#endif /* !MAC */#include <fcntl.h>#include <stdio.h>#include "sca.h"#define  INSANZ 	28#define  SC_INSANZ	17static struct sct_ins {	int             ins_code;	char            ins_text[20];}               SCTins[INSANZ] ={	{		0x01, "S_REQUEST_SC"	},	{		0x02, "S_STATUS"	},	{		0x03, "S_EJECT_SC"	},	{		0x04, "S_DISPLAY "	},	{		0x05, "S_RESET"	},	{		0x11, "S_TRANS"	},	{		0x21, "S_GEN_USER_KEY"	},	{		0x22, "S_INST_USER_KEY"	},	{		0x23, "S_DEL_USER_KEY"	},	{		0x24, "S_GET_RNO"	},	{		0x25, "S_RSA_SIGN"	},	{		0x26, "S_RSA_VERIFY"	},	{		0x27, "S_DES_ENC"	},	{		0x28, "S_RSA_ENC"	},	{		0x29, "S_DES_DEC"	},	{		0x2A, "S_RSA_DEC"	},	{		0x2B, "S_ENC_DES_KEY"	},	{		0x2C, "S_DEC_DES_KEY"	},	{		0x31, "S_GEN_DEV_KEY"	},	{		0x32, "S_INST_DEV_KEY"	},	{		0x33, "S_DEL_DEV_KEY"	},	{		0x41, "S_INST_PIN"	},	{		0x42, "S_CHANGE_PIN"	},	{		0x43, "S_AUTH"	},	{		0x51, "S_GET_TRANSPORT_KEY"	},	{		0x52, "S_GEN_SESSION_KEY"	},	{		0x61, "S_WRITE_KEYCARD"	},	{		0x62, "S_READ_KEYCARD"	}};static struct sc_ins {	int             ins_code;	char            ins_text[20];}               SCins[SC_INSANZ] ={	{		0xF8, "SC_EXRND"	},	{		0xF6, "SC_GET_CD"	},	{		0x88, "SC_SETKEY"	},	{		0xA6, "SC_SELECT"	},	{		0xA4, "SC_REGISTER"	},	{		0xB2, "SC_READF"	},	{		0x8E, "SC_LOCKF"	},	{		0x8A, "SC_DELREC"	},	{		0xC8, "SC_DELF"	},	{		0xA8, "SC_CLOSE"	},	{		0x24, "SC_CHG_PIN"	},	{		0x42, "SC_AUTH"	},	{		0xD4, "SC_CREATE"	},	{		0xF7, "SC_WR_KEY"	},	{		0xB8, "SC_WRITEF"	},	{		0x82, "SC_CRYPT"	},	{		0x86, "SC_LOCKKEY"	}};#ifdef DOStypedef unsigned char u_char;typedef unsigned long u_long;struct hex_overlay {	u_long          b0, b1, b2, b3;};#endiftypedefunion {	struct {		u_long          b0, b1, b2, b3;	}               w;	/* for xdump, fxdump */	char            c[16];}               XBUF;/*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC  sta_aux_sct_apdu       VERSION   2.0             *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Print SCT-APDU in TRACE-File SCTINT.TRC               *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* INPUT                     DESCRIPTION                  *//*  dump_file                 File-pointer                *//*                                                        *//*  buffer                    information                 *//*                                                        *//*  len                       length of information       *//*                                                        *//*                                                        *//*--------------------------------------------------------*/intsta_aux_sct_apdu(dump_file, buffer, len)	FILE           *dump_file;	char           *buffer;	int             len;{	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	unsigned int    index = 0;	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	fprintf(dump_file, "SCT_COMMAND: ");	for (index = 0; index < INSANZ; index++) {		if (SCTins[index].ins_code == (*(buffer + 1) & 0xFF)) {			fprintf(dump_file, "%s\n", SCTins[index].ins_text);			fprintf(dump_file, "      CL(0x%02x) INS(0x%02x) P1(0x%02x) P2(0x%02x) L(0x%02x)\n",				*buffer & 0xFF,				*(buffer + 1) & 0xFF,				*(buffer + 2) & 0xFF,				*(buffer + 3) & 0xFF,				*(buffer + 4) & 0xFF);			if ((*(buffer + 1) & 0xFF) == 0x11) {	/* = S_TRANS */				fprintf(dump_file, "      DATA: ");				sta_aux_sc_apdu(dump_file, buffer + 5, len - 5);			} else {				fprintf(dump_file, "      DATA:\n");				aux_fxdump(dump_file, buffer + 5, len - 5, 0);			}			return (0);		}	}	/* INS not found */	fprintf(dump_file, "SCT_COMMAND: INS not defined\n");	return (-1);}/*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC  sta_aux_sct_resp       VERSION   2.0             *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Print SCT-RESP in TRACE-File SCTINT.TRC               *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* INPUT                     DESCRIPTION                  *//*  dump_file                 File-pointer                *//*                                                        *//*  buffer                    information                 *//*                                                        *//*  len                       length of information       *//*                                                        *//*                                                        *//*--------------------------------------------------------*/voidsta_aux_sct_resp(dump_file, buffer, len)	FILE           *dump_file;	char           *buffer;	int             len;{	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	fprintf(dump_file, "SCT-RESPONSE\n");	fprintf(dump_file, "      L(0x%02x)\n", *buffer & 0xFF);	fprintf(dump_file, "      DATA:\n");	aux_fxdump(dump_file, buffer + 1, len - 3, 0);	fprintf(dump_file, "      SW1(0x%02x) SW2(0x%02x)\n",		*(buffer + len - 2) & 0xFF,		*(buffer + len - 1) & 0xFF);}/*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC  sta_aux_sc_apdu        VERSION   2.0             *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Print SC-APDU in TRACE-File SCCOM.TRC                 *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* INPUT                     DESCRIPTION                  *//*  dump_file                 File-pointer                *//*                                                        *//*  buffer                    information                 *//*                                                        *//*  len                       length of information       *//*                                                        *//*                                                        *//*--------------------------------------------------------*/intsta_aux_sc_apdu(dump_file, buffer, len)	FILE           *dump_file;	char           *buffer;	int             len;{	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	unsigned int    index = 0;	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	fprintf(dump_file, "SC_COMMAND: ");	for (index = 0; index < SC_INSANZ; index++) {		if (SCins[index].ins_code == (*(buffer + 1) & 0xFF)) {			fprintf(dump_file, "%s\n", SCins[index].ins_text);			fprintf(dump_file, "      CL(0x%02x) INS(0x%02x) P1(0x%02x) P2(0x%02x) L(0x%02x)\n",				*buffer & 0xFF,				*(buffer + 1) & 0xFF,				*(buffer + 2) & 0xFF,				*(buffer + 3) & 0xFF,				*(buffer + 4) & 0xFF);			fprintf(dump_file, "      DATA:\n");			aux_fxdump(dump_file, buffer + 5, len - 5, 0);			return (0);		}	}	/* INS not found */	fprintf(dump_file, "SC_COMMAND: INS not defined\n");	return (-1);}/*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC  sta_aux_sc_resp        VERSION   2.0             *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Print SC-RESP in TRACE-File SCCOM.TRC                 *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* INPUT                     DESCRIPTION                  *//*  dump_file                 File-pointer                *//*                                                        *//*  buffer                    information                 *//*                                                        *//*  len                       length of information       *//*                                                        *//*                                                        *//*--------------------------------------------------------*/voidsta_aux_sc_resp(dump_file, buffer, len)	FILE           *dump_file;	char           *buffer;	int             len;{	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	fprintf(dump_file, "SC-RESPONSE\n");	fprintf(dump_file, "      L(0x%02x)\n", *buffer & 0xFF);	fprintf(dump_file, "      DATA:\n");	aux_fxdump(dump_file, buffer + 1, len - 3, 0);	fprintf(dump_file, "      SW1(0x%02x) SW2(0x%02x)\n",		*(buffer + len - 2) & 0xFF,		*(buffer + len - 1) & 0xFF);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -