Doxygen with github
Loading...
Searching...
No Matches
ksCertUtils.h
1/*
2 * Copyright (c) 2021-2025, Krzysztof Strehlau
3 *
4 * This file is a part of the ksIotFramework library.
5 * All licensing information can be found inside LICENSE.md file.
6 *
7 * https://github.com/cziter15/ksIotFrameworkLib/blob/master/LICENSE
8 */
9
10#pragma once
11
12#include <string>
13#include <stdint.h>
14
15#if (defined(ESP32))
16 #if (defined(ESP32) && ESP_ARDUINO_VERSION_MAJOR >= 3)
17 #define ksCertUtilsNetCLientSecure_t NetworkClientSecure
18 #else
19 #define ksCertUtilsNetCLientSecure_t WiFiClientSecure
20 #endif
21 class ksCertUtilsNetCLientSecure_t;
22#elif (defined(ESP8266))
23 namespace BearSSL{class WiFiClientSecure;}
24 #define ksCertUtilsNetCLientSecure_t BearSSL::WiFiClientSecure
25#else
26 #error Platform not implemented.
27#endif
28
29namespace ksf::misc
30{
38 {
39 protected:
47 bool fingerprintToBytes(const std::string& fingerprint, uint8_t* bytes, uint8_t bytesLen) const;
48
49 public:
54
59
66 virtual bool setup(ksCertUtilsNetCLientSecure_t* client, const std::string& fingerprint) = 0;
67
73 virtual bool verify(ksCertUtilsNetCLientSecure_t* client) const = 0;
74 };
75
76#ifdef ESP32
77 class ksCertFingerprintESP32 : public ksCertFingerprint
78 {
79 private:
80 uint8_t fingerprintBytes[32];
81
82 public:
92 bool setup(ksCertUtilsNetCLientSecure_t* client, const std::string& fingerprint) override;
93
99 bool verify(ksCertUtilsNetCLientSecure_t* client) const override;
100 };
101
102 using ksCertFingerprintHolder = ksCertFingerprintESP32;
103#endif
104
105#ifdef ESP8266
106 class ksCertFingerprintESP8266 : public ksCertFingerprint
107 {
108 public:
115 bool setup(ksCertUtilsNetCLientSecure_t* client, const std::string& fingerprint) override;
116
125 bool verify(ksCertUtilsNetCLientSecure_t* client) const override;
126 };
127
128 using ksCertFingerprintHolder = ksCertFingerprintESP8266;
129#endif
130}
Interface for certificate fingerprint verification.
Definition ksCertUtils.h:38
virtual bool setup(ksCertUtilsNetCLientSecure_t *client, const std::string &fingerprint)=0
Performs certificate fingerprint setup (platform dependent).
virtual ~ksCertFingerprint()
Destructor.
virtual bool verify(ksCertUtilsNetCLientSecure_t *client) const =0
Performs certificate fingerprint validation (platform dependent).
bool fingerprintToBytes(const std::string &fingerprint, uint8_t *bytes, uint8_t bytesLen) const
Converts fingerprint string into array of bytes.
Definition ksCertUtils.cpp:37