1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-30 23:06:38 +02:00

core: merge functions string_hash_binary and string_hash into a single function string_hash

This commit is contained in:
Sébastien Helleu
2020-03-01 16:41:28 +01:00
parent 1ae2591458
commit c4ef3d6c2e
15 changed files with 305 additions and 675 deletions
+26 -78
View File
@@ -2061,7 +2061,7 @@ char *dump = weechat_string_hex_dump (string, strlen (string), 8, " >> ", NULL);
[NOTE]
This function is not available in scripting API.
==== string_hash_binary
==== string_hash
_WeeChat ≥ 2.8._
@@ -2071,103 +2071,51 @@ Prototype:
[source,C]
----
void string_hash_binary (const char *data, int length_data, const char *hash_algo,
char **hash, int *length_hash);
int string_hash (const void *data, int data_size, const char *hash_algo, void *hash, int *hash_size);
----
Arguments:
* _data_: the data to hash
* _length_data_: number of bytes to hash in _data_
* _data_size_: number of bytes to hash in _data_
* _hash_algo_: the hash algorithm, see table below
* _hash_: pointer to the hash variable, which is allocated by the function and
used to store the resulting hash (NULL if error)
* _length_hash_: pointer to a variable used to store the length of the hash
computed (in bytes) (0 if error)
* _hash_: pointer to the hash variable, which is used to store the resulting hash
(the buffer must be large enough, according to the algorithm, see table below)
* _hash_size_: pointer to a variable used to store the size of the hash computed
(in bytes) (can be NULL)
Supported hash algorithms:
[width="100%",cols="4,4,4,5,12",options="header"]
[width="100%",cols="2,2,3,6",options="header"]
|===
| Value | Algorithm | Hash size | Output (binary) | Notes
| `+crc32+` | CRC32 | 32 bits | 4 bytes | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 128 bits | 16 bytes | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 160 bits | 20 bytes | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 224 bits | 28 bytes |
| `+sha256+` | SHA-256 | 256 bits | 32 bytes |
| `+sha384+` | SHA-384 | 384 bits | 48 bytes |
| `+sha512+` | SHA-512 | 512 bits | 64 bytes |
| `+sha3-224+` | SHA3-224 | 224 bits | 28 bytes |
| `+sha3-256+` | SHA3-256 | 256 bits | 32 bytes |
| `+sha3-384+` | SHA3-384 | 384 bits | 48 bytes |
| `+sha3-512+` | SHA3-512 | 512 bits | 64 bytes |
|===
C example:
[source,C]
----
const char *data = "abcdefghijklmnopqrstuvwxyz";
char *hash;
int length_hash;
weechat_string_hash_binary (data, strlen (data), "sha256", &hash, &length_hash);
/* hash is a binary buffer with:
71 c4 80 df 93 d6 ae 2f 1e fa d1 44 7c 66 c9 52 5e 31 62 18 cf 51 fc 8d 9e d8 32 f2 da f1 8b 73 */
----
[NOTE]
This function is not available in scripting API.
==== string_hash
_WeeChat ≥ 2.8._
Compute hash of data, as hexadecimal string.
Prototype:
[source,C]
----
char *string_hash (const char *data, int length_data, const char *hash_algo);
----
Arguments:
* _data_: the data to hash
* _length_data_: number of bytes to hash in _data_
* _hash_algo_: the hash algorithm, see table below
Supported hash algorithms:
[width="100%",cols="4,4,4,5,12",options="header"]
|===
| Value | Algorithm | Hash size | Output (string) | Notes
| `+crc32+` | CRC32 | 32 bits | 8 hex chars | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 128 bits | 32 hex chars | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 160 bits | 40 hex chars | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 224 bits | 56 hex chars |
| `+sha256+` | SHA-256 | 256 bits | 64 hex chars |
| `+sha384+` | SHA-384 | 384 bits | 96 hex chars |
| `+sha512+` | SHA-512 | 512 bits | 128 hex chars |
| `+sha3-224+` | SHA3-224 | 224 bits | 56 hex chars |
| `+sha3-256+` | SHA3-256 | 256 bits | 64 hex chars |
| `+sha3-384+` | SHA3-384 | 384 bits | 96 hex chars |
| `+sha3-512+` | SHA3-512 | 512 bits | 128 hex chars |
| Value | Algorithm | Hash size | Notes
| `+crc32+` | CRC32 | 4 bytes (32 bits) | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 16 bytes (128 bits) | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 20 bytes (160 bits) | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 28 bytes (224 bits) |
| `+sha256+` | SHA-256 | 32 bytes (256 bits) |
| `+sha384+` | SHA-384 | 48 bytes (384 bits) |
| `+sha512+` | SHA-512 | 64 bytes (512 bits) |
| `+sha3-224+` | SHA3-224 | 28 bytes (224 bits) |
| `+sha3-256+` | SHA3-256 | 32 bytes (256 bits) |
| `+sha3-384+` | SHA3-384 | 48 bytes (384 bits) |
| `+sha3-512+` | SHA3-512 | 64 bytes (512 bits) |
|===
Return value:
* string with hash of data as hexadecimal (must be freed by calling "free"
after use), NULL if error
* 1 if OK, 0 if error
C example:
[source,C]
----
const char *data = "abcdefghijklmnopqrstuvwxyz";
char *hash;
hash = weechat_string_hash (data, strlen (data), "sha256");
/* hash == "71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73"
char hash[256 / 8];
int rc, hash_size;
rc = weechat_string_hash (data, strlen (data), "sha256", hash, &hash_size);
/* rc == 1, hash_size == 32 and hash is a buffer with:
71 c4 80 df 93 d6 ae 2f 1e fa d1 44 7c 66 c9 52 5e 31 62 18 cf 51 fc 8d 9e d8 32 f2 da f1 8b 73 */
----
[NOTE]
+27 -78
View File
@@ -2099,7 +2099,7 @@ char *dump = weechat_string_hex_dump (string, strlen (string), 8, " >> ", NULL);
[NOTE]
Cette fonction n'est pas disponible dans l'API script.
==== string_hash_binary
==== string_hash
_WeeChat ≥ 2.8._
@@ -2109,103 +2109,52 @@ Prototype :
[source,C]
----
void string_hash_binary (const char *data, int length_data, const char *hash_algo,
char **hash, int *length_hash);
int string_hash (const void *data, int data_size, const char *hash_algo, void *hash, int *hash_size);
----
Paramètres :
* _data_ : les données à hacher
* _length_data_ : nombre d'octets à hacher dans _data_
* _data_size_ : nombre d'octets à hacher dans _data_
* _hash_algo_ : l'algorithme de hachage, voir le tableau ci-dessous
* _hash_ : pointeur vers la variable de hachage, qui est allouée par la fonction
et utilisée pour stocker le résultat du hachage (NULL si erreur)
* _length_hash_ : pointeur vers une variable utiliser pour stocker la longueur
du résultat du hachage (en octets) (0 si erreur)
* _hash_ : pointeur vers la variable de hachage, qui est utilisée pour stocker
le résultat du hachage (le tampon doit être suffisamment grand, selon
l'algorithme, voir le tableau ci-dessous)
* _hash_size_ : pointeur vers une variable utiliser pour stocker la longueur
du résultat du hachage (en octets) (peut être NULL)
Algorithmes de hachage supportés :
[width="100%",cols="4,4,4,5,12",options="header"]
[width="100%",cols="2,2,3,6",options="header"]
|===
| Valeur | Algorithme | Taille du haché | Sortie (binaire) | Notes
| `+crc32+` | CRC32 | 32 bits | 4 octets | Pas un algorithme de hachage au sens cryptographique.
| `+md5+` | MD5 | 128 bits | 16 octets | *Faible*, non recommandé pour un usage cryptographique.
| `+sha1+` | SHA-1 | 160 bits | 20 octets | *Faible*, non recommandé pour un usage cryptographique.
| `+sha224+` | SHA-224 | 224 bits | 28 octets |
| `+sha256+` | SHA-256 | 256 bits | 32 octets |
| `+sha384+` | SHA-384 | 384 bits | 48 octets |
| `+sha512+` | SHA-512 | 512 bits | 64 octets |
| `+sha3-224+` | SHA3-224 | 224 bits | 28 octets |
| `+sha3-256+` | SHA3-256 | 256 bits | 32 octets |
| `+sha3-384+` | SHA3-384 | 384 bits | 48 octets |
| `+sha3-512+` | SHA3-512 | 512 bits | 64 octets |
|===
Exemple en C :
[source,C]
----
const char *data = "abcdefghijklmnopqrstuvwxyz";
char *hash;
int length_hash;
weechat_string_hash_binary (data, strlen (data), "sha256", &hash, &length_hash);
/* hash is a binary buffer with:
71 c4 80 df 93 d6 ae 2f 1e fa d1 44 7c 66 c9 52 5e 31 62 18 cf 51 fc 8d 9e d8 32 f2 da f1 8b 73 */
----
[NOTE]
Cette fonction n'est pas disponible dans l'API script.
==== string_hash
_WeeChat ≥ 2.8._
Calculer le hachage des données, sous forme de chaîne hexadécimale.
Prototype :
[source,C]
----
char *string_hash (const char *data, int length_data, const char *hash_algo);
----
Paramètres :
* _data_ : les données à hacher
* _length_data_ : nombre d'octets à hacher dans _data_
* _hash_algo_ : l'algorithme de hachage, voir le tableau ci-dessous
Algorithmes de hachage supportés :
[width="100%",cols="4,4,4,5,12",options="header"]
|===
| Valeur | Algorithme | Taille du haché | Sortie (chaîne) | Notes
| `+crc32+` | CRC32 | 32 bits | 8 caractères hexa | Pas un algorithme de hachage au sens cryptographique.
| `+md5+` | MD5 | 128 bits | 32 caractères hexa | *Faible*, non recommandé pour un usage cryptographique.
| `+sha1+` | SHA-1 | 160 bits | 40 caractères hexa | *Faible*, non recommandé pour un usage cryptographique.
| `+sha224+` | SHA-224 | 224 bits | 56 caractères hexa |
| `+sha256+` | SHA-256 | 256 bits | 64 caractères hexa |
| `+sha384+` | SHA-384 | 384 bits | 96 caractères hexa |
| `+sha512+` | SHA-512 | 512 bits | 128 caractères hexa |
| `+sha3-224+` | SHA3-224 | 224 bits | 56 caractères hexa |
| `+sha3-256+` | SHA3-256 | 256 bits | 64 caractères hexa |
| `+sha3-384+` | SHA3-384 | 384 bits | 96 caractères hexa |
| `+sha3-512+` | SHA3-512 | 512 bits | 128 caractères hexa |
| Valeur | Algorithme | Taille du haché | Notes
| `+crc32+` | CRC32 | 4 octets (32 bits) | Pas un algorithme de hachage au sens cryptographique.
| `+md5+` | MD5 | 16 octets (128 bits) | *Faible*, non recommandé pour un usage cryptographique.
| `+sha1+` | SHA-1 | 20 octets (160 bits) | *Faible*, non recommandé pour un usage cryptographique.
| `+sha224+` | SHA-224 | 28 octets (224 bits) |
| `+sha256+` | SHA-256 | 32 octets (256 bits) |
| `+sha384+` | SHA-384 | 48 octets (384 bits) |
| `+sha512+` | SHA-512 | 64 octets (512 bits) |
| `+sha3-224+` | SHA3-224 | 28 octets (224 bits) |
| `+sha3-256+` | SHA3-256 | 32 octets (256 bits) |
| `+sha3-384+` | SHA3-384 | 48 octets (384 bits) |
| `+sha3-512+` | SHA3-512 | 64 octets (512 bits) |
|===
Valeur de retour :
* chaîne avec le résultat du hachage en hexadécimal (doit être supprimée par un
appel à "free" après utilisation), NULL si erreur
* 1 si OK, 0 si erreur
Exemple en C :
[source,C]
----
const char *data = "abcdefghijklmnopqrstuvwxyz";
char *hash;
hash = weechat_string_hash (data, strlen (data), "sha256");
/* hash == "71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73"
char hash[256 / 8];
int rc, hash_size;
rc = weechat_string_hash (data, strlen (data), "sha256", hash, &hash_size);
/* rc == 1, hash_size == 32 et hash est un tampon avec :
71 c4 80 df 93 d6 ae 2f 1e fa d1 44 7c 66 c9 52 5e 31 62 18 cf 51 fc 8d 9e d8 32 f2 da f1 8b 73 */
----
[NOTE]
+27 -79
View File
@@ -2153,7 +2153,7 @@ char *dump = weechat_string_hex_dump (string, strlen (string), 8, " >> ", NULL);
Questa funzione non è disponibile nelle API per lo scripting.
// TRANSLATION MISSING
==== string_hash_binary
==== string_hash
_WeeChat ≥ 2.8._
@@ -2163,104 +2163,52 @@ Prototipo:
[source,C]
----
void string_hash_binary (const char *data, int length_data, const char *hash_algo,
char **hash, int *length_hash);
int string_hash (const void *data, int data_size, const char *hash_algo, void *hash, int *hash_size);
----
Argomenti:
* _data_: the data to hash
* _length_data_: number of bytes to hash in _data_
* _data_size_: number of bytes to hash in _data_
* _hash_algo_: the hash algorithm, see table below
* _hash_: pointer to the hash variable, which is allocated by the function and
used to store the resulting hash (NULL if error)
* _length_hash_: pointer to a variable used to store the length of the hash
computed (in bytes) (0 if error)
* _hash_: pointer to the hash variable, which is used to store the resulting hash
(the buffer must be large enough, according to the algorithm, see table below)
* _hash_size_: pointer to a variable used to store the length of the hash computed
(in bytes) (can be NULL)
Supported hash algorithms:
[width="100%",cols="4,4,4,5,12",options="header"]
[width="100%",cols="2,2,3,6",options="header"]
|===
| Value | Algorithm | Hash size | Output (binary) | Notes
| `+crc32+` | CRC32 | 32 bits | 4 bytes | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 128 bits | 16 bytes | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 160 bits | 20 bytes | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 224 bits | 28 bytes |
| `+sha256+` | SHA-256 | 256 bits | 32 bytes |
| `+sha384+` | SHA-384 | 384 bits | 48 bytes |
| `+sha512+` | SHA-512 | 512 bits | 64 bytes |
| `+sha3-224+` | SHA3-224 | 224 bits | 28 bytes |
| `+sha3-256+` | SHA3-256 | 256 bits | 32 bytes |
| `+sha3-384+` | SHA3-384 | 384 bits | 48 bytes |
| `+sha3-512+` | SHA3-512 | 512 bits | 64 bytes |
|===
Esempio in C:
[source,C]
----
const char *data = "abcdefghijklmnopqrstuvwxyz";
char *hash;
int length_hash;
weechat_string_hash_binary (data, strlen (data), "sha256", &hash, &length_hash);
/* hash is a binary buffer with:
71 c4 80 df 93 d6 ae 2f 1e fa d1 44 7c 66 c9 52 5e 31 62 18 cf 51 fc 8d 9e d8 32 f2 da f1 8b 73 */
----
[NOTE]
Questa funzione non è disponibile nelle API per lo scripting.
// TRANSLATION MISSING
==== string_hash
_WeeChat ≥ 2.8._
Compute hash of data, as hexadecimal string.
Prototipo:
[source,C]
----
char *string_hash (const char *data, int length_data, const char *hash_algo);
----
Argomenti:
* _data_: the data to hash
* _length_data_: number of bytes to hash in _data_
* _hash_algo_: the hash algorithm, see table below
Supported hash algorithms:
[width="100%",cols="4,4,4,5,12",options="header"]
|===
| Value | Algorithm | Hash size | Output (string) | Notes
| `+crc32+` | CRC32 | 32 bits | 8 hex chars | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 128 bits | 32 hex chars | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 160 bits | 40 hex chars | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 224 bits | 56 hex chars |
| `+sha256+` | SHA-256 | 256 bits | 64 hex chars |
| `+sha384+` | SHA-384 | 384 bits | 96 hex chars |
| `+sha512+` | SHA-512 | 512 bits | 128 hex chars |
| `+sha3-224+` | SHA3-224 | 224 bits | 56 hex chars |
| `+sha3-256+` | SHA3-256 | 256 bits | 64 hex chars |
| `+sha3-384+` | SHA3-384 | 384 bits | 96 hex chars |
| `+sha3-512+` | SHA3-512 | 512 bits | 128 hex chars |
| Value | Algorithm | Hash size | Notes
| `+crc32+` | CRC32 | 4 bytes (32 bits) | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 16 bytes (128 bits) | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 20 bytes (160 bits) | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 28 bytes (224 bits) |
| `+sha256+` | SHA-256 | 32 bytes (256 bits) |
| `+sha384+` | SHA-384 | 48 bytes (384 bits) |
| `+sha512+` | SHA-512 | 64 bytes (512 bits) |
| `+sha3-224+` | SHA3-224 | 28 bytes (224 bits) |
| `+sha3-256+` | SHA3-256 | 32 bytes (256 bits) |
| `+sha3-384+` | SHA3-384 | 48 bytes (384 bits) |
| `+sha3-512+` | SHA3-512 | 64 bytes (512 bits) |
|===
Valore restituito:
* string with hash of data as hexadecimal (must be freed by calling "free"
after use), NULL if error
// TRANSLATION MISSING
* 1 if OK, 0 if error
Esempio in C:
[source,C]
----
const char *data = "abcdefghijklmnopqrstuvwxyz";
char *hash;
hash = weechat_string_hash (data, strlen (data), "sha256");
/* hash == "71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73"
char hash[256 / 8];
int rc, hash_size;
rc = weechat_string_hash (data, strlen (data), "sha256", hash, &hash_size);
/* rc == 1, hash_size == 32 and hash is a buffer with:
71 c4 80 df 93 d6 ae 2f 1e fa d1 44 7c 66 c9 52 5e 31 62 18 cf 51 fc 8d 9e d8 32 f2 da f1 8b 73 */
----
[NOTE]
+26 -79
View File
@@ -2075,7 +2075,7 @@ char *dump = weechat_string_hex_dump (string, strlen (string), 8, " >> ", NULL);
スクリプト API ではこの関数を利用できません。
// TRANSLATION MISSING
==== string_hash_binary
==== string_hash
_WeeChat バージョン 2.8 以上で利用可。_
@@ -2085,104 +2085,51 @@ Compute hash of data.
[source,C]
----
void string_hash_binary (const char *data, int length_data, const char *hash_algo,
char **hash, int *length_hash);
int string_hash (const void *data, int data_size, const char *hash_algo, void *hash, int *hash_size);
----
引数:
* _data_: the data to hash
* _length_data_: number of bytes to hash in _data_
* _data_size_: number of bytes to hash in _data_
* _hash_algo_: the hash algorithm, see table below
* _hash_: pointer to the hash variable, which is allocated by the function and
used to store the resulting hash (NULL if error)
* _length_hash_: pointer to a variable used to store the length of the hash
computed (in bytes) (0 if error)
* _hash_: pointer to the hash variable, which is used to store the resulting hash
(the buffer must be large enough, according to the algorithm, see table below)
* _hash_size_: pointer to a variable used to store the length of the hash computed
(in bytes) (can be NULL)
Supported hash algorithms:
[width="100%",cols="4,4,4,5,12",options="header"]
[width="100%",cols="2,2,3,6",options="header"]
|===
| Value | Algorithm | Hash size | Output (binary) | Notes
| `+crc32+` | CRC32 | 32 bits | 4 bytes | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 128 bits | 16 bytes | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 160 bits | 20 bytes | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 224 bits | 28 bytes |
| `+sha256+` | SHA-256 | 256 bits | 32 bytes |
| `+sha384+` | SHA-384 | 384 bits | 48 bytes |
| `+sha512+` | SHA-512 | 512 bits | 64 bytes |
| `+sha3-224+` | SHA3-224 | 224 bits | 28 bytes |
| `+sha3-256+` | SHA3-256 | 256 bits | 32 bytes |
| `+sha3-384+` | SHA3-384 | 384 bits | 48 bytes |
| `+sha3-512+` | SHA3-512 | 512 bits | 64 bytes |
|===
C 言語での使用例:
[source,C]
----
const char *data = "abcdefghijklmnopqrstuvwxyz";
char *hash;
int length_hash;
weechat_string_hash_binary (data, strlen (data), "sha256", &hash, &length_hash);
/* hash is a binary buffer with:
71 c4 80 df 93 d6 ae 2f 1e fa d1 44 7c 66 c9 52 5e 31 62 18 cf 51 fc 8d 9e d8 32 f2 da f1 8b 73 */
----
[NOTE]
スクリプト API ではこの関数を利用できません。
// TRANSLATION MISSING
==== string_hash
_WeeChat バージョン 2.8 以上で利用可。_
Compute hash of data, as hexadecimal string.
プロトタイプ:
[source,C]
----
char *string_hash (const char *data, int length_data, const char *hash_algo);
----
引数:
* _data_: the data to hash
* _length_data_: number of bytes to hash in _data_
* _hash_algo_: the hash algorithm, see table below
Supported hash algorithms:
[width="100%",cols="4,4,4,5,12",options="header"]
|===
| Value | Algorithm | Hash size | Output (string) | Notes
| `+crc32+` | CRC32 | 32 bits | 8 hex chars | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 128 bits | 32 hex chars | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 160 bits | 40 hex chars | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 224 bits | 56 hex chars |
| `+sha256+` | SHA-256 | 256 bits | 64 hex chars |
| `+sha384+` | SHA-384 | 384 bits | 96 hex chars |
| `+sha512+` | SHA-512 | 512 bits | 128 hex chars |
| `+sha3-224+` | SHA3-224 | 224 bits | 56 hex chars |
| `+sha3-256+` | SHA3-256 | 256 bits | 64 hex chars |
| `+sha3-384+` | SHA3-384 | 384 bits | 96 hex chars |
| `+sha3-512+` | SHA3-512 | 512 bits | 128 hex chars |
| Value | Algorithm | Hash size | Notes
| `+crc32+` | CRC32 | 4 bytes (32 bits) | Not a hash algorithm in the cryptographic sense.
| `+md5+` | MD5 | 16 bytes (128 bits) | *Weak*, not recommended for cryptography usage.
| `+sha1+` | SHA-1 | 20 bytes (160 bits) | *Weak*, not recommended for cryptography usage.
| `+sha224+` | SHA-224 | 28 bytes (224 bits) |
| `+sha256+` | SHA-256 | 32 bytes (256 bits) |
| `+sha384+` | SHA-384 | 48 bytes (384 bits) |
| `+sha512+` | SHA-512 | 64 bytes (512 bits) |
| `+sha3-224+` | SHA3-224 | 28 bytes (224 bits) |
| `+sha3-256+` | SHA3-256 | 32 bytes (256 bits) |
| `+sha3-384+` | SHA3-384 | 48 bytes (384 bits) |
| `+sha3-512+` | SHA3-512 | 64 bytes (512 bits) |
|===
戻り値:
* string with hash of data as hexadecimal (must be freed by calling "free"
after use), NULL if error
* 成功した場合は 1、失敗した場合は 0
C 言語での使用例:
[source,C]
----
const char *data = "abcdefghijklmnopqrstuvwxyz";
char *hash;
hash = weechat_string_hash (data, strlen (data), "sha256");
/* hash == "71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73"
char hash[256 / 8];
int rc, hash_size;
rc = weechat_string_hash (data, strlen (data), "sha256", hash, &hash_size);
/* rc == 1, hash_size == 32 and hash is a buffer with:
71 c4 80 df 93 d6 ae 2f 1e fa d1 44 7c 66 c9 52 5e 31 62 18 cf 51 fc 8d 9e d8 32 f2 da f1 8b 73 */
----
[NOTE]