Parcourir la source

Add sha256_buffer() function to String

George Marques il y a 9 ans
Parent
commit
98b02209a4
3 fichiers modifiés avec 20 ajouts et 0 suppressions
  1. 17 0
      core/ustring.cpp
  2. 1 0
      core/ustring.h
  3. 2 0
      core/variant_call.cpp

+ 17 - 0
core/ustring.cpp

@@ -2419,6 +2419,23 @@ Vector<uint8_t> String::md5_buffer() const {
 	return ret;
 };
 
+Vector<uint8_t> String::sha256_buffer() 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);
+
+	Vector<uint8_t> ret;
+	ret.resize(32);
+	for (int i = 0; i < 32; i++) {
+		ret[i] = hash[i];
+	}
+
+	return ret;
+}
+
 
 String String::insert(int p_at_pos,String p_string) const {
 

+ 1 - 0
core/ustring.h

@@ -196,6 +196,7 @@ public:
 	String md5_text() const;
 	String sha256_text() const;
 	Vector<uint8_t> md5_buffer() const;
+	Vector<uint8_t> sha256_buffer() const;
 
 	inline bool empty() const { return length() == 0; }
 

+ 2 - 0
core/variant_call.cpp

@@ -271,6 +271,7 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var
 	VCALL_LOCALMEM0R(String,md5_text);
 	VCALL_LOCALMEM0R(String,sha256_text);
 	VCALL_LOCALMEM0R(String,md5_buffer);
+	VCALL_LOCALMEM0R(String,sha256_buffer);
 	VCALL_LOCALMEM0R(String,empty);
 	VCALL_LOCALMEM0R(String,is_abs_path);
 	VCALL_LOCALMEM0R(String,is_rel_path);
@@ -1322,6 +1323,7 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl
 	ADDFUNC0(STRING,STRING,String,md5_text,varray());
 	ADDFUNC0(STRING,STRING,String,sha256_text,varray());
 	ADDFUNC0(STRING,RAW_ARRAY,String,md5_buffer,varray());
+	ADDFUNC0(STRING,RAW_ARRAY,String,sha256_buffer,varray());
 	ADDFUNC0(STRING,BOOL,String,empty,varray());
 	ADDFUNC0(STRING,BOOL,String,is_abs_path,varray());
 	ADDFUNC0(STRING,BOOL,String,is_rel_path,varray());