Skip to content

Commit 36dba99

Browse files
APokornyme-no-dev
authored andcommitted
Extend HTTPClient to allow connecting with a client certificate (espressif#788)
* Forward client certificate to wificlient secure * remove comment
1 parent 0768590 commit 36dba99

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

libraries/HTTPClient/src/HTTPClient.cpp

+21-3
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ class TransportTraits
5454
class TLSTraits : public TransportTraits
5555
{
5656
public:
57-
TLSTraits(const char* CAcert) :
58-
_cacert(CAcert)
57+
TLSTraits(const char* CAcert, const char* clicert = nullptr, const char* clikey = nullptr) :
58+
_cacert(CAcert), _clicert(clicert), _clikey(clikey)
5959
{
6060
}
6161

@@ -67,12 +67,16 @@ class TLSTraits : public TransportTraits
6767
bool verify(WiFiClient& client, const char* host) override
6868
{
6969
WiFiClientSecure& wcs = static_cast<WiFiClientSecure&>(client);
70-
wcs.setCACert(_cacert);
70+
wcs.setCACert(_cacert);
71+
wcs.setCertificate(_clicert);
72+
wcs.setPrivateKey(_clikey);
7173
return true;
7274
}
7375

7476
protected:
7577
const char* _cacert;
78+
const char* _clicert;
79+
const char* _clikey;
7680
};
7781

7882
/**
@@ -203,6 +207,20 @@ bool HTTPClient::begin(String host, uint16_t port, String uri, const char* CAcer
203207
return true;
204208
}
205209

210+
bool HTTPClient::begin(String host, uint16_t port, String uri, const char* CAcert, const char* cli_cert, const char* cli_key)
211+
{
212+
clear();
213+
_host = host;
214+
_port = port;
215+
_uri = uri;
216+
217+
if (strlen(CAcert) == 0) {
218+
return false;
219+
}
220+
_transportTraits = TransportTraitsPtr(new TLSTraits(CAcert, cli_cert, cli_key));
221+
return true;
222+
}
223+
206224
/**
207225
* end
208226
* called after the payload is handled

libraries/HTTPClient/src/HTTPClient.h

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ class HTTPClient
129129
bool begin(String url, const char* CAcert);
130130
bool begin(String host, uint16_t port, String uri = "/");
131131
bool begin(String host, uint16_t port, String uri, const char* CAcert);
132+
bool begin(String host, uint16_t port, String uri, const char* CAcert, const char* cli_cert, const char* cli_key);
132133

133134
void end(void);
134135

0 commit comments

Comments
 (0)