Message ID | 20240327162355.24584-7-kabel@kernel.org |
---|---|
State | Superseded |
Delegated to: | Stefan Roese |
Headers | show |
Series | Turris Omnia - New board revision support | expand |
On 3/27/24 17:23, Marek Behún wrote: > If MCU supports the FEAT_CRYPTO feature, read board ECDSA public key > from MCU and print it. > > Signed-off-by: Marek Behún <kabel@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > board/CZ.NIC/turris_omnia/turris_omnia.c | 25 +++++++++++++++++++++++- > 1 file changed, 24 insertions(+), 1 deletion(-) > > diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c > index f63640ad64..b2f0088e5e 100644 > --- a/board/CZ.NIC/turris_omnia/turris_omnia.c > +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c > @@ -253,6 +253,24 @@ static int omnia_mcu_board_info(char *serial, u8 *mac, char *version) > return 0; > } > > +static int omnia_mcu_get_board_public_key(char pub_key[static 67]) > +{ > + u8 reply[34]; > + int ret; > + > + ret = omnia_mcu_read(CMD_CRYPTO_GET_PUBLIC_KEY, reply, sizeof(reply)); > + if (ret) > + return ret; > + > + if (reply[0] != 33) > + return -EBADMSG; > + > + bin2hex(pub_key, &reply[1], 33); > + pub_key[66] = '\0'; > + > + return 0; > +} > + > static void enable_a385_watchdog(unsigned int timeout_minutes) > { > struct sar_freq_modes sar_freq; > @@ -1032,7 +1050,7 @@ int board_late_init(void) > > int checkboard(void) > { > - char serial[17], version[4]; > + char serial[17], version[4], pub_key[67]; > bool has_version; > int err; > > @@ -1051,6 +1069,11 @@ int checkboard(void) > printf(" Board version: %s\n", has_version ? version : "unknown"); > printf(" Serial Number: %s\n", !err ? serial : "unknown"); > > + if (omnia_mcu_has_feature(FEAT_CRYPTO)) { > + err = omnia_mcu_get_board_public_key(pub_key); > + printf(" ECDSA Public Key: %s\n", !err ? pub_key : "unknown"); > + } > + > return 0; > } > Viele Grüße, Stefan Roese
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c index f63640ad64..b2f0088e5e 100644 --- a/board/CZ.NIC/turris_omnia/turris_omnia.c +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c @@ -253,6 +253,24 @@ static int omnia_mcu_board_info(char *serial, u8 *mac, char *version) return 0; } +static int omnia_mcu_get_board_public_key(char pub_key[static 67]) +{ + u8 reply[34]; + int ret; + + ret = omnia_mcu_read(CMD_CRYPTO_GET_PUBLIC_KEY, reply, sizeof(reply)); + if (ret) + return ret; + + if (reply[0] != 33) + return -EBADMSG; + + bin2hex(pub_key, &reply[1], 33); + pub_key[66] = '\0'; + + return 0; +} + static void enable_a385_watchdog(unsigned int timeout_minutes) { struct sar_freq_modes sar_freq; @@ -1032,7 +1050,7 @@ int board_late_init(void) int checkboard(void) { - char serial[17], version[4]; + char serial[17], version[4], pub_key[67]; bool has_version; int err; @@ -1051,6 +1069,11 @@ int checkboard(void) printf(" Board version: %s\n", has_version ? version : "unknown"); printf(" Serial Number: %s\n", !err ? serial : "unknown"); + if (omnia_mcu_has_feature(FEAT_CRYPTO)) { + err = omnia_mcu_get_board_public_key(pub_key); + printf(" ECDSA Public Key: %s\n", !err ? pub_key : "unknown"); + } + return 0; }
If MCU supports the FEAT_CRYPTO feature, read board ECDSA public key from MCU and print it. Signed-off-by: Marek Behún <kabel@kernel.org> --- board/CZ.NIC/turris_omnia/turris_omnia.c | 25 +++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-)