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

📄 sctmem.c

📁 SecuDe是一个由安全应用程序接口组成,对验证机制、证件处理、PEM、X.400报文处理和密钥管理提供支持。SecuDe提供DES、 RSA杂凑函数、密钥生成以及数字签名的生成和核实等多种密码机制。
💻 C
📖 第 1 页 / 共 5 页
字号:
char	*sca_get_SCT_config_fname(sct_id)int	sct_id;{	unsigned int 	secsc_errno;	char           *homedir = "";	static char    *config_file_name = "";	static int     old_sctid = 0;	char	       sct_id_ascii[MAXSCTID_LEN];	char           *proc = "sca_get_SCT_config_fname";	secsc_errno = NOERR;#ifdef SECSCTEST	fprintf(stderr, "SECSC-Function: %s\n", proc);#endif	if ((old_sctid != sct_id) || 	    (!(config_file_name)) || (strlen(config_file_name) == 0)) {		if ((config_file_name) && (strlen(config_file_name) != 0)) 			free(config_file_name);	    /*	     *  Compose configuration file name 	     */		homedir = getenv("HOME");		if (!homedir) {			aux_add_error(ESYSTEM, "Getenv failed for variable HOME.", CNULL, 0, proc);			return (CNULL);		}		config_file_name = (char *) malloc(strlen(homedir) + strlen(SCA_SCT_CONFIG_name) + 16);		if (!config_file_name) {			aux_add_error(EMALLOC, "SCT configuration filename", CNULL, 0, proc);			return (CNULL);		}		strcpy(config_file_name, homedir);		if (strlen(homedir))			if (config_file_name[strlen(config_file_name) - 1] != '/')				strcat(config_file_name, "/");		strcat(config_file_name, SCA_SCT_CONFIG_name);		if (sca_int2ascii(&sct_id_ascii[0], sct_id)) {			aux_add_error(ESYSTEM, "Cannot get ASCII representation of sct_id", CNULL, 0, proc);			return (CNULL);		}		strcat(config_file_name, sct_id_ascii);		old_sctid = sct_id;	}#ifdef SECSCTEST	fprintf(stderr, "Name of SC configuration file: %s\n", config_file_name);#endif	return(aux_cpy_String(config_file_name));}			/* sca_get_SCT_config_fname *//*--------------------------------------------------------------*//*						         	*//* PROC  SCT_config_changed				       	*//*							       	*//* DESCRIPTION						       	*//*								*//*  Check whether SCT configuration data have been changed.	*//*								*//*  Compare the values of "old_elem" with the values of 	*//*  "new_elem".						 	*//*****************?????????????????????????????????????????????????????????*************//*  Achtung:	Die alten bzw. neuen Werte von 	"ns" und "rsv" werden nicht verglichen, da sonst nach jedem Kommando	zum SCT hin das SCT configuration file geschrieben wuerde.	Es gibt keine Probleme damit, wenn ein neuer Prozess gestartet wird, da	beim Einlesen der SCT configuration data,  auch "COMinit()" aufgerufen	wird. "COMinit()" setzt "p_elem->first" auf 0.	Dies bewirkt beim naechsten Aufruf von "COMtrans()", dass	"Resynch()" aufgerufen wird, wo "ns" (alias "ssv") und "rsv" 	initialisiert werden.*//*  Achtung der session key wird noch nicht verglichen *//*****************?????????????????????????????????????????????????????????*************//*								*//*							        *//* IN			     DESCRIPTION		       	*//*   old_elem		       Pointer to the old values.	*//*   new_elem		       Pointer to the new values.       *//*							       	*//* OUT							       	*//*							       	*//*							       	*//* RETURN		     DESCRIPTION	      	       	*//*   TRUE			SCT configuration data have been*//*				changed.			*//*   FALSE			SCT configuration data have not *//*				been changed.			*//*							       	*//* CALLED FUNCTIONS	     DESCRIPTION		       	*//*			         		       		*//*--------------------------------------------------------------*/staticBoolean	SCT_config_changed(old_elem, new_elem)	struct s_help_portparam      *old_elem;	struct s_portparam     	     *new_elem;	{	unsigned int secsc_errno;	Boolean	     changed = FALSE;	char           *proc = "SCT_config_changed";	secsc_errno = NOERR;#ifdef SECSCTEST/*	fprintf(stderr, "SECSC-Function: %s\n", proc); */#endif		if (strcmp (old_elem->port_name,  new_elem->port_name)) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->bwt != new_elem->bwt) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->cwt != new_elem->cwt) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->baud != new_elem->baud) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->databits != new_elem->databits) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->stopbits != new_elem->stopbits) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->parity != new_elem->parity) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->dataformat != new_elem->dataformat) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->tpdusize != new_elem->tpdusize) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->apdusize != new_elem->apdusize) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->edc != new_elem->edc) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->protocoltype != new_elem->protocoltype) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->chaining != new_elem->chaining) {			changed = TRUE; 			goto ret_value;		}/*		if (old_elem->ns != new_elem->ns) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->rsv != new_elem->rsv) {			changed = TRUE; 			goto ret_value;		}*/		if (old_elem->sad != new_elem->sad) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->dad != new_elem->dad) {			changed = TRUE; 			goto ret_value;		}		if (new_elem->schistory) {			if (strcmp (old_elem->schistory,  new_elem->schistory)) {				changed = TRUE; 				goto ret_value;			}		}		else {			if (old_elem->schistory[0] != '\0') {				changed = TRUE; 				goto ret_value;			}		}		if (old_elem->port_id != new_elem->port_id) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->first != new_elem->first) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->ssc != new_elem->ssc) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->setmode != new_elem->setmode) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->sc_request != new_elem->sc_request) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->secure_messaging.command != new_elem->secure_messaging.command) {			changed = TRUE; 			goto ret_value;		}		if (old_elem->secure_messaging.response != new_elem->secure_messaging.response) {			changed = TRUE; 			goto ret_value;		}/*********?????????????????????????????????????*********//* Folgendes sollte auch verglichen werden??????????????**		old_elem->session_key.subjectAI 		= new_elem->session_key.subjectAI;		old_elem->session_key.subjectkey.bits 	= new_elem->session_key.subjectkey.bits;		old_elem->session_key.subjectkey.nbits 	= new_elem->session_key.subjectkey.nbits;************???????????????????????????????????******/ret_value:#ifdef SECSCTEST	if (changed == TRUE)		fprintf(stderr, "SECSC-Function: %s\n", proc);#endif	return(changed);}				/* end SCT_config_changed *//*--------------------------------------------------------------*//*						                *//* PROC  sca_int2ascii					       	*//*							       	*//* DESCRIPTION						       	*//*								*//*  Transform an integer value into a NULL terminated ASCII 	*//*  character string. 						*//*							        *//* IN			     DESCRIPTION		       	*//*   s		 	       Pointer to char_string.		*//*   n		 	       Integer value to be transformed. *//*							       	*//* OUT							       	*//*   char_string 	       Character string.		*//*							       	*//*							       	*//* RETURN		     DESCRIPTION	      	       	*//*   0	         	       o.k			       	*//*  -1			       Error			       	*//*							       	*//* CALLED FUNCTIONS	     DESCRIPTION		       	*//*                                                              *//*--------------------------------------------------------------*/staticint sca_int2ascii(s,n)			     /* from integer to NULL terminated ascii string */char s[];int n;{    int c,i,j, sign;	char           *proc = "sca_int2ascii";#ifdef SECSCTEST/*	fprintf(stderr, "SECSC-Function: %s\n", proc);*/#endif	if (!(s)) {		aux_add_error(EINVALID, "invalid input value", CNULL, 0, proc);		return (-1);	}	if((sign = n) < 0)	      n = -n;	i = 0;    	do {			 /* generation from right to left */	 	s[i++] = n % 10 + '0';    	} while ((n /= 10) > 0);    	s[i] = '\0';    	/* reverse(s);*/    	for (i=0, j=strlen(s)-1; i<j; i++, j--) {		c = s[i];		s[i] = s[j];		s[j] = c;    	} /* end for */#ifdef SECSCTEST/*	fprintf(stderr, "char_string: %s\n", s);*/#endif	return(0);} /* end sca_int2ascii */#endif 	/* PROCDAT *//*--------------------------------------------------------*//*                                                  | GMD *//*                                                  +-----*//* PROC  get_orgelem()       VERSION   2.0                *//*                              DATE   November 1991      *//*                                BY   L.Eckstein,GMD     *//*                                                        *//* DESCRIPTION                                            *//*  Read original SCT-Element out of Install-File.        *//*  In the environment must exists the shell-variable     *//*  "STAMOD".                                             *//*  This shell-variable contains the name of the          *//*  installation - File                                   *//*                                                        *//*                                                        *//* IN                        DESCRIPTION                  *//*  Pointer                   Pointer of old listelement  *//*                                                        *//*                                                        *//* OUT                                                    *//*                                                        *//*                                                        *//*                                                        *//*                                                        *//* RETURN                    DESCRIPTION                  *//*   0                         o.k.                       *//*  -1                         error                      *//*			        ESIDUNK                   *//*                              ENOSHELL                  *//*                              EOPERR                    *//*                              EEMPTY                    *//*                              ERDERR                    *//*                              ECLERR                    *//*--------------------------------------------------------*/intget_orgelem(sct_id, oldelem)	int             sct_id;	struct s_portparam *oldelem;{	/*----------------------------------------------------------*/	/* Definitions                                            */	/*----------------------------------------------------------*/	char           *fileptr;	FILE           *fd;	struct s_record genrecord;	int             rc;

⌨️ 快捷键说明

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