Skip to content

Commit 5e3622b

Browse files
authored
Merge pull request #293 from pennam/bearssl-error
Add command to read BearSSL client errorCode
2 parents 070f84d + 9752376 commit 5e3622b

File tree

7 files changed

+37
-0
lines changed

7 files changed

+37
-0
lines changed

src/WiFiClient.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,11 @@ int WiFiClient::setECTrustAnchorBearSSL(const uint8_t *dName, uint32_t dNameSize
199199
return ServerDrv::setECTrustAnchorBearSSL(dName, dNameSize, flags, curve, key, keySize);
200200
}
201201

202+
int WiFiClient::errorCodeBearSSL()
203+
{
204+
return ServerDrv::errorCodeBearSSL();
205+
}
206+
202207
size_t WiFiClient::write(uint8_t b) {
203208
return write(&b, 1);
204209
}

src/WiFiClient.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class WiFiClient : public Client {
3939
virtual int connectBearSSL(IPAddress ip, uint16_t port);
4040
virtual int connectBearSSL(const char *host, uint16_t port);
4141
virtual int setECTrustAnchorBearSSL(const uint8_t *dName, uint32_t dNameSize, uint16_t flags, uint16_t curve, const uint8_t *key, uint32_t keySize);
42+
virtual int errorCodeBearSSL();
4243
virtual size_t write(uint8_t);
4344
virtual size_t write(const uint8_t *buf, size_t size);
4445
virtual size_t retry(const uint8_t *buf, size_t size, bool write);

src/WiFiSSLClient.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,8 @@ int WiFiBearSSLClient::setECTrustAnchor(const uint8_t *dName, uint32_t dNameSize
6363
{
6464
return WiFiClient::setECTrustAnchorBearSSL(dName, dNameSize, flags, curve, key, keySize);
6565
}
66+
67+
int WiFiBearSSLClient::errorCode()
68+
{
69+
return WiFiClient::errorCodeBearSSL();
70+
}

src/WiFiSSLClient.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class WiFiBearSSLClient : public WiFiClient {
4141
virtual int connect(IPAddress ip, uint16_t port);
4242
virtual int connect(const char* host, uint16_t port);
4343
virtual int setECTrustAnchor(const uint8_t *dName, uint32_t dNameSize, uint16_t flags, uint16_t curve, const uint8_t *key, uint32_t keySize);
44+
virtual int errorCode();
4445
};
4546

4647
#endif /* WIFISSLCLIENT_H */

src/utility/server_drv.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,4 +559,26 @@ uint8_t ServerDrv::setECTrustAnchorBearSSL(const uint8_t *dName, uint32_t dNameS
559559
return result == 0;
560560
}
561561

562+
int ServerDrv::errorCodeBearSSL()
563+
{
564+
WAIT_FOR_SLAVE_SELECT();
565+
566+
// Send Command
567+
SpiDrv::sendCmd(BRSSL_ERROR_CODE, PARAM_NUMS_0);
568+
569+
SpiDrv::spiSlaveDeselect();
570+
//Wait the reply elaboration
571+
SpiDrv::waitForSlaveReady();
572+
SpiDrv::spiSlaveSelect();
573+
574+
// Wait for reply
575+
int _data = 0;
576+
uint8_t _dataLen = 0;
577+
SpiDrv::waitResponseCmd(BRSSL_ERROR_CODE, PARAM_NUMS_1, (uint8_t*)&_data, &_dataLen);
578+
579+
SpiDrv::spiSlaveDeselect();
580+
581+
return _data;
582+
}
583+
562584
ServerDrv serverDrv;

src/utility/server_drv.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ class ServerDrv
6464
static uint8_t getSocket();
6565

6666
static uint8_t setECTrustAnchorBearSSL(const uint8_t *dName, uint32_t dNameSize, uint16_t flags, uint16_t curve, const uint8_t *key, uint32_t keySize);
67+
68+
static int errorCodeBearSSL();
6769
};
6870

6971
extern ServerDrv serverDrv;

src/utility/wifi_spi.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ enum {
127127
RENAME_FILE = 0x66,
128128
DOWNLOAD_OTA = 0x67,
129129
BRSSL_SET_EC_TA = 0x68,
130+
BRSSL_ERROR_CODE = 0x69,
130131

131132
// Low-level BSD-like sockets functions.
132133
// From 0x70 to 0x7F

0 commit comments

Comments
 (0)