aboutsummaryrefslogtreecommitdiffstats
path: root/librecrypt_set_pepper.3
blob: 2d0c86bb569c8ca0d08c9891c2a31606d5b27fd8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
.TH LIBRECRYPT_SET_PEPPER 3 LIBRECRYPT
.SH NAME
librecrypt_set_pepper - Set the pepper to use for a hash algorithm

.SH SYNOPSIS
.nf
#include <librecrypt.h>

enum librecrypt_hash_algorithm {
	LIBRECRYPT_ARGON2I_V1_0,
	LIBRECRYPT_ARGON2I_V1_3,
	LIBRECRYPT_ARGON2D_V1_0,
	LIBRECRYPT_ARGON2D_V1_3,
	LIBRECRYPT_ARGON2ID_V1_0,
	LIBRECRYPT_ARGON2ID_V1_3,
	LIBRECRYPT_ARGON2DS_V1_0,
	LIBRECRYPT_ARGON2DS_V1_3,
	LIBRECRYPT_HASH_ALGORITHM_END /* end of enum marker (always last) */
};

void \fBlibrecrypt_set_pepper\fP(LIBRECRYPT_CONTEXT *\fIctx\fP, enum librecrypt_hash_algorithm \fIalgo\fP,
                           const void *\fIdata\fP, size_t \fIlen\fP);
.fi
.PP
Link with
.IR -lrecrypt .

.SH DESCRIPTION
The
.BR librecrypt_set_pepper ()
function sets the pepper for a library-provided
hash algorithm selected by the
.I algo
argument, when the
.I ctx
object is specified when performing the has.
.PP
The
.I data
argument shall be the pepper in raw binary,
and the
.I len
argument shall be the number of bytes in
.IR data .
.PP
The caller is responsible for the lifetime of
.IR data :
deallocating it will deallocate it for
.I *ctx
as it only holds a reference to
.IR data ,
not a copy of it.

.SH RETURN VALUES
The
.BR librecrypt_set_pepper ()
function returns 0 upon successful completion.
On failure, -1 is returned and
.I errno
is set to describe the error.

.SH ERRORS
The
.BR librecrypt_set_pepper ()
function will fail if:
.TP
.B EINVAL
The value of
.I len
is not supported for the selected algorithm.
(This implies that the selected algorithm
was enabled at compile time and that it
supports pepper.)
.TP
.B ENOSUP
The algorithm selected by the
.I algo
argument does not support peppers.
(This implies that the selected algorithm
was enabled at compile time.)
.TP
.B ENOSYS
The algorithm selected by the
.I algo
argument is either not recognised by the
library or was disabled at compile-time.

.SH EXTENDED DESCRIPTION
The following values for
.I algo
are supported and may cause the
.BR librecrypt_is_enabled ()
function to return either 0 or 1
(all other cause the function to return 0):
.TP
.B LIBRECRYPT_ARGON2I_V1_0
Argon2i, version 1.0, which is presented by
\(dq$argon2i$v=13$\(dq, optionally without \(dq$v=13\(dq.
.TP
.B LIBRECRYPT_ARGON2I_V1_3
Argon2i, version 1.3, which is presented by
\(dq$argon2i$v=19$\(dq.
.TP
.B LIBRECRYPT_ARGON2D_V1_0
Argon2d, version 1.0, which is presented by
\(dq$argon2d$v=13$\(dq, optionally without \(dq$v=13\(dq.
.TP
.B LIBRECRYPT_ARGON2D_V1_3
Argon2d, version 1.3, which is presented by
\(dq$argon2d$v=19$\(dq.
.TP
.B LIBRECRYPT_ARGON2ID_V1_0
Argon2id, version 1.0, which is presented by
\(dq$argon2id$v=13$\(dq, optionally without \(dq$v=13\(dq.
.TP
.B LIBRECRYPT_ARGON2ID_V1_3
Argon2id, version 1.3, which is presented by
\(dq$argon2id$v=19$\(dq.
.TP
.B LIBRECRYPT_ARGON2DS_V1_0
Argon2ds, version 1.0, which is presented by
\(dq$argon2ds$v=13$\(dq, optionally without \(dq$v=13\(dq.
.TP
.B LIBRECRYPT_ARGON2DS_V1_3
Argon2ds, version 1.3, which is presented by
\(dq$argon2ds$v=19$\(dq.

.SH HISTORY
The
.BR librecrypt_set_pepper ()
function was introduced in version 1.1 of
.BR librecrypt .

.SH SEE ALSO
.BR librecrypt (7),
.BR librecrypt_create_context (3),
.BR librecrypt_hash_algorithm_end (3)