|  | // Copyright 2019 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | library fuchsia.kms; | 
|  |  | 
|  | const uint8 MAX_HARDWARE_DERIVE_KEY_INFO_SIZE = 32; | 
|  | const uint8 MAX_HARDWARE_DERIVED_KEY_SIZE = 32; | 
|  |  | 
|  | [Discoverable] | 
|  | protocol StatelessKeyManager { | 
|  | /// Get a hardware key derived key. | 
|  | /// | 
|  | /// Get a key derived from hardware root key using `key_info` as info and the trusted app ID | 
|  | /// as salt. This call is deterministic and always returns the same result if given the same | 
|  | /// `key_info` on the same device and would be different across different devices if they have | 
|  | /// different hardware keys. | 
|  | GetHardwareDerivedKey( | 
|  | vector<uint8>:MAX_HARDWARE_DERIVE_KEY_INFO_SIZE key_info | 
|  | ) -> (vector<uint8>:MAX_HARDWARE_DERIVED_KEY_SIZE derived_key) error Error; | 
|  | }; |