/* Copyright 2017 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 "common.h" #include "vb21_struct.h" #include "rsa.h" /** * Validate key contents. * * @param key * @return EC_SUCCESS or EC_ERROR_* */ int vb21_is_packed_key_valid(const struct vb21_packed_key *key); /** * Validate signature contents. * * @param sig Signature to be validated. * @param key Key to be used for validating . * @return EC_SUCCESS or EC_ERROR_* */ int vb21_is_signature_valid(const struct vb21_signature *sig, const struct vb21_packed_key *key); /** * Check data region is filled with ones * * @param data Data to be validated. * @param start Offset where validation starts. * @param end Offset where validation ends. data[end] won't be checked. * @return EC_SUCCESS or EC_ERROR_* */ int vboot_is_padding_valid(const uint8_t *data, uint32_t start, uint32_t end); /** * Verify data by RSA signature * * @param data Data to be verified. * @param len Number of bytes in . * @param key Key to be used for verification. * @param sig Signature of * @return EC_SUCCESS or EC_ERROR_* */ int vboot_verify(const uint8_t *data, int len, const struct rsa_public_key *key, const uint8_t *sig); /** * Entry point of EC EFS */ void vboot_main(void); /** * Get if vboot requires PD comm to be enabled or not * * @return 1: need PD communication. 0: PD communication is not needed. */ int vboot_need_pd_comm(void);