blob: 6470cbc7460d8d3145935f84671d549100cd77c7 [file] [log] [blame]
//
// Copyright (C) 2024 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.
use kmr_common;
use log;
pub trait Error {
fn kmerr(e: Self) -> kmr_common::Error;
}
impl Error for optee_utee::Error {
fn kmerr(error: optee_utee::Error) -> kmr_common::Error {
log::error!("{}", error);
match error.kind() {
optee_utee::ErrorKind::BadParameters => {
kmr_common::km_err!(InvalidArgument, "{}", error)
}
optee_utee::ErrorKind::MacInvalid | optee_utee::ErrorKind::SignatureInvalid => {
kmr_common::km_err!(VerificationFailed, "{}", error)
}
optee_utee::ErrorKind::NotImplemented => {
kmr_common::km_err!(Unimplemented, "{}", error)
}
optee_utee::ErrorKind::NotSupported => {
kmr_common::km_err!(UnsupportedAlgorithm, "{}", error)
}
optee_utee::ErrorKind::OutOfMemory => {
kmr_common::km_err!(MemoryAllocationFailed, "{}", error)
}
_ => kmr_common::km_err!(UnknownError, "{}", error),
}
}
}
impl Error for der::Error {
fn kmerr(error: der::Error) -> kmr_common::Error {
log::error!("der error: {}", error);
kmr_common::km_err!(UnsupportedKeyFormat, "der error: {}", error)
}
}
impl Error for pkcs1::Error {
fn kmerr(error: pkcs1::Error) -> kmr_common::Error {
log::error!("pkcs1 error: {}", error);
kmr_common::km_err!(UnsupportedKeyFormat, "pkcs1 error: {}", error)
}
}
impl Error for pkcs8::spki::Error {
fn kmerr(error: pkcs8::spki::Error) -> kmr_common::Error {
log::error!("spki error: {}", error);
kmr_common::km_err!(UnsupportedKeyFormat, "spki error: {}", error)
}
}
impl Error for sec1::Error {
fn kmerr(error: sec1::Error) -> kmr_common::Error {
log::error!("sec1 error: {}", error);
kmr_common::km_err!(UnsupportedKeyFormat, "sec1 error: {}", error)
}
}
impl Error for uuid::Error {
fn kmerr(error: uuid::Error) -> kmr_common::Error {
log::error!("uuid error: {}", error);
kmr_common::km_err!(UnknownError, "uuid error: {}", error)
}
}
impl Error for core::convert::Infallible {
fn kmerr(error: core::convert::Infallible) -> kmr_common::Error {
log::error!("Infallible error: {}", error);
kmr_common::km_err!(MemoryAllocationFailed, "Infallible error: {}", error)
}
}
impl Error for core::array::TryFromSliceError {
fn kmerr(error: core::array::TryFromSliceError) -> kmr_common::Error {
log::error!("TryFromSliceError error: {}", error);
kmr_common::km_err!(MemoryAllocationFailed, "TryFromSliceError error: {}", error)
}
}