blob: a23eb19119ad5a9c3dbd04db608208faeb38d883 [file] [log] [blame]
#include <common.h>
#include <stdint.h>
#include <rsa_public_key.h>
#include <board_id.h>
#define MAX_BOARD_ID SIDESWIPE_BOARD_ID
static int board_id_to_key_index[] = {
0, /* OPTIMUS_BOARD_ID */
0, /* SIDESWIPE_BOARD_ID */
};
/*
* The keys are generated from generate_public_key_code.c
*/
static const struct rsa_public_key public_keys[] = {
/* Optimus / Sideswipe */
{ .n0inv = 324625445u,
.modulus = {
0xdd47e853, 0xcc40a072, 0xccc006f4, 0xc941d763, 0x8f53aa97, 0x26f1e34a,
0xb476f79a, 0xf4aaaaaa, 0x676ae350, 0xd8b0d648, 0x18fc6347, 0x984bb7d3,
0xa894b4a0, 0x51ea64c3, 0xeda9ea3c, 0xdcff20c7, 0x88afc95f, 0xa485fce7,
0xd7010b97, 0x6e821430, 0xf836bbda, 0x004b61fe, 0xcddcc51a, 0x8e2f01f0,
0x92647f40, 0xb60cc2e2, 0x570c6692, 0x40e51f0a, 0x34e9036f, 0x6b56ad55,
0xe4d044e4, 0x2d32bd77, 0xfed334b5, 0x7505311f, 0x98f0fc46, 0xa557619e,
0xb1158093, 0xf3a785c1, 0xf6e77d38, 0xe0e29c9b, 0x3aba8b7f, 0x212ee1f4,
0x636549c6, 0x5bc9597b, 0xf2f35938, 0xf0ab94b7, 0x63519a73, 0x62dd79e6,
0x3e0863f8, 0xf9d67dab, 0x2dbf66b7, 0x45bb69e6, 0xdc3836bb, 0xd253d7f4,
0x975d5f43, 0x40eac67c, 0xd27139fa, 0xb2c73104, 0xced1c1f2, 0x7353f693,
0xee23ed71, 0xc710fdf4, 0x330f3b81, 0xb4a49e97
},
.rr = {
0xc416ec5a, 0x8f35e335, 0x7860fdb6, 0xe3dd9018, 0xb021e1a8, 0x950621cb,
0xb4d3c3e5, 0xe52c0288, 0x25366c47, 0xae481186, 0x8f4f42e4, 0x5203857d,
0x60517eb4, 0xa49474c0, 0x952bdc12, 0xbdba6b4b, 0xac90fe1d, 0xbf7e29f9,
0x41fb4116, 0xc2b9ca56, 0xf48e1cbd, 0xe7f43887, 0xebdf65f6, 0x694773f6,
0x1efd33be, 0x4d7c0c9d, 0xd01b12f9, 0xde65788a, 0x93db7132, 0x8a8e23b1,
0x0faab0b6, 0x7fd78d30, 0xe7e04e64, 0xdd0b2eab, 0xa93630d2, 0x07928be0,
0x4ff324a5, 0x494b52da, 0xbed79044, 0x93d5c5b6, 0xdfb6b89b, 0x3c0ad0f5,
0xdfaf19b6, 0x07d4e67f, 0xba2fc62a, 0x58697a86, 0x1c973e7f, 0x66a26c99,
0x45a0ded5, 0x4f69d633, 0xbe326828, 0xd9d31655, 0x699b6a54, 0x2cb1ee8b,
0x69dcbbc0, 0x9469b4fa, 0xf3b23e6b, 0x886ec86a, 0x2e9410a9, 0xa41074cf,
0xa4c4ca4f, 0xd3ec5963, 0xf36f1929, 0x22bf4a0b
}
},
};
static int get_key_id(int board_id) {
if ((board_id < 0) || (board_id > MAX_BOARD_ID)) {
printf("Invalid board ID: %d\n", board_id);
return -1;
}
return board_id_to_key_index[board_id];
}
int rsa_get_public_key(int board_id, const struct rsa_public_key **key) {
int index = get_key_id(board_id);
if (index < 0) {
return -1;
}
*key = &public_keys[index];
return 0;
}