Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

STSAFE A120: Reprovisioning is successful, but returns error STSE_INVALID_C_MAC

Abierto
#47 1 comentario 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@Grom- ya está trabajando en esto.

Desde el 14/11/2025.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

bug

Hello,

in our setup, we allow host key reprovisioning.

These are our provisioning control fields:

provisioningControlFields.change_right = 0; // The control fields can only be set once!
provisioningControlFields.reprovision = 1; // Allow reprovisioning.
provisioningControlFields.plaintext = 0; // Do not allow plain text.
provisioningControlFields.wrapped_anonymous = 1; // We are using DH derived KEK.
provisioningControlFields.wrapped_or_DH_derived_authentication_key = 0xFF; // Do not use private/public keys when starting a KEK session.

Then, we are using host key slot V2 and provision the host session keys with a 128-Bit AES key:

stse_host_key_provisioning_wrapped(context, STSAFEA_AES_128_HOST_KEY, aes128keys, STSE_ECC_KT_NIST_P_384);

Next we activate the command access condition for all commands to STSE_CMD_AC_HOST and set the host encryption flags to STSE_HOST_ENCRYPT_ALL.

Afterwards everything works as expected, the Host C-MAC and R-MAC are used for all commands and Host C-encryption/R-encryption are active for all commands.

But now comes the problem: When we reprovision the device with a call to

stse_host_key_provisioning_wrapped(context, STSAFEA_AES_256_HOST_KEY, aes256keys, STSE_ECC_KT_NIST_P_384);

the return value is STSE_INVALID_C_MAC, indicating that the provisioning failed.

However, this is not the case: the STSAFE has accepted the new keys and is using them.

I have digged a little deeper and found that the CMAC counter is stored in the session object in the device.
When a new host key is provisioned, stsafea_stop_volatile_KEK_session() is called.
It seems that the STSAFE is resetting the internal CMAC when a new host key is sent, however when stsafea_stop_volatile_KEK_session() is called at the end of the reprovisioning process STSELib is using the CMAC value of the current session and the STSAFE uses the resetted value and thus returns STSE_INVALID_C_MAC (last line in stsafea_frame_receive()).

Could you please advise me whether it is safe to ignore the error STSE_INVALID_C_MAC when reprovisioning the host keys with stse_host_key_provisioning_wrapped()?

Or is this a bug in STSELib that must be fixed?

Lenguaje dominante
C
Estrellas
15
Forks
12
Merge medio
1 d 5 h
PR fusionados (30 d)
11

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de STMicroelectronics/STSELib

Todos los issues de STMicroelectronics/STSELib

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.