Update softkeymaster for KM4.1
Test: VtsHalKeymasterV4_1TargetTest
Change-Id: Iaf4d6265c546bfadddaa6efff3f8316eb98dc889
Merged-In: Iaf4d6265c546bfadddaa6efff3f8316eb98dc889
diff --git a/ng/AndroidKeymaster41Device.cpp b/ng/AndroidKeymaster41Device.cpp
index 295d3f5..8d57fd2 100644
--- a/ng/AndroidKeymaster41Device.cpp
+++ b/ng/AndroidKeymaster41Device.cpp
@@ -15,12 +15,47 @@
** limitations under the License.
*/
+#define LOG_TAG "android.hardware.keymaster@4.1 ref impl"
+#include <log/log.h>
+
#include "include/AndroidKeymaster41Device.h"
+#include <keymaster/android_keymaster.h>
+
namespace keymaster::V4_1 {
+using V4_0::ng::hidlKeyParams2Km;
+
+namespace {
+
+inline V41ErrorCode legacy_enum_conversion(const keymaster_error_t value) {
+ return static_cast<V41ErrorCode>(value);
+}
+
+} // namespace
+
IKeymasterDevice* CreateKeymasterDevice(SecurityLevel securityLevel) {
return new AndroidKeymaster41Device(securityLevel);
}
+Return<V41ErrorCode>
+AndroidKeymaster41Device::deviceLocked(bool passwordOnly,
+ const VerificationToken& verificationToken) {
+ keymaster::VerificationToken serializableToken;
+ serializableToken.challenge = verificationToken.challenge;
+ serializableToken.timestamp = verificationToken.timestamp;
+ serializableToken.parameters_verified.Reinitialize(
+ hidlKeyParams2Km(verificationToken.parametersVerified));
+ serializableToken.security_level =
+ static_cast<keymaster_security_level_t>(verificationToken.securityLevel);
+ serializableToken.mac =
+ KeymasterBlob(verificationToken.mac.data(), verificationToken.mac.size());
+ return legacy_enum_conversion(
+ impl_->DeviceLocked(DeviceLockedRequest(passwordOnly, std::move(serializableToken))).error);
+}
+
+Return<V41ErrorCode> AndroidKeymaster41Device::earlyBootEnded() {
+ return legacy_enum_conversion(impl_->EarlyBootEnded().error);
+}
+
} // namespace keymaster::V4_1