From 4c27aa57b1ccd2eaed38ad36dfce95859fb18628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Fri, 3 Jun 2022 11:24:27 +0200 Subject: [PATCH] [core] Add MD5 library --- .gitignore | 1 + arduino/libretuya/libraries/MD5/MD5.h | 27 +++++++++++++++++ .../libraries/MD5/MD5PolarSSLImpl.cpp | 29 +++++++++++++++++++ .../libretuya/libraries/MD5/MD5PolarSSLImpl.h | 16 ++++++++++ arduino/realtek-ambz/libraries/MD5/MD5Impl.h | 7 +++++ builder/frameworks/realtek-ambz-sdk.py | 2 ++ 6 files changed, 82 insertions(+) create mode 100644 arduino/libretuya/libraries/MD5/MD5.h create mode 100644 arduino/libretuya/libraries/MD5/MD5PolarSSLImpl.cpp create mode 100644 arduino/libretuya/libraries/MD5/MD5PolarSSLImpl.h create mode 100644 arduino/realtek-ambz/libraries/MD5/MD5Impl.h diff --git a/.gitignore b/.gitignore index 4ef7f72..3e9ecf8 100644 --- a/.gitignore +++ b/.gitignore @@ -258,3 +258,4 @@ xml/ ltapi/ ltambz/ hashChanges.yaml +.piopm diff --git a/arduino/libretuya/libraries/MD5/MD5.h b/arduino/libretuya/libraries/MD5/MD5.h new file mode 100644 index 0000000..ea0c98f --- /dev/null +++ b/arduino/libretuya/libraries/MD5/MD5.h @@ -0,0 +1,27 @@ +/* Copyright (c) Kuba Szczodrzyński 2022-06-03. */ + +#pragma once + +#include + +// available built-in implementations +#if LT_MD5_USE_POLARSSL +#include "MD5PolarSSLImpl.h" +#endif + +// common API +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef LT_MD5_CTX_T +#define LT_MD5_CTX_T void +#endif + +void MD5Init(LT_MD5_CTX_T *context); +void MD5Update(LT_MD5_CTX_T *context, const unsigned char *buf, unsigned len); +void MD5Final(unsigned char digest[16], LT_MD5_CTX_T *context); + +#ifdef __cplusplus +} +#endif diff --git a/arduino/libretuya/libraries/MD5/MD5PolarSSLImpl.cpp b/arduino/libretuya/libraries/MD5/MD5PolarSSLImpl.cpp new file mode 100644 index 0000000..f03ddb7 --- /dev/null +++ b/arduino/libretuya/libraries/MD5/MD5PolarSSLImpl.cpp @@ -0,0 +1,29 @@ +/* Copyright (c) Kuba Szczodrzyński 2022-06-03. */ + +// check if impl defines LT_MD5_USE_POLARSSL +extern "C" { +#include +} + +#if LT_MD5_USE_POLARSSL + +#include "MD5PolarSSLImpl.h" + +extern "C" { + +void MD5Init(LT_MD5_CTX_T *context) { + md5_init(context); + md5_starts(context); +} + +void MD5Update(LT_MD5_CTX_T *context, const unsigned char *buf, unsigned len) { + md5_update(context, buf, len); +} + +void MD5Final(unsigned char digest[16], LT_MD5_CTX_T *context) { + md5_finish(context, digest); +} + +} // extern "C" + +#endif diff --git a/arduino/libretuya/libraries/MD5/MD5PolarSSLImpl.h b/arduino/libretuya/libraries/MD5/MD5PolarSSLImpl.h new file mode 100644 index 0000000..7cad1fc --- /dev/null +++ b/arduino/libretuya/libraries/MD5/MD5PolarSSLImpl.h @@ -0,0 +1,16 @@ +/* Copyright (c) Kuba Szczodrzyński 2022-06-03. */ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#define LT_MD5_CTX_T md5_context + +#ifdef __cplusplus +} // extern "C" +#endif + +#include "MD5.h" diff --git a/arduino/realtek-ambz/libraries/MD5/MD5Impl.h b/arduino/realtek-ambz/libraries/MD5/MD5Impl.h new file mode 100644 index 0000000..ba7753f --- /dev/null +++ b/arduino/realtek-ambz/libraries/MD5/MD5Impl.h @@ -0,0 +1,7 @@ +/* Copyright (c) Kuba Szczodrzyński 2022-06-03. */ + +#pragma once + +#include + +#define LT_MD5_USE_POLARSSL 1 diff --git a/builder/frameworks/realtek-ambz-sdk.py b/builder/frameworks/realtek-ambz-sdk.py index 6847192..7de8817 100644 --- a/builder/frameworks/realtek-ambz-sdk.py +++ b/builder/frameworks/realtek-ambz-sdk.py @@ -180,6 +180,8 @@ env.AddLibrary( "+", "+", "+", + # keep PolarSSL for headers for ROM crypto functions + "+", ], )