您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ BUF_strlcpy函数代码示例

51自学网 2021-06-01 19:53:51
  C++
这篇教程C++ BUF_strlcpy函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中BUF_strlcpy函数的典型用法代码示例。如果您正苦于以下问题:C++ BUF_strlcpy函数的具体用法?C++ BUF_strlcpy怎么用?C++ BUF_strlcpy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了BUF_strlcpy函数的24个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: sizeof

char *UI_construct_prompt(UI *ui, const char *object_desc,                          const char *object_name){    char *prompt = NULL;    if (ui->meth->ui_construct_prompt)        prompt = ui->meth->ui_construct_prompt(ui, object_desc, object_name);    else {        char prompt1[] = "Enter ";        char prompt2[] = " for ";        char prompt3[] = ":";        int len = 0;        if (object_desc == NULL)            return NULL;        len = sizeof(prompt1) - 1 + strlen(object_desc);        if (object_name)            len += sizeof(prompt2) - 1 + strlen(object_name);        len += sizeof(prompt3) - 1;        prompt = OPENSSL_malloc(len + 1);        if (prompt == NULL)            return NULL;        BUF_strlcpy(prompt, prompt1, len + 1);        BUF_strlcat(prompt, object_desc, len + 1);        if (object_name) {            BUF_strlcat(prompt, prompt2, len + 1);            BUF_strlcat(prompt, object_name, len + 1);        }        BUF_strlcat(prompt, prompt3, len + 1);    }    return prompt;}
开发者ID:GH-JY,项目名称:openssl,代码行数:33,


示例2: EVP_PBE_CipherInit

int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,	     ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de){	EVP_PBE_CTL *pbetmp, pbelu;	int i;	pbelu.pbe_nid = OBJ_obj2nid(pbe_obj);	if (pbelu.pbe_nid != NID_undef) i = sk_find(pbe_algs, (char *)&pbelu);	else i = -1;	if (i == -1) {		char obj_tmp[80];		EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM);		if (!pbe_obj) BUF_strlcpy (obj_tmp, "NULL", sizeof obj_tmp);		else i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj);		ERR_add_error_data(2, "TYPE=", obj_tmp);		return 0;	}	if(!pass) passlen = 0;	else if (passlen == -1) passlen = strlen(pass);	pbetmp = (EVP_PBE_CTL *)sk_value (pbe_algs, i);	i = (*pbetmp->keygen)(ctx, pass, passlen, param, pbetmp->cipher,						 pbetmp->md, en_de);	if (!i) {		EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_KEYGEN_FAILURE);		return 0;	}	return 1;	}
开发者ID:1310701102,项目名称:sl4a,代码行数:29,


示例3: DSOerr

char *DSO_convert_filename(DSO *dso, const char *filename){    char *result = NULL;    if (dso == NULL) {        DSOerr(DSO_F_DSO_CONVERT_FILENAME, ERR_R_PASSED_NULL_PARAMETER);        return (NULL);    }    if (filename == NULL)        filename = dso->filename;    if (filename == NULL) {        DSOerr(DSO_F_DSO_CONVERT_FILENAME, DSO_R_NO_FILENAME);        return (NULL);    }    if ((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0) {        if (dso->name_converter != NULL)            result = dso->name_converter(dso, filename);        else if (dso->meth->dso_name_converter != NULL)            result = dso->meth->dso_name_converter(dso, filename);    }    if (result == NULL) {        result = OPENSSL_malloc(strlen(filename) + 1);        if (result == NULL) {            DSOerr(DSO_F_DSO_CONVERT_FILENAME, ERR_R_MALLOC_FAILURE);            return (NULL);        }        BUF_strlcpy(result, filename, strlen(filename) + 1);    }    return (result);}
开发者ID:cynthia,项目名称:openssl,代码行数:30,


示例4: BUF_strlcat

size_t BUF_strlcat(char *dst, const char *src, size_t size)	{	size_t l = 0;	for(; size > 0 && *dst; size--, dst++)		l++;	return l + BUF_strlcpy(dst, src, size);	}
开发者ID:asgene,项目名称:CryptoWrapperForCCode,代码行数:7,


示例5: EVP_PBE_CipherInit

int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,		       ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de)	{	const EVP_CIPHER *cipher;	const EVP_MD *md;	int cipher_nid, md_nid;	EVP_PBE_KEYGEN *keygen;	if (!EVP_PBE_find(EVP_PBE_TYPE_OUTER, OBJ_obj2nid(pbe_obj),					&cipher_nid, &md_nid, &keygen))		{		char obj_tmp[80];		EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM);		if (!pbe_obj) BUF_strlcpy (obj_tmp, "NULL", sizeof obj_tmp);		else i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj);		ERR_add_error_data(2, "TYPE=", obj_tmp);		return 0;		}	if(!pass)		passlen = 0;	else if (passlen == -1)		passlen = strlen(pass);	if (cipher_nid == -1)		cipher = NULL;	else		{		cipher = EVP_get_cipherbynid(cipher_nid);		if (!cipher)			{			EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_CIPHER);			return 0;			}		}	if (md_nid == -1)		md = NULL;	else		{		md = EVP_get_digestbynid(md_nid);		if (!md)			{			EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_DIGEST);			return 0;			}		}	if (!keygen(ctx, pass, passlen, param, cipher, md, en_de))		{		EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_KEYGEN_FAILURE);		return 0;		}	return 1;	}
开发者ID:CoryXie,项目名称:BarrelfishOS,代码行数:55,


示例6: BUF_strlcpy

/* Convert an ASN1_TIME structure to GeneralizedTime */ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t,                                                   ASN1_GENERALIZEDTIME **out){    ASN1_GENERALIZEDTIME *ret;    char *str;    int newlen;    if (!ASN1_TIME_check(t))        return NULL;    if (!out || !*out) {        if (!(ret = ASN1_GENERALIZEDTIME_new()))            return NULL;        if (out)            *out = ret;    } else        ret = *out;    /* If already GeneralizedTime just copy across */    if (t->type == V_ASN1_GENERALIZEDTIME) {        if (!ASN1_STRING_set(ret, t->data, t->length))            return NULL;        return ret;    }    /* grow the string */    if (!ASN1_STRING_set(ret, NULL, t->length + 2))        return NULL;    /* ASN1_STRING_set() allocated 'len + 1' bytes. */    newlen = t->length + 2 + 1;    str = (char *)ret->data;    /* Work out the century and prepend */    if (t->data[0] >= '5')        BUF_strlcpy(str, "19", newlen);    else        BUF_strlcpy(str, "20", newlen);    BUF_strlcat(str, (char *)t->data, newlen);    return ret;}
开发者ID:NickAger,项目名称:elm-slider,代码行数:42,


示例7: strlen

static ASN1_INTEGER *x509_load_serial(char *CAfile, char *serialfile,                                      int create){    char *buf = NULL, *p;    ASN1_INTEGER *bs = NULL;    BIGNUM *serial = NULL;    size_t len;    len = ((serialfile == NULL)           ? (strlen(CAfile) + strlen(POSTFIX) + 1)           : (strlen(serialfile))) + 1;    buf = app_malloc(len, "serial# buffer");    if (serialfile == NULL) {        BUF_strlcpy(buf, CAfile, len);        for (p = buf; *p; p++)            if (*p == '.') {                *p = '/0';                break;            }        BUF_strlcat(buf, POSTFIX, len);    } else        BUF_strlcpy(buf, serialfile, len);    serial = load_serial(buf, create, NULL);    if (serial == NULL)        goto end;    if (!BN_add_word(serial, 1)) {        BIO_printf(bio_err, "add_word failure/n");        goto end;    }    if (!save_serial(buf, NULL, serial, &bs))        goto end; end:    OPENSSL_free(buf);    BN_free(serial);    return bs;}
开发者ID:eight-pack-abdominals,项目名称:openssl,代码行数:40,


示例8: BUFerr

char *BUF_strndup(const char *str, size_t siz)	{	char *ret;	if (str == NULL) return(NULL);	ret=OPENSSL_malloc(siz+1);	if (ret == NULL) 		{		BUFerr(BUF_F_BUF_STRNDUP,ERR_R_MALLOC_FAILURE);		return(NULL);		}	BUF_strlcpy(ret,str,siz+1);	return(ret);	}
开发者ID:asgene,项目名称:CryptoWrapperForCCode,代码行数:15,


示例9: do_accept

static int do_accept(int acc_sock, int *sock, char **host)	{	int ret;	struct hostent *h1,*h2;	static struct sockaddr_in from;	int len;/*	struct linger ling; */	if (!ssl_sock_init()) return(0);#ifndef OPENSSL_SYS_WINDOWSredoit:#endif	memset((char *)&from,0,sizeof(from));	len=sizeof(from);	/* Note: under VMS with SOCKETSHR the fourth parameter is currently	 * of type (int *) whereas under other systems it is (void *) if	 * you don't have a cast it will choke the compiler: if you do	 * have a cast then you can either go for (int *) or (void *).	 */	ret=accept(acc_sock,(struct sockaddr *)&from,(void *)&len);	if (ret == INVALID_SOCKET)		{#if defined(OPENSSL_SYS_WINDOWS) || (defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK))		int i;		i=WSAGetLastError();		BIO_printf(bio_err,"accept error %d/n",i);#else		if (errno == EINTR)			{			/*check_timeout(); */			goto redoit;			}		fprintf(stderr,"errno=%d ",errno);		perror("accept");#endif		return(0);		}/*	ling.l_onoff=1;	ling.l_linger=0;	i=setsockopt(ret,SOL_SOCKET,SO_LINGER,(char *)&ling,sizeof(ling));	if (i < 0) { perror("linger"); return(0); }	i=0;	i=setsockopt(ret,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i));	if (i < 0) { perror("keepalive"); return(0); }*/	if (host == NULL) goto end;#ifndef BIT_FIELD_LIMITS	/* I should use WSAAsyncGetHostByName() under windows */	h1=gethostbyaddr((char *)&from.sin_addr.s_addr,		sizeof(from.sin_addr.s_addr),AF_INET);#else	h1=gethostbyaddr((char *)&from.sin_addr,		sizeof(struct in_addr),AF_INET);#endif	if (h1 == NULL)		{		BIO_printf(bio_err,"bad gethostbyaddr/n");		*host=NULL;		/* return(0); */		}	else		{		if ((*host=(char *)OPENSSL_malloc(strlen(h1->h_name)+1)) == NULL)			{			perror("OPENSSL_malloc");			closesocket(ret);			return(0);			}		BUF_strlcpy(*host,h1->h_name,strlen(h1->h_name)+1);		h2=GetHostByName(*host);		if (h2 == NULL)			{			BIO_printf(bio_err,"gethostbyname failure/n");			closesocket(ret);			return(0);			}		if (h2->h_addrtype != AF_INET)			{			BIO_printf(bio_err,"gethostbyname addr is not AF_INET/n");			closesocket(ret);			return(0);			}		}end:	*sock=ret;	return(1);	}
开发者ID:0x0B501E7E,项目名称:platform_external_openssl,代码行数:93,


示例10: MAIN

//.........这里部分代码省略.........    	}#ifdef CRYPTO_MDEBUG	CRYPTO_pop_info();	CRYPTO_push_info("building bags");#endif	/* We now have loads of certificates: include them all */	for(i = 0; i < sk_X509_num(certs); i++) {		X509 *cert = NULL;		cert = sk_X509_value(certs, i);		bag = PKCS12_x5092certbag(cert);		/* If it matches private key set id */		if(cert == ucert) {			if(name) PKCS12_add_friendlyname(bag, name, -1);			PKCS12_add_localkeyid(bag, keyid, keyidlen);		} else if((catmp = sk_shift(canames))) 				PKCS12_add_friendlyname(bag, catmp, -1);		sk_PKCS12_SAFEBAG_push(bags, bag);	}	sk_X509_pop_free(certs, X509_free);	certs = NULL;#ifdef CRYPTO_MDEBUG	CRYPTO_pop_info();	CRYPTO_push_info("encrypting bags");#endif	if(!noprompt &&		EVP_read_pw_string(pass, sizeof pass, "Enter Export Password:", 1)) {	    BIO_printf (bio_err, "Can't read Password/n");	    goto export_end;        }	if (!twopass) BUF_strlcpy(macpass, pass, sizeof macpass);	/* Turn certbags into encrypted authsafe */	authsafe = PKCS12_pack_p7encdata(cert_pbe, cpass, -1, NULL, 0,								 iter, bags);	sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);	bags = NULL;	if (!authsafe) {		ERR_print_errors (bio_err);		goto export_end;	}	safes = sk_PKCS7_new_null ();	sk_PKCS7_push (safes, authsafe);#ifdef CRYPTO_MDEBUG	CRYPTO_pop_info();	CRYPTO_push_info("building shrouded key bag");#endif	/* Make a shrouded key bag */	p8 = EVP_PKEY2PKCS8 (key);	if(keytype) PKCS8_add_keyusage(p8, keytype);	bag = PKCS12_MAKE_SHKEYBAG(key_pbe, cpass, -1, NULL, 0, iter, p8);	PKCS8_PRIV_KEY_INFO_free(p8);	p8 = NULL;        if (name) PKCS12_add_friendlyname (bag, name, -1);	if(csp_name) PKCS12_add_CSPName_asc(bag, csp_name, -1);	PKCS12_add_localkeyid (bag, keyid, keyidlen);	bags = sk_PKCS12_SAFEBAG_new_null();	sk_PKCS12_SAFEBAG_push (bags, bag);#ifdef CRYPTO_MDEBUG
开发者ID:FelipeFernandes1988,项目名称:Alice-1121-Modem,代码行数:67,


示例11: BIO_dump_indent_cb

int BIO_dump_indent_cb(int (*cb)(const void *data, size_t len, void *u),	void *u, const char *s, int len, int indent)	{	int ret=0;	char buf[288+1],tmp[20],str[128+1];	int i,j,rows,trc;	unsigned char ch;	int dump_width;	trc=0;#ifdef TRUNCATE	for(; (len > 0) && ((s[len-1] == ' ') || (s[len-1] == '/0')); len--)		trc++;#endif	if (indent < 0)		indent = 0;	if (indent)		{		if (indent > 128) indent=128;		memset(str,' ',indent);		}	str[indent]='/0';	dump_width=DUMP_WIDTH_LESS_INDENT(indent);	rows=(len/dump_width);	if ((rows*dump_width)<len)		rows++;	for(i=0;i<rows;i++)		{		buf[0]='/0';	/* start with empty string */		BUF_strlcpy(buf,str,sizeof buf);		BIO_snprintf(tmp,sizeof tmp,"%04x - ",i*dump_width);		BUF_strlcat(buf,tmp,sizeof buf);		for(j=0;j<dump_width;j++)			{			if (((i*dump_width)+j)>=len)				{				BUF_strlcat(buf,"   ",sizeof buf);				}			else				{				ch=((unsigned char)*(s+i*dump_width+j)) & 0xff;				BIO_snprintf(tmp,sizeof tmp,"%02x%c",ch,					j==7?'-':' ');				BUF_strlcat(buf,tmp,sizeof buf);				}			}		BUF_strlcat(buf,"  ",sizeof buf);		for(j=0;j<dump_width;j++)			{			if (((i*dump_width)+j)>=len)				break;			ch=((unsigned char)*(s+i*dump_width+j)) & 0xff;#ifndef CHARSET_EBCDIC			BIO_snprintf(tmp,sizeof tmp,"%c",				((ch>=' ')&&(ch<='~'))?ch:'.');#else			BIO_snprintf(tmp,sizeof tmp,"%c",				((ch>=os_toascii[' '])&&(ch<=os_toascii['~']))				? os_toebcdic[ch]				: '.');#endif			BUF_strlcat(buf,tmp,sizeof buf);			}		BUF_strlcat(buf,"/n",sizeof buf);		/* if this is the last call then update the ddt_dump thing so		 * that we will move the selection point in the debug window		 */		ret+=cb((void *)buf,strlen(buf),u);		}#ifdef TRUNCATE	if (trc > 0)		{		BIO_snprintf(buf,sizeof buf,"%s%04x - <SPACES/NULS>/n",str,			len+trc);		ret+=cb((void *)buf,strlen(buf),u);		}#endif	return(ret);	}
开发者ID:millken,项目名称:zhuxianB30,代码行数:82,


示例12: OBJ_obj2txt

int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name){  int i,idx=0,n=0,len,nid;  unsigned long l;  unsigned char *p;  const char *s;  char tbuf[DECIMAL_SIZE(i)+DECIMAL_SIZE(l)+2];  if (buf_len <= 0) return(0);  if ((a == NULL) || (a->data == NULL)) {    buf[0]='/0';    return(0);  }  if (no_name || (nid=OBJ_obj2nid(a)) == NID_undef) {    len=a->length;    p=a->data;    idx=0;    l=0;    while (idx < a->length) {      l|=(p[idx]&0x7f);      if (!(p[idx] & 0x80)) break;      l<<=7L;      idx++;    }    idx++;    i=(int)(l/40);    if (i > 2) i=2;    l-=(long)(i*40);    BIO_snprintf(tbuf,sizeof tbuf,"%d.%lu",i,l);    i=strlen(tbuf);    BUF_strlcpy(buf,tbuf,buf_len);    buf_len-=i;    buf+=i;    n+=i;    l=0;    for (; idx<len; idx++) {      l|=p[idx]&0x7f;      if (!(p[idx] & 0x80)) {        BIO_snprintf(tbuf,sizeof tbuf,".%lu",l);        i=strlen(tbuf);        if (buf_len > 0)          BUF_strlcpy(buf,tbuf,buf_len);        buf_len-=i;        buf+=i;        n+=i;        l=0;      }      l<<=7L;    }  } else {    s=OBJ_nid2ln(nid);    if (s == NULL)      s=OBJ_nid2sn(nid);    BUF_strlcpy(buf,s,buf_len);    n=strlen(s);  }  return(n);}
开发者ID:yyyyyao,项目名称:Slicer3-lib-mirrors,代码行数:63,


示例13: file_ctrl

static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr){    long ret=1;    FILE *fp=(FILE *)b->ptr;    FILE **fpp;    char p[4];    switch (cmd)    {    case BIO_C_FILE_SEEK:    case BIO_CTRL_RESET:        ret=(long)fseek(fp,num,0);        break;    case BIO_CTRL_EOF:        ret=(long)feof(fp);        break;    case BIO_C_FILE_TELL:    case BIO_CTRL_INFO:        ret=ftell(fp);        break;    case BIO_C_SET_FILE_PTR:        file_free(b);        b->shutdown=(int)num&BIO_CLOSE;        b->ptr=(char *)ptr;        b->init=1;#if defined(OPENSSL_SYS_WINDOWS)        if (num & BIO_FP_TEXT)            _setmode(fileno((FILE *)ptr),_O_TEXT);        else            _setmode(fileno((FILE *)ptr),_O_BINARY);#elif defined(OPENSSL_SYS_MSDOS)        {            int fd = fileno((FILE*)ptr);            /* Set correct text/binary mode */            if (num & BIO_FP_TEXT)                _setmode(fd,_O_TEXT);            /* Dangerous to set stdin/stdout to raw (unless redirected) */            else            {                if (fd == STDIN_FILENO || fd == STDOUT_FILENO)                {                    if (isatty(fd) <= 0)                        _setmode(fd,_O_BINARY);                }                else                    _setmode(fd,_O_BINARY);            }        }#elif defined(OPENSSL_SYS_OS2)        if (num & BIO_FP_TEXT)            setmode(fileno((FILE *)ptr), O_TEXT);        else            setmode(fileno((FILE *)ptr), O_BINARY);#endif        break;    case BIO_C_SET_FILENAME:        file_free(b);        b->shutdown=(int)num&BIO_CLOSE;        if (num & BIO_FP_APPEND)        {            if (num & BIO_FP_READ)                BUF_strlcpy(p,"a+",sizeof p);            else	BUF_strlcpy(p,"a",sizeof p);        }        else if ((num & BIO_FP_READ) && (num & BIO_FP_WRITE))            BUF_strlcpy(p,"r+",sizeof p);        else if (num & BIO_FP_WRITE)            BUF_strlcpy(p,"w",sizeof p);        else if (num & BIO_FP_READ)            BUF_strlcpy(p,"r",sizeof p);        else        {            BIOerr(BIO_F_FILE_CTRL,BIO_R_BAD_FOPEN_MODE);            ret=0;            break;        }#if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_OS2)        if (!(num & BIO_FP_TEXT))            strcat(p,"b");        else            strcat(p,"t");#endif        fp=fopen(ptr,p);        if (fp == NULL)        {            SYSerr(SYS_F_FOPEN,get_last_sys_error());            ERR_add_error_data(5,"fopen('",ptr,"','",p,"')");            BIOerr(BIO_F_FILE_CTRL,ERR_R_SYS_LIB);            ret=0;            break;        }        b->ptr=(char *)fp;        b->init=1;        break;    case BIO_C_GET_FILE_PTR:        /* the ptr parameter is actually a FILE ** in this case. */        if (ptr != NULL)        {            fpp=(FILE **)ptr;            *fpp=(FILE *)b->ptr;//.........这里部分代码省略.........
开发者ID:kevin-longkai,项目名称:edimax-br-6528n,代码行数:101,


示例14: UI_set_result

int UI_set_result(UI *ui, UI_STRING *uis, const char *result){    int l = strlen(result);    ui->flags &= ~UI_FLAG_REDOABLE;    if (!uis)        return -1;    switch (uis->type) {    case UIT_PROMPT:    case UIT_VERIFY:        {            char number1[DECIMAL_SIZE(uis->_.string_data.result_minsize) + 1];            char number2[DECIMAL_SIZE(uis->_.string_data.result_maxsize) + 1];            BIO_snprintf(number1, sizeof(number1), "%d",                         uis->_.string_data.result_minsize);            BIO_snprintf(number2, sizeof(number2), "%d",                         uis->_.string_data.result_maxsize);            if (l < uis->_.string_data.result_minsize) {                ui->flags |= UI_FLAG_REDOABLE;                UIerr(UI_F_UI_SET_RESULT, UI_R_RESULT_TOO_SMALL);                ERR_add_error_data(5, "You must type in ",                                   number1, " to ", number2, " characters");                return -1;            }            if (l > uis->_.string_data.result_maxsize) {                ui->flags |= UI_FLAG_REDOABLE;                UIerr(UI_F_UI_SET_RESULT, UI_R_RESULT_TOO_LARGE);                ERR_add_error_data(5, "You must type in ",                                   number1, " to ", number2, " characters");                return -1;            }        }        if (!uis->result_buf) {            UIerr(UI_F_UI_SET_RESULT, UI_R_NO_RESULT_BUFFER);            return -1;        }        BUF_strlcpy(uis->result_buf, result,                    uis->_.string_data.result_maxsize + 1);        break;    case UIT_BOOLEAN:        {            const char *p;            if (!uis->result_buf) {                UIerr(UI_F_UI_SET_RESULT, UI_R_NO_RESULT_BUFFER);                return -1;            }            uis->result_buf[0] = '/0';            for (p = result; *p; p++) {                if (strchr(uis->_.boolean_data.ok_chars, *p)) {                    uis->result_buf[0] = uis->_.boolean_data.ok_chars[0];                    break;                }                if (strchr(uis->_.boolean_data.cancel_chars, *p)) {                    uis->result_buf[0] = uis->_.boolean_data.cancel_chars[0];                    break;                }            }        }    default:        break;    }    return 0;}
开发者ID:crypto-org-ua,项目名称:openssl-ua,代码行数:70,


示例15: srp_main

//.........这里部分代码省略.........    if ((mode == OPT_DELETE || mode == OPT_MODIFY || mode == OPT_ADD)        && argc < 1) {        BIO_printf(bio_err,                   "Need at least one user for options -add, -delete, -modify. /n");        goto opthelp;    }    if ((passin || passout) && argc != 1) {        BIO_printf(bio_err,                   "-passin, -passout arguments only valid with one user./n");        goto opthelp;    }    if (!app_passwd(passinarg, passoutarg, &passin, &passout)) {        BIO_printf(bio_err, "Error getting passwords/n");        goto end;    }    if (!dbfile) {        /*****************************************************************/        tofree = NULL;        if (configfile == NULL)            configfile = getenv("OPENSSL_CONF");        if (configfile == NULL)            configfile = getenv("SSLEAY_CONF");        if (configfile == NULL) {            const char *s = X509_get_default_cert_area();            size_t len = strlen(s) + 1 + sizeof(CONFIG_FILE);            tofree = app_malloc(len, "config filename space");# ifdef OPENSSL_SYS_VMS            strcpy(tofree, s);# else            BUF_strlcpy(tofree, s, len);            BUF_strlcat(tofree, "/", len);# endif            BUF_strlcat(tofree, CONFIG_FILE, len);            configfile = tofree;        }        if (verbose)            BIO_printf(bio_err, "Using configuration from %s/n", configfile);        conf = NCONF_new(NULL);        if (NCONF_load(conf, configfile, &errorline) <= 0) {            if (errorline <= 0)                BIO_printf(bio_err, "error loading the config file '%s'/n",                           configfile);            else                BIO_printf(bio_err, "error on line %ld of config file '%s'/n",                           errorline, configfile);            goto end;        }        OPENSSL_free(tofree);        tofree = NULL;        /* Lets get the config section we are using */        if (section == NULL) {            if (verbose)                BIO_printf(bio_err,                           "trying to read " ENV_DEFAULT_SRP                           " in /" BASE_SECTION /"/n");            section = NCONF_get_string(conf, BASE_SECTION, ENV_DEFAULT_SRP);            if (section == NULL) {                lookup_fail(BASE_SECTION, ENV_DEFAULT_SRP);                goto end;
开发者ID:Chatlanen,项目名称:openssl,代码行数:67,


示例16: def_load_bio

static int def_load_bio(CONF *conf, BIO *in, long *line)	{/* The macro BUFSIZE conflicts with a system macro in VxWorks */#define CONFBUFSIZE	512	int bufnum=0,i,ii;	BUF_MEM *buff=NULL;	char *s,*p,*end;	int again;	long eline=0;	char btmp[DECIMAL_SIZE(eline)+1];	CONF_VALUE *v=NULL,*tv;	CONF_VALUE *sv=NULL;	char *section=NULL,*buf;	STACK_OF(CONF_VALUE) *section_sk=NULL,*ts __UNUSED;	char *start,*psection,*pname;	void *h = (void *)(conf->data);	if ((buff=BUF_MEM_new()) == NULL)		{		CONFerr(CONF_F_DEF_LOAD_BIO,ERR_R_BUF_LIB);		goto err;		}	section=(char *)OPENSSL_malloc(10);	if (section == NULL)		{		CONFerr(CONF_F_DEF_LOAD_BIO,ERR_R_MALLOC_FAILURE);		goto err;		}	BUF_strlcpy(section,"default",10);	if (_CONF_new_data(conf) == 0)		{		CONFerr(CONF_F_DEF_LOAD_BIO,ERR_R_MALLOC_FAILURE);		goto err;		}	sv=_CONF_new_section(conf,section);	if (sv == NULL)		{		CONFerr(CONF_F_DEF_LOAD_BIO,					CONF_R_UNABLE_TO_CREATE_NEW_SECTION);		goto err;		}	section_sk=(STACK_OF(CONF_VALUE) *)sv->value;	bufnum=0;	again=0;	for (;;)		{		if (!BUF_MEM_grow(buff,bufnum+CONFBUFSIZE))			{			CONFerr(CONF_F_DEF_LOAD_BIO,ERR_R_BUF_LIB);			goto err;			}		p= &(buff->data[bufnum]);		*p='/0';		BIO_gets(in, p, CONFBUFSIZE-1);		p[CONFBUFSIZE-1]='/0';		ii=i=strlen(p);		if (i == 0 && !again) break;		again=0;		while (i > 0)			{			if ((p[i-1] != '/r') && (p[i-1] != '/n'))				break;			else				i--;			}		/* we removed some trailing stuff so there is a new		 * line on the end. */		if (ii && i == ii)			again=1; /* long line */		else			{			p[i]='/0';			eline++; /* another input line */			}		/* we now have a line with trailing /r/n removed */		/* i is the number of bytes */		bufnum+=i;		v=NULL;		/* check for line continuation */		if (bufnum >= 1)			{			/* If we have bytes and the last char '//' and			 * second last char is not '//' */			p= &(buff->data[bufnum-1]);			if (IS_ESC(conf,p[0]) &&				((bufnum <= 1) || !IS_ESC(conf,p[-1])))				{				bufnum--;				again=1;				}			}		if (again) continue;		bufnum=0;//.........这里部分代码省略.........
开发者ID:grub4android-g3,项目名称:lk,代码行数:101,


示例17: file_ctrl

static long file_ctrl(BIO *b, int cmd, long num, void *ptr) {  long ret = 1;  FILE *fp = (FILE *)b->ptr;  FILE **fpp;  char p[4];  switch (cmd) {    case BIO_CTRL_RESET:      num = 0;    case BIO_C_FILE_SEEK:      ret = (long)fseek(fp, num, 0);      break;    case BIO_CTRL_EOF:      ret = (long)feof(fp);      break;    case BIO_C_FILE_TELL:    case BIO_CTRL_INFO:      ret = ftell(fp);      break;    case BIO_C_SET_FILE_PTR:      file_free(b);      b->shutdown = (int)num & BIO_CLOSE;      b->ptr = ptr;      b->init = 1;      break;    case BIO_C_SET_FILENAME:      file_free(b);      b->shutdown = (int)num & BIO_CLOSE;      if (num & BIO_FP_APPEND) {        if (num & BIO_FP_READ) {          BUF_strlcpy(p, "a+", sizeof(p));        } else {          BUF_strlcpy(p, "a", sizeof(p));        }      } else if ((num & BIO_FP_READ) && (num & BIO_FP_WRITE)) {        BUF_strlcpy(p, "r+", sizeof(p));      } else if (num & BIO_FP_WRITE) {        BUF_strlcpy(p, "w", sizeof(p));      } else if (num & BIO_FP_READ) {        BUF_strlcpy(p, "r", sizeof(p));      } else {        OPENSSL_PUT_ERROR(BIO, BIO_R_BAD_FOPEN_MODE);        ret = 0;        break;      }      fp = fopen(ptr, p);      if (fp == NULL) {        OPENSSL_PUT_SYSTEM_ERROR();        ERR_add_error_data(5, "fopen('", ptr, "','", p, "')");        OPENSSL_PUT_ERROR(BIO, ERR_R_SYS_LIB);        ret = 0;        break;      }      b->ptr = fp;      b->init = 1;      break;    case BIO_C_GET_FILE_PTR:      /* the ptr parameter is actually a FILE ** in this case. */      if (ptr != NULL) {        fpp = (FILE **)ptr;        *fpp = (FILE *)b->ptr;      }      break;    case BIO_CTRL_GET_CLOSE:      ret = (long)b->shutdown;      break;    case BIO_CTRL_SET_CLOSE:      b->shutdown = (int)num;      break;    case BIO_CTRL_FLUSH:      ret = 0 == fflush((FILE *)b->ptr);      break;    case BIO_CTRL_WPENDING:    case BIO_CTRL_PENDING:    default:      ret = 0;      break;  }  return ret;}
开发者ID:Cyril2004,项目名称:proto-quic,代码行数:80,


示例18: if

char *X509_NAME_oneline(X509_NAME *a, char *buf, int len){    X509_NAME_ENTRY *ne;    size_t i;    int n, lold, l, l1, l2, num, j, type;    const char *s;    char *p;    unsigned char *q;    BUF_MEM *b = NULL;    static const char hex[17] = "0123456789ABCDEF";    int gs_doit[4];    char tmp_buf[80];    if (buf == NULL) {        if ((b = BUF_MEM_new()) == NULL)            goto err;        if (!BUF_MEM_grow(b, 200))            goto err;        b->data[0] = '/0';        len = 200;    } else if (len <= 0) {        return NULL;    }    if (a == NULL) {        if (b) {            buf = b->data;            OPENSSL_free(b);        }        BUF_strlcpy(buf, "NO X509_NAME", len);        return buf;    }    len--;                      /* space for '/0' */    l = 0;    for (i = 0; i < sk_X509_NAME_ENTRY_num(a->entries); i++) {        ne = sk_X509_NAME_ENTRY_value(a->entries, i);        n = OBJ_obj2nid(ne->object);        if ((n == NID_undef) || ((s = OBJ_nid2sn(n)) == NULL)) {            i2t_ASN1_OBJECT(tmp_buf, sizeof(tmp_buf), ne->object);            s = tmp_buf;        }        l1 = strlen(s);        type = ne->value->type;        num = ne->value->length;        if (num > NAME_ONELINE_MAX) {            OPENSSL_PUT_ERROR(X509, X509_R_NAME_TOO_LONG);            goto end;        }        q = ne->value->data;        if ((type == V_ASN1_GENERALSTRING) && ((num % 4) == 0)) {            gs_doit[0] = gs_doit[1] = gs_doit[2] = gs_doit[3] = 0;            for (j = 0; j < num; j++)                if (q[j] != 0)                    gs_doit[j & 3] = 1;            if (gs_doit[0] | gs_doit[1] | gs_doit[2])                gs_doit[0] = gs_doit[1] = gs_doit[2] = gs_doit[3] = 1;            else {                gs_doit[0] = gs_doit[1] = gs_doit[2] = 0;                gs_doit[3] = 1;            }        } else            gs_doit[0] = gs_doit[1] = gs_doit[2] = gs_doit[3] = 1;        for (l2 = j = 0; j < num; j++) {            if (!gs_doit[j & 3])                continue;            l2++;            if ((q[j] < ' ') || (q[j] > '~'))                l2 += 3;        }        lold = l;        l += 1 + l1 + 1 + l2;        if (l > NAME_ONELINE_MAX) {            OPENSSL_PUT_ERROR(X509, X509_R_NAME_TOO_LONG);            goto end;        }        if (b != NULL) {            if (!BUF_MEM_grow(b, l + 1))                goto err;            p = &(b->data[lold]);        } else if (l > len) {            break;        } else            p = &(buf[lold]);        *(p++) = '/';        OPENSSL_memcpy(p, s, (unsigned int)l1);        p += l1;        *(p++) = '=';        q = ne->value->data;        for (j = 0; j < num; j++) {            if (!gs_doit[j & 3])                continue;            n = q[j];            if ((n < ' ') || (n > '~')) {//.........这里部分代码省略.........
开发者ID:MateusDeSousa,项目名称:FiqueRico,代码行数:101,


示例19: RSA_print

int RSA_print(BIO *bp, const RSA *x, int off)	{	char str[128];	const char *s;	unsigned char *m=NULL;	int ret=0;	size_t buf_len=0, i;	if (x->n)		buf_len = (size_t)BN_num_bytes(x->n);	if (x->e)		if (buf_len < (i = (size_t)BN_num_bytes(x->e)))			buf_len = i;	if (x->d)		if (buf_len < (i = (size_t)BN_num_bytes(x->d)))			buf_len = i;	if (x->p)		if (buf_len < (i = (size_t)BN_num_bytes(x->p)))			buf_len = i;	if (x->q)		if (buf_len < (i = (size_t)BN_num_bytes(x->q)))			buf_len = i;	if (x->dmp1)		if (buf_len < (i = (size_t)BN_num_bytes(x->dmp1)))			buf_len = i;	if (x->dmq1)		if (buf_len < (i = (size_t)BN_num_bytes(x->dmq1)))			buf_len = i;	if (x->iqmp)		if (buf_len < (i = (size_t)BN_num_bytes(x->iqmp)))			buf_len = i;	m=(unsigned char *)OPENSSL_malloc(buf_len+10);	if (m == NULL)		{		RSAerr(RSA_F_RSA_PRINT,ERR_R_MALLOC_FAILURE);		goto err;		}	if (x->d != NULL)		{		if(!BIO_indent(bp,off,128))		   goto err;		if (BIO_printf(bp,"Private-Key: (%d bit)/n",BN_num_bits(x->n))			<= 0) goto err;		}	if (x->d == NULL)		BIO_snprintf(str,sizeof str,"Modulus (%d bit):",BN_num_bits(x->n));	else		BUF_strlcpy(str,"modulus:",sizeof str);	if (!print(bp,str,x->n,m,off)) goto err;	s=(x->d == NULL)?"Exponent:":"publicExponent:";	if (!print(bp,s,x->e,m,off)) goto err;	if (!print(bp,"privateExponent:",x->d,m,off)) goto err;	if (!print(bp,"prime1:",x->p,m,off)) goto err;	if (!print(bp,"prime2:",x->q,m,off)) goto err;	if (!print(bp,"exponent1:",x->dmp1,m,off)) goto err;	if (!print(bp,"exponent2:",x->dmq1,m,off)) goto err;	if (!print(bp,"coefficient:",x->iqmp,m,off)) goto err;	ret=1;err:	if (m != NULL) OPENSSL_free(m);	return(ret);	}
开发者ID:S0043640wipro,项目名称:RiCRiPInt,代码行数:65,


示例20: pkcs12_main

//.........这里部分代码省略.........                sk_X509_free(chain2);            } else {                if (vret >= 0)                    BIO_printf(bio_err, "Error %s getting chain./n",                               X509_verify_cert_error_string(vret));                else                    ERR_print_errors(bio_err);                goto export_end;            }        }        /* Add any CA names */        for (i = 0; i < sk_OPENSSL_STRING_num(canames); i++) {            catmp = (unsigned char *)sk_OPENSSL_STRING_value(canames, i);            X509_alias_set1(sk_X509_value(certs, i), catmp, -1);        }        if (csp_name && key)            EVP_PKEY_add1_attr_by_NID(key, NID_ms_csp_name,                                      MBSTRING_ASC, (unsigned char *)csp_name,                                      -1);        if (add_lmk && key)            EVP_PKEY_add1_attr_by_NID(key, NID_LocalKeySet, 0, NULL, -1);        if (!noprompt &&            EVP_read_pw_string(pass, sizeof pass, "Enter Export Password:",                               1)) {            BIO_printf(bio_err, "Can't read Password/n");            goto export_end;        }        if (!twopass)            BUF_strlcpy(macpass, pass, sizeof macpass);        p12 = PKCS12_create(cpass, name, key, ucert, certs,                            key_pbe, cert_pbe, iter, -1, keytype);        if (!p12) {            ERR_print_errors(bio_err);            goto export_end;        }        if (macalg) {            if (!opt_md(macalg, &macmd))                goto opthelp;        }        if (maciter != -1)            PKCS12_set_mac(p12, mpass, -1, NULL, 0, maciter, macmd);        i2d_PKCS12_bio(out, p12);        ret = 0; export_end:        EVP_PKEY_free(key);        if (certs)            sk_X509_pop_free(certs, X509_free);        if (ucert)            X509_free(ucert);        goto end;    }
开发者ID:VaryJames,项目名称:Sample,代码行数:67,


示例21: STACK_OF

//.........这里部分代码省略.........      plen = param->value.sequence->length;      if (!(eckey = d2i_ECParameters(NULL, &cp, plen)))      {        EVPerr(EVP_F_EVP_PKCS82PKEY,          EVP_R_DECODE_ERROR);        goto ecerr;      }    }    else    {      EC_GROUP *group;      cp = p = param->value.object->data;      plen = param->value.object->length;      /* type == V_ASN1_OBJECT => the parameters are given       * by an asn1 OID       */      if ((eckey = EC_KEY_new()) == NULL)      {        EVPerr(EVP_F_EVP_PKCS82PKEY,          ERR_R_MALLOC_FAILURE);        goto ecerr;      }      group = EC_GROUP_new_by_curve_name(OBJ_obj2nid(a->parameter->value.object));      if (group == NULL)        goto ecerr;      EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE);      if (EC_KEY_set_group(eckey, group) == 0)        goto ecerr;      EC_GROUP_free(group);    }    /* We have parameters now set private key */    if (!d2i_ECPrivateKey(&eckey, &p_tmp, pkeylen))    {      EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);      goto ecerr;    }    /* calculate public key (if necessary) */    if (EC_KEY_get0_public_key(eckey) == NULL)    {      const BIGNUM *priv_key;      const EC_GROUP *group;      EC_POINT *pub_key;      /* the public key was not included in the SEC1 private       * key => calculate the public key */      group   = EC_KEY_get0_group(eckey);      pub_key = EC_POINT_new(group);      if (pub_key == NULL)      {        EVPerr(EVP_F_EVP_PKCS82PKEY, ERR_R_EC_LIB);        goto ecerr;      }      if (!EC_POINT_copy(pub_key, EC_GROUP_get0_generator(group)))      {        EC_POINT_free(pub_key);        EVPerr(EVP_F_EVP_PKCS82PKEY, ERR_R_EC_LIB);        goto ecerr;      }      priv_key = EC_KEY_get0_private_key(eckey);      if (!EC_POINT_mul(group, pub_key, priv_key, NULL, NULL, ctx))      {        EC_POINT_free(pub_key);        EVPerr(EVP_F_EVP_PKCS82PKEY, ERR_R_EC_LIB);        goto ecerr;      }      if (EC_KEY_set_public_key(eckey, pub_key) == 0)      {        EC_POINT_free(pub_key);        EVPerr(EVP_F_EVP_PKCS82PKEY, ERR_R_EC_LIB);        goto ecerr;      }      EC_POINT_free(pub_key);    }    EVP_PKEY_assign_EC_KEY(pkey, eckey);    if (ctx)      BN_CTX_free(ctx);    break;ecerr:    if (ctx)      BN_CTX_free(ctx);    if (eckey)      EC_KEY_free(eckey);    if (pkey)      EVP_PKEY_free(pkey);    return NULL;#endif    default:    EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);    if (!a->algorithm) BUF_strlcpy (obj_tmp, "NULL", sizeof obj_tmp);    else i2t_ASN1_OBJECT(obj_tmp, 80, a->algorithm);    ERR_add_error_data(2, "TYPE=", obj_tmp);    EVP_PKEY_free (pkey);    return NULL;  }  return pkey;}
开发者ID:yyyyyao,项目名称:Slicer3-lib-mirrors,代码行数:101,


示例22: def_load_bio

static int def_load_bio(CONF *conf, BIO *in, long *line){/* The macro BUFSIZE conflicts with a system macro in VxWorks */#define CONFBUFSIZE     512    int bufnum = 0, i, ii;    BUF_MEM *buff = NULL;    char *s, *p, *end;    int again;    long eline = 0;    char btmp[DECIMAL_SIZE(eline) + 1];    CONF_VALUE *v = NULL, *tv;    CONF_VALUE *sv = NULL;    char *section = NULL, *buf;    char *start, *psection, *pname;    void *h = (void *)(conf->data);    if ((buff = BUF_MEM_new()) == NULL) {        CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_BUF_LIB);        goto err;    }    section = (char *)OPENSSL_malloc(10);    if (section == NULL) {        CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);        goto err;    }    BUF_strlcpy(section, "default", 10);    if (_CONF_new_data(conf) == 0) {        CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_MALLOC_FAILURE);        goto err;    }    sv = _CONF_new_section(conf, section);    if (sv == NULL) {        CONFerr(CONF_F_DEF_LOAD_BIO, CONF_R_UNABLE_TO_CREATE_NEW_SECTION);        goto err;    }    bufnum = 0;    again = 0;    for (;;) {        if (!BUF_MEM_grow(buff, bufnum + CONFBUFSIZE)) {            CONFerr(CONF_F_DEF_LOAD_BIO, ERR_R_BUF_LIB);            goto err;        }        p = &(buff->data[bufnum]);        *p = '/0';        BIO_gets(in, p, CONFBUFSIZE - 1);        p[CONFBUFSIZE - 1] = '/0';        ii = i = sgx_strlen(p);        if (i == 0 && !again)            break;        again = 0;        while (i > 0) {            if ((p[i - 1] != '/r') && (p[i - 1] != '/n'))                break;            else                i--;        }        /*         * we removed some trailing stuff so there is a new line on the end.         */        if (ii && i == ii)            again = 1;          /* long line */        else {            p[i] = '/0';            eline++;            /* another input line */        }        /* we now have a line with trailing /r/n removed */        /* i is the number of bytes */        bufnum += i;        v = NULL;        /* check for line continuation */        if (bufnum >= 1) {            /*             * If we have bytes and the last char '//' and second last char             * is not '//'             */            p = &(buff->data[bufnum - 1]);            if (IS_ESC(conf, p[0]) && ((bufnum <= 1) || !IS_ESC(conf, p[-1]))) {                bufnum--;                again = 1;            }        }        if (again)            continue;        bufnum = 0;        buf = buff->data;        clear_comments(conf, buf);        s = eat_ws(conf, buf);        if (IS_EOF(conf, *s))            continue;           /* blank line */        if (*s == '[') {            char *ss;//.........这里部分代码省略.........
开发者ID:johnjohnsp1,项目名称:opensgx,代码行数:101,


示例23: file_ctrl

static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr){    long ret = 1;    FILE *fp = (FILE *)b->ptr;    FILE **fpp;    char p[4];    switch (cmd) {    case BIO_C_FILE_SEEK:    case BIO_CTRL_RESET:        if (b->flags & BIO_FLAGS_UPLINK)            ret = (long)UP_fseek(b->ptr, num, 0);        else            ret = (long)fseek(fp, num, 0);        break;    case BIO_CTRL_EOF:        if (b->flags & BIO_FLAGS_UPLINK)            ret = (long)UP_feof(fp);        else            ret = (long)feof(fp);        break;    case BIO_C_FILE_TELL:    case BIO_CTRL_INFO:        if (b->flags & BIO_FLAGS_UPLINK)            ret = UP_ftell(b->ptr);        else            ret = ftell(fp);        break;    case BIO_C_SET_FILE_PTR:        file_free(b);        b->shutdown = (int)num & BIO_CLOSE;        b->ptr = ptr;        b->init = 1;#  if BIO_FLAGS_UPLINK!=0#   if defined(__MINGW32__) && defined(__MSVCRT__) && !defined(_IOB_ENTRIES)#    define _IOB_ENTRIES 20#   endif#   if defined(_IOB_ENTRIES)        /* Safety net to catch purely internal BIO_set_fp calls */        if ((size_t)ptr >= (size_t)stdin &&            (size_t)ptr < (size_t)(stdin + _IOB_ENTRIES))            BIO_clear_flags(b, BIO_FLAGS_UPLINK);#   endif#  endif#  ifdef UP_fsetmod        if (b->flags & BIO_FLAGS_UPLINK)            UP_fsetmod(b->ptr, (char)((num & BIO_FP_TEXT) ? 't' : 'b'));        else#  endif        {#  if defined(OPENSSL_SYS_WINDOWS)            int fd = _fileno((FILE *)ptr);            if (num & BIO_FP_TEXT)                _setmode(fd, _O_TEXT);            else                _setmode(fd, _O_BINARY);#  elif defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)            int fd = fileno((FILE *)ptr);            /* Under CLib there are differences in file modes */            if (num & BIO_FP_TEXT)                setmode(fd, O_TEXT);            else                setmode(fd, O_BINARY);#  elif defined(OPENSSL_SYS_MSDOS)            int fd = fileno((FILE *)ptr);            /* Set correct text/binary mode */            if (num & BIO_FP_TEXT)                _setmode(fd, _O_TEXT);            /* Dangerous to set stdin/stdout to raw (unless redirected) */            else {                if (fd == STDIN_FILENO || fd == STDOUT_FILENO) {                    if (isatty(fd) <= 0)                        _setmode(fd, _O_BINARY);                } else                    _setmode(fd, _O_BINARY);            }#  elif defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN)            int fd = fileno((FILE *)ptr);            if (num & BIO_FP_TEXT)                setmode(fd, O_TEXT);            else                setmode(fd, O_BINARY);#  endif        }        break;    case BIO_C_SET_FILENAME:        file_free(b);        b->shutdown = (int)num & BIO_CLOSE;        if (num & BIO_FP_APPEND) {            if (num & BIO_FP_READ)                BUF_strlcpy(p, "a+", sizeof p);            else                BUF_strlcpy(p, "a", sizeof p);        } else if ((num & BIO_FP_READ) && (num & BIO_FP_WRITE))            BUF_strlcpy(p, "r+", sizeof p);        else if (num & BIO_FP_WRITE)            BUF_strlcpy(p, "w", sizeof p);        else if (num & BIO_FP_READ)            BUF_strlcpy(p, "r", sizeof p);        else {//.........这里部分代码省略.........
开发者ID:zyh329,项目名称:ipcam_thirdparties,代码行数:101,


示例24: STACK_OF

//.........这里部分代码省略.........         * be recalculated.         */        /* Check for broken DSA PKCS#8, UGH! */        if(*p == (V_ASN1_SEQUENCE|V_ASN1_CONSTRUCTED)) {            if(!(ndsa = ASN1_seq_unpack_ASN1_TYPE(p, pkeylen,                                                  d2i_ASN1_TYPE,                                                  ASN1_TYPE_free))) {                EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);                goto dsaerr;            }            if(sk_ASN1_TYPE_num(ndsa) != 2 ) {                EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);                goto dsaerr;            }            /* Handle Two broken types:             * SEQUENCE {parameters, priv_key}             * SEQUENCE {pub_key, priv_key}             */            t1 = sk_ASN1_TYPE_value(ndsa, 0);            t2 = sk_ASN1_TYPE_value(ndsa, 1);            if(t1->type == V_ASN1_SEQUENCE) {                p8->broken = PKCS8_EMBEDDED_PARAM;                param = t1;            } else if(a->parameter->type == V_ASN1_SEQUENCE) {                p8->broken = PKCS8_NS_DB;                param = a->parameter;            } else {                EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);                goto dsaerr;            }            if(t2->type != V_ASN1_INTEGER) {                EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);                goto dsaerr;            }            privkey = t2->value.integer;        } else {            if (!(privkey=d2i_ASN1_INTEGER (NULL, &p, pkeylen))) {                EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);                goto dsaerr;            }            param = p8->pkeyalg->parameter;        }        if (!param || (param->type != V_ASN1_SEQUENCE)) {            EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);            goto dsaerr;        }        cp = p = param->value.sequence->data;        plen = param->value.sequence->length;        if (!(dsa = d2i_DSAparams (NULL, &cp, plen))) {            EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);            goto dsaerr;        }        /* We have parameters now set private key */        if (!(dsa->priv_key = ASN1_INTEGER_to_BN(privkey, NULL))) {            EVPerr(EVP_F_EVP_PKCS82PKEY,EVP_R_BN_DECODE_ERROR);            goto dsaerr;        }        /* Calculate public key (ouch!) */        if (!(dsa->pub_key = BN_new())) {            EVPerr(EVP_F_EVP_PKCS82PKEY,ERR_R_MALLOC_FAILURE);            goto dsaerr;        }        if (!(ctx = BN_CTX_new())) {            EVPerr(EVP_F_EVP_PKCS82PKEY,ERR_R_MALLOC_FAILURE);            goto dsaerr;        }        if (!BN_mod_exp(dsa->pub_key, dsa->g,                        dsa->priv_key, dsa->p, ctx)) {            EVPerr(EVP_F_EVP_PKCS82PKEY,EVP_R_BN_PUBKEY_ERROR);            goto dsaerr;        }        EVP_PKEY_assign_DSA(pkey, dsa);        BN_CTX_free (ctx);        if(ndsa) sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);        else ASN1_INTEGER_free(privkey);        break;dsaerr:        BN_CTX_free (ctx);        sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);        DSA_free(dsa);        EVP_PKEY_free(pkey);        return NULL;        break;#endif    default:        EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);        if (!a->algorithm) BUF_strlcpy (obj_tmp, "NULL", sizeof obj_tmp);        else i2t_ASN1_OBJECT(obj_tmp, 80, a->algorithm);        ERR_add_error_data(2, "TYPE=", obj_tmp);        EVP_PKEY_free (pkey);        return NULL;    }    return pkey;}
开发者ID:kevin-longkai,项目名称:edimax-br-6528n,代码行数:101,



注:本文中的BUF_strlcpy函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ BUG函数代码示例
C++ BUF_strlcat函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。