Device interface library for multiple platforms including Mbed.

Dependents:   DeepCover Embedded Security in IoT MaximInterface MAXREFDES155#

Maxim Interface is a library framework focused on providing flexible and expressive hardware interfaces. Both communication interfaces such as I2C and 1-Wire and device interfaces such as DS18B20 are supported. Modern C++ concepts are used extensively while keeping compatibility with C++98/C++03 and requiring no external dependencies. The embedded-friendly design does not depend on exceptions or RTTI.

The full version of the project is hosted on GitLab: https://gitlab.com/iabenz/MaximInterface

Revision:
8:5ea891c7d1a1
Parent:
7:9cd16581b578
--- a/MaximInterfaceCore/Ecc256.hpp	Mon Jul 22 11:44:07 2019 -0500
+++ b/MaximInterfaceCore/Ecc256.hpp	Mon Sep 16 11:13:37 2019 -0500
@@ -1,5 +1,5 @@
 /*******************************************************************************
-* Copyright (C) 2017 Maxim Integrated Products, Inc., All Rights Reserved.
+* Copyright (C) Maxim Integrated Products, Inc., All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
@@ -30,8 +30,8 @@
 * ownership rights.
 *******************************************************************************/
 
-#ifndef MaximInterfaceCore_Ecc256
-#define MaximInterfaceCore_Ecc256
+#ifndef MaximInterfaceCore_Ecc256_hpp
+#define MaximInterfaceCore_Ecc256_hpp
 
 #include <stdint.h>
 #include "Algorithm.hpp"
@@ -80,6 +80,9 @@
 
 MaximInterfaceCore_EXPORT void copy(Point::const_span src, Point::span dst);
 
+MaximInterfaceCore_EXPORT bool equal(Point::const_span lhs,
+                                     Point::const_span rhs);
+
 typedef Scalar PrivateKey;
 typedef Point PublicKey;
 
@@ -117,6 +120,9 @@
 
 MaximInterfaceCore_EXPORT void copy(KeyPair::const_span src, KeyPair::span dst);
 
+MaximInterfaceCore_EXPORT bool equal(KeyPair::const_span lhs,
+                                     KeyPair::const_span rhs);
+
 struct Signature : Unconstructible {
   struct const_span {
     Scalar::const_span r;
@@ -152,6 +158,9 @@
 MaximInterfaceCore_EXPORT void copy(Signature::const_span src,
                                     Signature::span dst);
 
+MaximInterfaceCore_EXPORT bool equal(Signature::const_span lhs,
+                                     Signature::const_span rhs);
+
 /// Data used to create a device key certificate for ECC-256 authenticators.
 class CertificateData {
 public:
@@ -229,11 +238,9 @@
   /// @}
 
 private:
-  typedef Result::span::index_type index;
-
-  static const index publicKeyIdx = 0;
-  static const index romIdIdx = publicKeyIdx + 2 * Scalar::size;
-  static const index manIdIdx = romIdIdx + RomId::size;
+  static const size_t publicKeyIdx = 0;
+  static const size_t romIdIdx = publicKeyIdx + 2 * Scalar::size;
+  static const size_t manIdIdx = romIdIdx + RomId::size;
 
   Result::array result_;
 };