diff --git a/libraries/Hash/examples/sha1.ino b/libraries/Hash/examples/sha1.ino index 678416340..75cb8443d 100644 --- a/libraries/Hash/examples/sha1.ino +++ b/libraries/Hash/examples/sha1.ino @@ -9,15 +9,21 @@ void setup() { } void loop() { + + // usage as String + // SHA1:a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 + + Serial.print("SHA1:"); + Serial.println(sha1("abc")); + + // usage as ptr + // SHA1:a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 uint8_t hash[20]; - const uint8_t test[] = "test"; + sha1("abc", &hash[0]); - sha1((uint8_t *)&test[0], sizeof(test)-1, &hash[0]); - - // SHA1: A94A8FE5CCB19BA61C4C0873D391E987982FBBD3 Serial.print("SHA1:"); for(uint16_t i = 0; i < 20; i++) { - Serial.printf("%02X", hash[i]); + Serial.printf("%02x", hash[i]); } Serial.println(); diff --git a/libraries/Hash/src/Hash.cpp b/libraries/Hash/src/Hash.cpp index 66de178c0..5a58c961d 100644 --- a/libraries/Hash/src/Hash.cpp +++ b/libraries/Hash/src/Hash.cpp @@ -27,7 +27,7 @@ #include "Hash.h" extern "C" { - #include "sha1/sha1.h" +#include "sha1/sha1.h" } /** @@ -66,6 +66,52 @@ void sha1(uint8_t * data, uint32_t size, uint8_t hash[20]) { #endif } +void sha1(char * data, uint32_t size, uint8_t hash[20]) { + sha1((uint8_t *) data, size, hash); +} + void sha1(const uint8_t * data, uint32_t size, uint8_t hash[20]) { sha1((uint8_t *) data, size, hash); } + +void sha1(const char * data, uint32_t size, uint8_t hash[20]) { + sha1((uint8_t *) data, size, hash); +} + +void sha1(String data, uint8_t hash[20]) { + sha1(data.c_str(), data.length(), hash); +} + +String sha1(uint8_t* data, uint32_t size) { + uint8_t hash[20]; + String hashStr = ""; + + sha1(&data[0], size, &hash[0]); + + for(uint16_t i = 0; i < 20; i++) { + String hex = String(hash[i], HEX); + if(hex.length() < 2) { + hex = "0" + hex; + } + hashStr += hex; + } + + return hashStr; +} + +String sha1(char* data, uint32_t size) { + return sha1((uint8_t*) data, size); +} + +String sha1(const uint8_t* data, uint32_t size) { + return sha1((uint8_t*) data, size); +} + +String sha1(const char* data, uint32_t size) { + return sha1((uint8_t*) data, size); +} + +String sha1(String data) { + return sha1(data.c_str(), data.length()); +} + diff --git a/libraries/Hash/src/Hash.h b/libraries/Hash/src/Hash.h index 1fe6d1e71..6af5e79ef 100644 --- a/libraries/Hash/src/Hash.h +++ b/libraries/Hash/src/Hash.h @@ -28,6 +28,15 @@ //#define DEBUG_SHA1 void sha1(uint8_t * data, uint32_t size, uint8_t hash[20]); +void sha1(char * data, uint32_t size, uint8_t hash[20]); void sha1(const uint8_t * data, uint32_t size, uint8_t hash[20]); +void sha1(const char * data, uint32_t size, uint8_t hash[20]); +void sha1(String data , uint8_t hash[20]); + +String sha1(uint8_t* data, uint32_t size); +String sha1(char* data, uint32_t size); +String sha1(uint8_t* data, uint32_t size); +String sha1(const char* data, uint32_t size); +String sha1(String data); #endif /* HASH_H_ */