aboutsummaryrefslogtreecommitdiffstats
path: root/libsha2.h.0
blob: a12c6ad29a6f8a18bbd6150b68af471a5773959e (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
.TH LIBSHA2.H 0 2019-02-09 libjson
.SH NAME
libsha2.h \- SHA 2 library header
.SH SYNOPSIS
.nf
#include <libsha2.h>

enum libsha2_algorithm {
	LIBSHA2_224,     /* SHA-224     */
	LIBSHA2_256,     /* SHA-256     */
	LIBSHA2_384,     /* SHA-384     */
	LIBSHA2_512,     /* SHA-512     */
	LIBSHA2_512_224, /* SHA-512/224 */
	LIBSHA2_512_256  /* SHA-512/256 */
};

struct libsha2_state {
	/* members omitted */
};

int libsha2_init(struct libsha2_state *restrict \fIstate\fP, enum libsha2_algorithm \fIalgorithm\fP);
size_t libsha2_state_output_size(const struct libsha2_state *restrict \fIstate\fP);
size_t libsha2_algorithm_output_size(enum libsha2_algorithm \fIalgorithm\fP);
void libsha2_update(struct libsha2_state *restrict \fIstate\fP, const char *restrict \fImessage\fP, size_t \fImsglen\fP);
void libsha2_digest(struct libsha2_state *restrict \fIstate\fP, const char *restrict \fImessage\fP, size_t \fImsglen\fP, char *\fIoutput\fP);
int libsha2_sum_fd(int \fIfd\fP, enum libsha2_algorithm \fIalgorithm\fP, char *restrict \fIhashsum\fP);
void libsha2_behex_lower(char *restrict \fIoutput\fP, const char *restrict \fIhashsum\fP, size_t \fIn\fP);
void libsha2_behex_upper(char *restrict \fIoutput\fP, const char *restrict \fIhashsum\fP, size_t \fIn\fP);
void libsha2_unhex(char *restrict \fIoutput\fP, const char *restrict \fIhashsum\fP);
size_t libsha2_marshal(const struct libsha2_state *restrict \fIstate\fP, char *restrict \fIbuf\fP);
size_t libsha2_unmarshal(struct libsha2_state *restrict \fIstate\fP, const char *restrict \fIbuf\fP, size_t \fIbufsize\fP);
.fi
.PP
Link with
.IR \-lsha2 .
.SH DESCRIPTION
The
.B libsha2.h
header, the header for the libsha2 C library defines
.B enum libsha2_algorithm
which has one value per supported algorithm:
.TP
.B LIBSHA2_224
SHA-224
.TP
.B LIBSHA2_256
SHA-256
.TP
.B LIBSHA2_384
SHA-384
.TP
.B LIBSHA2_512
SHA-512
.TP
.B LIBSHA2_512_224
SHA-512/224
.TP
.B LIBSHA2_512_256
SHA-512/256
.PP
Further, the
.B libsha2.h
header defines the opaque, but complete,
.B struct libsha2_state
which stores the selected algorithm and
the state of the hashing. The header also
defines the functions:
.TP
.BR libsha2_init (3)
Initialise hashing state.
.TP
.BR libsha2_state_output_size "(3), " libsha2_algorithm_output_size (3)
Get the output size for an algorithm.
.TP
.BR libsha2_update (3)
Feed data into the hashing state.
.TP
.BR libsha2_digest (3)
Get the result of a hashing.
.TP
.BR libsha2_sum_fd (3)
Hash an entire file.
.TP
.BR libsha2_behex_lower "(3), " libsha2_behex_upper (3)
Convert binary output from
.BR libsha2_digest (3)
to hexadecimal.
.TP
.BR libsha2_unhex (3)
Convert a hexadecimal hash to binary.
.TP
.BR libsha2_marshal (3)
Marshal a hashing state.
.TP
.BR libsha2_unmarshal (3)
Unmarshal a hashing state.
.SH EXAMPLES
None.
.SH APPLICATION USAGE
None.
.SH RATIONALE
None.
.SH FUTURE DIRECTIONS
None.
.SH NOTES
None.
.SH BUGS
None.
.SH SEE ALSO
.BR libsha2_algorithm_output_size (3),
.BR libsha2_behex_lower (3),
.BR libsha2_behex_upper (3),
.BR libsha2_digest (3),
.BR libsha2_init (3),
.BR libsha2_marshal (3),
.BR libsha2_state_output_size (3),
.BR libsha2_sum_fd (3),
.BR libsha2_unhex (3),
.BR libsha2_unmarshal (3),
.BR libsha2_update (3)