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>()7fn 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()13fn 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