diff options
author | Claudio Carvalho <cclaudio@linux.vnet.ibm.com> | 2016-09-28 05:01:30 -0300 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2016-10-10 15:29:36 +1100 |
commit | d15dd47d4a0f766282a034641621529e58ae8b25 (patch) | |
tree | 659ebfdd0e1e6c187b85f88827d468c751e23fc6 /libstb/stb.h | |
parent | 3837c6f0cf4cffb5de874413eed755c0c698b076 (diff) | |
download | skiboot-d15dd47d4a0f766282a034641621529e58ae8b25.zip skiboot-d15dd47d4a0f766282a034641621529e58ae8b25.tar.gz skiboot-d15dd47d4a0f766282a034641621529e58ae8b25.tar.bz2 |
libstb: add secure and trusted boot interface
stb.c implements the libstb API, which is an API for secure and trusted boot:
- stb_init(): read secure mode and trusted mode from device tree and
load drivers accordingly
- tb_measure(): measure a resource downloaded from PNOR if trusted mode
is on. That is, an EV_ACTION event is recorded in the event log for
the mapped PCR and the sha1 and sha256 measurements are extended in
the mapped PCR.
- sb_verify(): verify the integrity and authenticity of a resource
downloaded from PNOR if secure mode is on. The boot process is aborted
if the verification fails.
- stb_final(): this is called to add marks to TPM and event log before
handover to petitboot kernel. Basically, it records an EV_SEPARATOR
event in the event log for PCR[0-7], extends the sha1 and sha256
digests of 0xFFFFFFFF in PCR[0-7], and deallocates the memory allocated
for secure and trusted boot.
For more information please refer to 'doc/stb.rst'.
Signed-off-by: Claudio Carvalho <cclaudio@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'libstb/stb.h')
-rw-r--r-- | libstb/stb.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/libstb/stb.h b/libstb/stb.h new file mode 100644 index 0000000..cd60148 --- /dev/null +++ b/libstb/stb.h @@ -0,0 +1,74 @@ +/* Copyright 2013-2016 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __STB_H +#define __STB_H + +/** + * This reads secure mode and trusted mode from device tree and + * loads drivers accordingly. + */ +extern void stb_init(void); + +/** + * As defined in the TCG Platform Firmware Profile specification, the + * digest of 0xFFFFFFFF or 0x00000000 must be extended in PCR[0-7] and + * an EV_SEPARATOR event must be recorded in the event log for PCR[0-7] + * prior to the first invocation of the first Ready to Boot call. + * + * This function should be called before the control is passed to petitboot + * kernel in order to do the proper PCR extend and event log recording as + * defined above. This function also deallocates the memory allocated for secure + * and trusted boot. + */ +extern int stb_final(void); + +/** + * sb_verify - verify a resource + * @id : resource id + * @subid: subpartition id + * @buf : data to be verified + * + * This verifies the integrity and authenticity of a resource downloaded from + * PNOR if secure mode is on. The verification is done by the + * verification code flashed in the secure ROM. + * + * For more information refer to 'doc/stb.rst' + * + * returns: 0 otherwise the boot process is aborted + */ +extern int sb_verify(enum resource_id id, uint32_t subid, void *buf, size_t len); + + +/** + * tb_measure - measure a resource + * @id : resource id + * @subid : subpartition id + * @buf : data to be measured + * @len : buf length + * + * This measures a resource downloaded from PNOR if trusted mode is on. That is, + * an EV_ACTION event is recorded in the event log for the mapped PCR, and the + * the sha1 and sha256 measurements are extended in the mapped PCR. + * + * For more information please refer to 'doc/stb.rst' + * + * returns: 0 or an error as defined in status_codes.h + */ +extern int tb_measure(enum resource_id id, uint32_t subid, void *buf, + size_t len); + +#endif /* __STB_H */ |