Skip to content

Incorrect timing constants for STSAFE-A120 Extended Commands #68

@Grolleau-Benjamin

Description

@Grolleau-Benjamin

The implementation of stsafea_extended_cmd_timings[218:259] for the STSAFE-A120 in services/stsafea/stsafea_timings.c appears to be a direct copy-paste from the standard command timings (stsafea_cmd_timings[91:212]).

Extended commands and standard commands do not share the same internal processing logic or execution flow. By defining them with identical timing constants, the driver enforces an inaccurate model of the device's state machine.

❯ cat services/stsafea/stsafea_timings.c -r 25 -r 90:121 -r 155 -r 218:249
─────┬───────────────────────────────────────────────────
     │ File: services/stsafea/stsafea_timings.c
 ... │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 8< ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 
  25 │ const PLAT_UI16 stsafea_cmd_timings[STSAFEA_PRODUCT_COUNT][STSAFEA_MAX_CMD_COUNT] = {
 ... │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 8< ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 
  90 │     /* STSAFE_A120 */
  91 │     {
  92 │         50,                        /* Echo */
  93 │         22,                        /* Reset */
  94 │         26,                        /* Generate Random */
  95 │         22,                        /* Start Session */
  96 │         23,                        /* Decrement zone counter */
  97 │         23,                        /* Read zone */
  98 │         22,                        /* Update zone */
  99 │         26,                        /* Increment zone counter */
 100 │         STSAFEA_EXEC_TIME_DEFAULT, /* Derive LORA key (Not applicable) */
 101 │         23,                        /* Generate MAC */
 102 │         23,                        /* Verify MAC */
 103 │         STSAFEA_EXEC_TIME_DEFAULT, /* Unwrap issuer envelope (Not applicable)*/
 104 │         STSAFEA_EXEC_TIME_DEFAULT, /* Delete MAC (Not applicable)*/
 105 │         STSAFEA_EXEC_TIME_DEFAULT, /* Hibernate, (Not applicable)*/
 106 │         25,                        /* Wrap Local Envelope */
 107 │         24,                        /* Unwrap Local Envelope */
 108 │         STSAFEA_EXEC_TIME_DEFAULT, /* Put attribute(Not applicable)  */
 109 │         80,                        /* Generate key */
 110 │         STSAFEA_EXEC_TIME_DEFAULT, /* Put key (Not applicable)*/
 111 │         STSAFEA_EXEC_TIME_DEFAULT, /* Configure */
 112 │         10,                        /* Query */
 113 │         STSAFEA_EXEC_TIME_DEFAULT, /* Get Signature */
 114 │         96,                        /* Generate Signature */
 115 │         156,                       /* Verify Signature */
 116 │         34,                        /* Establish Key */
 117 │         STSAFEA_EXEC_TIME_DEFAULT, /* Standby (Not applicable)*/
 118 │         STSAFEA_EXEC_TIME_DEFAULT, /* Verify Password (Not applicable)*/
 119 │         25,                        /* Encrypt */
 120 │         26                         /* Decrypt */
 121 │     },
 ... │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 8< ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 
 155 │ const PLAT_UI16 stsafea_extended_cmd_timings[STSAFEA_PRODUCT_COUNT][STSAFEA_MAX_EXT_CMD_COUNT] = {
 ... │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 8< ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 
 218 │     /* STSAFE_A120 */
 219 │     {
 220 │         50,                        /* Echo */
 221 │         22,                        /* Reset */
 222 │         26,                        /* Generate Random */
 223 │         22,                        /* Start Session */
 224 │         23,                        /* Decrement zone counter */
 225 │         23,                        /* Read zone */
 226 │         22,                        /* Update zone */
 227 │         26,                        /* Increment zone counter */
 228 │         STSAFEA_EXEC_TIME_DEFAULT, /* Derive LORA key (Not applicable) */
 229 │         23,                        /* Generate MAC */
 230 │         23,                        /* Verify MAC */
 231 │         STSAFEA_EXEC_TIME_DEFAULT, /* Unwrap issuer envelope (Not applicable)*/
 232 │         STSAFEA_EXEC_TIME_DEFAULT, /* Delete MAC (Not applicable)*/
 233 │         STSAFEA_EXEC_TIME_DEFAULT, /* Hibernate, (Not applicable)*/
 234 │         25,                        /* Wrap Local Envelope */
 235 │         24,                        /* Unwrap Local Envelope */
 236 │         STSAFEA_EXEC_TIME_DEFAULT, /* Put attribute(Not applicable)  */
 237 │         80,                        /* Generate key */
 238 │         STSAFEA_EXEC_TIME_DEFAULT, /* Put key (Not applicable)*/
 239 │         STSAFEA_EXEC_TIME_DEFAULT, /* Configure */
 240 │         10,                        /* Query */
 241 │         STSAFEA_EXEC_TIME_DEFAULT, /* Get Signature (Not applicable)*/
 242 │         96,                        /* Generate Signature */
 243 │         156,                       /* Verify Signature */
 244 │         34,                        /* Establish Key */
 245 │         STSAFEA_EXEC_TIME_DEFAULT, /* Standby (Not applicable)*/
 246 │         STSAFEA_EXEC_TIME_DEFAULT, /* Verify Password (Not applicable)*/
 247 │         25,                        /* Encrypt */
 248 │         26                         /* Decrypt */
 249 │     },
─────┴────────────────────────────────────────────

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions