1 /* Microsoft Reference Implementation for TPM 2.0 2 * 3 * The copyright in this software is being made available under the BSD License, 4 * included below. This software may be subject to other third party and 5 * contributor rights, including patent rights, and no such rights are granted 6 * under this license. 7 * 8 * Copyright (c) Microsoft Corporation 9 * 10 * All rights reserved. 11 * 12 * BSD License 13 * 14 * Redistribution and use in source and binary forms, with or without modification, 15 * are permitted provided that the following conditions are met: 16 * 17 * Redistributions of source code must retain the above copyright notice, this list 18 * of conditions and the following disclaimer. 19 * 20 * Redistributions in binary form must reproduce the above copyright notice, this 21 * list of conditions and the following disclaimer in the documentation and/or 22 * other materials provided with the distribution. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS"" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 28 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 31 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 */ 35 /*(Auto-generated) 36 * Created by TpmPrototypes; Version 3.0 July 18, 2017 37 * Date: Mar 28, 2019 Time: 08:25:18PM 38 */ 39 40 #ifndef _CONTEXT_SPT_FP_H_ 41 #define _CONTEXT_SPT_FP_H_ 42 43 //*** ComputeContextProtectionKey() 44 // This function retrieves the symmetric protection key for context encryption 45 // It is used by TPM2_ConextSave and TPM2_ContextLoad to create the symmetric 46 // encryption key and iv 47 // Return Type: void 48 void 49 ComputeContextProtectionKey( 50 TPMS_CONTEXT *contextBlob, // IN: context blob 51 TPM2B_SYM_KEY *symKey, // OUT: the symmetric key 52 TPM2B_IV *iv // OUT: the IV. 53 ); 54 55 //*** ComputeContextIntegrity() 56 // Generate the integrity hash for a context 57 // It is used by TPM2_ContextSave to create an integrity hash 58 // and by TPM2_ContextLoad to compare an integrity hash 59 // Return Type: void 60 void 61 ComputeContextIntegrity( 62 TPMS_CONTEXT *contextBlob, // IN: context blob 63 TPM2B_DIGEST *integrity // OUT: integrity 64 ); 65 66 //*** SequenceDataExport() 67 // This function is used scan through the sequence object and 68 // either modify the hash state data for export (contextSave) or to 69 // import it into the internal format (contextLoad). 70 // This function should only be called after the sequence object has been copied 71 // to the context buffer (contextSave) or from the context buffer into the sequence 72 // object. The presumption is that the context buffer version of the data is the 73 // same size as the internal representation so nothing outsize of the hash context 74 // area gets modified. 75 void 76 SequenceDataExport( 77 HASH_OBJECT *object, // IN: an internal hash object 78 HASH_OBJECT_BUFFER *exportObject // OUT: a sequence context in a buffer 79 ); 80 81 //*** SequenceDataImport() 82 // This function is used scan through the sequence object and 83 // either modify the hash state data for export (contextSave) or to 84 // import it into the internal format (contextLoad). 85 // This function should only be called after the sequence object has been copied 86 // to the context buffer (contextSave) or from the context buffer into the sequence 87 // object. The presumption is that the context buffer version of the data is the 88 // same size as the internal representation so nothing outsize of the hash context 89 // area gets modified. 90 void 91 SequenceDataImport( 92 HASH_OBJECT *object, // IN/OUT: an internal hash object 93 HASH_OBJECT_BUFFER *exportObject // IN/OUT: a sequence context in a buffer 94 ); 95 96 #endif // _CONTEXT_SPT_FP_H_ 97