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

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

?? tcsps.c

?? TCG軟件棧 linux系統(tǒng)上使用 為可信應(yīng)用軟件提供和 TPM通信的 接口 其網(wǎng)站上有很多關(guān)于使用此軟件的測(cè)試用例
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* * Licensed Materials - Property of IBM * * trousers - An open source TCG Software Stack * * (C) Copyright International Business Machines Corp. 2004-2006 * */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <errno.h>#include <sys/types.h>#include <sys/file.h>#include <sys/stat.h>#include <assert.h>#include "trousers/tss.h"#include "trousers_types.h"#include "tcsps.h"#include "tcs_tsp.h"#include "tcs_utils.h"#include "capabilities.h"#include "tcslog.h"#include "tcsd_wrap.h"#include "tcsd.h"int system_ps_fd = -1;MUTEX_DECLARE(disk_cache_lock);intget_file(){	int rc = 0;	/* check the global file handle first.  If it exists, lock it and return */	if (system_ps_fd != -1) {		if ((rc = flock(system_ps_fd, LOCK_EX))) {			LogError("failed to get system PS lock: %s", strerror(errno));			return -1;		}		return system_ps_fd;	}	/* open and lock the file */	system_ps_fd = open(tcsd_options.system_ps_file, O_CREAT|O_RDWR, 0600);	if (system_ps_fd < 0) {		LogError("system PS: open() of %s failed: %s",				tcsd_options.system_ps_file, strerror(errno));		return -1;	}	if ((rc = flock(system_ps_fd, LOCK_EX))) {		LogError("failed to get system PS lock of file %s: %s",				tcsd_options.system_ps_file, strerror(errno));		return -1;	}	return system_ps_fd;}intput_file(int fd){	int rc = 0;	/* release the file lock */	if ((rc = flock(fd, LOCK_UN))) {		LogError("failed to unlock system PS file: %s", strerror(errno));		return -1;	}	return rc;}voidclose_file(int fd){	close(fd);	system_ps_fd = -1;}TSS_RESULTpsfile_get_parent_uuid_by_uuid(int fd, TSS_UUID *uuid, TSS_UUID *ret_uuid){        int rc;        UINT32 file_offset = 0;        struct key_disk_cache *tmp;        MUTEX_LOCK(disk_cache_lock);        tmp = key_disk_cache_head;        while (tmp) {                if (memcmp(uuid, &tmp->uuid, sizeof(TSS_UUID)) || !(tmp->flags & CACHE_FLAG_VALID)) {                        tmp = tmp->next;                        continue;                }                /* jump to the location of the parent uuid */                file_offset = TSSPS_PARENT_UUID_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 -1;                }                if ((rc = read_data(fd, ret_uuid, sizeof(TSS_UUID)))) {			LogError("%s", __FUNCTION__);                        MUTEX_UNLOCK(disk_cache_lock);                        return rc;                }                MUTEX_UNLOCK(disk_cache_lock);                return TSS_SUCCESS;        }        MUTEX_UNLOCK(disk_cache_lock);        /* key not found */        return -2;}/* * return a key blob from PS given a uuid */TSS_RESULTpsfile_get_key_by_uuid(int fd, TSS_UUID *uuid, BYTE *ret_buffer, UINT16 *ret_buffer_size){        int rc;        UINT32 file_offset = 0;        struct key_disk_cache *tmp;        MUTEX_LOCK(disk_cache_lock);        tmp = key_disk_cache_head;        while (tmp) {                if (memcmp(uuid, &tmp->uuid, sizeof(TSS_UUID)) || !(tmp->flags & CACHE_FLAG_VALID)) {                        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);                }                /* we found the key; file ptr is pointing at the blob */                if (*ret_buffer_size < tmp->blob_size) {                        /* not enough room */                        MUTEX_UNLOCK(disk_cache_lock);                        return TCSERR(TSS_E_FAIL);                }                if ((rc = read_data(fd, ret_buffer, tmp->blob_size))) {			LogError("%s", __FUNCTION__);                        MUTEX_UNLOCK(disk_cache_lock);                        return rc;                }		*ret_buffer_size = tmp->blob_size;		LogDebugUnrollKey(ret_buffer);                MUTEX_UNLOCK(disk_cache_lock);                return TSS_SUCCESS;        }        MUTEX_UNLOCK(disk_cache_lock);        /* key not found */        return TCSERR(TSS_E_FAIL);}/* * return a key blob from PS given its cache entry. The disk cache must be * locked by the caller. */TSS_RESULTpsfile_get_key_by_cache_entry(int fd, struct key_disk_cache *c, BYTE *ret_buffer,			  UINT16 *ret_buffer_size){        int rc;        UINT32 file_offset = 0;	/* jump to the location of the key blob */	file_offset = TSSPS_BLOB_DATA_OFFSET(c);	rc = lseek(fd, file_offset, SEEK_SET);	if (rc == ((off_t) - 1)) {		LogError("lseek: %s", strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	/* we found the key; file ptr is pointing at the blob */	if (*ret_buffer_size < c->blob_size) {		/* not enough room */		LogError("%s: Buf size too small. Needed %d bytes, passed %d", __FUNCTION__,				c->blob_size, *ret_buffer_size);		return TCSERR(TSS_E_INTERNAL_ERROR);	}	if ((rc = read_data(fd, ret_buffer, c->blob_size))) {		LogError("%s: error reading %d bytes", __FUNCTION__, c->blob_size);		return TCSERR(TSS_E_INTERNAL_ERROR);	}	*ret_buffer_size = c->blob_size;	return TSS_SUCCESS;}/* * return the vendor data from PS given its cache entry. The disk cache must be * locked by the caller. */TSS_RESULTpsfile_get_vendor_data(int fd, struct key_disk_cache *c, UINT32 *size, BYTE **data){        int rc;        UINT32 file_offset;	/* jump to the location of the data */	file_offset = TSSPS_VENDOR_DATA_OFFSET(c);	rc = lseek(fd, file_offset, SEEK_SET);	if (rc == ((off_t) - 1)) {		LogError("lseek: %s", strerror(errno));		return TCSERR(TSS_E_INTERNAL_ERROR);	}	if ((*data = malloc(c->vendor_data_size)) == NULL) {		LogError("malloc of %u bytes failed", c->vendor_data_size);		return TCSERR(TSS_E_OUTOFMEMORY);	}	if ((rc = read_data(fd, *data, c->vendor_data_size))) {		LogError("%s: error reading %u bytes", __FUNCTION__, c->vendor_data_size);		free(*data);		*data = NULL;		return TCSERR(TSS_E_INTERNAL_ERROR);	}	*size = c->vendor_data_size;	return TSS_SUCCESS;}TSS_RESULTpsfile_get_ps_type_by_uuid(int fd, TSS_UUID *uuid, UINT32 *ret_ps_type){	struct key_disk_cache *tmp;	MUTEX_LOCK(disk_cache_lock);	tmp = key_disk_cache_head;        while (tmp) {		if (memcmp(uuid, &tmp->uuid, sizeof(TSS_UUID)) ||		    !(tmp->flags & CACHE_FLAG_VALID)) {			tmp = tmp->next;			continue;                }		if (tmp->flags & CACHE_FLAG_PARENT_PS_SYSTEM) {			*ret_ps_type = TSS_PS_TYPE_SYSTEM;			goto done;		} else			break;        }	*ret_ps_type = TSS_PS_TYPE_USER;done:	MUTEX_UNLOCK(disk_cache_lock);	return TSS_SUCCESS;}TSS_RESULTpsfile_is_pub_registered(int fd, TCPA_STORE_PUBKEY *pub, TSS_BOOL *is_reg){        int rc;        UINT32 file_offset = 0;        struct key_disk_cache *tmp;	char tmp_buffer[2048];        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;		}		/* the key matches, copy the uuid out */		*is_reg = TRUE;                MUTEX_UNLOCK(disk_cache_lock);                return TSS_SUCCESS;        }        MUTEX_UNLOCK(disk_cache_lock);        /* key not found */	*is_reg = FALSE;        return TSS_SUCCESS;}TSS_RESULTpsfile_get_uuid_by_pub(int fd, TCPA_STORE_PUBKEY *pub, TSS_UUID **ret_uuid){        int rc;        UINT32 file_offset = 0;        struct key_disk_cache *tmp;	char tmp_buffer[2048];        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);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲综合色| 欧美一区二区三区小说| 亚洲r级在线视频| 日韩欧美电影一区| 成人黄色软件下载| 亚洲国产综合色| 久久久久国产免费免费| 精品视频在线免费| 国产黄色成人av| 亚洲国产精品久久不卡毛片| 国产亚洲午夜高清国产拍精品 | 欧美国产日韩亚洲一区| 日本精品免费观看高清观看| 国产乱一区二区| 日韩不卡一区二区| 综合欧美一区二区三区| 欧美精品一区二区高清在线观看| 色婷婷久久综合| 国产精品一区二区在线观看不卡 | 五月天亚洲婷婷| 国产精品私人影院| 精品国产一区久久| 欧美精品第1页| 91福利在线看| 成人国产一区二区三区精品| 精品亚洲免费视频| 丝袜美腿一区二区三区| 亚洲六月丁香色婷婷综合久久 | 韩国女主播一区| 亚洲一区二区三区激情| 国产精品电影院| 久久久综合网站| 精品免费视频.| 欧美精品电影在线播放| 欧美日韩免费一区二区三区 | 日韩和的一区二区| 亚洲欧美在线观看| 欧美激情综合网| 久久日韩粉嫩一区二区三区 | 久久综合久久久久88| 91精品欧美福利在线观看| 欧美性一二三区| 色哟哟国产精品免费观看| gogogo免费视频观看亚洲一| 国产精品一区二区男女羞羞无遮挡| 蜜臀av性久久久久av蜜臀妖精| 夜夜嗨av一区二区三区中文字幕| 亚洲欧洲精品一区二区三区不卡| 欧美高清一级片在线观看| 久久综合九色综合欧美就去吻| 欧美一区二区大片| 欧美一区在线视频| 欧美一级久久久| 91精品国产高清一区二区三区 | 亚洲乱码中文字幕| 日韩美女久久久| 亚洲美女电影在线| 亚洲激情图片qvod| 亚洲第一会所有码转帖| 午夜免费久久看| 日本伊人色综合网| 精油按摩中文字幕久久| 国内欧美视频一区二区| 国产精品99久久久久久久女警| 国产伦精品一区二区三区免费| 国产另类ts人妖一区二区| 国产精品一品二品| 成人午夜电影网站| 91成人在线免费观看| 欧美系列一区二区| 日韩欧美国产一区在线观看| 国产视频在线观看一区二区三区| 欧美—级在线免费片| 亚洲国产毛片aaaaa无费看| 日本欧美加勒比视频| 国产精品1024久久| 在线视频欧美精品| 日韩三级伦理片妻子的秘密按摩| 国产日韩av一区| 一区二区视频免费在线观看| 蜜臀av亚洲一区中文字幕| 丰满亚洲少妇av| 欧美在线免费视屏| 2017欧美狠狠色| 国产精品国产三级国产专播品爱网 | 不卡av免费在线观看| 欧美午夜电影在线播放| 欧美成人女星排名| 综合分类小说区另类春色亚洲小说欧美| 一区二区三区四区在线播放| 美女精品自拍一二三四| 91亚洲男人天堂| 欧美一区二区三区免费在线看| 国产日韩欧美在线一区| 亚洲午夜在线电影| 国产成人一区二区精品非洲| 欧美天堂亚洲电影院在线播放| 欧美成人一区二区三区在线观看| 国产精品进线69影院| 美女爽到高潮91| 欧美性色aⅴ视频一区日韩精品| 欧美精品一区二区三区一线天视频| 亚洲视频 欧洲视频| 激情综合色综合久久综合| 在线视频国产一区| 中文av一区特黄| 久久国产精品99久久久久久老狼| 91亚洲国产成人精品一区二区三 | 中文字幕色av一区二区三区| 免费久久精品视频| 欧美视频精品在线| 国产精品久久网站| 激情综合色综合久久| 欧美精品少妇一区二区三区| 亚洲天堂免费看| 国产精品一区二区在线观看不卡 | 国产欧美日韩久久| 日韩综合在线视频| 91国模大尺度私拍在线视频| 国产亚洲一区二区三区| 理论电影国产精品| 欧美日本不卡视频| 怡红院av一区二区三区| 成人福利视频在线看| 久久久久久久久一| 美国精品在线观看| 91麻豆精品国产91久久久| 亚洲激情成人在线| 91在线观看视频| 国产精品人妖ts系列视频| 国产一区二三区好的| 精品va天堂亚洲国产| 日韩国产精品久久久久久亚洲| 欧美三级乱人伦电影| 一区二区在线看| 色综合天天综合网天天狠天天| 国产精品视频线看| 国产成+人+日韩+欧美+亚洲| 久久青草国产手机看片福利盒子| 美女在线视频一区| 日韩精品一区国产麻豆| 麻豆一区二区99久久久久| 欧美日韩精品三区| 天天爽夜夜爽夜夜爽精品视频 | 中文字幕乱码日本亚洲一区二区| 国产在线日韩欧美| 久久综合九色综合97婷婷女人| 蜜臀久久99精品久久久画质超高清| 欧美日本视频在线| 日本成人在线网站| 欧美不卡视频一区| 国产一区二区在线电影| 国产清纯白嫩初高生在线观看91 | 成人的网站免费观看| 国产精品久久久久久久蜜臀 | 精品少妇一区二区三区视频免付费| 日韩高清一区在线| 精品国产一区二区三区不卡 | 在线亚洲一区二区| 亚洲影院在线观看| 欧美日韩亚洲综合一区| 蜜乳av一区二区| 久久嫩草精品久久久精品| 成人av电影在线观看| 亚洲激情男女视频| 91精品婷婷国产综合久久性色 | 制服丝袜亚洲色图| 黄页视频在线91| 中文av一区特黄| 精品视频免费在线| 国模套图日韩精品一区二区| 亚洲国产精华液网站w| 欧美性色欧美a在线播放| 久久99精品国产| 中文字幕精品一区| 欧美在线免费观看视频| 韩国成人在线视频| 自拍偷自拍亚洲精品播放| 欧美高清一级片在线| 国产真实乱对白精彩久久| 亚洲激情校园春色| 久久一二三国产| 色噜噜夜夜夜综合网| 九色综合狠狠综合久久| 亚洲欧洲精品一区二区精品久久久| 欧美日韩极品在线观看一区| 精品一区二区三区视频在线观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 不卡一二三区首页| 午夜日韩在线观看| 欧美激情中文不卡| 欧美一区二区二区| 91丨porny丨国产入口| 免费视频最近日韩| ●精品国产综合乱码久久久久| 欧美精品v国产精品v日韩精品| 国产成人自拍在线| 亚洲va中文字幕| 中文字幕制服丝袜一区二区三区 | 中文字幕免费观看一区|