File tree Expand file tree Collapse file tree 3 files changed +18
-8
lines changed Expand file tree Collapse file tree 3 files changed +18
-8
lines changed Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ extern "C" {
2929
3030ArduinoOTAClass::ArduinoOTAClass ()
3131: _port(0 )
32+ , _pass_is_hash(false )
3233, _udp_ota(0 )
3334, _initialized(false )
3435, _state(OTA_IDLE)
@@ -81,9 +82,10 @@ String ArduinoOTAClass::getHostname() {
8182 return _hostname;
8283}
8384
84- void ArduinoOTAClass::setPassword (const char * password) {
85+ void ArduinoOTAClass::setPassword (const char * password, bool isHash ) {
8586 if (!_initialized && !_password.length () && password) {
8687 _password = password;
88+ _pass_is_hash = isHash;
8789 }
8890}
8991
@@ -206,11 +208,14 @@ void ArduinoOTAClass::_onRx(){
206208 return ;
207209 }
208210
209- MD5Builder _passmd5;
210- _passmd5.begin ();
211- _passmd5.add (_password);
212- _passmd5.calculate ();
213- String passmd5 = _passmd5.toString ();
211+ String passmd5 = _password;
212+ if (!_pass_is_hash){
213+ MD5Builder _passmd5;
214+ _passmd5.begin ();
215+ _passmd5.add (_password);
216+ _passmd5.calculate ();
217+ passmd5 = _passmd5.toString ();
218+ }
214219
215220 String challenge = passmd5 + " :" + String (_nonce) + " :" + cnonce;
216221 MD5Builder _challengemd5;
Original file line number Diff line number Diff line change @@ -33,7 +33,7 @@ class ArduinoOTAClass
3333 void setPort (uint16_t port);
3434 void setHostname (const char *hostname);
3535 String getHostname ();
36- void setPassword (const char *password);
36+ void setPassword (const char *password, bool isHash= false );
3737 void onStart (THandlerFunction fn);
3838 void onEnd (THandlerFunction fn);
3939 void onError (THandlerFunction_Error fn);
@@ -44,6 +44,7 @@ class ArduinoOTAClass
4444
4545 private:
4646 int _port;
47+ bool _pass_is_hash;
4748 String _password;
4849 String _hostname;
4950 String _nonce;
Original file line number Diff line number Diff line change @@ -24,7 +24,11 @@ void setup() {
2424 // ArduinoOTA.setHostname("myesp8266");
2525
2626 // No authentication by default
27- // ArduinoOTA.setPassword((const char *)"123");
27+ // ArduinoOTA.setPassword("admin");
28+
29+ // Password can be set with it's md5 value as well
30+ // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3
31+ // ArduinoOTA.setPassword("21232f297a57a5a743894a0e4a801fc3", true);
2832
2933 ArduinoOTA.onStart ([]() {
3034 String type;
You can’t perform that action at this time.
0 commit comments