summaryrefslogtreecommitdiff
path: root/core/ustring.cpp
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-06-17 10:57:15 -0300
committerGitHub <noreply@github.com>2016-06-17 10:57:15 -0300
commitebbd705b63d44d6f25949f6fda9bacf8d974c8bd (patch)
tree6f864e44b2b49035ea2c8dddfb03ad90a301904e /core/ustring.cpp
parent9f2f8c91302e5a1b66c39ee32420288398742d64 (diff)
parent7073bb0bb2c814b71f6128d249d7135dfca94b4a (diff)
Merge pull request #5250 from bojidar-bg/add-sha256
Add sha256 to String and File/FileAccess.
Diffstat (limited to 'core/ustring.cpp')
-rw-r--r--core/ustring.cpp27
1 files changed, 20 insertions, 7 deletions
diff --git a/core/ustring.cpp b/core/ustring.cpp
index 309b9e08fa..485f7f1b62 100644
--- a/core/ustring.cpp
+++ b/core/ustring.cpp
@@ -32,6 +32,7 @@
#include "print_string.h"
#include "math_funcs.h"
#include "io/md5.h"
+#include "io/sha256.h"
#include "ucaps.h"
#include "color.h"
#include "variant.h"
@@ -849,21 +850,23 @@ const CharType * String::c_str() const {
}
String String::md5(const uint8_t *p_md5) {
+ return String::hex_encode_buffer(p_md5, 16);
+}
- String ret;
+String String::hex_encode_buffer(const uint8_t *p_buffer, int p_len) {
+ static const char hex[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
- for(int i=0;i<16;i++) {
+ String ret;
+ char v[2]={0,0};
- static const char hex[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
- char v[2]={0,0};
- v[0]=hex[p_md5[i]>>4];
+ for(int i=0;i<p_len;i++) {
+ v[0]=hex[p_buffer[i]>>4];
ret+=v;
- v[0]=hex[p_md5[i]&0xF];
+ v[0]=hex[p_buffer[i]&0xF];
ret+=v;
}
return ret;
-
}
String String::chr(CharType p_char) {
@@ -2389,6 +2392,16 @@ String String::md5_text() const {
return String::md5(ctx.digest);
}
+String String::sha256_text() const {
+ CharString cs=utf8();
+ unsigned char hash[32];
+ sha256_context ctx;
+ sha256_init(&ctx);
+ sha256_hash(&ctx,(unsigned char*)cs.ptr(),cs.length());
+ sha256_done(&ctx, hash);
+ return String::hex_encode_buffer(hash, 32);
+}
+
Vector<uint8_t> String::md5_buffer() const {
CharString cs=utf8();