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

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

?? keys.c

?? IBM開發的TPM的驅動, 有少量的例子可以供參考
?? C
?? 第 1 頁 / 共 3 頁
字號:
	/* transmit the request buffer to the TPM device and read the reply */	ret = TPM_Transmit(tpmdata, "EvictKey");	if (ret != 0)		return ret;	return 0;}/****************************************************************************//*                                                                          *//* Create a buffer from a keydata structure                                 *//*                                                                          *//****************************************************************************/uint32_t TPM_BuildKey(unsigned char *buffer, keydata * k){	unsigned char build_key_fmt[] = "% S L o L S S L L L L @ @ @";	uint32_t ret;	ret = TSS_buildbuff(build_key_fmt, buffer,			    4, k->version,			    k->keyusage,			    k->keyflags,			    k->authdatausage,			    k->pub.algorithm,			    k->pub.encscheme,			    k->pub.sigscheme,			    12,			    k->pub.keybitlen,			    k->pub.numprimes,			    0,			    k->pub.pcrinfolen, k->pub.pcrinfo,			    k->pub.keylength, k->pub.modulus,			    k->privkeylen, k->encprivkey);	return ret;}/****************************************************************************//*                                                                          *//* Walk down a Key blob extracting information                              *//*                                                                          *//****************************************************************************/int TSS_KeyExtract(unsigned char *keybuff, keydata * k){	int offset;	int pubkeylen;	/* fill in  keydata structure */	offset = 0;	memcpy(k->version, keybuff + offset, sizeof(k->version));	offset += 4;	k->keyusage = LOAD16(keybuff, offset);	offset += TPM_U16_SIZE;	k->keyflags = LOAD32(keybuff, offset);	offset += TPM_U32_SIZE;	k->authdatausage = keybuff[offset];	offset += 1;	pubkeylen = TSS_PubKeyExtract(keybuff + offset, &(k->pub), 1);	offset += pubkeylen;	k->privkeylen = LOAD32(keybuff, offset);	offset += TPM_U32_SIZE;	if (k->privkeylen > 0 && k->privkeylen <= 1024)		memcpy(k->encprivkey, keybuff + offset, k->privkeylen);	offset += k->privkeylen;	return offset;}/****************************************************************************//*                                                                          *//* Walk down a Public Key blob extracting information                       *//*                                                                          *//****************************************************************************/int TSS_PubKeyExtract(unsigned char *keybuff, pubkeydata * k,		      int pcrpresent){	uint32_t parmsize;	uint32_t pcrisize;	int offset;	offset = 0;	k->algorithm = LOAD32(keybuff, offset);	offset += TPM_U32_SIZE;	k->encscheme = LOAD16(keybuff, offset);	offset += TPM_U16_SIZE;	k->sigscheme = LOAD16(keybuff, offset);	offset += TPM_U16_SIZE;	parmsize = LOAD32(keybuff, offset);	offset += TPM_U32_SIZE;	if (k->algorithm == 0x00000001 && parmsize > 0) {	/* RSA */		k->keybitlen = LOAD32(keybuff, offset);		offset += TPM_U32_SIZE;		k->numprimes = LOAD32(keybuff, offset);		offset += TPM_U32_SIZE;		k->expsize = LOAD32(keybuff, offset);		offset += TPM_U32_SIZE;	} else {		offset += parmsize;	}	if (k->expsize == 3) {		k->exponent[0] = *(keybuff + offset + 0);		k->exponent[1] = *(keybuff + offset + 1);		k->exponent[2] = *(keybuff + offset + 2);		offset += k->expsize;	} else if (k->expsize != 0)		offset += k->expsize;	else {		k->exponent[0] = 0x01;		k->exponent[1] = 0x00;		k->exponent[2] = 0x01;		k->expsize = 3;	}	if (pcrpresent) {		pcrisize = LOAD32(keybuff, offset);		offset += TPM_U32_SIZE;		if (pcrisize > 0 && pcrisize <= 256)			memcpy(k->pcrinfo, keybuff + offset, pcrisize);		offset += pcrisize;		k->pcrinfolen = pcrisize;	}	k->keylength = LOAD32(keybuff, offset);	offset += TPM_U32_SIZE;	if (k->keylength > 0 && k->keylength <= 256)		memcpy(k->modulus, keybuff + offset, k->keylength);	offset += k->keylength;	return offset;}/****************************************************************************//*                                                                          *//* Extract a Pubkey Blob from a Key Blob                                    *//*                                                                          *//****************************************************************************/void TSS_Key2Pub(unsigned char *keybuff, unsigned char *pkey,		 unsigned int *plen){	int srcoff1;	int srcoff2;	int srcoff3;	int dstoff1;	int dstoff2;	int dstoff3;	int len1;	int len2;	int len3;	int pointer;	int parmsize;	int pcrisize;	int pubksize;	srcoff1 = TPM_U32_SIZE + TPM_U16_SIZE + TPM_U32_SIZE + 1;	dstoff1 = 0;	len1 = TPM_U32_SIZE + TPM_U16_SIZE + TPM_U16_SIZE + TPM_U32_SIZE;	memcpy(pkey + dstoff1, keybuff + srcoff1, len1);	dstoff2 = dstoff1 + len1;	srcoff2 = srcoff1 + len1;	pointer = srcoff1 + TPM_U32_SIZE + TPM_U16_SIZE + TPM_U16_SIZE;	parmsize = LOAD32(keybuff, pointer);	len2 = parmsize;	memcpy(pkey + dstoff2, keybuff + srcoff2, len2);	pointer = pointer + TPM_U32_SIZE + parmsize;	pcrisize = LOAD32(keybuff, pointer);	pointer = pointer + TPM_U32_SIZE + pcrisize;	pubksize = LOAD32(keybuff, pointer);	dstoff3 = dstoff2 + len2;	srcoff3 = pointer;	len3 = pubksize + TPM_U32_SIZE;	memcpy(pkey + dstoff3, keybuff + srcoff3, len3);	*plen = len1 + len2 + len3;}/****************************************************************************//*                                                                          *//* Calculate the size of a Key Blob                                         *//*                                                                          *//****************************************************************************/int TSS_KeySize(unsigned char *keybuff){	int offset;	int privkeylen;	offset = 0 + 4 + TPM_U16_SIZE + TPM_U32_SIZE + 1;	offset += TSS_PubKeySize(keybuff + offset, 1);	privkeylen = LOAD32(keybuff, offset);	offset += TPM_U32_SIZE + privkeylen;	return offset;}/****************************************************************************//*                                                                          *//* Calculate the size of a Public Key Blob                                  *//*                                                                          *//****************************************************************************/int TSS_PubKeySize(unsigned char *keybuff, int pcrpresent){	uint32_t parmsize;	uint32_t pcrisize;	uint32_t keylength;	int offset;	offset = 0 + TPM_U32_SIZE + TPM_U16_SIZE + TPM_U16_SIZE;	parmsize = LOAD32(keybuff, offset);	offset += TPM_U32_SIZE;	offset += parmsize;	if (pcrpresent) {		pcrisize = LOAD32(keybuff, offset);		offset += TPM_U32_SIZE;		offset += pcrisize;	}	keylength = LOAD32(keybuff, offset);	offset += TPM_U32_SIZE;	offset += keylength;	return offset;}/****************************************************************************//*                                                                          *//* Convert a TPM public key to an OpenSSL RSA public key                    *//*                                                                          *//****************************************************************************/RSA *TSS_convpubkey(pubkeydata * k){	RSA *rsa;	BIGNUM *mod;	BIGNUM *exp;	/* create the necessary structures */	rsa = RSA_new();	mod = BN_new();	exp = BN_new();	if (rsa == NULL || mod == NULL || exp == NULL)		return NULL;	/* convert the raw public key values to BIGNUMS */	BN_bin2bn(k->modulus, k->keylength, mod);	BN_bin2bn(k->exponent, k->expsize, exp);	/* set up the RSA public key structure */	rsa->n = mod;	rsa->e = exp;	return rsa;}/****************************************************************************//*                                                                          *//* Get the Fingerprint of a Key given a pubkeydata structure                *//*                                                                          *//****************************************************************************/void TSS_pkeyprint(pubkeydata * key, unsigned char *fprint){	TSS_sha1(key->modulus, key->keylength, fprint);}/****************************************************************************//*                                                                          *//* Get the Fingerprint of a Key given a key blob                            *//*                                                                          *//****************************************************************************/void TSS_keyprint(unsigned char *keybuff, unsigned char *fprint){	keydata k;	TSS_KeyExtract(keybuff, &k);	TSS_pkeyprint(&(k.pub), fprint);}/****************************************************************************//*                                                                          *//* Get the Fingerprint of a Key given a loaded key handle and authdata      *//*                                                                          *//****************************************************************************/uint32_t TSS_lkeyprint(uint32_t keyhandle, unsigned char *keyauth,		       unsigned char *fprint){	uint32_t ret;	unsigned char keyblob[TPM_MAX_BUFF_SIZE];	unsigned int keyblen;	pubkeydata k;	ret = TPM_GetPubKey(keyhandle, keyauth, keyblob, &keyblen);	if (ret != 0)		return ret;	TSS_PubKeyExtract(keyblob, &k, 0);	TSS_pkeyprint(&k, fprint);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一个色在线综合| 波多野结衣91| 国产日韩欧美精品电影三级在线| 不卡av免费在线观看| 亚洲成人1区2区| 亚洲国产精华液网站w| 欧美精品xxxxbbbb| 99久久伊人精品| 久久国产人妖系列| 亚洲影视资源网| 成人动漫一区二区| 欧美一级高清大全免费观看| 成人ar影院免费观看视频| 日本sm残虐另类| 亚洲精品v日韩精品| 久久久精品天堂| 日韩欧美电影在线| 欧美日韩国产综合一区二区 | 日韩中文字幕亚洲一区二区va在线| 久久精品一区二区三区四区| 91精品国产乱码| 欧美色综合影院| av亚洲精华国产精华| 国产成人在线观看免费网站| 麻豆国产精品一区二区三区| 性欧美疯狂xxxxbbbb| 亚洲宅男天堂在线观看无病毒| 国产精品你懂的在线欣赏| 2023国产精品自拍| 亚洲伦在线观看| 国产色产综合产在线视频| 欧美岛国在线观看| 91精品国产入口| 暴力调教一区二区三区| 欧美一级黄色大片| 欧美日韩国产小视频在线观看| 99精品视频在线免费观看| 国产不卡在线视频| 成人一区二区三区中文字幕| 国产成人自拍在线| 国产成人高清视频| 成人禁用看黄a在线| 成人美女视频在线观看18| 精品一区二区三区在线视频| 久久se这里有精品| 久久综合综合久久综合| 精品制服美女久久| 国产高清亚洲一区| eeuss国产一区二区三区| 成人激情文学综合网| 97久久精品人人澡人人爽| 一本久道中文字幕精品亚洲嫩| 99国产精品久久久久久久久久| 91啦中文在线观看| 在线欧美日韩精品| 精品1区2区3区| 欧美丰满少妇xxxxx高潮对白| 3d动漫精品啪啪一区二区竹菊| 青青草原综合久久大伊人精品优势| 天天做天天摸天天爽国产一区| 日韩精品亚洲专区| 久久97超碰色| 成人一级视频在线观看| av激情综合网| 欧美精品亚洲二区| 亚洲精品在线三区| 国产精品色噜噜| 亚洲影院在线观看| 久久精品国产在热久久| 国产一区二区视频在线播放| jlzzjlzz国产精品久久| 欧美日本韩国一区| 久久精品欧美日韩| 樱桃国产成人精品视频| 美腿丝袜在线亚洲一区| 成人理论电影网| 亚洲国产精品激情在线观看| 亚洲激情第一区| 老汉av免费一区二区三区| 成人av在线资源网| 欧美日韩国产精品自在自线| 欧美精品一区二区三区蜜桃 | 亚洲国产视频在线| 精品在线你懂的| 国产成人av一区二区三区在线 | 日韩精品一二区| 国产精品中文字幕一区二区三区| 97久久精品人人澡人人爽| 日韩欧美中文字幕精品| 国产精品美女一区二区在线观看| 午夜激情综合网| 成人污视频在线观看| 91精品免费观看| 亚洲欧美日韩一区二区 | 在线亚洲一区二区| 久久久99免费| 婷婷夜色潮精品综合在线| 国产成人99久久亚洲综合精品| 精品视频123区在线观看| 国产精品日日摸夜夜摸av| 日韩电影在线免费看| 91丝袜国产在线播放| 精品国产一区a| 亚洲成a人在线观看| 成人国产免费视频| 成人欧美一区二区三区黑人麻豆| 99免费精品在线| 欧美成人精精品一区二区频| 亚洲综合另类小说| 国产成人av电影在线观看| 91精品一区二区三区久久久久久| 亚洲欧美偷拍卡通变态| 国产成人免费av在线| 日韩美女在线视频| 三级成人在线视频| 欧美体内she精视频| 亚洲色大成网站www久久九九| 国产尤物一区二区在线| 欧美一区二区三区视频在线| 亚洲国产综合在线| 欧洲视频一区二区| 亚洲欧美精品午睡沙发| 成人免费毛片片v| 亚洲午夜久久久久中文字幕久| 91麻豆国产在线观看| 国产精品网曝门| 懂色av一区二区三区免费看| 久久久久一区二区三区四区| 美美哒免费高清在线观看视频一区二区| 欧美羞羞免费网站| 一区二区激情小说| 日本精品裸体写真集在线观看 | 欧美韩国日本不卡| 蜜臀av性久久久久av蜜臀妖精| 欧美亚洲高清一区| 亚洲精品ww久久久久久p站| 91丝袜美腿高跟国产极品老师| 国产精品久久久久婷婷二区次| 国产成人免费在线观看不卡| 久久久久亚洲综合| 国产精品香蕉一区二区三区| 久久精品男人天堂av| 成人午夜免费视频| 国产精品污www在线观看| 99视频国产精品| 亚洲视频1区2区| 日本精品一级二级| 亚洲成人精品一区| 日韩一区二区三区观看| 九九久久精品视频| 欧美国产日韩一二三区| 99久久精品国产精品久久| 亚洲精品老司机| 4hu四虎永久在线影院成人| 久久精品国产久精国产| 久久美女高清视频| 成人av中文字幕| 亚洲一区二区偷拍精品| 91精品午夜视频| 国产高清成人在线| 国产精品福利影院| 欧美又粗又大又爽| 青娱乐精品视频| 国产欧美一区二区三区在线老狼| 成人18视频日本| 亚洲成人黄色影院| 欧美成人免费网站| av电影在线观看一区| 亚洲国产成人porn| 久久久久青草大香线综合精品| 99久久久久久99| 秋霞电影网一区二区| 国产精品免费视频观看| 欧美精品 日韩| 成人永久免费视频| 日韩一区精品视频| 国产午夜三级一区二区三| 色噜噜狠狠色综合中国| 美女www一区二区| 亚洲日本中文字幕区| 欧美一级二级三级蜜桃| 欧美精品丝袜久久久中文字幕| 精品一区二区三区免费视频| 亚洲色图视频免费播放| 日韩你懂的电影在线观看| 色综合天天在线| 久久99精品久久久久久国产越南 | 色综合色综合色综合色综合色综合 | 麻豆91精品91久久久的内涵| 久久蜜臀中文字幕| 欧美少妇bbb| 波多野结衣在线一区| 日韩av电影天堂| 亚洲色图19p| 国产人成亚洲第一网站在线播放 | 日韩欧美国产系列| 99久精品国产| 国产精品69久久久久水密桃| 性久久久久久久久久久久| 国产精品福利一区二区|