You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.5 KiB

/*
* Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef KEY_H_
#define KEY_H_
#include <openssl/ossl_typ.h>
#define RSA_KEY_BITS 2048
/* Error codes */
enum {
KEY_ERR_NONE,
KEY_ERR_MALLOC,
KEY_ERR_FILENAME,
KEY_ERR_OPEN,
KEY_ERR_LOAD
};
/* Supported key algorithms */
enum {
KEY_ALG_RSA,
#ifndef OPENSSL_NO_EC
KEY_ALG_ECDSA,
#endif /* OPENSSL_NO_EC */
KEY_ALG_MAX_NUM
};
/*
* This structure contains the relevant information to create the keys
* required to sign the certificates.
*
* One instance of this structure must be created for each key, usually in an
* array fashion. The filename is obtained at run time from the command line
* parameters
*/
typedef struct key_s {
int id; /* Key id */
const char *opt; /* Command line option to specify a key */
const char *help_msg; /* Help message */
const char *desc; /* Key description (debug purposes) */
char *fn; /* Filename to load/store the key */
EVP_PKEY *key; /* Key container */
} key_t;
/* Exported API */
int key_init(void);
key_t *key_get_by_opt(const char *opt);
int key_new(key_t *key);
int key_create(key_t *key, int type);
int key_load(key_t *key, unsigned int *err_code);
int key_store(key_t *key);
/* Macro to register the keys used in the CoT */
#define REGISTER_KEYS(_keys) \
key_t *keys = &_keys[0]; \
Always build with &#39;-pedantic&#39; By default ARM TF is built with the &#39;-pedantic&#39; compiler flag, which helps detecting violations of the C standard. However, the mbed TLS library and its associated authentication module in TF used to fail building with this compiler flag. As a workaround, the mbed TLS authentication module makefile used to set the &#39;DISABLE_PEDANTIC&#39; TF build flag. The compiler errors flagged by &#39;-pedantic&#39; in the mbed TLS library have been fixed between versions 1.3.9 and 2.2.0 and the library now properly builds with this compiler flag. This patch fixes the remaining compiler errors in the mbed TLS authentication module in TF and unsets the &#39;DISABLE_PEDANTIC&#39; TF build flag. This means that TF is now always built with &#39;-pedantic&#39;. In particular, this patch: * Removes the final semi-colon in REGISTER_COT() macro. This semi-colon was causing the following error message: drivers/auth/tbbr/tbbr_cot.c:544:23: error: ISO C does not allow extra &#39;;&#39; outside of a function [-Werror=pedantic] This has been fixed both in the mbed TLS authentication module as well as in the certificate generation tool. Note that the latter code didn&#39;t need fixing since it is not built with &#39;-pedantic&#39; but the change has been propagated for consistency. Also fixed the REGISTER_KEYS() and REGISTER_EXTENSIONS() macros, which were suffering from the same issue. * Fixes a pointer type. It was causing the following error message: drivers/auth/mbedtls/mbedtls_crypto.c: In function &#39;verify_hash&#39;: drivers/auth/mbedtls/mbedtls_crypto.c:177:42: error: pointer of type &#39;void *&#39; used in arithmetic [-Werror=pointer-arith] Change-Id: I7b7a04ef711efd65e17b5be26990d1a0d940257d
9 years ago
const unsigned int num_keys = sizeof(_keys)/sizeof(_keys[0])
/* Exported variables */
extern key_t *keys;
extern const unsigned int num_keys;
#endif /* KEY_H_ */