diff options
Diffstat (limited to 'Swiften/StringCodecs/MD5.cpp')
| -rw-r--r-- | Swiften/StringCodecs/MD5.cpp | 27 | 
1 files changed, 19 insertions, 8 deletions
diff --git a/Swiften/StringCodecs/MD5.cpp b/Swiften/StringCodecs/MD5.cpp index 9e69172..159eb87 100644 --- a/Swiften/StringCodecs/MD5.cpp +++ b/Swiften/StringCodecs/MD5.cpp @@ -351,16 +351,27 @@ md5_finish(md5_state_t *pms, md5_byte_t digest[16])  				digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));  } -ByteArray MD5::getHash(const ByteArray& data) { -	ByteArray digest; -	digest.resize(16); +namespace { +	template<typename SourceType> +	ByteArray getMD5Hash(const SourceType& data) { +		ByteArray digest; +		digest.resize(16); + +		md5_state_t state; +		md5_init(&state); +		md5_append(&state, reinterpret_cast<const md5_byte_t*>(vecptr(data)), data.size()); +		md5_finish(&state, reinterpret_cast<md5_byte_t*>(vecptr(digest))); + +		return digest; +	} +} -	md5_state_t state; -	md5_init(&state); -	md5_append(&state, reinterpret_cast<const md5_byte_t*>(vecptr(data)), data.size()); -	md5_finish(&state, reinterpret_cast<md5_byte_t*>(vecptr(digest))); +ByteArray MD5::getHash(const ByteArray& data) { +	return getMD5Hash(data); +} -	return digest; +ByteArray MD5::getHash(const SafeByteArray& data) { +	return getMD5Hash(data);  }  }  | 
 Swift