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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cafuncs.c

?? 包含標(biāo)準(zhǔn)證書編/解碼、哈希、MD5、SHA1等算法的實現(xiàn)源碼
?? C
字號:
/*------------------------------------------------------------------  Copyright  Sun Microsystems, Inc.  Copyright (C) 1994, 1995, 1996 Sun Microsystems, Inc.  All Rights  Reserved.  Permission is hereby granted, free of charge, to any person  obtaining a copy of this software and associated documentation  files (the "Software"), to deal in the Software without  restriction, including without limitation the rights to use,  copy, modify, merge, publish, distribute, sublicense, and/or sell  copies of the Software or derivatives of the Software, and to   permit persons to whom the Software or its derivatives is furnished   to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be  included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND  NONINFRINGEMENT.  IN NO EVENT SHALL SUN MICROSYSTEMS, INC., BE LIABLE  FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN  CONNECTION WITH THE SOFTWARE OR DERIVATES OF THIS SOFTWARE OR   THE USE OR OTHER DEALINGS IN THE SOFTWARE.  Except as contained in this notice, the name of Sun Microsystems, Inc.  shall not be used in advertising or otherwise to promote  the sale, use or other dealings in this Software or its derivatives   without prior written authorization from Sun Microsystems, Inc.*/#pragma ident "@(#)cafuncs.C	1.14 96/01/29 Sun Microsystems"#include <sys/types.h>#include <stdio.h>#include <stdlib.h>#include "Time.h"#include "Bigint.h"#include "Bstream.h"#include "asn1_der.h"#include "ObjId.h"#include "Name.h"#include "X509Cert.h"#include "Sig.h"#include "ca.h"#include "utils.h"intget_certreq_params(const Bstream& certreq, Name& name, PubKey& pubkey){	int retval, seqlen;	PubKey psubject;	AlgId sigalgid;	Name subname;	Bstream sigdata, signature;	Bigint version;	VerifyResult result = INVALID_SIG;	Bstream der_stream = certreq;	SEQUENCE	{		sigdata = der_stream;		SEQUENCE	// X509CertReqInfo --- ToBeSigned		{			INTEGER(version);			NAME(subname);			SEQUENCE // Subject Public Key info			{				SEQUENCE // Subject Public Key Alg ID				{					int begin, end, used, anylen;					MARK_LEN(begin);				     OBJECT_IDENTIFIER(psubject.keytype.algid);					MARK_LEN(end);					used = begin - end;					if ((anylen = seqlen - used) > 0) {						Bstream any(anylen, DATAP);						CONSUME(anylen);						psubject.keytype.params = any;					}				}				//  Subject Public Key				BIT_STRING(psubject.key);			}		}		int tobesignedlen = sigdata.getlength() - 						der_stream.getlength();		int trunclen = sigdata.getlength() - tobesignedlen;		sigdata.truncate(trunclen);		SEQUENCE	// Alg ID of certreq signing		{			int begin, end, used, anylen;			MARK_LEN(begin);			OBJECT_IDENTIFIER(sigalgid.algid);			MARK_LEN(end);			used = begin - end;			if ((anylen = seqlen - used) > 0) {				Bstream any(anylen, DATAP);				CONSUME(anylen);				sigalgid.params = any;			}		}		//  encrypted hash, i.e SIGNATURE		BIT_STRING(signature);	}	// Verify the X509Certificate request. This is done	// by using the supplied public key to verify	// the signature, since certificate requests are	// self-signed.	// Unfortunately, Diffie-Hellman X.509 certificate requests	// are not self-signed ...	if (psubject.keytype.algid == dhKeyAgreement) {		pubkey = psubject;		name = subname;		result = VALID;	} else {		result = verify_sig(sigdata, signature, psubject, sigalgid);		if (result == VALID) {			pubkey = psubject;			name = subname;		} else {			fprintf(stderr,				"Signature on certificate request invalid\n");		}	}	return ((int)result);}// Get the serial number for the certificate being issued.// Increments the value of serialnum stored in NEXT_SERIALNUM_FILE// to return the present value + 1, for the next certificate// to be issued.BigintgetSerialnum(){	Bstream serialstr = File_to_Bstr(get_byzantine_dir() + NEXT_SERIALNUM_FILE);	Bigint serialnum(serialstr.getdatap(), serialstr.getlength());	if (serialnum == (short)0)		serialnum = serialnum + 1;	serialstr = Bigint_to_Bstr(serialnum + 1);	serialstr.store(get_byzantine_dir() + NEXT_SERIALNUM_FILE);	return (serialnum);}X509CertgetX509CertbySerialNumber(const Bigint& serialnum){	X509Cert cert;	Bstream nullbstr;	String certfilename = (String)CERT_DATABASE_DIR + "/" + 				serialnum.getnumstr();	String certpath = get_byzantine_dir() + certfilename;	Bstream certstr = File_to_Bstr(certpath);	if (certstr == nullbstr) {		fprintf(stderr, "Unable to read certificate file '%s'.\n",			(const char *)certpath);		return (cert);	}	int retval = asn1_der_decode_cert(certstr, cert);	if (retval < 0) {		fprintf(stderr, "Unable to get certificate for serial number ");		serialnum.print();		fprintf(stderr, "\n");		asn1_perror(retval);	}	return (cert);}X509CertgetCAcert(){	X509Cert cert;	Bstream nullstr;	String certfile = get_byzantine_dir() + CA_CERT_FILE;	Bstream certstr = File_to_Bstr(certfile);	if (certstr == nullstr) {		fprintf(stderr, "No contents in CA self certificate file %s\n",			(const char *)certfile);		return (cert);	}	int retval = asn1_der_decode_cert(certstr, cert);	if (retval < 0) {		fprintf(stderr, "Unable to decode CA certificate in file %s\n",			(const char *)certfile);		asn1_perror(retval);	}	return (cert);}Booleanallow_certification(Name& subject, PubKey& pub_subject){	// get the current serial number	Bstream serialstr = File_to_Bstr(get_byzantine_dir() + NEXT_SERIALNUM_FILE);	Bigint cur_serialnum(serialstr.getdatap(), serialstr.getlength());	X509Cert cert;	Bstream certstr, nullbstr;	String certdir = get_byzantine_dir() + (String)CERT_DATABASE_DIR + "/";	PubKey pubkey;	int retval;	for (Bigint i = 1; i < cur_serialnum; i = i + 1) {		certstr = File_to_Bstr(certdir + i.getnumstr());		retval = asn1_der_decode_cert(certstr, cert);		if (retval < 0) {			asn1_perror(retval);			fprintf(stderr, "skipping .... \n");			continue;		}		// check key collisions		pubkey = cert.getpubkey();		if (pubkey.key == pub_subject.key) {			fprintf(stderr, "Public key collision!!\n");			return(BOOL_FALSE);		}		// now check to make sure the subject does not already have		// a key with the same parameters		if (cert.getsubject() == subject) {			// found a certificate for this subject			// now check the params => should be different			if (pubkey.keytype.algid == pub_subject.keytype.algid) {				if ((pubkey.keytype.params ==					pub_subject.keytype.params)// XXX check for different exponent lengths//						|| ()					) {					fprintf(stderr,	"Subject already has a public value with same DH params\n");					return(BOOL_FALSE);				}			}		}	}	return (BOOL_TRUE);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩区在线观看| 欧美午夜片在线观看| 欧美成人激情免费网| 日本伊人精品一区二区三区观看方式 | 欧美人体做爰大胆视频| 亚洲图片一区二区| 91麻豆精品91久久久久同性| 麻豆91免费观看| 亚洲精品一区二区三区香蕉| 成人免费黄色大片| 亚洲国产高清aⅴ视频| 99久久婷婷国产综合精品电影| 亚洲精品乱码久久久久久| 精品婷婷伊人一区三区三| 久久精品国产秦先生| 久久久777精品电影网影网| 91麻豆文化传媒在线观看| 午夜精品久久一牛影视| 精品福利一区二区三区| 粉嫩一区二区三区性色av| 一区二区在线观看免费| 精品国产乱码久久久久久牛牛| 成人黄色777网| 亚洲风情在线资源站| 久久综合999| 欧美性感一类影片在线播放| 国内精品久久久久影院薰衣草| 中文字幕一区在线观看| 欧美精品三级在线观看| 国产99久久久国产精品潘金| 亚洲18影院在线观看| 26uuu久久天堂性欧美| 在线视频一区二区三区| 国产精选一区二区三区| 亚洲成人av一区| 中文字幕乱码亚洲精品一区| 欧美精品乱人伦久久久久久| 成人免费毛片嘿嘿连载视频| 肉丝袜脚交视频一区二区| 欧美激情在线看| 91精品国产色综合久久ai换脸| 不卡一区二区三区四区| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品久久久久aaaa樱花 | 亚洲一区日韩精品中文字幕| 久久久亚洲精品石原莉奈| 欧美吻胸吃奶大尺度电影| 国产一区二区不卡在线| 日日骚欧美日韩| 亚洲精品免费看| 中文字幕精品在线不卡| 欧美精品一区二区蜜臀亚洲| 91精品综合久久久久久| 精品视频999| 91黄视频在线| 99久久国产综合色|国产精品| 麻豆91免费观看| 日本va欧美va精品| 亚洲一二三级电影| 一区二区三区欧美| 亚洲美女精品一区| 日韩毛片精品高清免费| 国产精品久久看| 国产色产综合色产在线视频| 精品国产三级a在线观看| 欧美久久久久久久久久| 欧美视频一区二区三区在线观看 | 欧美成人女星排名| 制服丝袜成人动漫| 欧美一区日韩一区| 制服丝袜av成人在线看| 欧美精品18+| 91精品国产综合久久久久久 | 日韩精品一区二区三区四区| 欧美日韩免费一区二区三区视频| 欧美视频第二页| 欧美日韩一区二区三区不卡| 欧美日韩一级片网站| 欧美日本精品一区二区三区| 欧美美女直播网站| 欧美精品 国产精品| 欧美一卡2卡三卡4卡5免费| 日韩欧美www| 国产三级精品在线| 国产精品国产馆在线真实露脸 | 国产一区二三区| 国产一区二区三区四区五区美女| 国产一区二区三区免费看| 国产精品456| 91免费视频观看| 欧美日韩精品一区视频| 3d动漫精品啪啪一区二区竹菊| 日韩精品中午字幕| 国产亚洲一区二区在线观看| 国产精品素人一区二区| 亚洲精品成人少妇| 天堂精品中文字幕在线| 久久超碰97中文字幕| 东方欧美亚洲色图在线| 色妹子一区二区| 日韩女优av电影| 国产精品全国免费观看高清| 亚洲视频 欧洲视频| 肉丝袜脚交视频一区二区| 国产又粗又猛又爽又黄91精品| av中文字幕在线不卡| 欧美日韩在线亚洲一区蜜芽| 精品国产一区二区三区久久久蜜月| 欧美精品一区二区三区四区| √…a在线天堂一区| 丝袜美腿亚洲一区| 国产a精品视频| 欧美四级电影网| 久久精品亚洲麻豆av一区二区| 亚洲欧美日本在线| 久久精品国产久精国产爱| 国产91精品精华液一区二区三区| 欧美午夜宅男影院| 久久精品免视看| 日韩精品免费视频人成| 国产成a人亚洲精| 在线观看91av| 成人免费在线视频| 黄色日韩网站视频| 欧美视频在线一区| 亚洲国产精品高清| 免费在线成人网| 日本韩国视频一区二区| 国产亚洲美州欧州综合国| 首页国产丝袜综合| 97久久超碰精品国产| 久久伊99综合婷婷久久伊| 亚洲一区免费观看| 波多野结衣中文字幕一区二区三区 | 一本色道a无线码一区v| 精品剧情v国产在线观看在线| 一区二区三区四区高清精品免费观看 | 色婷婷综合久久久中文字幕| 欧美va亚洲va在线观看蝴蝶网| 怡红院av一区二区三区| 国产伦精品一区二区三区免费迷 | 日韩精品一区在线| 一区二区理论电影在线观看| 粉嫩av亚洲一区二区图片| 欧美成人一区二区三区| 亚洲制服丝袜av| 99re6这里只有精品视频在线观看| 精品第一国产综合精品aⅴ| 成人国产精品免费观看动漫| 精品福利二区三区| 轻轻草成人在线| 91精品在线免费| 肉色丝袜一区二区| 欧美日韩成人一区| 一区二区三区四区亚洲| av电影天堂一区二区在线| 欧美国产国产综合| 国产露脸91国语对白| 日韩欧美一级在线播放| 免费在线欧美视频| 日韩欧美久久一区| 麻豆成人免费电影| 欧美电视剧在线看免费| 久久精品国产精品亚洲红杏| 欧美一级在线视频| 狠狠v欧美v日韩v亚洲ⅴ| 日韩三级精品电影久久久| 日本不卡123| 欧美第一区第二区| 国产一区二区三区不卡在线观看 | 亚洲三级视频在线观看| 91视频在线观看| 亚洲综合色成人| 欧美影片第一页| 午夜久久久影院| 日韩一区二区在线观看视频 | 久久色视频免费观看| 精品一区二区三区久久| 久久综合九色综合97婷婷女人| 国产一区视频网站| 国产精品久久毛片a| 在线观看不卡视频| 天天av天天翘天天综合网色鬼国产| 欧美日韩在线不卡| 精品一区二区三区的国产在线播放| 久久午夜羞羞影院免费观看| 成人免费视频国产在线观看| 亚洲你懂的在线视频| 欧美精品一卡两卡| 国产一区二区免费在线| 国产精品女主播在线观看| 91浏览器入口在线观看| 天天免费综合色| 久久精品日韩一区二区三区| 91婷婷韩国欧美一区二区| 丝袜诱惑亚洲看片| 久久九九全国免费| 国产精品网曝门| 色狠狠一区二区| 久久99精品国产.久久久久久|