From 3c44bf936083380f751ecae34fe0dbd94c236bc6 Mon Sep 17 00:00:00 2001 From: sebaszm Date: Fri, 8 Sep 2023 15:59:18 +0200 Subject: [PATCH] Add simplified crypto interface --- interfaces/ISimpleCrypto.h | 50 ++++++++++++++++++++++++++++++++++++++ interfaces/Ids.h | 5 +++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 interfaces/ISimpleCrypto.h diff --git a/interfaces/ISimpleCrypto.h b/interfaces/ISimpleCrypto.h new file mode 100644 index 00000000..41cdf7a5 --- /dev/null +++ b/interfaces/ISimpleCrypto.h @@ -0,0 +1,50 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Metrological + * + * 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. + */ + +#pragma once + +#include "Module.h" + + +namespace WPEFramework { + +namespace Exchange { + + struct EXTERNAL ISimpleCrypto : virtual public Core::IUnknown { + + enum { ID = ID_SIMPLECRYPTO }; + + struct EXTERNAL ICipher : virtual public Core::IUnknown { + + enum { ID = ID_SIMPLECRYPTO_CIPHER }; + + virtual uint32_t Encrypt(const uint32_t length, const uint8_t input[] /* @in @length:length */, + const uint32_t maxOutputLength, uint8_t output[] /* @out @maxlength:maxOutputLength */) const = 0; + + virtual uint32_t Decrypt(const uint32_t length, const uint8_t input[] /* @in @length:length */, + const uint32_t maxOutputLength, uint8_t output[] /* @out @maxlength:maxOutputLength */) const = 0; + + }; + + virtual ICipher* Cipher(const string& keyName) = 0; + }; + +} + +} diff --git a/interfaces/Ids.h b/interfaces/Ids.h index d9991d78..bc7cdf86 100644 --- a/interfaces/Ids.h +++ b/interfaces/Ids.h @@ -366,7 +366,10 @@ namespace Exchange { ID_CRYPTOGRAPHY_HASH = ID_CRYPTOGRAPHY + 2, ID_CRYPTOGRAPHY_CIPHER = ID_CRYPTOGRAPHY + 3, ID_CRYPTOGRAPHY_DIFFIEHELLMAN = ID_CRYPTOGRAPHY + 4, - ID_CRYPTOGRAPHY_PERSISTENT = ID_CRYPTOGRAPHY + 5 + ID_CRYPTOGRAPHY_PERSISTENT = ID_CRYPTOGRAPHY + 5, + + ID_SIMPLECRYPTO = RPC::IDS::ID_EXTERNAL_INTERFACE_OFFSET + 0x4E0, + ID_SIMPLECRYPTO_CIPHER = ID_SIMPLECRYPTO + 1 }; } }