| OLD | NEW |
| 1 /* Software-Based Trusted Platform Module (TPM) Emulator for Linux | 1 /* Software-based Trusted Platform Module (TPM) Emulator |
| 2 * Copyright (C) 2004 Mario Strasser <mast@gmx.net>, | 2 * Copyright (C) 2004-2010 Mario Strasser <mast@gmx.net> |
| 3 * Swiss Federal Institute of Technology (ETH) Zurich | |
| 4 * | 3 * |
| 5 * 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 |
| 6 * 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 |
| 7 * by the Free Software Foundation; either version 2 of the License, | 6 * by the Free Software Foundation; either version 2 of the License, |
| 8 * or (at your option) any later version. | 7 * or (at your option) any later version. |
| 9 * | 8 * |
| 10 * 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, |
| 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
| 14 * | 13 * |
| 15 * $Id$ | 14 * $Id: tpm_owner.c 374 2010-02-16 14:00:35Z mast $ |
| 16 */ | 15 */ |
| 17 | 16 |
| 18 #include "tpm_emulator.h" | 17 #include "tpm_emulator.h" |
| 19 #include "tpm_commands.h" | 18 #include "tpm_commands.h" |
| 20 #include "tpm_data.h" | 19 #include "tpm_data.h" |
| 21 #include "tpm_handles.h" | 20 #include "tpm_handles.h" |
| 22 #include "crypto/rsa.h" | 21 #include "crypto/rsa.h" |
| 23 | 22 |
| 24 /* | 23 /* |
| 25 * Admin Opt-in ([TPM_Part3], Section 5) | 24 * Admin Opt-in ([TPM_Part3], Section 5) |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 /* set permanent flags */ | 216 /* set permanent flags */ |
| 218 tpmData.permanent.flags.owned = FALSE; | 217 tpmData.permanent.flags.owned = FALSE; |
| 219 tpmData.permanent.flags.operator = FALSE; | 218 tpmData.permanent.flags.operator = FALSE; |
| 220 tpmData.permanent.flags.disableOwnerClear = FALSE; | 219 tpmData.permanent.flags.disableOwnerClear = FALSE; |
| 221 tpmData.permanent.flags.ownership = TRUE; | 220 tpmData.permanent.flags.ownership = TRUE; |
| 222 tpmData.permanent.flags.disable = FALSE; | 221 tpmData.permanent.flags.disable = FALSE; |
| 223 tpmData.permanent.flags.deactivated = FALSE; | 222 tpmData.permanent.flags.deactivated = FALSE; |
| 224 tpmData.permanent.flags.maintenanceDone = FALSE; | 223 tpmData.permanent.flags.maintenanceDone = FALSE; |
| 225 tpmData.permanent.flags.allowMaintenance = TRUE; | 224 tpmData.permanent.flags.allowMaintenance = TRUE; |
| 226 tpmData.permanent.flags.disableFullDALogicInfo = FALSE; | 225 tpmData.permanent.flags.disableFullDALogicInfo = FALSE; |
| 227 #ifdef TPM_KEEP_PUBEK_READABLE | 226 if (tpmConf & TPM_CONF_KEEP_PUBEK_READABLE) { |
| 228 tpmData.permanent.flags.readPubek = TRUE; | 227 tpmData.permanent.flags.readPubek = TRUE; |
| 229 #else | 228 } else { |
| 230 tpmData.permanent.flags.readPubek = FALSE; | 229 tpmData.permanent.flags.readPubek = FALSE; |
| 231 #endif | 230 } |
| 232 /* release all counters */ | 231 /* release all counters */ |
| 233 for (i = 0; i < TPM_MAX_COUNTERS; i++) | 232 for (i = 0; i < TPM_MAX_COUNTERS; i++) |
| 234 memset(&tpmData.permanent.data.counters[i], 0, sizeof(TPM_COUNTER_VALUE)); | 233 memset(&tpmData.permanent.data.counters[i], 0, sizeof(TPM_COUNTER_VALUE)); |
| 235 /* invalidate family and delegates table */ | 234 /* invalidate family and delegates table */ |
| 236 for (i = 0; i < TPM_NUM_FAMILY_TABLE_ENTRY; i++) { | 235 for (i = 0; i < TPM_NUM_FAMILY_TABLE_ENTRY; i++) { |
| 237 memset(&tpmData.permanent.data.familyTable.famRow[i], 0, | 236 memset(&tpmData.permanent.data.familyTable.famRow[i], 0, |
| 238 sizeof(TPM_FAMILY_TABLE_ENTRY)); | 237 sizeof(TPM_FAMILY_TABLE_ENTRY)); |
| 239 } | 238 } |
| 240 for (i = 0; i < TPM_NUM_DELEGATE_TABLE_ENTRY; i++) { | 239 for (i = 0; i < TPM_NUM_DELEGATE_TABLE_ENTRY; i++) { |
| 241 memset(&tpmData.permanent.data.delegateTable.delRow[i], 0, | 240 memset(&tpmData.permanent.data.delegateTable.delRow[i], 0, |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 | 316 |
| 318 TPM_RESULT TSC_ResetEstablishmentBit() | 317 TPM_RESULT TSC_ResetEstablishmentBit() |
| 319 { | 318 { |
| 320 info("TSC_ResetEstablishmentBit()"); | 319 info("TSC_ResetEstablishmentBit()"); |
| 321 /* locality must be three or four */ | 320 /* locality must be three or four */ |
| 322 if (tpmData.stany.flags.localityModifier != 3 | 321 if (tpmData.stany.flags.localityModifier != 3 |
| 323 && tpmData.stany.flags.localityModifier != 4) return TPM_BAD_LOCALITY; | 322 && tpmData.stany.flags.localityModifier != 4) return TPM_BAD_LOCALITY; |
| 324 /* as we do not have such a bit we do nothing and just return true */ | 323 /* as we do not have such a bit we do nothing and just return true */ |
| 325 return TPM_SUCCESS; | 324 return TPM_SUCCESS; |
| 326 } | 325 } |
| OLD | NEW |