99#include  " spi_flash_mmap.h" 
1010#include  " esp_ota_ops.h" 
1111#include  " esp_image_format.h" 
12+ #ifndef  UPDATE_NOCRYPT
1213#include  " mbedtls/aes.h" 
14+ #endif  /*  UPDATE_NOCRYPT */ 
1315
1416static  const  char  *_err2str (uint8_t  _error) {
1517 if  (_error == UPDATE_ERROR_OK) {
@@ -38,8 +40,10 @@ static const char *_err2str(uint8_t _error) {
3840 return  (" Bad Argument"  );
3941 } else  if  (_error == UPDATE_ERROR_ABORT) {
4042 return  (" Aborted"  );
43+ #ifndef  UPDATE_NOCRYPT
4144 } else  if  (_error == UPDATE_ERROR_DECRYPT) {
4245 return  (" Decryption error"  );
46+ #endif /*  UPDATE_NOCRYPT */ 
4347 }
4448 return  (" UNKNOWN"  );
4549}
@@ -67,8 +71,17 @@ bool UpdateClass::_enablePartition(const esp_partition_t *partition) {
6771}
6872
6973UpdateClass::UpdateClass ()
70-  : _error(0 ), _cryptKey(0 ), _cryptBuffer(0 ), _buffer(0 ), _skipBuffer(0 ), _bufferLen(0 ), _size(0 ), _progress_callback(NULL ), _progress(0 ), _paroffset(0 ),
71-  _command(U_FLASH), _partition(NULL ), _cryptMode(U_AES_DECRYPT_AUTO), _cryptAddress(0 ), _cryptCfg(0xf ) {}
74+  : _error (0 ),
75+ #ifndef  UPDATE_NOCRYPT
76+  _cryptKey (0 ), _cryptBuffer (0 ),
77+ #endif  /*  UPDATE_NOCRYPT */ 
78+  _buffer (0 ), _skipBuffer (0 ), _bufferLen (0 ), _size (0 ), _progress_callback (NULL ), _progress (0 ), _paroffset (0 ), _command (U_FLASH), _partition (NULL )
79+ #ifndef  UPDATE_NOCRYPT
80+  ,
81+  _cryptMode (U_AES_DECRYPT_AUTO), _cryptAddress (0 ), _cryptCfg (0xf )
82+ #endif  /*  UPDATE_NOCRYPT */ 
83+ {
84+ }
7285
7386UpdateClass &UpdateClass::onProgress (THandlerFunction_Progress fn) {
7487 _progress_callback = fn;
@@ -83,7 +96,9 @@ void UpdateClass::_reset() {
8396 delete[]  _skipBuffer;
8497 }
8598
99+ #ifndef  UPDATE_NOCRYPT
86100 _cryptBuffer = nullptr ;
101+ #endif  /*  UPDATE_NOCRYPT */ 
87102 _buffer = nullptr ;
88103 _skipBuffer = nullptr ;
89104 _bufferLen = 0 ;
@@ -175,6 +190,7 @@ bool UpdateClass::begin(size_t size, int command, int ledPin, uint8_t ledOn, con
175190 return  true ;
176191}
177192
193+ #ifndef  UPDATE_NOCRYPT
178194bool  UpdateClass::setupCrypt (const  uint8_t  *cryptKey, size_t  cryptAddress, uint8_t  cryptConfig, int  cryptMode) {
179195 if  (setCryptKey (cryptKey)) {
180196 if  (setCryptMode (cryptMode)) {
@@ -216,6 +232,7 @@ bool UpdateClass::setCryptMode(const int cryptMode) {
216232 }
217233 return  true ;
218234}
235+ #endif  /*  UPDATE_NOCRYPT */ 
219236
220237void  UpdateClass::_abort (uint8_t  err) {
221238 _reset ();
@@ -226,6 +243,7 @@ void UpdateClass::abort() {
226243 _abort (UPDATE_ERROR_ABORT);
227244}
228245
246+ #ifndef  UPDATE_NOCRYPT
229247void  UpdateClass::_cryptKeyTweak (size_t  cryptAddress, uint8_t  *tweaked_key) {
230248 memcpy (tweaked_key, _cryptKey, ENCRYPTED_KEY_SIZE);
231249 if  (_cryptCfg == 0 ) {
@@ -338,8 +356,10 @@ bool UpdateClass::_decryptBuffer() {
338356 }
339357 return  true ;
340358}
359+ #endif  /*  UPDATE_NOCRYPT */ 
341360
342361bool  UpdateClass::_writeBuffer () {
362+ #ifndef  UPDATE_NOCRYPT
343363 // first bytes of loading image, check to see if loading image needs decrypting
344364 if  (!_progress) {
345365 _cryptMode &= U_AES_DECRYPT_MODE_MASK;
@@ -360,6 +380,7 @@ bool UpdateClass::_writeBuffer() {
360380 return  false ;
361381 }
362382 }
383+ #endif  /*  UPDATE_NOCRYPT */ 
363384 // first bytes of new firmware
364385 uint8_t  skip = 0 ;
365386 if  (!_progress && _command == U_FLASH) {
@@ -409,9 +430,13 @@ bool UpdateClass::_writeBuffer() {
409430 if  (!_progress && _command == U_FLASH) {
410431 _buffer[0 ] = ESP_IMAGE_HEADER_MAGIC;
411432 }
433+ #ifndef  UPDATE_NOCRYPT
412434 if  (_target_md5_decrypted) {
435+ #endif /*  UPDATE_NOCRYPT */ 
413436 _md5.add (_buffer, _bufferLen);
437+ #ifndef  UPDATE_NOCRYPT
414438 }
439+ #endif  /*  UPDATE_NOCRYPT */ 
415440 _progress += _bufferLen;
416441 _bufferLen = 0 ;
417442 if  (_progress_callback) {
@@ -453,13 +478,21 @@ bool UpdateClass::_verifyEnd() {
453478 return  false ;
454479}
455480
456- bool  UpdateClass::setMD5 (const  char  *expected_md5, bool  calc_post_decryption) {
481+ bool  UpdateClass::setMD5 (
482+  const  char  *expected_md5
483+ #ifndef  UPDATE_NOCRYPT
484+  ,
485+  bool  calc_post_decryption
486+ #endif  /*  UPDATE_NOCRYPT */ 
487+ ) {
457488 if  (strlen (expected_md5) != 32 ) {
458489 return  false ;
459490 }
460491 _target_md5 = expected_md5;
461492 _target_md5.toLowerCase ();
493+ #ifndef  UPDATE_NOCRYPT
462494 _target_md5_decrypted = calc_post_decryption;
495+ #endif  /*  UPDATE_NOCRYPT */ 
463496 return  true ;
464497}
465498
@@ -532,12 +565,16 @@ size_t UpdateClass::writeStream(Stream &data) {
532565 return  0 ;
533566 }
534567
568+ #ifndef  UPDATE_NOCRYPT
535569 if  (_command == U_FLASH && !_cryptMode) {
570+ #endif /*  UPDATE_NOCRYPT */ 
536571 if  (!_verifyHeader (data.peek ())) {
537572 _reset ();
538573 return  0 ;
539574 }
575+ #ifndef  UPDATE_NOCRYPT
540576 }
577+ #endif  /*  UPDATE_NOCRYPT */ 
541578
542579 if  (_ledPin != -1 ) {
543580 pinMode (_ledPin, OUTPUT);
0 commit comments