Repository navigation
Commit 31c8486
committed
eth: preserve signed integer encodings
EIP-712 intN values are sent as signed big-endian two's-complement bytes.
The JSON-number path strips the leading zero supplied by the signed BigInt
serializer, so e.g. int16(128) becomes -128 on the device. The string path
already preserves the sign correctly.
Use to_signed_bytes_be directly for JSON numbers as well, without stripping
its sign byte. Add boundary cases for positive values, negative values and
zero, checking that numeric and string inputs produce the same encoding.
Add a simulator regression that signs int16(+128), int8(-128) and int8(0)
and checks the signature against an independently calculated EIP-712
digest. This covers the signed values through the public API and firmware.
Unsigned integer encoding and the firmware protocol are unchanged. No
firmware version gate is needed.
Related PRs:
- Go: BitBoxSwiss/bitbox02-api-go#189
- TypeScript: BitBoxSwiss/bitbox-api-ts#141 parent 1b07ba4 commit 31c8486
3 files changed
Lines changed: 87 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
333 | 333 | | |
334 | 334 | | |
335 | 335 | | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
| 336 | + | |
342 | 337 | | |
343 | 338 | | |
344 | 339 | | |
| |||
1164 | 1159 | | |
1165 | 1160 | | |
1166 | 1161 | | |
1167 | | - | |
| 1162 | + | |
1168 | 1163 | | |
1169 | 1164 | | |
1170 | 1165 | | |
| |||
1218 | 1213 | | |
1219 | 1214 | | |
1220 | 1215 | | |
| 1216 | + | |
| 1217 | + | |
| 1218 | + | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
| 1233 | + | |
| 1234 | + | |
| 1235 | + | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
| 1240 | + | |
| 1241 | + | |
| 1242 | + | |
| 1243 | + | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
1221 | 1250 | | |
1222 | 1251 | | |
1223 | 1252 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
290 | 290 | | |
291 | 291 | | |
292 | 292 | | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
293 | 343 | | |
294 | 344 | | |
295 | 345 | | |
| |||
0 commit comments