Skip to content

Derive KEY_SIZE from EC_CURVE when not explicitly provided#170

Merged
JingMatrix merged 1 commit intomainfrom
merge
Mar 21, 2026
Merged

Derive KEY_SIZE from EC_CURVE when not explicitly provided#170
JingMatrix merged 1 commit intomainfrom
merge

Conversation

@JingMatrix
Copy link
Copy Markdown
Owner

For EC keys, callers often provide only EC_CURVE (e.g. P-256) without an explicit KEY_SIZE tag. The parser defaulted keySize to 0, causing the attestation teeEnforced list and KeyMetadata authorizations to report keySize=0 instead of the correct value (e.g. 256 for P-256).

Add deriveKeySizeFromCurve() that maps EcCurve constants to their corresponding key sizes as a fallback when KEY_SIZE is absent.

In KeyMint, the KEY_SIZE tag is often omitted by callers when an EC_CURVE is explicitly provided, as the curve implicitly defines the bit length.

Previously, the simulator defaulted keySize to 0 when the tag was absent. This resulted in "0" being reported in the teeEnforced authorization list and KeyMetadata, which is a trivial detection vector for simulators.

Changes:
- Implemented `deriveKeySizeFromCurve()` to map EcCurve constants to their respective bit-sizes.
- Used the derived size as a fallback when Tag.KEY_SIZE is missing.
- Added support for Curve 25519 (256-bit).
@JingMatrix JingMatrix merged commit 7209171 into main Mar 21, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants