aboutsummaryrefslogtreecommitdiffstats
path: root/librecrypt_decompose_chain.3
blob: fc9f9282c13b92fc934f57414729211730c49095 (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
.TH LIBRECRYPT_DECOMPOSE_CHAIN 3 LIBRECRYPT
.SH NAME
librecrypt_decompose_chain - Split a chained password hash string into algorithm components

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

size_t \fBlibrecrypt_decompose_chain\fP(char *\fIhash\fP, char **\fIchain_out_array\fP, size_t \fIsize\fP);
.fi
.PP
Link with
.IR -lrecrypt .

.SH DESCRIPTION
The
.BR librecrypt_decompose_chain ()
function decomposes the chain of hash algorithms
specified in
.IR hash
into null byte-terminated substrings. The
.IR hash
string is modified by replacing up to
.I size-1
instances of
.I LIBRECRYPT_ALGORITHM_LINK_DELIMITER
(which is
.BR \(aq>\(aq )
by null bytes and storing pointers to the
start of each substring in
.IR chain_out_array .
.PP
If
.I size
is positive and smaller than the number of
algorithms, then
.I chain_out_array[size-1]
will contain the remainder of the chain
(still delimited by
.IR LIBRECRYPT_ALGORITHM_LINK_DELIMITER ).
.PP
Unless already stripped out before input, the
last substring ends with the resulting hash.
.PP
The original
.IR hash
string can be restored by overwriting each
terminating null byte in all but the last
substring stored in
.IR chain_out_array
with
.IR LIBRECRYPT_ALGORITHM_LINK_DELIMITER .
.PP
.I hash
must not be
.IR NULL .

.SH RETURN VALUES
The
.BR librecrypt_decompose_chain ()
function returns the number of chained hashes
(the same value as returned by
.BR librecrypt_chain_length (3)).

.SH ERRORS
The
.BR librecrypt_decompose_chain ()
function cannot fail.

.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.PP
.TS
allbox;
lb lb lb
l l l.
Interface	Attribute	Value
T{
.BR librecrypt_decompose_chain ()
T}	Thread safety	MT-Safe
T{
.BR librecrypt_decompose_chain ()
T}	Async-signal safety	AS-Safe
.TE
.sp

.SH HISTORY
The
.BR librecrypt_decompose_chain ()
function was introduced in version 1.0 of
.BR librecrypt .

.SH SEE ALSO
.BR librecrypt (7),
.BR librecrypt_chain_length (3),
.BR librecrypt_decompose_chain1 (3),
.BR librecrypt_next_algorithm (3)