bool WiFiClientSecure::verify(const char* fp, const char* domain_name) { if (!_ssl) { return false; } uint8_t sha1[20]; int len = strlen(fp); int pos = 0; for (size_t i = 0; i < sizeof(sha1); ++i) { while (pos < len && ((fp[pos] == ' ') || (fp[pos] == ':'))) { ++pos; } if (pos > len - 2) { DEBUGV("pos:%d len:%d fingerprint too short\r\n", pos, len); return false; } uint8_t high, low; if (!parseHexNibble(fp[pos], &high) || !parseHexNibble(fp[pos+1], &low)) { DEBUGV("pos:%d len:%d invalid hex sequence: %c%c\r\n", pos, len, fp[pos], fp[pos+1]); return false; } pos += 2; sha1[i] = low | (high << 4); } if (ssl_match_fingerprint(*_ssl, sha1) != 0) { DEBUGV("fingerprint doesn't match\r\n"); return false; } return _verifyDN(domain_name); }
bool WiFiClientSecure::verifyCertChain(const char* domain_name) { if (!_ssl) { return false; } if (!_ssl->verifyCert()) { return false; } return _verifyDN(domain_name); }
bool WiFiClientSecure::verifyCertChain(const char* domain_name) { if (!_ssl) { return false; } int rc = ssl_verify_cert(*_ssl); if (rc != SSL_OK) { DEBUGV("ssl_verify_cert returned %d\n", rc); return false; } return _verifyDN(domain_name); }