44 lines
1.2 KiB
C
44 lines
1.2 KiB
C
|
/* Copyright 2016 The Chromium OS Authors. All rights reserved.
|
||
|
* Use of this source code is governed by a BSD-style license that can be
|
||
|
* found in the LICENSE file.
|
||
|
*/
|
||
|
|
||
|
#include "console.h"
|
||
|
#include "tpm_manufacture.h"
|
||
|
|
||
|
#include "Global.h"
|
||
|
#include "NV_fp.h"
|
||
|
#include "Platform.h"
|
||
|
#include "TPM_Types.h"
|
||
|
#include "TpmBuildSwitches.h"
|
||
|
#include "tpm_types.h"
|
||
|
|
||
|
#define CPRINTF(format, args...) cprintf(CC_EXTENSION, format, ## args)
|
||
|
|
||
|
#define EK_CERT_NV_START_INDEX 0x01C00000
|
||
|
|
||
|
int tpm_manufactured(void)
|
||
|
{
|
||
|
uint32_t nv_ram_index;
|
||
|
const uint32_t rsa_ek_nv_index = EK_CERT_NV_START_INDEX;
|
||
|
const uint32_t ecc_ek_nv_index = EK_CERT_NV_START_INDEX + 1;
|
||
|
|
||
|
/*
|
||
|
* If nvram_index (value written at NV RAM offset of zero) is all
|
||
|
* ones, or either endorsement certificate is not installed, consider
|
||
|
* the chip un-manufactured.
|
||
|
*
|
||
|
* Thus, wiping flash NV ram allows to re-manufacture the chip.
|
||
|
*/
|
||
|
_plat__NvMemoryRead(0, sizeof(nv_ram_index), &nv_ram_index);
|
||
|
if ((nv_ram_index == ~0) ||
|
||
|
(NvIsUndefinedIndex(rsa_ek_nv_index) == TPM_RC_SUCCESS) ||
|
||
|
(NvIsUndefinedIndex(ecc_ek_nv_index) == TPM_RC_SUCCESS)) {
|
||
|
CPRINTF("%s: NOT manufactured\n", __func__);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
CPRINTF("%s: manufactured\n", __func__);
|
||
|
return 1;
|
||
|
}
|