diff options
Diffstat (limited to 'tools/vtpm_manager/tcs/contextmgr.c')
-rw-r--r-- | tools/vtpm_manager/tcs/contextmgr.c | 224 |
1 files changed, 0 insertions, 224 deletions
diff --git a/tools/vtpm_manager/tcs/contextmgr.c b/tools/vtpm_manager/tcs/contextmgr.c deleted file mode 100644 index cf3803c6ba..0000000000 --- a/tools/vtpm_manager/tcs/contextmgr.c +++ /dev/null @@ -1,224 +0,0 @@ -// =================================================================== -// -// Copyright (c) 2005, Intel Corp. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * 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. -// * Neither the name of Intel Corporation nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS 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 -// COPYRIGHT OWNER OR 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. -// =================================================================== -// -// contextmgr.c -// -// This file contains the context management functions for TCS. -// -// ================================================================== - -#include <stdio.h> -#include <string.h> -#include <malloc.h> -#include "tcs.h" -#include "contextmgr.h" -#include "log.h" -#include "hashtable.h" - -BYTE* AddMemBlock(CONTEXT_HANDLE* pContextHandle, // in - int BlockSize) { // in - - BLOCK* pCurrentBlock = NULL; - BLOCK* pBlock = NULL; - - // check incoming params - if (pContextHandle == NULL || BlockSize == 0) - return NULL; - - // Create New Block - pBlock = (BLOCK *)malloc(sizeof(BLOCK)); - if (pBlock == NULL) - return (0); - - pBlock->aMemory = (BYTE *)malloc(sizeof(BYTE) * BlockSize); - if (pBlock->aMemory == NULL) - return (0); - - memset(pBlock->aMemory, 0, BlockSize); - pBlock->nBlockSize = BlockSize; - pBlock->pNextBlock = NULL; - - // search for the last block created where to add the - // newly created block - if(pContextHandle->pTopBlock != NULL) { - pCurrentBlock = pContextHandle->pTopBlock; - while(pCurrentBlock->pNextBlock != NULL) - pCurrentBlock = pCurrentBlock->pNextBlock; - - - pCurrentBlock->pNextBlock= pBlock; - } else - pContextHandle->pTopBlock = pBlock; - - - pContextHandle->nBlockCount++; - - return pBlock->aMemory; -} - - -BOOL DeleteMemBlock(CONTEXT_HANDLE* pContextHandle, // in - BYTE* pTCPA_BYTEs) { // in - BLOCK* pCurrentBlock = NULL; - BLOCK* pParentBlock = NULL; - BOOL bFound = FALSE; - - if (pContextHandle == NULL) - return FALSE; - - - // Search for the Block in the context by aMemory pointer - pParentBlock = NULL; - pCurrentBlock = pContextHandle->pTopBlock; - - while(pCurrentBlock != NULL) { - // If aMemory block is found, delete it - if(pCurrentBlock->aMemory == pTCPA_BYTEs || pTCPA_BYTEs == NULL) { - // if it is the top Block, remove it from the top, - // otherwise remove it from the ParentBlock and stitch - // the NextBlock to the ParentBlock - if(pParentBlock == NULL) - pContextHandle->pTopBlock = pContextHandle->pTopBlock->pNextBlock; - else - pParentBlock->pNextBlock = pCurrentBlock->pNextBlock; - - // delete memory Block associated with pointer pTCPA_BYTEs - free(pCurrentBlock->aMemory); - pCurrentBlock->aMemory = NULL; - - free(pCurrentBlock); - pCurrentBlock = pParentBlock; - - pContextHandle->nBlockCount--; - bFound = TRUE; - } - - if(pCurrentBlock != NULL) { - pParentBlock = pCurrentBlock; - pCurrentBlock = pCurrentBlock->pNextBlock; - } - } - - return bFound; -} - -BOOL AddHandleToList(TCS_CONTEXT_HANDLE hContext, // in - TPM_RESOURCE_TYPE type, // in - TPM_HANDLE handle) { // in - HANDLE_LIST* pNewHandle = NULL; - - vtpmloginfo(VTPM_LOG_TCS_DEEP, "Adding Handle to list\n"); - CONTEXT_HANDLE* pContextHandle = LookupContext(hContext); - - if (pContextHandle == NULL) - return 0; - - pNewHandle = (HANDLE_LIST *)malloc(sizeof(HANDLE_LIST)); - - if (pNewHandle == NULL) - return (0); - - pNewHandle->handle = handle; - pNewHandle->type = type; - pNewHandle->pNextHandle = pContextHandle->pHandleList; - - pContextHandle->pHandleList = pNewHandle; - - return 1; -} - -BOOL DeleteHandleFromList( TCS_CONTEXT_HANDLE hContext, // in - TPM_HANDLE handle) { // in - - CONTEXT_HANDLE* pContextHandle = LookupContext(hContext); - - HANDLE_LIST *pCurrentHandle = pContextHandle->pHandleList, - *pLastHandle = pCurrentHandle; - - vtpmloginfo(VTPM_LOG_TCS_DEEP, "Deleting Handle from list\n"); - - if (pContextHandle == NULL) - return 0; - - while (1) { - - if (pCurrentHandle->handle == handle) { // Found element - if (pCurrentHandle == pLastHandle) { // First element in list - pContextHandle->pHandleList = pCurrentHandle->pNextHandle; - free(pCurrentHandle); - } else { // Ordinary element - pLastHandle->pNextHandle = pCurrentHandle->pNextHandle; - free(pCurrentHandle); - } - - return 1; - - } else { // Not found yet; - pLastHandle = pCurrentHandle; - pCurrentHandle = pCurrentHandle->pNextHandle; - if (pCurrentHandle == NULL) // Found end of list - return 0; - } - - } -} - -BOOL FreeHandleList( CONTEXT_HANDLE* pContextHandle) { // in - HANDLE_LIST* pCurrentHandle; - BOOL returncode = TRUE; - - vtpmloginfo(VTPM_LOG_TCS_DEEP, "Freeing all handles for context\n"); - - if (pContextHandle == NULL) - return 1; - - pCurrentHandle = pContextHandle->pHandleList; - while (pCurrentHandle != NULL) { - - switch (pCurrentHandle->type) { - case TPM_RT_KEY: - returncode = returncode && !TCSP_EvictKey(pContextHandle->handle, pCurrentHandle->handle); - break; - case TPM_RT_AUTH: - returncode = returncode && !TCSP_TerminateHandle(pContextHandle->handle, pCurrentHandle->handle); - break; - default: - returncode = FALSE; - } - - pCurrentHandle = pCurrentHandle->pNextHandle; - - } - - return 1; -} |