Commit Graph

104 Commits

Author SHA1 Message Date
Max Bires
261a0490b6 Porting the client <-> HAL service interface
This change removes the interface layer between the client and the
underlying HAL. This is one part of a two part change to properly finish
migrating all of the RemotelyProvisionedComponent functionality to
system/keymaster.

Test: atest VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: Ibccc6b3af86a63b8a6c6207fffd43cfc41b903b5
2021-04-20 02:00:00 +00:00
Treehugger Robot
ed54acfbff Merge "Adding getHardwareInfo to IRPC" 2021-04-19 22:04:32 +00:00
Treehugger Robot
4b84c912a0 Merge "Porting IRPC functionality." 2021-04-19 19:30:27 +00:00
Max Bires
9704ff6b85 Porting IRPC functionality.
This is the change that removes the functionality that has been shifted
over to appropriate classes and contexts in system/keymaster.

Test: atest VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: I491f4ef823868322ea6a804d88ca09662c099a44
2021-04-17 18:19:28 -07:00
Max Bires
4190509ed6 Adding getHardwareInfo to IRPC
This adds a way to derive information about the hardware for clients
that call the HAL. The primary functional usecase here is to
differentiate which EC curve the underlying hardware for a given
instance of IRemotelyProvisionedComponent is supported.

Originally, curve 25519 would have been used in all implementations for
verifying the EEK certificate chain and doing ECDH, but secure elements
do not offer 25519 support yet. In order to support remote provisioning
on SEs, we have to relax the standard here a bit to allow for P256.

Test: Everything builds
Change-Id: I9245c6f4e27bd118fe093bffc0152549ed7f0825
2021-04-17 15:37:43 -07:00
Selene Huang
0a8dd959a4 Merge "Update Keymint documentation in aidl." 2021-04-14 21:43:05 +00:00
Selene Huang
e5727e66c2 Add Rsa 2048 import key test for strongbox.
Test: atest VtsAidlKeyMintTargetTest
Change-Id: If228b11fe23d2aaaa68e8ff53f0420c5e5ae62fb
2021-04-13 22:51:54 -07:00
Selene Huang
6ea762a04b Update Keymint documentation in aidl.
Change-Id: I8eb73da95d9070c46d61973b26373628a1333e9f
Test: n/a
2021-04-14 00:58:36 +00:00
Treehugger Robot
d997c72959 Merge "vts: Correct the TagType when verify_attestation_record" 2021-04-13 13:06:58 +00:00
David Drysdale
4dc010739d Check that KeyMint provides IRemotelyProvisionedComponent
Move helper utilities across into KeyMintAidlTestBase to allow re-use.

Test: VtsHalRemotelyProvisionedComponentTargetTest, VtsAidlKeyMintTargetTest
Change-Id: Ib9e55a7d72fd197016ae1a1f073dadedafa09c25
2021-04-12 14:48:31 +01:00
Treehugger Robot
5bb7be3f8e Merge "Setting libcppcose to host supported." 2021-04-08 05:03:45 +00:00
Tommy Chiu
f00d8f1c0a vts: Correct the TagType when verify_attestation_record
TAG_BOOT_PATCHLEVEL and TAG_VENDOR_PATCHLEVEL should be interger type.

Fixed: 184796337
Test: VtsAidlKeyMintTargetTest not abort
Change-Id: Iccd6ac93910d44c0a02b798210909c404a98d8ab
2021-04-08 11:12:32 +08:00
Max Bires
bcde7a7f66 Setting libcppcose to host supported.
This change adds the host supported flag to the libcppcose and removes
some unnecessary dependencies from the blueprint file.

Test: libcppcose builds
Change-Id: I45bca44267a50d0d401fc1964f96363e558317ff
2021-04-07 16:28:05 -07:00
Janis Danisevskis
71eb2258bf Merge "Security: Add @SensitiveData annotation." 2021-04-07 21:35:26 +00:00
Janis Danisevskis
3829840d36 Security: Add @SensitiveData annotation.
Bug: 174857732
Test: N/A
Change-Id: Id1aeaf9b0da79b8c4d5e91f30942a31a26f7b1d4
2021-04-06 09:50:19 -07:00
Chirag Pathak
cfb9792b4c Adds new error code which is required by keystore to handle strongbox hal related functionality.
Test: N/A
Bug: b/184306647

Change-Id: Ifbf7b931e58420f17e16f297205018248d39f476
2021-04-02 20:17:27 +00:00
Shawn Willden
14fdd67a30 Allow SecureClock tests to pass on devices w/out SecureClock
Bug: 182289099
Test: VtsAidlSecureClockTargetTest
Change-Id: I830fe2879cd3328adf950060afb7e9eb18e558b7
2021-04-01 17:06:06 -06:00
Shawn Willden
7e71f1e5c5 Allow KeyMint tests to pass on devices w/out KeyMint
Bug: 181987225
Test: VtsAidlKeyMintTargetTest
Change-Id: I243fee463611ec2bf1f3661c46d3431280e187aa
2021-04-01 16:44:22 -06:00
Shawn Willden
7bbf6298f2 Correct error code in attest_key docs.
Also adds a test to verify that implementations return the expected
error code.

Test: VtsAidlKeyMintTargetTest
Change-Id: Ic8e9953a2572eb0cc8fefc363934eaf9b432b5a4
2021-04-01 12:57:21 -06:00
Shawn Willden
49e5b5eacc Merge "Fix documentation of EARLY_BOOT_ONLY tag in KeyMint" 2021-04-01 14:36:07 +00:00
David Drysdale
4d3c298c66 Use a heuristic to correlate devices
Every KeyMint device should have a corresponding
IRemotelyProvisionedComponent instance, but the converse is not true.

So given an IRPC instance under test, look for a corresponding KeyMint
device by comparing suffixes, but just skip the test if not found.

Test: VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: I390aa7025eb77f75a3280e8d85dc453b784c23ee
2021-03-31 18:27:36 +01:00
David Drysdale
f6fc5a6336 Fix DeviceInfo encoding and checks
- Make the default implementation include the DeviceInfo as a map, not
   a bstr-holding-a-map, to match the spec.
 - Check the signature of the signed MAC even in test mode.
 - Include the DeviceInfo in the data that the signature covers.

Test: VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: I9084343c1273c16a9cbd5a1156e7057a1c54a860
2021-03-31 18:08:59 +01:00
David Drysdale
b39baeaa92 Merge changes I2f5187bf,Icb79e1e0,I833894d3,I54dcaa61,I47a810f2
* changes:
  Test that provisioned keys can be used with KeyMint
  Add tests with corrupted MAC on keypair
  Add more EEK variant tests and related fixes
  Commonize MacedPublicKey and ProtectedData checks
  Tweak IRemotelyProvisionedComponent AIDL docs
2021-03-31 14:48:41 +00:00
Treehugger Robot
0ccd277dcb Merge "Adding jbires to keymint/aidl/OWNERS" 2021-03-31 10:06:21 +00:00
Treehugger Robot
93d82aca8f Merge "Clarify certificate chain requirements documentation." 2021-03-30 14:28:51 +00:00
Shawn Willden
5ae01f4539 Clarify certificate chain requirements documentation.
Test: N/A comment-only change
Change-Id: I8f27f9c6d550d970212f3e460be33b28929fda09
2021-03-29 08:44:03 -06:00
David Drysdale
f0d516d281 Test that provisioned keys can be used with KeyMint
Test: VtsRemotelyProvisionedComponentTests
Change-Id: I2f5187bfb4fd1572d10c306377e07a6d167689fa
2021-03-29 09:17:54 +01:00
David Drysdale
e99ed8667a Add tests with corrupted MAC on keypair
Test: VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: Icb79e1e03518ebb20430f33c3d30a44a383798ed
2021-03-29 09:17:51 +01:00
David Drysdale
cceca9f5f6 Add more EEK variant tests and related fixes
- Test with deliberately-invalid EEK in request:
    - corrupt signature
    - missing initial self-signed cert
 - Test with different sizes of EEK chain.

These tests will only really take effect when we have a valid GEEK to
test with.

Other changes:
 - Fix encoding of KeyUsage bitset.
 - Add a made-up allowed-root pubkey for prod mode. This needs to be
   replaced with the real GEEK when available.
 - Fix generateEek() so that the first private key isn't used for
   all signing operations.

Test: VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: I833894d33cd1757b7a0cfcf18f79b61e4e56a556
2021-03-29 09:17:18 +01:00
David Drysdale
c84007725b Commonize MacedPublicKey and ProtectedData checks
Test: VtsHalRemotelyProvisionedComponentTargetTest
Change-Id: I54dcaa6175b243219cb333f82278ecce08f8bb17
2021-03-29 09:16:15 +01:00
David Drysdale
a5ddfbdcad Tweak IRemotelyProvisionedComponent AIDL docs
- Use P-256 in MacedPublicKey: The main place that MacedPublicKey is
   used requires a P-256 key, so use that as the example in the comment.
 - Fix leaf key type comment
 - Fix AES key size comment
 - Typo fix

Test: none, just comment change
Change-Id: I47a810f2a965facad6ddcd251341f233884e5f7c
2021-03-29 07:23:28 +00:00
David Zeuthen
7f8ccb5caf KeyMint + KeyMaster: Include permissions for FEATURE_HARDWARE_KEYSTORE.
This change includes permission files for the new permission
FEATURE_HARDWARE_KEYSTORE for the default KeyMaster and KeyMint
implementations.

Test: Manually inspected that permission files are installed.
Test: atest android.keystore.cts.KeyAttestationTest#testAttestationKmVersionMatchesFeatureVersion
Bug: 160616951
Change-Id: Ia35e1ba6c894624999eed62e8434a20ebc833b97
2021-03-25 08:07:03 -04:00
Max Bires
127b72ac0e Merge "Require RemoteProvisioner app for HAL service" 2021-03-25 01:07:12 +00:00
Treehugger Robot
2bb0aa102d Merge "This fixes the potential vts test failures for devices with no registered shared secret services. It aso fixes the static dependency issue. Test: atest VtsAidlSharedSecretTargetTest, atest VtsAidlSecureClockTargetTest Bug: b/182913582" 2021-03-25 00:33:00 +00:00
Max Bires
459bf52740 Merge "IRemotelyProvisionedComponent returns DeviceInfo" 2021-03-24 23:29:13 +00:00
Max Bires
501dcde8a7 Require RemoteProvisioner app for HAL service
Any device that provides an implementation for
IRemotelyProvisionedComponent will need the RemoteProvisioner system app
to actually drive the business logic and handle communicating out to
external servers. If this HAL is not present, then the app should not be
present on device either.

Test: app appears on CF, does not appear on e.g. blueline, coral
Change-Id: I84c3e450486ecff841b848b5e5e7a15f26895725
2021-03-24 11:00:52 -07:00
Max Bires
fdbb904a0c IRemotelyProvisionedComponent returns DeviceInfo
This alters the AIDL interface and underlying functionality to have the
component return the DeviceInfo CBOR blob that is used as AAD in
verification of a signature over a MAC key. Trying to reconstruct this
from userspace is very likely to lead to pain and subtle errors in the
future as adoption of this HAL increases, and multiple instances of this
HAL may exist on device simultaneously.

Test: atest VtsRemotelyProvisionedComponentTests
Change-Id: I44bd588586652630ed31a87cfda7e9c01cbf0a2f
2021-03-24 10:04:23 -07:00
Satya Tangirala
38b3bcee7f Merge "Keystore 2.0: add convertStorageKeyToEphemeral() to IKeymintDevice" 2021-03-24 03:43:38 +00:00
Chirag Pathak
f29ce36ecd This fixes the potential vts test failures for devices with no registered shared secret services. It aso fixes the static dependency issue.
Test: atest VtsAidlSharedSecretTargetTest, atest VtsAidlSecureClockTargetTest
Bug: b/182913582

Change-Id: Id526b729a7930bb081c794d9fae564eab9e300d5
2021-03-24 02:29:37 +00:00
Max Bires
928940ab07 Adding jbires to keymint/aidl/OWNERS
With great powers comes great responsibility. Or reverts.

Test: jbires can give owners vote on CLs in gerrit
Change-Id: I2efa65047b15be4a5138e6b343a534b3da245909
2021-03-23 11:26:14 -07:00
Shawn Willden
1f71f2c412 Fix documentation of EARLY_BOOT_ONLY tag in KeyMint
Change-Id: Ib49ee844e43fc10d83e0dd8d3b3b92914059f6f8
Test: VtsAidlKeyMintTargetTest
2021-03-23 12:29:09 +00:00
Satya Tangirala
c757c1ba39 Keystore 2.0: add convertStorageKeyToEphemeral() to IKeymintDevice
Add a function convertStorageKeyToEphemeral to IKeymintDevice that vold
can use to get a per-boot ephemeral key from a wrapped storage key.

Bug: 181806377
Bug: 181910578
Change-Id: I1b008423e3e24797132c8eb79ab3899e2b1c68e8
2021-03-22 17:39:36 -07:00
Janis Danisevskis
442a08d3ee security.sharedsecret: Add rust derives and fix docs.
Add rust derives to SecretSharingParameters.

Also fix some comments.

Test: N/A
Change-Id: Id3f02744d2880e59c678d781344bcbb83e8c8864
2021-03-22 15:35:38 -07:00
Janis Danisevskis
61eadb7ce4 Security: Provide generated java sources.
Enable generation of java sources for AIDL interfaces. This allows
enabling the @SensitiveData annotation without causing circular build
dependencies.

Also mark doc comments as @hide to prevent the interface from being
included in the SDK.

Bug: 174857732
Test: N/A
Merged-In: If00e4dfc24bf776f87c7e2b2e3f42350aa4d4379
Change-Id: If00e4dfc24bf776f87c7e2b2e3f42350aa4d4379
2021-03-22 20:02:39 +00:00
Max Bires
72ca1d2a40 Merge "COSE unprotected parameters are a map not a bstr" 2021-03-18 15:08:43 +00:00
Satya Tangirala
66e371f3d6 Keystore 2.0: Sync output format of generated headers
The output format of headers generated by
"m android.hardware.security.keymint-update-api" has changed. This patch
updates the format of those generated files in the tree.

Change-Id: If00a194f136c67197c96081b3c211d615fad5f07
2021-03-15 14:43:14 -07:00
David Drysdale
31a2b56ca2 COSE unprotected parameters are a map not a bstr
As per RFC 8152 section 3, the unprotected parameters in the headers
of COSE objects are just encoded as a map, not as a bstr that contains
the CBOR-encoding of a map.

Test: TreeHugger presubmit
Change-Id: Id4eeb023d3a81ad1398d78d410c8224bf941f9b1
2021-03-15 14:56:29 +00:00
David Drysdale
812a1d3d4a Fix docs for SecurityLevel::TRUSTED_ENVIRONMENT
Test: VtsAidlKeyMintTargetTest
Change-Id: I6bbc9abe308ba4b16297a7adc335cbb6f735f76c
2021-03-04 15:39:43 +00:00
Shawn Willden
d659c7c181 Add performOperation stub.
Test: VtsAidlKeyMintTargetTest
Change-Id: I3689fd2993941343c6b9ba503fbe56153742fb3e
2021-03-01 09:29:39 -07:00
Treehugger Robot
be9a813aec Merge "[LSC] Add LOCAL_LICENSE_KINDS to hardware/interfaces" 2021-03-01 04:00:19 +00:00