Commit Graph

183 Commits

Author SHA1 Message Date
David Drysdale
17a0526b1e Merge "KeyMint HAL: clarify spec text" 2021-06-28 17:14:23 +00:00
David Drysdale
f854cde530 Merge "KeyMint VTS: allow for stricter SharedSecret impls" 2021-06-28 17:01:22 +00:00
David Drysdale
d46d61efec KeyMint VTS: allow for stricter SharedSecret impls
Bug: 192223752
Test: VtsAidlSharedSecretTargetTest
Change-Id: Iccf2d0fe2a2d10ad12269dfecf78ea1d831c3ad4
2021-06-28 14:58:28 +01:00
David Drysdale
5cf4a11c01 KeyMint HAL: clarify spec text
- Make clear that CERTIFICATE_NOT_{BEFORE,AFTER} must be specified for
   generating/importing asymmetric keys.
 - Fix enforcement level of Tag::UNLOCKED_DEVICE_REQUIRED.
 - Fix reference to exportKey() for Tag::STORAGE_KEY to mention
   convertStorageKeyToEphemeral instead.
 - Mark Tag::CONFIRMATION_TOKEN as deprecated.

Test: none, comment change
Bug: 188672564
Change-Id: I68727b024f6b6743403941763aefca64e3eb091a
2021-06-28 12:43:10 +01:00
Treehugger Robot
b54aebc2d8 Merge "Fix flaky corrupted padding tests" 2021-06-24 21:17:33 +00:00
Seth Moore
7a55ae3ddc Fix flaky corrupted padding tests
It's possible that corrupted ciphertext decrypts just fine. e.g. the
output ends with "0x01".

However, the chances of this happening are relatively low
(roughly 1/256). Corrupt the ciphertext up to 8 times, ensuring that
the likelihood of multiple successful decryptions is so miniscule that
it's effectively impossible.

Test: Ran *PaddingCorrupted tests 50000 times
Change-Id: If40ecd7817819921c020ea9b86ada18c4c77ea55
2021-06-24 12:45:23 -07:00
Seth Moore
798188aba0 Remove ignoreSignature for cose signature checks
This flag is never used anywhere, so just remove it. When used, it would
bypass signature checks. This is something we generally don't want to
do, even in testing. So remove the flag so there's no temptation to use
it.

Bug: 190942528
Test: VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: I0433c1eedc08e9a5a5ad71347154867dba61689e
Merged-In: I0433c1eedc08e9a5a5ad71347154867dba61689e
2021-06-22 18:32:56 -07:00
Alan Stokes
fd7eeeaa1d Merge "Allow CompOS APEX to access Keystore AIDL." 2021-06-22 08:13:11 +00:00
David Drysdale
aedb92d5af Merge changes I33036387,I63ca8d29
* changes:
  KeyMint VTS: require curve for ECDSA keys
  KeyMint VTS: more attestation info tests
2021-06-21 05:30:10 +00:00
Treehugger Robot
11854c2d82 Merge "Updating CDDL schemas to match the finalized spec." 2021-06-18 14:32:25 +00:00
Eran Messeri
45e16a09ca Merge "Remove KeyMint TODOs" 2021-06-18 13:28:25 +00:00
David Drysdale
df09e54ef3 KeyMint VTS: require curve for ECDSA keys
The KeyMint AIDL spec requires that "Tag::EC_CURVE must be provided to
generate an ECDSA key". Move the VTS tests to always create ECDSA keys
by curve not key size.

Bug: 188672564
Test: VtsAidlKeyMintTargetTest
Change-Id: I33036387c243b21ab0ecd49221b7e7757598913e
2021-06-18 13:52:47 +01:00
Eran Messeri
30a6b0e7f0 Merge "KeyMint: Document KeyCharacteristics" 2021-06-18 12:41:00 +00:00
Eran Messeri
2950654d44 Remove KeyMint TODOs
Remove TODOs from the KeyMint specification that were not concrete
enough or did not have enough context to act upon.

Bug: 183737811
Test: That it compiles.
Change-Id: I01899be5e65e9943053aa796a2ab23f1a783a1aa
2021-06-18 13:03:30 +01:00
Eran Messeri
58c8e39110 KeyMint: Document KeyCharacteristics
Document the various fields in KeyCharacteristics.

Bug: 183737811
Test: That it compiles.
Change-Id: I629001a3f5ac5d1e61ae6ffaa2702e3d32f56e52
2021-06-18 12:28:09 +01:00
Alan Stokes
e75851712b Allow CompOS APEX to access Keystore AIDL.
Makes the AIDL (and its dependencies) available to allow client code
to build against it.

Fixes: 190995136
Test: Client code (in progress) builds.
Change-Id: I06e7486463bca93ed25377c0dca30484a6bbf656
2021-06-18 10:21:36 +01:00
David Drysdale
37af4b3656 KeyMint VTS: more attestation info tests
Try all tags in attestion extension one by one

Test: VtsAidlKeyMintTargetTest on CF
Bug: 186735514
Change-Id: I63ca8d298d2d16f707f2437ab48aaa69c1d7563d
2021-06-18 07:45:27 +01:00
David Drysdale
a676c3b4ef KeyMint VTS: improve attestation tests
Check that the various ATTESTATION_ID_* tags are included if they
have the correct value, and that keygen fails if they have an invalid
value.

Also update attestation tags to include vendor/boot patchlevel if
they're available. (They always should be, but fixing that is a
separate task.)

Bug: 190757200
Test: VtsAidlKeyMintTargetTest
Merged-In: Ibaed7364c6d08c0982e2a9fb6cb864ae42cf39fe
Change-Id: Ibaed7364c6d08c0982e2a9fb6cb864ae42cf39fe
2021-06-17 16:43:37 +01:00
David Drysdale
98949afb70 Merge "VTS tests: check size of byte strings" 2021-06-16 07:17:53 +00:00
David Drysdale
52ce52fb1e Merge "KeyMint VTS: extract full vendor patchlevel" 2021-06-16 07:17:27 +00:00
Eran Messeri
a5047720f0 Use TagType constants
Now that the aidl compiler supports it, use constants from TagType to
indicate the type of each tag, rather than duplicating the values of
the constants.

Test: atest VtsAidlKeyMintTargetTest
Bug: 183737811
Change-Id: Ie8af1f00d04fa05c59cfc72692caecbcf2fae483
2021-06-15 14:26:59 +01:00
David Drysdale
9c7fae7e81 KeyMint VTS: extract full vendor patchlevel
The vendor patchlevel is YYYYMMDD not YYYYMM

Bug: 188672564
Bug: 186735514
Test: VtsAidlKeyMintTargetTest
Change-Id: Ia641f8eef84a85aec8f2a0551c192b6874301126
2021-06-15 13:12:07 +01:00
David Drysdale
fd1b38dc66 VTS tests: check size of byte strings
Bug: 181883620
Test: VtsAidlSecureClockTargetTest, VtsAidlSharedSecretTargetTest
Change-Id: I9ea8687e0c9e89140bcddfefcc2a6177c99b2e4d
2021-06-14 09:52:48 +01:00
David Drysdale
ba8e44599c Merge "KeyMint: sync all attestation tags" 2021-06-09 05:49:33 +00:00
David Drysdale
f3374d4237 Merge "KeyMint VTS: better early boot key tests" 2021-06-07 16:05:23 +00:00
David Drysdale
93c72cef92 KeyMint: sync all attestation tags
Get description of ASN.1 schema in HAL and the keymint support library
in sync with each other.  Change code to always list tags in the same
order (by numeric tag).

Bug: 188672564
Bug: 186735514
Test: VtsAidlKeyMintTargetTest
Change-Id: I620f54ba4a265ea69d174f6f44765a8508bfe803
2021-06-07 13:46:49 +01:00
Treehugger Robot
0872e42bec Merge "Improve unique attestation docs & tests" 2021-06-07 11:22:48 +00:00
David Drysdale
adfe6116d5 KeyMint VTS: better early boot key tests
Add a check that the TAG_EARLY_BOOT_ONLY is included in the returned key
characteristics.

Bug: 188672564
Test: VtsAidlKeyMintTargetTest
Change-Id: I200c61f34888c720c47f6289d79cd21d78436b58
2021-06-04 16:42:23 +01:00
David Drysdale
19c7c575f0 Merge "KeyMint VTS: test getKeyCharacteristics()" 2021-06-03 06:55:24 +00:00
Treehugger Robot
6f87175e16 Merge "Fixing tests to reflect change in CDDL" 2021-06-03 00:25:49 +00:00
Treehugger Robot
e8d43f7e59 Merge "Correct the description for getKeyCharacteristics" 2021-06-01 19:49:43 +00:00
Seth Moore
fa3d38d206 Correct the description for getKeyCharacteristics
The description should note that keystore-enforced tags are not to be
returned. This is done so that the keymint implementation doesn't have
to bother keeping track of tags it's not repsonsible for dealing with.

Bug: 186685601
Test: none (it's just a comment change)
Change-Id: I3ff94201c262a5071d271b150dbbf21888d678aa
2021-06-01 11:30:24 -07:00
Treehugger Robot
006bdf3fa9 Merge "Fix for the documentation in TimeStampToken.aidl. HMAC computation will always use 1, which is the value of SecurityLevel.TRUSTED_ENVIRONMENT. This is done for backwards compatibility purpose. Test: N/A Bug: None." 2021-06-01 17:18:21 +00:00
Eran Messeri
90747ad701 Improve unique attestation docs & tests
Improve the documentation and tests related to device-unique
attestation on StrongBox KeyMint devices:
* Test that the chain produced is exactly of length 2.
* Document how the chain needs to be structured.
* Explain the trust properties of the key used for the
  self-signed root.

Test: atest VtsAidlKeyMintTargetTest
Bug: 187803288
Change-Id: I09bb16d6938b567c114485d2df00bde9d3e1ccf9
2021-05-27 18:19:18 +01:00
Max Bires
314b21f39a Updating CDDL schemas to match the finalized spec.
This primarily updates CDDL to allow for OEMs who wish to use P256
instead of Ed25519 to do so. One structural change of note that affects
all implementors is that SignedMacAad now includes the tag from the
COSE_Mac0 of MacedKeysToSign to prevent a potential vulnerability that
would exist if an attacker compromised the server's EEK private key.

Bug: 189018262
Test: Purely a comment change
Change-Id: I043a19c6aba0f771315d45c04ab5263b610b5de8
Merged-In: I043a19c6aba0f771315d45c04ab5263b610b5de8
2021-05-27 01:11:15 +00:00
Max Bires
8dff0b3584 Fixing tests to reflect change in CDDL
This fixes up the tests to go along with the change to the signature
of the MAC key. Primarily, this adds the MAC tag from the MACing
operation over the public key set to be signed into the AAD of the
signature of said MAC key.

Bug: 189018262
Test: atest VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: Ibdcf242e0ae73dee1a08fe98d939130055e4492e
Merged-In: Ibdcf242e0ae73dee1a08fe98d939130055e4492e
2021-05-26 21:42:17 +00:00
Treehugger Robot
25e701b915 Merge "Correct documentation for update()" 2021-05-26 12:16:04 +00:00
Treehugger Robot
29159c728f Merge "Generate COSE MAC with a callback, not raw key" 2021-05-25 19:35:37 +00:00
Chirag Pathak
8ac0743508 Fix for the documentation in TimeStampToken.aidl. HMAC computation will always use 1, which is the value of SecurityLevel.TRUSTED_ENVIRONMENT. This is done for backwards compatibility purpose.
Test: N/A
Bug: None.

Change-Id: I1fd979908103f9095cc7c306e0d5036d6b357b30
2021-05-25 19:22:43 +00:00
Treehugger Robot
241327c140 Merge "Shifting VTS libs to static_lib entry" 2021-05-25 18:12:22 +00:00
Seth Moore
026bb7431d Generate COSE MAC with a callback, not raw key
The cppcose_rkp library was updated to generate MAC via callback instead
of passing keys around to allow for stronger MAC key protection.

Bug: 182928606
Test: VtsHalRemotelyProvisionedComponentTargetTest
Test: RemoteProvisionerUnitTests
Change-Id: Ia8a0410408fe3064e904c5282b52f172f8134b9a
Merged-In: Ia8a0410408fe3064e904c5282b52f172f8134b9a
2021-05-25 07:57:13 -07:00
Shawn Willden
0b11d84fdd Correct documentation for update()
update() is no longer allowed to consume only part of the data provided.

Change-Id: Ia64a9c0340f19b5dca6dff2502dc7072021522b6
Test: N/A
2021-05-25 12:14:03 +00:00
David Drysdale
300b555b6b KeyMint VTS: test getKeyCharacteristics()
Bug: 186685601
Bug: 188855306
Test: VtsAidlKeyMintTargetTest
Change-Id: Icf400533b0ded98b9338f2d782d95d90c7efbff4
2021-05-25 11:07:51 +01:00
Max Bires
e857afb6a6 Shifting VTS libs to static_lib entry
If these HALs aren't present on the device, then the test runner will
fail due to test binary trying to dynamically link to libs that aren't
present. Statically linking them will allow the test to fail gracefully
when the test harness sees that the HAL interfaces aren't available on
device.

Fixes: 184797684
Test: atest VtsAidlKeyMintTargetTest
Change-Id: I0f8dea081a51256cfb0e50d6af20038e2b8f1f07
Merged-In: I0f8dea081a51256cfb0e50d6af20038e2b8f1f07
2021-05-23 22:10:13 +00:00
David Drysdale
db0dcf5034 KeyMint: improve HAL spec and tests
- clarify & test BIGNUM spec
- allow alternative return codes when requesting device unique
  attestation
- use specific error for early boot import failure
- test more early boot key scenarios (in post-early-boot mode)

Test: VtsAidlKeyMintTargetTest
Change-Id: I70a342084a29144aef1ed0ff80fec02cc06ffbc0
2021-05-19 16:40:25 +01:00
David Drysdale
cad5403270 Merge changes I10c4beea,I0efc30f3
* changes:
  KeyMint VTS: local RSA encryption
  KeyMint VTS: local asymmetric verification
2021-05-17 17:12:40 +00:00
David Drysdale
8d1d302ffa Merge "KeyMint HAL: cert dates are in milliseconds" 2021-05-17 13:45:21 +00:00
Tommy Chiu
77aae9e40e Merge "KeyMint vts: Correct the EC curve parameter and some return code" 2021-05-15 01:50:30 +00:00
David Drysdale
59cae644e7 KeyMint VTS: local RSA encryption
Change RSA encryption (with public key) so it happens locally in the
test, rather than by invoking an ENCRYPT operation against KeyMint.

 - Specify MGF1 digest for OAEP mode as (now) required by AIDL spec.
 - Drop tests for too-long encryption inputs.
 - Adjust test comments to reflect decryption-only nature.
 - Change parameter checking tests to do so on DECRYPT rather than ENCRYPT.

Test: VtsAidlKeyMintTargetTest
Change-Id: I10c4beea28387eecfd0bc7c5dfd59a1b66fec21e
2021-05-12 16:09:44 +01:00
Tommy Chiu
c93c439ad3 KeyMint vts: Correct the EC curve parameter and some return code
Strongbox doens't support p-224. Change the curve to p-256 for better
compatibility.
Also update the tags to be filtered on the hw-enforcement list.

Change-Id: I3f587c5471ca68b88a565ee9ec2e27d1e9e11b17
2021-05-12 19:13:55 +08:00