OLD | NEW |
1 /* Software-Based Trusted Platform Module (TPM) Emulator for Linux | 1 /* Software-based Trusted Platform Module (TPM) Emulator |
2 * Copyright (C) 2006 Mario Strasser <mast@gmx.net>, | 2 * Copyright (C) 2004-2010 Mario Strasser <mast@gmx.net> |
3 * Domenic Schröder <schroeder@gmx.ch>, | |
4 * Swiss Federal Institute of Technology (ETH) Zurich | |
5 * | 3 * |
6 * This module is free software; you can redistribute it and/or modify | 4 * This module is free software; you can redistribute it and/or modify |
7 * it under the terms of the GNU General Public License as published | 5 * it under the terms of the GNU General Public License as published |
8 * by the Free Software Foundation; either version 2 of the License, | 6 * by the Free Software Foundation; either version 2 of the License, |
9 * or (at your option) any later version. | 7 * or (at your option) any later version. |
10 * | 8 * |
11 * This module is distributed in the hope that it will be useful, | 9 * This module is distributed in the hope that it will be useful, |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
15 * | 13 * |
16 * $Id$ | 14 * $Id: tpm_delegation.c 367 2010-02-13 15:52:18Z mast $ |
17 */ | 15 */ |
18 | 16 |
19 #include "tpm_emulator.h" | 17 #include "tpm_emulator.h" |
20 #include "tpm_commands.h" | 18 #include "tpm_commands.h" |
21 #include "tpm_marshalling.h" | 19 #include "tpm_marshalling.h" |
22 #include "tpm_data.h" | 20 #include "tpm_data.h" |
23 #include "tpm_handles.h" | 21 #include "tpm_handles.h" |
24 #include "crypto/hmac.h" | 22 #include "crypto/hmac.h" |
25 #include "crypto/rc4.h" | 23 #include "crypto/rc4.h" |
26 | 24 |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
548 tpm_free(*familyTable); | 546 tpm_free(*familyTable); |
549 tpm_free(*delegateTable); | 547 tpm_free(*delegateTable); |
550 return TPM_FAIL; | 548 return TPM_FAIL; |
551 } | 549 } |
552 } | 550 } |
553 } | 551 } |
554 } | 552 } |
555 return TPM_SUCCESS; | 553 return TPM_SUCCESS; |
556 } | 554 } |
557 | 555 |
558 static TPM_TAG get_structure_tag(BYTE *ptr, UINT32 length) | |
559 { | |
560 TPM_TAG tag; | |
561 if (tpm_unmarshal_TPM_TAG(&ptr, &length, &tag) != 0) return 0xffff; | |
562 return tag; | |
563 } | |
564 | |
565 TPM_RESULT TPM_Delegate_UpdateVerification(UINT32 inputSize, BYTE *inputData, | 556 TPM_RESULT TPM_Delegate_UpdateVerification(UINT32 inputSize, BYTE *inputData, |
566 TPM_AUTH *auth1, UINT32 *outputSize, | 557 TPM_AUTH *auth1, UINT32 *outputSize, |
567 BYTE **outputData) | 558 BYTE **outputData) |
568 { | 559 { |
569 TPM_RESULT res; | 560 TPM_RESULT res; |
570 TPM_SESSION_DATA *session; | 561 TPM_SESSION_DATA *session; |
571 info("TPM_Delegate_UpdateVerification()"); | 562 info("TPM_Delegate_UpdateVerification()"); |
572 /* verify authorization */ | 563 /* verify authorization */ |
573 session = tpm_get_auth(auth1->authHandle); | 564 session = tpm_get_auth(auth1->authHandle); |
574 if (session == NULL) return TPM_AUTHFAIL; | 565 if (session == NULL) return TPM_AUTHFAIL; |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
755 } | 746 } |
756 tpm_free(sens_buf); | 747 tpm_free(sens_buf); |
757 if (sensitive.tag != TPM_TAG_DELEGATE_SENSITIVE) return TPM_BAD_PARAMETER; | 748 if (sensitive.tag != TPM_TAG_DELEGATE_SENSITIVE) return TPM_BAD_PARAMETER; |
758 } else { | 749 } else { |
759 debug("unsupported input structure: %02x%02x", delegation[0], delegation[1])
; | 750 debug("unsupported input structure: %02x%02x", delegation[0], delegation[1])
; |
760 return TPM_BAD_PARAMETER; | 751 return TPM_BAD_PARAMETER; |
761 } | 752 } |
762 return TPM_SUCCESS; | 753 return TPM_SUCCESS; |
763 } | 754 } |
764 | 755 |
OLD | NEW |