亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tasn_utl.c

?? openssl包含TLS
?? C
字號:
/* tasn_utl.c *//* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL * project 2000. *//* ==================================================================== * Copyright (c) 2000 The OpenSSL Project.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer.  * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. All advertising materials mentioning features or use of this *    software must display the following acknowledgment: *    "This product includes software developed by the OpenSSL Project *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to *    endorse or promote products derived from this software without *    prior written permission. For written permission, please contact *    licensing@OpenSSL.org. * * 5. Products derived from this software may not be called "OpenSSL" *    nor may "OpenSSL" appear in their names without prior written *    permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following *    acknowledgment: *    "This product includes software developed by the OpenSSL Project *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com).  This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */#include <stddef.h>#include <string.h>#include <openssl/asn1.h>#include <openssl/asn1t.h>#include <openssl/objects.h>#include <openssl/err.h>/* Utility functions for manipulating fields and offsets *//* Add 'offset' to 'addr' */#define offset2ptr(addr, offset) (void *)(((char *) addr) + offset)/* Given an ASN1_ITEM CHOICE type return * the selector value */int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it){	int *sel = offset2ptr(*pval, it->utype);	return *sel;}/* Given an ASN1_ITEM CHOICE type set * the selector value, return old value. */int asn1_set_choice_selector(ASN1_VALUE **pval, int value, const ASN1_ITEM *it){		int *sel, ret;	sel = offset2ptr(*pval, it->utype);	ret = *sel;	*sel = value;	return ret;}/* Do reference counting. The value 'op' decides what to do.  * if it is +1 then the count is incremented. If op is 0 count is * set to 1. If op is -1 count is decremented and the return value * is the current refrence count or 0 if no reference count exists. */int asn1_do_lock(ASN1_VALUE **pval, int op, const ASN1_ITEM *it){	const ASN1_AUX *aux;	int *lck, ret;	if(it->itype != ASN1_ITYPE_SEQUENCE) return 0;	aux = it->funcs;	if(!aux || !(aux->flags & ASN1_AFLG_REFCOUNT)) return 0;	lck = offset2ptr(*pval, aux->ref_offset);	if(op == 0) {		*lck = 1;		return 1;	}	ret = CRYPTO_add(lck, op, aux->ref_lock);#ifdef REF_PRINT	fprintf(stderr, "%s: Reference Count: %d\n", it->sname, *lck);#endif#ifdef REF_CHECK	if(ret < 0) 		fprintf(stderr, "%s, bad reference count\n", it->sname);#endif	return ret;}static ASN1_ENCODING *asn1_get_enc_ptr(ASN1_VALUE **pval, const ASN1_ITEM *it){	const ASN1_AUX *aux;	if(!pval || !*pval) return NULL;	aux = it->funcs;	if(!aux || !(aux->flags & ASN1_AFLG_ENCODING)) return NULL;	return offset2ptr(*pval, aux->enc_offset);}void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it){	ASN1_ENCODING *enc;	enc = asn1_get_enc_ptr(pval, it);	if(enc) {		enc->enc = NULL;		enc->len = 0;		enc->modified = 1;	}}void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it){	ASN1_ENCODING *enc;	enc = asn1_get_enc_ptr(pval, it);	if(enc) {		if(enc->enc) OPENSSL_free(enc->enc);		enc->enc = NULL;		enc->len = 0;		enc->modified = 1;	}}int asn1_enc_save(ASN1_VALUE **pval, unsigned char *in, int inlen, const ASN1_ITEM *it){	ASN1_ENCODING *enc;	enc = asn1_get_enc_ptr(pval, it);	if(!enc) return 1;	if(enc->enc) OPENSSL_free(enc->enc);	enc->enc = OPENSSL_malloc(inlen);	if(!enc->enc) return 0;	memcpy(enc->enc, in, inlen);	enc->len = inlen;	enc->modified = 0;	return 1;}		int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval, const ASN1_ITEM *it){	ASN1_ENCODING *enc;	enc = asn1_get_enc_ptr(pval, it);	if(!enc || enc->modified) return 0;	if(out) {		memcpy(*out, enc->enc, enc->len);		*out += enc->len;	}	if(len) *len = enc->len;	return 1;}/* Given an ASN1_TEMPLATE get a pointer to a field */ASN1_VALUE ** asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt){	ASN1_VALUE **pvaltmp;	if(tt->flags & ASN1_TFLG_COMBINE) return pval;	pvaltmp = offset2ptr(*pval, tt->offset);	/* NOTE for BOOLEAN types the field is just a plain 	 * int so we can't return int **, so settle for	 * (int *).	 */	return pvaltmp;}/* Handle ANY DEFINED BY template, find the selector, look up * the relevant ASN1_TEMPLATE in the table and return it. */const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt, int nullerr){	const ASN1_ADB *adb;	const ASN1_ADB_TABLE *atbl;	long selector;	ASN1_VALUE **sfld;	int i;	if(!(tt->flags & ASN1_TFLG_ADB_MASK)) return tt;	/* Else ANY DEFINED BY ... get the table */	adb = ASN1_ADB_ptr(tt->item);	/* Get the selector field */	sfld = offset2ptr(*pval, adb->offset);	/* Check if NULL */	if(!sfld) {		if(!adb->null_tt) goto err;		return adb->null_tt;	}	/* Convert type to a long:	 * NB: don't check for NID_undef here because it	 * might be a legitimate value in the table	 */	if(tt->flags & ASN1_TFLG_ADB_OID) 		selector = OBJ_obj2nid((ASN1_OBJECT *)*sfld);	else 		selector = ASN1_INTEGER_get((ASN1_INTEGER *)*sfld);	/* Try to find matching entry in table	 * Maybe should check application types first to	 * allow application override? Might also be useful	 * to have a flag which indicates table is sorted and	 * we can do a binary search. For now stick to a	 * linear search.	 */	for(atbl = adb->tbl, i = 0; i < adb->tblcount; i++, atbl++)		if(atbl->value == selector) return &atbl->tt;	/* FIXME: need to search application table too */	/* No match, return default type */	if(!adb->default_tt) goto err;			return adb->default_tt;		err:	/* FIXME: should log the value or OID of unsupported type */	if(nullerr) ASN1err(ASN1_F_ASN1_DO_ADB, ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE);	return NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久尤物电影视频在线观看| 亚洲国产精品av| 亚洲国产成人av网| 91美女视频网站| 国产精品久久久久国产精品日日| 国产一区在线不卡| 精品国产3级a| 韩国女主播一区二区三区| 欧美一区二区视频观看视频 | 日韩精品一区国产麻豆| 亚洲高清视频的网址| 欧美性受xxxx黑人xyx| 一级女性全黄久久生活片免费| 91美女视频网站| 亚洲一区二区三区精品在线| 欧美色图天堂网| 亚洲超丰满肉感bbw| 欧美日韩电影一区| 日本vs亚洲vs韩国一区三区二区 | 色综合视频在线观看| 国产精品国产自产拍高清av| 成人av在线影院| 国产精品久久精品日日| 99免费精品视频| 亚洲午夜久久久久久久久久久 | 91无套直看片红桃| 亚洲免费观看高清完整版在线观看熊| 色综合久久综合网| 五月婷婷久久丁香| 26uuu精品一区二区三区四区在线| 国模无码大尺度一区二区三区| 久久久综合视频| 波多野结衣在线一区| 亚洲美女精品一区| 欧美日韩高清一区二区不卡| 日本人妖一区二区| 国产视频一区在线观看| www.久久精品| 亚洲国产精品麻豆| 精品欧美久久久| 丁香网亚洲国际| 一区二区三区美女| 欧美一区欧美二区| 国产成人精品影视| 亚洲欧美日本韩国| 91精品国产色综合久久| 国产精品一二三在| 亚洲狠狠丁香婷婷综合久久久| 欧美精品丝袜中出| 国产久卡久卡久卡久卡视频精品| 国产精品久久久久影院亚瑟| 欧美午夜电影在线播放| 九九精品视频在线看| 亚洲欧美综合色| 777午夜精品视频在线播放| 国产精品一区二区三区99| 亚洲视频在线观看一区| 91麻豆精品国产91久久久 | 免费视频最近日韩| 日本一区二区三区国色天香 | 国产成人精品亚洲777人妖| 亚洲精品国产一区二区三区四区在线 | 色婷婷综合久色| 三级欧美韩日大片在线看| 国产日韩欧美不卡| 欧美三级电影在线看| 国产一区二区三区久久悠悠色av| 一区二区三区四区av| 亚洲精品在线网站| 在线观看91精品国产入口| 精品一区二区三区在线观看| 亚洲色图制服丝袜| 欧美v日韩v国产v| 日本高清不卡视频| 国产乱码字幕精品高清av| 一区二区视频在线看| 精品久久一区二区| 在线欧美日韩国产| 国产91精品露脸国语对白| 日韩影院免费视频| 国产精品久久久久久久岛一牛影视 | 99视频超级精品| 蜜臀av性久久久久蜜臀av麻豆| 国产精品电影一区二区三区| 日韩一级免费一区| 91国偷自产一区二区三区观看| 国产一区二区在线看| 亚洲成人www| 亚洲丝袜制服诱惑| 国产午夜精品久久久久久免费视| 欧美狂野另类xxxxoooo| 99久久夜色精品国产网站| 久久99精品一区二区三区 | 国产精品美女视频| 亚洲一区二区三区三| 欧美极品aⅴ影院| 日韩欧美123| 欧美少妇bbb| 91丨porny丨国产入口| 国产成人自拍在线| 捆绑紧缚一区二区三区视频| 香蕉成人啪国产精品视频综合网| 中文字幕一区在线| 国产午夜精品在线观看| 日韩精品在线一区二区| 欧美乱熟臀69xxxxxx| 色婷婷国产精品| av不卡免费电影| 国产精品一区三区| 国产一区久久久| 久久精品国产精品亚洲红杏| 丝袜诱惑制服诱惑色一区在线观看| 亚洲欧美日韩国产综合| 一区二区中文视频| 国产精品久久久一区麻豆最新章节| 国产亚洲综合av| 久久综合色综合88| 精品国产sm最大网站| 日韩美女天天操| 日韩视频在线观看一区二区| 欧美高清性hdvideosex| 欧美日韩免费一区二区三区 | 精品国产乱码久久久久久夜甘婷婷| 6080午夜不卡| 在线电影国产精品| 欧美精品自拍偷拍动漫精品| 欧美性极品少妇| 欧美三级韩国三级日本一级| 欧美优质美女网站| 91豆麻精品91久久久久久| 色综合天天视频在线观看 | 欧美性猛片aaaaaaa做受| 91福利小视频| 欧美视频第二页| 欧美欧美欧美欧美| 3751色影院一区二区三区| 欧美久久久一区| 91精品国产综合久久久久久久| 69久久99精品久久久久婷婷| 5月丁香婷婷综合| 欧美一区二区久久| 精品久久久久久久久久久久久久久| 精品久久久久久久人人人人传媒| 2024国产精品| 国产欧美视频在线观看| 国产精品你懂的| 亚洲视频在线一区二区| 亚洲午夜精品在线| 日韩国产欧美在线观看| 久国产精品韩国三级视频| 国产综合色视频| 高清不卡一区二区| 91亚洲精品久久久蜜桃网站 | 精品影视av免费| 国产成人在线视频网站| caoporn国产一区二区| 色婷婷狠狠综合| 欧美一区二区在线视频| 欧美电影免费观看高清完整版在线观看| 2020国产精品| 国产精品少妇自拍| 国产精品久久夜| 一区二区三区在线观看国产| 亚洲成人综合视频| 麻豆国产精品视频| 国产成人精品免费视频网站| 不卡在线观看av| 欧美最猛性xxxxx直播| 制服丝袜亚洲网站| 国产亚洲一区字幕| 亚洲日本在线视频观看| 亚洲成人综合视频| 国产福利一区二区| 成人18视频日本| 欧美人与禽zozo性伦| 久久一区二区三区四区| 亚洲日韩欧美一区二区在线| 日韩电影一二三区| 国产大片一区二区| 欧美怡红院视频| 亚洲精品在线观看网站| 亚洲色图在线视频| 久久超碰97人人做人人爱| av成人老司机| 日韩一区二区在线看| 中文字幕欧美日韩一区| 亚洲一区视频在线观看视频| 久久精品72免费观看| 91论坛在线播放| 日韩亚洲欧美在线观看| 国产精品久久毛片a| 日本欧美一区二区三区| 豆国产96在线|亚洲| 91精品国产手机| 日韩理论片中文av| 蓝色福利精品导航| 在线观看亚洲一区| 久久久www免费人成精品| 亚洲一区二区三区四区五区黄| 国内精品嫩模私拍在线|