@@ -16,56 +16,93 @@ import libsodium.crypto_generichash_blake2b;
16
16
extern (C ):
17
17
18
18
enum crypto_generichash_BYTES_MIN = crypto_generichash_blake2b_BYTES_MIN;
19
- size_t crypto_generichash_bytes_min ();
19
+ size_t crypto_generichash_bytes_min () @safe pure ;
20
20
21
21
enum crypto_generichash_BYTES_MAX = crypto_generichash_blake2b_BYTES_MAX;
22
- size_t crypto_generichash_bytes_max ();
22
+ size_t crypto_generichash_bytes_max () @safe pure ;
23
23
24
24
enum crypto_generichash_BYTES = crypto_generichash_blake2b_BYTES;
25
- size_t crypto_generichash_bytes ();
25
+ size_t crypto_generichash_bytes () @safe pure ;
26
26
27
27
enum crypto_generichash_KEYBYTES_MIN = crypto_generichash_blake2b_KEYBYTES_MIN;
28
- size_t crypto_generichash_keybytes_min ();
28
+ size_t crypto_generichash_keybytes_min () @safe pure ;
29
29
30
30
enum crypto_generichash_KEYBYTES_MAX = crypto_generichash_blake2b_KEYBYTES_MAX;
31
- size_t crypto_generichash_keybytes_max ();
31
+ size_t crypto_generichash_keybytes_max () @safe pure ;
32
32
33
33
enum crypto_generichash_KEYBYTES = crypto_generichash_blake2b_KEYBYTES;
34
- size_t crypto_generichash_keybytes ();
34
+ size_t crypto_generichash_keybytes () @safe pure ;
35
35
36
36
enum crypto_generichash_PRIMITIVE = " blake2b" ;
37
- const (char )* crypto_generichash_primitive ();
37
+ const (char )* crypto_generichash_primitive () @safe pure ;
38
38
39
39
/*
40
40
* Important when writing bindings for other programming languages:
41
41
* the state address should be 64-bytes aligned.
42
42
*/
43
43
alias crypto_generichash_state = crypto_generichash_blake2b_state;
44
44
45
- size_t crypto_generichash_statebytes ();
45
+ size_t crypto_generichash_statebytes () @safe pure ;
46
46
47
47
int crypto_generichash (
48
- ubyte * out_,
48
+ scope ubyte * out_,
49
49
size_t outlen,
50
- const (ubyte )* in_,
50
+ scope const (ubyte )* in_,
51
51
ulong inlen,
52
- const (ubyte )* key,
53
- size_t keylen);
52
+ scope const (ubyte )* key,
53
+ size_t keylen) pure ;
54
+
55
+ // / @safe wrapper around `crypto_generichash`
56
+ extern (D ) int crypto_generichash (
57
+ scope ubyte [] out_,
58
+ scope const ubyte [] in_,
59
+ scope const ubyte [] key) @trusted pure
60
+ {
61
+ return crypto_generichash (
62
+ out_.ptr, out_.length,
63
+ in_.ptr, in_.length,
64
+ key.ptr, key.length);
65
+ }
54
66
55
67
int crypto_generichash_init (
56
- crypto_generichash_state* state,
57
- const (ubyte )* key,
68
+ scope crypto_generichash_state* state,
69
+ scope const (ubyte )* key,
58
70
const size_t keylen,
59
- const size_t outlen);
71
+ const size_t outlen) pure ;
72
+
73
+ // / @safe wrapper around `crypto_generichash_init`
74
+ extern (D ) int crypto_generichash_init (
75
+ scope ref crypto_generichash_state state,
76
+ scope const (ubyte )[] key,
77
+ size_t outlen) @trusted pure
78
+ {
79
+ return crypto_generichash_init (&state, key.ptr, key.length, outlen);
80
+ }
60
81
61
82
int crypto_generichash_update (
62
- crypto_generichash_state* state,
63
- const (ubyte )* in_,
64
- ulong inlen);
83
+ scope crypto_generichash_state* state,
84
+ scope const (ubyte )* in_,
85
+ ulong inlen) pure ;
86
+
87
+ // / @safe wrapper around `crypto_generichash_update`
88
+ extern (D ) int crypto_generichash_update (
89
+ scope ref crypto_generichash_state state,
90
+ scope const (ubyte )[] in_) @trusted pure
91
+ {
92
+ return crypto_generichash_update (&state, in_.ptr, in_.length);
93
+ }
65
94
66
95
int crypto_generichash_final (
67
- crypto_generichash_state* state,
68
- ubyte * out_,
69
- const size_t outlen);
70
-
71
- void crypto_generichash_keygen (ref ubyte [crypto_generichash_KEYBYTES] k);
96
+ scope crypto_generichash_state* state,
97
+ scope ubyte * out_,
98
+ const size_t outlen) pure ;
99
+
100
+ // / @safe wrapper around `crypto_generichash_final`
101
+ extern (D ) int crypto_generichash_final (
102
+ scope ref crypto_generichash_state state,
103
+ scope ubyte [] out_) @trusted pure
104
+ {
105
+ return crypto_generichash_final (&state, out_.ptr, out_.length);
106
+ }
107
+
108
+ void crypto_generichash_keygen (ref ubyte [crypto_generichash_KEYBYTES] k) @safe ;
0 commit comments