Azure / Azure/azihsm-sdk

size argument to CngEccPrivateKey::generate is in bits instead of bytes

Open Beginner friendly
#668 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.