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 + "+", ], )