| // Copyright 2020, The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #![allow(missing_docs)] |
| |
| //! This crate holds types that we are depending on and will be generated by the AIDL |
| //! compiler. |
| |
| use std::cmp::PartialEq; |
| use std::fmt; |
| |
| #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] |
| pub struct Result { |
| pub rc: ResponseCode, |
| pub km_error_code: i32, |
| } |
| |
| impl fmt::Display for Result { |
| fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { |
| write!(f, "{:?}", self) |
| } |
| } |
| |
| #[repr(i32)] |
| #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] |
| pub enum ResponseCode { |
| Ok = 0, |
| // 1 Reserved - formerly NO_ERROR |
| Locked = 2, |
| Uninitialized = 3, |
| SystemError = 4, |
| // 5 Reserved - formerly "protocol error" was never used |
| PermissionDenied = 6, |
| KeyNotFound = 7, |
| ValueCorrupted = 8, |
| // 9 Reserved - formerly "undefined action" was never used |
| WrongPassword = 10, |
| // 11 - 13 Reserved - formerly password retry count indicators: obsolete |
| // |
| // 14 Reserved - formerly SIGNATURE_INVALID: Keystore does not perform public key |
| // operations any more. |
| |
| // Indicates to the caller that user authorization is required before the operation may |
| // commence. |
| OpAuthNeeded = 15, |
| // 16 Reserved |
| KeyPermanentlyInvalidated = 17, |
| NoSuchSecurityLevel = 18, |
| KeymintErrorCode = 19, |
| BackendBusy = 20, |
| } |
| |
| pub type ErrorCode = i32; |
| |
| #[repr(i32)] |
| #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] |
| pub enum KeyPermission { |
| None = 0, |
| Delete = 1, |
| GenUniqueId = 2, |
| GetInfo = 4, |
| Grant = 8, |
| List = 0x10, |
| ManageBlob = 0x20, |
| Rebind = 0x40, |
| ReqForcedOp = 0x80, |
| Update = 0x100, |
| Use = 0x200, |
| UseDevId = 0x400, |
| } |
| |
| #[repr(i32)] |
| #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] |
| pub enum Domain { |
| App = 0, |
| Grant = 1, |
| SELinux = 2, |
| Blob = 3, |
| KeyId = 4, |
| } |
| |
| #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] |
| pub struct KeyDescriptor { |
| pub domain: Domain, |
| pub namespace_: i64, |
| pub alias: Option<String>, |
| pub blob: Option<Vec<u8>>, |
| } |