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

📄 sctmem.c

📁 SecuDe是一个由安全应用程序接口组成,对验证机制、证件处理、PEM、X.400报文处理和密钥管理提供支持。SecuDe提供DES、 RSA杂凑函数、密钥生成以及数字签名的生成和核实等多种密码机制。
💻 C
📖 第 1 页 / 共 5 页
字号:
	long            offset;	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	if (sct_id == 0) {		sct_errno = ESIDUNK;		sct_errmsg = sct_error[sct_errno].msg;		return (S_ERR);	};	/*------------------------------------*/	/* Open file for read                 */	/*------------------------------------*/	/* read shell - variable               */#ifdef MAC    if ((fileptr = MacGetEnv("STAMOD")) == NULL) {#else    if ((fileptr = getenv("STAMOD")) == NULL) {#endif /* !MAC */		sct_errno = ENOSHELL;		sct_errmsg = sct_error[sct_errno].msg;		return (S_ERR);	};	/* open File for read */	if ((fd = fopen(fileptr, "r")) == NULL) {		sct_errno = EOPERR;		sct_errmsg = sct_error[sct_errno].msg;		return (S_ERR);	};	/*------------------------------------*/	/* read install-file, until element   */	/* found                              */	/*------------------------------------*/	offset = (long) (sizeof(struct s_record) * (sct_id - 1));	if (fseek(fd, offset, 0) != 0) {		sct_errno = EEMPTY;		sct_errmsg = sct_error[sct_errno].msg;		fclose(fd);		return (S_ERR);	};	if (fread(&genrecord, sizeof(struct s_record), 1, fd) == 0) {		sct_errno = ERDERR;		sct_errmsg = sct_error[sct_errno].msg;		fclose(fd);		return (S_ERR);	};	/*------------------------------------------------------*/	/* Test, if schistory buffer allocated	            */	/*------------------------------------------------------*/	if (oldelem->schistory != NULL)		free(oldelem->schistory);	/*------------------------------------------------------*/	/* Initialize element				    */	/*------------------------------------------------------*/	init_elem(oldelem, &genrecord, FALSE);	/*------------------------------------*/	/* close Installation File            */	/*------------------------------------*/	if (fclose(fd) != 0) {		sct_errno = ECLERR;		sct_errmsg = sct_error[sct_errno].msg;		return (-1);	};#ifdef TRACE	/* print element */	fprintf(sct_trfp, "FUNCTION get_orgelem: \n");	pr_element(sct_trfp, oldelem);#endif	return (0);}/*-------------------------------------------------------------*//* E N D   O F   P R O C E D U R E      get_orgelem            *//*-------------------------------------------------------------*//*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC  del_sctlist         VERSION   2.0                *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Delete sct-List                                       *//*                                                        *//*                                                        *//* IN                        DESCRIPTION                  *//*                                                        *//*                                                        *//* OUT                                                    *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* RETURN                    DESCRIPTION                  *//*--------------------------------------------------------*/static voiddel_sctlist(){	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	struct s_portparam *dp_tail;	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	dp_tail = p_lhead;	while (dp_tail != PORTNULL) {		p_lhead = p_lhead->p_next;		free(dp_tail);		dp_tail = p_lhead;	}	p_lhead = PORTNULL;}/*-------------------------------------------------------------*//* E N D   O F   P R O C E D U R E      del_sctlist            *//*-------------------------------------------------------------*//*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC  init_elem           VERSION   2.0                *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Initialize sct element                                *//*                                                        *//*                                                        *//* IN                        DESCRIPTION                  *//*  Pointer                   Pointer of listelement      *//*                                                        *//*  Pointer                   Pointer of genrecord        *//*                                                        *//*  first                     call  of init_elem          *//*			      TRUE : call of cr_sctlist   *//*			      FALSE: call of get_orgelem  *//*                                                        *//*                                                        *//* OUT                                                    *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* RETURN                    DESCRIPTION                  *//*--------------------------------------------------------*/static voidinit_elem(sct_elem, genrecord, first)	struct s_portparam *sct_elem;	struct s_record *genrecord;	Boolean         first;{	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	int             div = 19200;	int             baud;	int             index;	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	sct_elem->bwt = genrecord->bwt;	sct_elem->cwt = genrecord->cwt;#ifdef DOS	sct_elem->baud = (div / genrecord->baud) * 6;#endif#ifdef BSD	index = 0;	baud = genrecord->baud;	while ((div / baud) != 1) {		baud = baud * 2;		index++;	}	sct_elem->baud = B19200 - index;#endif#ifdef SYSTEMV	index = 0;	baud = genrecord->baud;	while ((div / baud) != 1) {		baud = baud * 2;		index++;	}	sct_elem->baud = B19200 - index;#endif#ifdef MAC        sct_elem->baud = MacBaud(genrecord->baud);#endif	if (genrecord->databits == 7)		sct_elem->databits = DATA_7;	else		sct_elem->databits = DATA_8;	if (genrecord->stopbits == 1)		sct_elem->stopbits = STOP_1;	else		sct_elem->stopbits = STOP_2;	if (sct_elem->databits == DATA_8)		sct_elem->parity = PARNONE;	else		sct_elem->parity = genrecord->parity;	sct_elem->dataformat = genrecord->dataformat;	sct_elem->tpdusize = genrecord->tpdu_size;	sct_elem->apdusize = genrecord->apdu_size;	sct_elem->edc = genrecord->edc;	sct_elem->chaining = C_ON;	sct_elem->schistory = NULL;	sct_elem->port_id = 0;	sct_elem->ssc = 0;	sct_elem->sc_request = 0;	if (first == TRUE) {		sct_elem->setmode = 0;		sct_elem->session_key.subjectAI = NULL;		sct_elem->session_key.subjectkey.bits = NULL;		sct_elem->session_key.subjectkey.nbits = 0;		sct_elem->secure_messaging.response = SEC_NORMAL;		sct_elem->secure_messaging.command = SEC_NORMAL;	}}/*-------------------------------------------------------------*//* E N D   O F   P R O C E D U R E      init_elem              *//*-------------------------------------------------------------*//*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC   pr_sctlist         VERSION   2.0                *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Print  sct-List                                       *//*                                                        *//*                                                        *//* IN                        DESCRIPTION                  *//*                                                        *//*                                                        *//* OUT                                                    *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* RETURN                    DESCRIPTION                  *//*--------------------------------------------------------*/static voidpr_sctlist(dump_file)	FILE           *dump_file;{	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	struct s_portparam *dp_tail;	int             lindex = 1;	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	dp_tail = p_lhead;	while (dp_tail != PORTNULL) {		fprintf(dump_file, "\n%d. Listenelement \n", lindex);		pr_element(dump_file, dp_tail);		dp_tail = dp_tail->p_next;		lindex++;	}}/*-------------------------------------------------------------*//* E N D   O F   P R O C E D U R E       pr_sctlist            *//*-------------------------------------------------------------*//*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC   pr_element         VERSION   2.0                *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Print  one listelement                                *//*                                                        *//*                                                        *//* IN                        DESCRIPTION                  *//*  Pointer                    Pointer of listelement      *//*                                                        *//* OUT                                                    *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* RETURN                    DESCRIPTION                  *//*--------------------------------------------------------*/voidpr_element(dump_file, elem)	FILE           *dump_file;	struct s_portparam *elem;{	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	/*----------------------------------------------------------*/	/* Statements                                             */	/*----------------------------------------------------------*/	if (elem != PORTNULL) {		fprintf(dump_file, "\nListenelement \n");		fprintf(dump_file, "  PORT_NAME    = %s\n", elem->port_name);		fprintf(dump_file, "  BWT          = %d\n", elem->bwt);		fprintf(dump_file, "  CWT          = %d\n", elem->cwt);		fprintf(dump_file, "  BAUD         = %d\n", elem->baud);		fprintf(dump_file, "  DATABITS     = %d\n", elem->databits);		fprintf(dump_file, "  STOPBITS     = %d\n", elem->stopbits);		fprintf(dump_file, "  PARITY       = %d\n", elem->parity);		fprintf(dump_file, "  DATAFORMAT   = %d\n", elem->dataformat);		fprintf(dump_file, "  TPDUSIZE     = %d\n", elem->tpdusize);		fprintf(dump_file, "  APDUSIZE     = %d\n", elem->apdusize);		fprintf(dump_file, "  EDC          = %d\n", elem->edc);		fprintf(dump_file, "  PROTTYPE     = %d\n", elem->protocoltype);		fprintf(dump_file, "  CHAINING     = %d\n", elem->chaining);		fprintf(dump_file, "  NS           = %d\n", elem->ns);		fprintf(dump_file, "  RSV          = %d\n", elem->rsv);		fprintf(dump_file, "  SAD          = %d\n", elem->sad);		fprintf(dump_file, "  DAD          = %d\n", elem->dad);		fprintf(dump_file, "  SCHISTORY    = ");		if (elem->schistory == NULL)			fprintf(dump_file, "NULL\n");		else			fprintf(dump_file, "%s\n", elem->schistory);		fprintf(dump_file, "  PORT_ID       = %d\n", elem->port_id);		fprintf(dump_file, "  FIRST         = %d\n", elem->first);		fprintf(dump_file, "  SETMODE       = %d\n", elem->setmode);		if (elem->session_key.subjectkey.bits != NULL) {			fprintf(dump_file, "  SESSIONKEY           = \n");			fprintf(dump_file, "     subjectAI         = %x\n", elem->session_key.subjectAI);			fprintf(dump_file, "     subjectkey.nbits  = %d\n", elem->session_key.subjectkey.nbits);			fprintf(dump_file, "     subjectkey.bits   = \n");			aux_fxdump(dump_file, elem->session_key.subjectkey.bits,				 elem->session_key.subjectkey.nbits / 8, 0);		} else {			fprintf(dump_file, "  SESSIONKEY           = \n");			fprintf(dump_file, "     subjectAI         = NULL\n");			fprintf(dump_file, "     subjectkey.bits   = NULL\n");		}		fprintf(dump_file, "  SSC             = %x\n", elem->ssc);		fprintf(dump_file, "  SECMESS_COMMAND = %d\n", elem->secure_messaging.command);		fprintf(dump_file, "  SECMESS_RESPONSE= %d\n", elem->secure_messaging.response);		fprintf(dump_file, "  SC_REQUEST      = %d\n\n", elem->sc_request);	}}/*-------------------------------------------------------------*//* E N D   O F   P R O C E D U R E       pr_element            *//*-------------------------------------------------------------*//*-------------------------------------------------------------*//* E N D   O F   P R O C E D U R E       s c t m e m           *//*-------------------------------------------------------------*/

⌨️ 快捷键说明

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