mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 01:50:53 +00:00
common: Split rwsig parts from rsa.h header
We're going to add more rwsig-related functions, and adding them to rsa.h seems increasingly incorrect. BRANCH=none BUG=b:35587171 TEST=make buildall -j Change-Id: I334c1774ce9a6ed8e219140f65ebe94d653e22d2 Reviewed-on: https://chromium-review.googlesource.com/468708 Commit-Ready: Nicolas Boichat <drinkcat@chromium.org> Tested-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
3f0714c1e2
commit
629c3964a2
@@ -9,6 +9,7 @@
|
||||
#include "ec_commands.h"
|
||||
#include "registers.h"
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
#include "sha256.h"
|
||||
#include "system.h"
|
||||
#include "task.h"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
|
||||
OUTPUT_FORMAT(BFD_FORMAT, BFD_FORMAT, BFD_FORMAT)
|
||||
OUTPUT_ARCH(BFD_ARCH)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#include <stddef.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
#include "util.h"
|
||||
#include "version.h"
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#ifdef CONFIG_MPU
|
||||
#include "mpu.h"
|
||||
#endif
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
#include "system.h"
|
||||
#include "task.h"
|
||||
#include "timer.h"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "ec_commands.h"
|
||||
#include "rollback.h"
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
#include "sha256.h"
|
||||
#include "shared_mem.h"
|
||||
#include "system.h"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "host_command.h"
|
||||
#include "i2c.h"
|
||||
#include "lpc.h"
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
#include "spi_flash.h"
|
||||
#ifdef CONFIG_MPU
|
||||
#include "mpu.h"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
#include "config.h"
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
|
||||
#define STRINGIFY0(name) #name
|
||||
#define STRINGIFY(name) STRINGIFY0(name)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
#include "config.h"
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
|
||||
#define STRINGIFY0(name) #name
|
||||
#define STRINGIFY(name) STRINGIFY0(name)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
#include "config.h"
|
||||
#include "rsa.h"
|
||||
#include "rwsig.h"
|
||||
|
||||
OUTPUT_FORMAT(BFD_FORMAT, BFD_FORMAT, BFD_FORMAT)
|
||||
OUTPUT_ARCH(BFD_ARCH)
|
||||
|
||||
@@ -63,67 +63,6 @@ int rsa_verify(const struct rsa_public_key *key,
|
||||
const uint8_t *sha,
|
||||
uint32_t *workbuf32);
|
||||
|
||||
void check_rw_signature(void);
|
||||
|
||||
#endif /* !__ASSEMBLER__ */
|
||||
|
||||
/*
|
||||
* The signer puts the public key and signature into the RO and RW images
|
||||
* (respectively) at known locations after the complete image is assembled. But
|
||||
* since we compile the RO & RW images separately, the other image's addresses
|
||||
* can't be computed by the linker. So we just hardcode the addresses here.
|
||||
* These can be overridden in board.h files if desired.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_RO_PUBKEY_SIZE
|
||||
#ifdef CONFIG_RWSIG_TYPE_RWSIG
|
||||
/*
|
||||
* rwsig type: 1024 bytes is enough to fit RSA-3072 public key.
|
||||
*
|
||||
* TODO(crosbug.com/p/62321): This still wastes space. We could pack the key at
|
||||
* any arbitrary location, but we need proper signer support to make sure it
|
||||
* can overwrite the key correctly.
|
||||
*/
|
||||
#define CONFIG_RO_PUBKEY_SIZE 1024
|
||||
#else
|
||||
#define CONFIG_RO_PUBKEY_SIZE RSA_PUBLIC_KEY_SIZE
|
||||
#endif
|
||||
#endif /* ! CONFIG_RO_PUBKEY_SIZE */
|
||||
#ifndef CONFIG_RO_PUBKEY_ADDR
|
||||
#ifdef CONFIG_RWSIG_TYPE_RWSIG
|
||||
/* The pubkey goes at the end of the RO region */
|
||||
#define CONFIG_RO_PUBKEY_ADDR (CONFIG_PROGRAM_MEMORY_BASE \
|
||||
+ CONFIG_RO_MEM_OFF \
|
||||
+ CONFIG_RO_SIZE \
|
||||
- CONFIG_RO_PUBKEY_SIZE)
|
||||
#else
|
||||
/*
|
||||
* usbpd1 type assumes pubkey location at the end of first half of flash,
|
||||
* which might actually be in the PSTATE region.
|
||||
*/
|
||||
#define CONFIG_RO_PUBKEY_ADDR (CONFIG_PROGRAM_MEMORY_BASE \
|
||||
+ (CONFIG_FLASH_SIZE / 2) \
|
||||
- CONFIG_RO_PUBKEY_SIZE)
|
||||
#endif
|
||||
#endif /* CONFIG_RO_PUBKEY_ADDR */
|
||||
|
||||
#ifndef CONFIG_RW_SIG_SIZE
|
||||
#ifdef CONFIG_RWSIG_TYPE_RWSIG
|
||||
/*
|
||||
* rwsig type: futility expects signature to be 1024 bytes from the end of
|
||||
* the file.
|
||||
*/
|
||||
#define CONFIG_RW_SIG_SIZE 1024
|
||||
#else
|
||||
#define CONFIG_RW_SIG_SIZE RSANUMBYTES
|
||||
#endif
|
||||
#endif /* ! CONFIG_RW_SIG_SIZE */
|
||||
#ifndef CONFIG_RW_SIG_ADDR
|
||||
/* The signature goes at the end of the RW region */
|
||||
#define CONFIG_RW_SIG_ADDR (CONFIG_PROGRAM_MEMORY_BASE \
|
||||
+ CONFIG_RW_MEM_OFF \
|
||||
+ CONFIG_RW_SIZE \
|
||||
- CONFIG_RW_SIG_SIZE)
|
||||
#endif /* !CONFIG_RW_SIG_ADDR */
|
||||
|
||||
#endif /* __CROS_EC_RSA_H */
|
||||
|
||||
78
include/rwsig.h
Normal file
78
include/rwsig.h
Normal file
@@ -0,0 +1,78 @@
|
||||
/* 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.
|
||||
*/
|
||||
|
||||
#ifndef __CROS_EC_RWSIG_H
|
||||
#define __CROS_EC_RWSIG_H
|
||||
|
||||
#include "config.h"
|
||||
#include "rsa.h"
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
/* Checks RW signature. */
|
||||
void check_rw_signature(void);
|
||||
|
||||
#endif /* !__ASSEMBLER__ */
|
||||
|
||||
/*
|
||||
* The signer puts the public key and signature into the RO and RW images
|
||||
* (respectively) at known locations after the complete image is assembled. But
|
||||
* since we compile the RO & RW images separately, the other image's addresses
|
||||
* can't be computed by the linker. So we just hardcode the addresses here.
|
||||
* These can be overridden in board.h files if desired.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_RO_PUBKEY_SIZE
|
||||
#ifdef CONFIG_RWSIG_TYPE_RWSIG
|
||||
/*
|
||||
* rwsig type: 1024 bytes is enough to fit RSA-3072 public key.
|
||||
*
|
||||
* TODO(crosbug.com/p/62321): This still wastes space. We could pack the key at
|
||||
* any arbitrary location, but we need proper signer support to make sure it
|
||||
* can overwrite the key correctly.
|
||||
*/
|
||||
#define CONFIG_RO_PUBKEY_SIZE 1024
|
||||
#else
|
||||
#define CONFIG_RO_PUBKEY_SIZE RSA_PUBLIC_KEY_SIZE
|
||||
#endif
|
||||
#endif /* ! CONFIG_RO_PUBKEY_SIZE */
|
||||
#ifndef CONFIG_RO_PUBKEY_ADDR
|
||||
#ifdef CONFIG_RWSIG_TYPE_RWSIG
|
||||
/* The pubkey goes at the end of the RO region */
|
||||
#define CONFIG_RO_PUBKEY_ADDR (CONFIG_PROGRAM_MEMORY_BASE \
|
||||
+ CONFIG_RO_MEM_OFF \
|
||||
+ CONFIG_RO_SIZE \
|
||||
- CONFIG_RO_PUBKEY_SIZE)
|
||||
#else
|
||||
/*
|
||||
* usbpd1 type assumes pubkey location at the end of first half of flash,
|
||||
* which might actually be in the PSTATE region.
|
||||
*/
|
||||
#define CONFIG_RO_PUBKEY_ADDR (CONFIG_PROGRAM_MEMORY_BASE \
|
||||
+ (CONFIG_FLASH_SIZE / 2) \
|
||||
- CONFIG_RO_PUBKEY_SIZE)
|
||||
#endif
|
||||
#endif /* CONFIG_RO_PUBKEY_ADDR */
|
||||
|
||||
#ifndef CONFIG_RW_SIG_SIZE
|
||||
#ifdef CONFIG_RWSIG_TYPE_RWSIG
|
||||
/*
|
||||
* rwsig type: futility expects signature to be 1024 bytes from the end of
|
||||
* the file.
|
||||
*/
|
||||
#define CONFIG_RW_SIG_SIZE 1024
|
||||
#else
|
||||
#define CONFIG_RW_SIG_SIZE RSANUMBYTES
|
||||
#endif
|
||||
#endif /* ! CONFIG_RW_SIG_SIZE */
|
||||
#ifndef CONFIG_RW_SIG_ADDR
|
||||
/* The signature goes at the end of the RW region */
|
||||
#define CONFIG_RW_SIG_ADDR (CONFIG_PROGRAM_MEMORY_BASE \
|
||||
+ CONFIG_RW_MEM_OFF \
|
||||
+ CONFIG_RW_SIZE \
|
||||
- CONFIG_RW_SIG_SIZE)
|
||||
#endif /* !CONFIG_RW_SIG_ADDR */
|
||||
|
||||
#endif /* __CROS_EC_RWSIG_H */
|
||||
Reference in New Issue
Block a user