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

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

?? tcsps.c

?? TCG軟件棧 linux系統(tǒng)上使用 為可信應(yīng)用軟件提供和 TPM通信的 接口 其網(wǎng)站上有很多關(guān)于使用此軟件的測(cè)試用例
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
                }		DBG_ASSERT(tmp->pub_data_size < 2048);		/* read in the key */                if ((rc = read_data(fd, tmp_buffer, tmp->pub_data_size))) {			LogError("%s", __FUNCTION__);                        MUTEX_UNLOCK(disk_cache_lock);                        return rc;                }		/* do the compare */		if (memcmp(tmp_buffer, pub->key, tmp->pub_data_size)) {			tmp = tmp->next;			continue;		}		*ret_uuid = (TSS_UUID *)malloc(sizeof(TSS_UUID));		if (*ret_uuid == NULL) {			LogError("malloc of %zd bytes failed.", sizeof(TSS_UUID));                        MUTEX_UNLOCK(disk_cache_lock);			return TCSERR(TSS_E_OUTOFMEMORY);		}		/* the key matches, copy the uuid out */		memcpy(*ret_uuid, &tmp->uuid, sizeof(TSS_UUID));                MUTEX_UNLOCK(disk_cache_lock);                return TSS_SUCCESS;        }        MUTEX_UNLOCK(disk_cache_lock);        /* key not found */        return TCSERR(TSS_E_PS_KEY_NOTFOUND);}TSS_RESULTpsfile_get_key_by_pub(int fd, TCPA_STORE_PUBKEY *pub, UINT32 *size, BYTE **ret_key){        int rc;        UINT32 file_offset = 0;        struct key_disk_cache *tmp;	BYTE tmp_buffer[4096];        MUTEX_LOCK(disk_cache_lock);        tmp = key_disk_cache_head;        while (tmp) {		/* if the key is of the wrong size or is invalid, try the next one */                if (pub->keyLength != tmp->pub_data_size || !(tmp->flags & CACHE_FLAG_VALID)) {                        tmp = tmp->next;                        continue;                }		/* we have a valid key with the same key size as the one we're looking for.		 * grab the pub key data off disk and compare it. */                /* jump to the location of the public key */                file_offset = TSSPS_PUB_DATA_OFFSET(tmp);                rc = lseek(fd, file_offset, SEEK_SET);                if (rc == ((off_t) - 1)) {                        LogError("lseek: %s", strerror(errno));                        MUTEX_UNLOCK(disk_cache_lock);                        return TCSERR(TSS_E_INTERNAL_ERROR);                }		DBG_ASSERT(tmp->pub_data_size < 2048);		/* read in the key */                if ((rc = read_data(fd, tmp_buffer, tmp->pub_data_size))) {			LogError("%s", __FUNCTION__);                        MUTEX_UNLOCK(disk_cache_lock);                        return rc;                }		/* do the compare */		if (memcmp(tmp_buffer, pub->key, tmp->pub_data_size)) {			tmp = tmp->next;			continue;		}                /* jump to the location of the key blob */                file_offset = TSSPS_BLOB_DATA_OFFSET(tmp);                rc = lseek(fd, file_offset, SEEK_SET);                if (rc == ((off_t) - 1)) {                        LogError("lseek: %s", strerror(errno));                        MUTEX_UNLOCK(disk_cache_lock);                        return TCSERR(TSS_E_INTERNAL_ERROR);                }		DBG_ASSERT(tmp->blob_size < 4096);		/* read in the key blob */                if ((rc = read_data(fd, tmp_buffer, tmp->blob_size))) {			LogError("%s", __FUNCTION__);                        MUTEX_UNLOCK(disk_cache_lock);                        return rc;                }		*ret_key = malloc(tmp->blob_size);		if (*ret_key == NULL) {			LogError("malloc of %d bytes failed.", tmp->blob_size);                        MUTEX_UNLOCK(disk_cache_lock);			return TCSERR(TSS_E_OUTOFMEMORY);		}		memcpy(*ret_key, tmp_buffer, tmp->blob_size);		*size = tmp->blob_size;                MUTEX_UNLOCK(disk_cache_lock);                return rc;        }        MUTEX_UNLOCK(disk_cache_lock);        /* key not found */        return -2;}/* * disk store format: * * TrouSerS 0.2.0 and before: * Version 0:                  cached? * [UINT32   num_keys_on_disk] * [TSS_UUID uuid0           ] yes * [TSS_UUID uuid_parent0    ] yes * [UINT16   pub_data_size0  ] yes * [UINT16   blob_size0      ] yes * [UINT16   cache_flags0    ] yes * [BYTE[]   pub_data0       ] * [BYTE[]   blob0           ] * [...] * * TrouSerS 0.2.1+ * Version 1:                  cached? * [BYTE     PS version = '\1'] * [UINT32   num_keys_on_disk ] * [TSS_UUID uuid0            ] yes * [TSS_UUID uuid_parent0     ] yes * [UINT16   pub_data_size0   ] yes * [UINT16   blob_size0       ] yes * [UINT32   vendor_data_size0] yes * [UINT16   cache_flags0     ] yes * [BYTE[]   pub_data0        ] * [BYTE[]   blob0            ] * [BYTE[]   vendor_data0     ] * [...] * */TSS_RESULTpsfile_write_key(int fd,		TSS_UUID *uuid,		TSS_UUID *parent_uuid,		UINT32 *parent_ps,		BYTE *vendor_data,		UINT32 vendor_size,		BYTE *key_blob,		UINT16 key_blob_size){	TSS_KEY key;	UINT16 pub_key_size, cache_flags = CACHE_FLAG_VALID;	UINT64 offset;	int rc = 0;	/* leaving the cache flag for parent ps type as 0 implies TSS_PS_TYPE_USER */	if (*parent_ps == TSS_PS_TYPE_SYSTEM)		cache_flags |= CACHE_FLAG_PARENT_PS_SYSTEM;	/* Unload the blob to get the public key */	offset = 0;	if ((rc = UnloadBlob_TSS_KEY(&offset, key_blob, &key)))		return rc;	pub_key_size = key.pubKey.keyLength;        if ((rc = write_key_init(fd, pub_key_size, key_blob_size, vendor_size)) < 0)                goto done;	/* offset now holds the number of bytes from the beginning of the file	 * the key will be stored at	 */	offset = rc;#ifdef TSS_DEBUG	if (offset == 0)		LogDebug("ERROR: key being written with offset 0!!");#endif	/* [TSS_UUID uuid0           ] yes */        if ((rc = write_data(fd, (void *)uuid, sizeof(TSS_UUID)))) {		LogError("%s", __FUNCTION__);                goto done;	}	/* [TSS_UUID uuid_parent0    ] yes */        if ((rc = write_data(fd, (void *)parent_uuid, sizeof(TSS_UUID)))) {		LogError("%s", __FUNCTION__);                goto done;	}	/* [UINT16   pub_data_size0  ] yes */        if ((rc = write_data(fd, &pub_key_size, sizeof(UINT16)))) {		LogError("%s", __FUNCTION__);                goto done;	}	/* [UINT16   blob_size0      ] yes */        if ((rc = write_data(fd, &key_blob_size, sizeof(UINT16)))) {		LogError("%s", __FUNCTION__);                goto done;	}	/* [UINT32   vendor_data_size0 ] yes */        if ((rc = write_data(fd, &vendor_size, sizeof(UINT32)))) {		LogError("%s", __FUNCTION__);                goto done;	}	/* [UINT16   cache_flags0    ] yes */        if ((rc = write_data(fd, &cache_flags, sizeof(UINT16)))) {		LogError("%s", __FUNCTION__);                goto done;	}	/* [BYTE[]   pub_data0       ] no */        if ((rc = write_data(fd, (void *)key.pubKey.key, pub_key_size))) {		LogError("%s", __FUNCTION__);                goto done;	}	/* [BYTE[]   blob0           ] no */        if ((rc = write_data(fd, (void *)key_blob, key_blob_size))) {		LogError("%s", __FUNCTION__);                goto done;	}	/* [BYTE[]   vendor_data0    ] no */	if (vendor_size > 0) {		if ((rc = write_data(fd, (void *)vendor_data, vendor_size))) {			LogError("%s", __FUNCTION__);			goto done;		}	}	if ((rc = cache_key((UINT32)offset, cache_flags, uuid, parent_uuid, pub_key_size,					key_blob_size, vendor_size)))                goto done;done:	destroy_key_refs(&key);        return rc;}TSS_RESULTpsfile_remove_key(int fd, struct key_disk_cache *c){        TSS_RESULT result;        UINT32 head_offset = 0, tail_offset, num_keys;	BYTE buf[4096];	struct stat stat_buf;	int rc, size = 0;	if ((rc = fstat(fd, &stat_buf)) != 0) {		LogError("fstat: %s", strerror(errno));		return TSS_E_INTERNAL_ERROR;	}	/* head_offset is the offset the beginning of the key */	head_offset = TSSPS_UUID_OFFSET(c);	/* tail_offset is the offset the beginning of the next key */	tail_offset = TSSPS_VENDOR_DATA_OFFSET(c) + c->vendor_data_size;	rc = lseek(fd, tail_offset, SEEK_SET);	if (rc == ((off_t) - 1)) {		LogError("lseek: %s", strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	/* read in from tail, write out to head to fill the gap */	while ((rc = read(fd, buf, sizeof(buf))) > 0) {		size = rc;		tail_offset += size;		/* set the file pointer to where we want to write */		rc = lseek(fd, head_offset, SEEK_SET);		if (rc == ((off_t) - 1)) {			LogError("lseek: %s", strerror(errno));			return TCSERR(TSS_E_INTERNAL_ERROR);		}		/* write the data */		if ((result = write_data(fd, (void *)buf, size))) {			LogError("%s", __FUNCTION__);			return result;		}		head_offset += size;		/* set the file pointer to where we want to read in the next		 * loop */		rc = lseek(fd, tail_offset, SEEK_SET);		if (rc == ((off_t) - 1)) {			LogError("lseek: %s", strerror(errno));			return TCSERR(TSS_E_INTERNAL_ERROR);		}	}	if (rc < 0) {		LogError("read: %s", strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	/* set the file pointer to where we want to write */	rc = lseek(fd, head_offset, SEEK_SET);	if (rc == ((off_t) - 1)) {		LogError("lseek: %s", strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	/* head_offset now contains a pointer to where we want to truncate the	 * file. Zero out the old tail end of the file and truncate it. */	memset(buf, 0, sizeof(buf));	/* Zero out the old tail end of the file */	if ((result = write_data(fd, (void *)buf, tail_offset - head_offset))) {		LogError("%s", __FUNCTION__);		return result;	}	if ((rc = ftruncate(fd, head_offset)) < 0) {		LogError("ftruncate: %s", strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	/* we succeeded in removing a key from the disk. Decrement the number	 * of keys in the file */	rc = lseek(fd, TSSPS_NUM_KEYS_OFFSET, SEEK_SET);	if (rc == ((off_t) - 1)) {		LogError("lseek: %s", strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	rc = read(fd, &num_keys, sizeof(UINT32));	if (rc != sizeof(UINT32)) {		LogError("read of %zd bytes: %s", sizeof(UINT32), strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	rc = lseek(fd, TSSPS_NUM_KEYS_OFFSET, SEEK_SET);	if (rc == ((off_t) - 1)) {		LogError("lseek: %s", strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	/* decrement, then write back out to disk */	num_keys--;	if ((result = write_data(fd, (void *)&num_keys, sizeof(UINT32)))) {		LogError("%s", __FUNCTION__);		return result;	}	return TSS_SUCCESS;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产凹凸在线观看一区二区| 丝袜国产日韩另类美女| 欧美片网站yy| 国产精品一二一区| 日韩精品高清不卡| 亚洲欧洲综合另类| 久久久久久久久久久电影| 欧美区一区二区三区| 奇米精品一区二区三区在线观看| 99这里都是精品| 精品一区二区在线观看| 亚洲精品视频在线观看免费| 久久日韩精品一区二区五区| 欧美色网站导航| 99久久精品国产网站| 国产麻豆一精品一av一免费| 日韩精品电影一区亚洲| 亚洲人成网站在线| 欧美国产精品专区| 欧美tickling挠脚心丨vk| 在线观看日韩一区| 成人高清免费观看| 国产乱码字幕精品高清av | 国产精品天天看| 欧美一级淫片007| 欧美日韩aaaaaa| 欧洲一区在线电影| 91美女视频网站| 东方欧美亚洲色图在线| 国产中文字幕精品| 久久99精品久久久久久| 奇米综合一区二区三区精品视频| 亚洲一卡二卡三卡四卡无卡久久| 日韩理论电影院| 中文字幕二三区不卡| 国产视频一区在线播放| 久久久99久久精品欧美| 久久九九久久九九| 欧美激情在线一区二区三区| 国产亚洲欧美一级| 欧美—级在线免费片| 久久久久久久综合色一本| 久久久久久久综合日本| 亚洲国产精品国自产拍av| 国产视频一区二区在线| 日本一区二区视频在线观看| 日本一区二区视频在线| 国产精品美女久久久久高潮| 国产精品久久久久久久久晋中| 国产精品久久久久一区| 亚洲婷婷综合色高清在线| 亚洲图片另类小说| 亚洲国产乱码最新视频| 亚洲444eee在线观看| 日本午夜精品视频在线观看 | 亚洲图片你懂的| 亚洲在线观看免费视频| 天堂影院一区二区| 久久电影网站中文字幕| 国产乱子伦一区二区三区国色天香 | 欧美日本一区二区| 欧美大片一区二区| 国产亚洲一区二区三区在线观看 | 日韩av一二三| 国产精品一线二线三线精华| 成人高清免费观看| 欧美偷拍一区二区| 精品久久久久久久一区二区蜜臀| 欧美国产日产图区| 亚洲一二三区在线观看| 蓝色福利精品导航| 成人免费黄色在线| 在线观看区一区二| 日韩欧美国产成人一区二区| 国产精品欧美极品| 亚洲成a人片在线观看中文| 毛片不卡一区二区| 99re热视频这里只精品| 91精品国产91久久久久久最新毛片| 久久综合资源网| 亚洲欧美一区二区三区久本道91 | yourporn久久国产精品| 欧美日韩aaaaaa| 国产欧美日本一区视频| 亚洲一区二区三区四区在线免费观看 | 五月天激情综合网| 国产一区二区三区精品欧美日韩一区二区三区 | 成人久久久精品乱码一区二区三区| 在线视频一区二区免费| 精品国产亚洲在线| 亚洲一二三四在线观看| 国产电影一区在线| 欧美日韩精品专区| 国产精品理论在线观看| 日本成人在线一区| 91性感美女视频| 欧美成人伊人久久综合网| 亚洲欧美色图小说| 精品一区中文字幕| 欧美午夜不卡在线观看免费| 国产色产综合产在线视频| 日韩专区欧美专区| 色94色欧美sute亚洲线路二| 久久精品日韩一区二区三区| 性做久久久久久久免费看| 99久久精品一区二区| 精品国产免费视频| 五月天精品一区二区三区| 99精品视频免费在线观看| 久久精品男人的天堂| 伦理电影国产精品| 欧美精品久久久久久久久老牛影院| 中文字幕色av一区二区三区| 久久97超碰国产精品超碰| 欧美日韩国产精品成人| 亚洲精选一二三| a美女胸又www黄视频久久| 久久综合九色综合欧美亚洲| 日韩av在线发布| 欧美日韩一区二区三区四区五区| 中文字幕欧美一| 国产mv日韩mv欧美| 久久色视频免费观看| 国内一区二区视频| 精品国产一区二区三区久久影院| 污片在线观看一区二区| 欧美午夜精品一区二区三区| 成人免费在线播放视频| 成人av网在线| 中文一区二区完整视频在线观看| 国产真实乱子伦精品视频| 精品国产91乱码一区二区三区| 日日夜夜精品视频免费| 制服丝袜国产精品| 日本成人中文字幕| 日韩久久免费av| 久久国产成人午夜av影院| 欧美不卡123| 激情综合五月婷婷| 久久久久综合网| 国产精品99久久久久久有的能看| 久久九九全国免费| 成人网在线播放| ...xxx性欧美| 91久久精品午夜一区二区| 亚洲一区二区三区四区在线免费观看 | 成人免费的视频| 亚洲人成7777| 欧美在线观看一二区| 亚洲1区2区3区4区| 91精品在线一区二区| 九九**精品视频免费播放| 精品福利视频一区二区三区| 国产一区二区美女| 国产欧美日韩亚州综合| caoporn国产精品| 亚洲尤物在线视频观看| 欧美精品少妇一区二区三区| 麻豆久久久久久久| 国产亚洲一二三区| 色噜噜久久综合| 亚洲大片精品永久免费| 精品国产一区二区三区久久影院 | 国产欧美视频一区二区| 色综合天天综合网天天狠天天| 亚洲午夜精品17c| 日韩欧美www| 成人av在线资源| 石原莉奈一区二区三区在线观看| 日韩一区二区三区在线观看| 国产在线观看一区二区| 日韩毛片一二三区| 7777女厕盗摄久久久| 日韩女优电影在线观看| 国产精品1区2区| 亚洲精品水蜜桃| 欧美乱妇15p| 精品噜噜噜噜久久久久久久久试看| 国产农村妇女毛片精品久久麻豆 | 99r国产精品| 天堂成人国产精品一区| 久久久精品免费网站| 欧美亚洲国产一卡| 激情综合色综合久久| 中文字幕一区二区三区在线播放| 在线播放91灌醉迷j高跟美女 | 日韩电影一区二区三区| 久久久久成人黄色影片| 欧美三区在线视频| 国产精品99久久久久久有的能看| 亚洲高清视频在线| 欧美激情一区二区| 91精品国产色综合久久不卡电影 | 美腿丝袜亚洲三区| 亚洲品质自拍视频网站| 久久久久久久久久看片| 91.com在线观看| 一本一道久久a久久精品综合蜜臀| 韩国三级中文字幕hd久久精品| 亚洲精品久久久久久国产精华液|