aboutsummaryrefslogtreecommitdiff
path: root/libstb/stb.h
diff options
context:
space:
mode:
authorClaudio Carvalho <cclaudio@linux.vnet.ibm.com>2016-09-28 05:01:30 -0300
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-10-10 15:29:36 +1100
commitd15dd47d4a0f766282a034641621529e58ae8b25 (patch)
tree659ebfdd0e1e6c187b85f88827d468c751e23fc6 /libstb/stb.h
parent3837c6f0cf4cffb5de874413eed755c0c698b076 (diff)
downloadskiboot-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.h74
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 */