Skip to content

Add command to read BearSSL client errorCode #293

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/WiFiClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,11 @@ int WiFiClient::setECTrustAnchorBearSSL(const uint8_t *dName, uint32_t dNameSize
return ServerDrv::setECTrustAnchorBearSSL(dName, dNameSize, flags, curve, key, keySize);
}

int WiFiClient::errorCodeBearSSL()
{
return ServerDrv::errorCodeBearSSL();
}

size_t WiFiClient::write(uint8_t b) {
return write(&b, 1);
}
Expand Down
1 change: 1 addition & 0 deletions src/WiFiClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class WiFiClient : public Client {
virtual int connectBearSSL(IPAddress ip, uint16_t port);
virtual int connectBearSSL(const char *host, uint16_t port);
virtual int setECTrustAnchorBearSSL(const uint8_t *dName, uint32_t dNameSize, uint16_t flags, uint16_t curve, const uint8_t *key, uint32_t keySize);
virtual int errorCodeBearSSL();
virtual size_t write(uint8_t);
virtual size_t write(const uint8_t *buf, size_t size);
virtual size_t retry(const uint8_t *buf, size_t size, bool write);
Expand Down
5 changes: 5 additions & 0 deletions src/WiFiSSLClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,8 @@ int WiFiBearSSLClient::setECTrustAnchor(const uint8_t *dName, uint32_t dNameSize
{
return WiFiClient::setECTrustAnchorBearSSL(dName, dNameSize, flags, curve, key, keySize);
}

int WiFiBearSSLClient::errorCode()
{
return WiFiClient::errorCodeBearSSL();
}
1 change: 1 addition & 0 deletions src/WiFiSSLClient.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class WiFiBearSSLClient : public WiFiClient {
virtual int connect(IPAddress ip, uint16_t port);
virtual int connect(const char* host, uint16_t port);
virtual int setECTrustAnchor(const uint8_t *dName, uint32_t dNameSize, uint16_t flags, uint16_t curve, const uint8_t *key, uint32_t keySize);
virtual int errorCode();
};

#endif /* WIFISSLCLIENT_H */
22 changes: 22 additions & 0 deletions src/utility/server_drv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -559,4 +559,26 @@ uint8_t ServerDrv::setECTrustAnchorBearSSL(const uint8_t *dName, uint32_t dNameS
return result == 0;
}

int ServerDrv::errorCodeBearSSL()
{
WAIT_FOR_SLAVE_SELECT();

// Send Command
SpiDrv::sendCmd(BRSSL_ERROR_CODE, PARAM_NUMS_0);

SpiDrv::spiSlaveDeselect();
//Wait the reply elaboration
SpiDrv::waitForSlaveReady();
SpiDrv::spiSlaveSelect();

// Wait for reply
int _data = 0;
uint8_t _dataLen = 0;
SpiDrv::waitResponseCmd(BRSSL_ERROR_CODE, PARAM_NUMS_1, (uint8_t*)&_data, &_dataLen);

SpiDrv::spiSlaveDeselect();

return _data;
}

ServerDrv serverDrv;
2 changes: 2 additions & 0 deletions src/utility/server_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ class ServerDrv
static uint8_t getSocket();

static uint8_t setECTrustAnchorBearSSL(const uint8_t *dName, uint32_t dNameSize, uint16_t flags, uint16_t curve, const uint8_t *key, uint32_t keySize);

static int errorCodeBearSSL();
};

extern ServerDrv serverDrv;
Expand Down
1 change: 1 addition & 0 deletions src/utility/wifi_spi.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ enum {
RENAME_FILE = 0x66,
DOWNLOAD_OTA = 0x67,
BRSSL_SET_EC_TA = 0x68,
BRSSL_ERROR_CODE = 0x69,

// Low-level BSD-like sockets functions.
// From 0x70 to 0x7F
Expand Down