• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //! Utility to emit the CDDL for messages passed between HAL and TA.
2 
3 use kmr_common::crypto;
4 use kmr_wire::*;
5 use kmr_wire::{keymint::*, secureclock::*, sharedsecret::*};
6 
show_schema<T: kmr_wire::AsCborValue>()7 fn show_schema<T: kmr_wire::AsCborValue>() {
8     if let (Some(n), Some(s)) = (<T>::cddl_typename(), <T>::cddl_schema()) {
9         println!("{} = {}", n, s);
10     }
11 }
12 
main()13 fn main() {
14     // CDDL corresponding to types defined by the AIDL spec.
15 
16     // newtype wrappers
17     show_schema::<DateTime>();
18     show_schema::<kmr_wire::KeySizeInBits>();
19     show_schema::<kmr_wire::RsaExponent>();
20 
21     // enums
22     show_schema::<Algorithm>();
23     show_schema::<BlockMode>();
24     show_schema::<Digest>();
25     show_schema::<EcCurve>();
26     show_schema::<crypto::CurveType>();
27     show_schema::<ErrorCode>();
28     show_schema::<HardwareAuthenticatorType>();
29     show_schema::<KeyFormat>();
30     show_schema::<KeyOrigin>();
31     show_schema::<KeyPurpose>();
32     show_schema::<PaddingMode>();
33     show_schema::<SecurityLevel>();
34     show_schema::<Tag>();
35     show_schema::<TagType>();
36 
37     // structs
38     show_schema::<AttestationKey>();
39     // BeginResult omitted as it holds a Binder reference
40     show_schema::<Certificate>();
41     show_schema::<rpc::DeviceInfo>();
42     show_schema::<HardwareAuthToken>();
43     show_schema::<KeyCharacteristics>();
44     show_schema::<KeyCreationResult>();
45     show_schema::<KeyMintHardwareInfo>();
46     show_schema::<rpc::EekCurve>();
47     show_schema::<rpc::MacedPublicKey>();
48     show_schema::<rpc::ProtectedData>();
49     show_schema::<rpc::HardwareInfo>();
50     show_schema::<TimeStampToken>();
51     show_schema::<Timestamp>();
52     show_schema::<SharedSecretParameters>();
53 
54     // Internal exhaustive enum (instead of `KeyParameter` and `KeyParameterValue` from the HAL).
55     show_schema::<KeyParam>();
56 
57     // CDDL corresponding to types defined in this crate.
58 
59     // enums
60     show_schema::<KeyMintOperation>();
61 
62     // structs
63 
64     show_schema::<GetHardwareInfoRequest>();
65     show_schema::<GetHardwareInfoResponse>();
66     show_schema::<AddRngEntropyRequest>();
67     show_schema::<AddRngEntropyResponse>();
68     show_schema::<GenerateKeyRequest>();
69     show_schema::<GenerateKeyResponse>();
70     show_schema::<ImportKeyRequest>();
71     show_schema::<ImportKeyResponse>();
72     show_schema::<ImportWrappedKeyRequest>();
73     show_schema::<ImportWrappedKeyResponse>();
74     show_schema::<UpgradeKeyRequest>();
75     show_schema::<UpgradeKeyResponse>();
76     show_schema::<DeleteKeyRequest>();
77     show_schema::<DeleteKeyResponse>();
78     show_schema::<DeleteAllKeysRequest>();
79     show_schema::<DeleteAllKeysResponse>();
80     show_schema::<DestroyAttestationIdsRequest>();
81     show_schema::<DestroyAttestationIdsResponse>();
82     show_schema::<BeginRequest>();
83     show_schema::<InternalBeginResult>(); // Special case
84     show_schema::<DeviceLockedRequest>();
85     show_schema::<DeviceLockedResponse>();
86     show_schema::<EarlyBootEndedRequest>();
87     show_schema::<EarlyBootEndedResponse>();
88     show_schema::<ConvertStorageKeyToEphemeralRequest>();
89     show_schema::<ConvertStorageKeyToEphemeralResponse>();
90     show_schema::<GetKeyCharacteristicsRequest>();
91     show_schema::<GetKeyCharacteristicsResponse>();
92     show_schema::<UpdateAadRequest>();
93     show_schema::<UpdateAadResponse>();
94     show_schema::<UpdateRequest>();
95     show_schema::<UpdateResponse>();
96     show_schema::<FinishRequest>();
97     show_schema::<FinishResponse>();
98     show_schema::<AbortRequest>();
99     show_schema::<AbortResponse>();
100 
101     show_schema::<GetRpcHardwareInfoRequest>();
102     show_schema::<GetRpcHardwareInfoResponse>();
103     show_schema::<GenerateEcdsaP256KeyPairRequest>();
104     show_schema::<GenerateEcdsaP256KeyPairResponse>();
105     show_schema::<GenerateCertificateRequestRequest>();
106     show_schema::<GenerateCertificateRequestResponse>();
107     show_schema::<GenerateCertificateRequestV2Request>();
108     show_schema::<GenerateCertificateRequestV2Response>();
109 
110     show_schema::<GetSharedSecretParametersRequest>();
111     show_schema::<GetSharedSecretParametersResponse>();
112     show_schema::<ComputeSharedSecretRequest>();
113     show_schema::<ComputeSharedSecretResponse>();
114 
115     show_schema::<GenerateTimeStampRequest>();
116     show_schema::<GenerateTimeStampResponse>();
117 
118     // Autogenerated enums
119     show_schema::<PerformOpReq>();
120     show_schema::<PerformOpRsp>();
121 
122     // Overall response structure
123     show_schema::<PerformOpResponse>();
124 }
125