size argument to CngEccPrivateKey::generate is in bits instead of bytes
- Dominant language
- Rust
- Stars
- 3
- Forks
- 17
- Avg merge
- 8d 10h
- Merged PRs (30d)
- 24
Description
currently causing Windows-specific test failure in azihsm_ddi_tbor_types::azihsm_ddi_tbor_tests commands::unwrap_key::unwrap_key_ecc_p256_emu, can be repro'd via:
`cargo xtask precheck --nextest -p azihsm_ddi_tbor_types -F emu --profile ci-tbor-emu`
test failure output:
```
FAIL [ 0.189s] azihsm_ddi_tbor_types::azihsm_ddi_tbor_tests commands::unwrap_key::unwrap_key_ecc_p256_emu
stdout ───
running 1 test
test commands::unwrap_key::unwrap_key_ecc_p256_emu ... FAILED
failures:
failures:
commands::unwrap_key::unwrap_key_ecc_p256_emu
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 299 filtered out; finished in 0.13s
stderr ───
[I 0000000000 pal :f13acba0] initialized (std)
[D 0000040130 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000043807 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000044003 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000044062 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000047723 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000059017 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000063022 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000068314 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000068444 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000068570 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000068642 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000068685 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000070246 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000070506 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000070640 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000070743 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000071523 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000082046 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000084369 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000085130 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000087485 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000096702 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
[D 0000097774 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000103148 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
thread 'commands::unwrap_key::unwrap_key_ecc_p256_emu' (21132) panicked at ddi\tbor\types\tests\commands\unwrap_key.rs:205:43:
generate P-256 key: EccInvalidKeySize
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[D 0000105010 iic :f13ac660] recv slot=0 part=HsmPartId(10) qid=0 qidx=0
[D 0000105069 oic :f13aef50] send part=HsmPartId(10) qid=0 qidx=0
```
couple notes from investigation:
- documentation for trait definition KeyGenerationOp::generate (see crates\crypto\src\op\key.rs ln 536) states size argument is in bytes
- documentation for CNG implementation CngEccPrivateKey::generate (see crates\crypto\src\ecc\key_cng.rs ln 200) states size argument is in bits
Contributor guide
Research direction
Compare the byte-size contract in crates/crypto/src/op/key.rs around line 536 with CngEccPrivateKey::generate in crates/crypto/src/ecc/key_cng.rs around line 200. Reproduce the failure with cargo xtask precheck --nextest -p azihsm_ddi_tbor_types -F emu --profile ci-tbor-emu, then run the failing unwrap_key_ecc_p256_emu test in ddi/tbor/types/tests/commands/unwrap_key.rs. Done means the CNG implementation follows the documented size unit and the Windows-specific test passes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cryptography
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 85/100