xref: /freebsd/lib/libmd/ripemd.3 (revision 3c4ba5f55438f7afd4f4b0b56f88f2bb505fd6a6)
1.\"
2.\" ----------------------------------------------------------------------------
3.\" "THE BEER-WARE LICENSE" (Revision 42):
4.\" <phk@FreeBSD.org> wrote this file.  As long as you retain this notice you
5.\" can do whatever you want with this stuff. If we meet some day, and you think
6.\" this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
7.\" ----------------------------------------------------------------------------
8.\"
9.\" 	From: Id: mdX.3,v 1.14 1999/02/11 20:31:49 wollman Exp
10.\" $FreeBSD$
11.\"
12.Dd July 20, 2018
13.Dt RIPEMD 3
14.Os
15.Sh NAME
16.Nm RIPEMD160_Init ,
17.Nm RIPEMD160_Update ,
18.Nm RIPEMD160_Final ,
19.Nm RIPEMD160_End ,
20.Nm RIPEMD160_File ,
21.Nm RIPEMD160_FileChunk ,
22.Nm RIPEMD160_Data
23.Nd calculate the RIPEMD160 message digest
24.Sh LIBRARY
25.Lb libmd
26.Sh SYNOPSIS
27.In sys/types.h
28.In ripemd.h
29.Ft void
30.Fn RIPEMD160_Init "RIPEMD160_CTX *context"
31.Ft void
32.Fn RIPEMD160_Update "RIPEMD160_CTX *context" "const unsigned char *data" "unsigned int len"
33.Ft void
34.Fn RIPEMD160_Final "unsigned char digest[20]" "RIPEMD160_CTX *context"
35.Ft "char *"
36.Fn RIPEMD160_End "RIPEMD160_CTX *context" "char *buf"
37.Ft "char *"
38.Fn RIPEMD160_File "const char *filename" "char *buf"
39.Ft "char *"
40.Fn RIPEMD160_FileChunk "const char *filename" "char *buf" "off_t offset" "off_t length"
41.Ft "char *"
42.Fn RIPEMD160_Data "const unsigned char *data" "unsigned int len" "char *buf"
43.Sh DESCRIPTION
44The
45.Li RIPEMD160_
46functions calculate a 160-bit cryptographic checksum (digest)
47for any number of input bytes.
48A cryptographic checksum is a one-way
49hash function; that is, it is computationally impractical to find
50the input corresponding to a particular output.
51This net result is a
52.Dq fingerprint
53of the input-data, which does not disclose the actual input.
54.Pp
55The
56.Fn RIPEMD160_Init ,
57.Fn RIPEMD160_Update ,
58and
59.Fn RIPEMD160_Final
60functions are the core functions.
61Allocate an
62.Vt RIPEMD160_CTX ,
63initialize it with
64.Fn RIPEMD160_Init ,
65run over the data with
66.Fn RIPEMD160_Update ,
67and finally extract the result using
68.Fn RIPEMD160_Final ,
69which will also erase the
70.Vt RIPEMD160_CTX .
71.Pp
72The
73.Fn RIPEMD160_End
74function is a wrapper for
75.Fn RIPEMD160_Final
76which converts the return value to a 41-character
77(including the terminating '\e0')
78ASCII string which represents the 160 bits in hexadecimal.
79.Pp
80The
81.Fn RIPEMD160_File
82function calculates the digest of a file, and uses
83.Fn RIPEMD160_End
84to return the result.
85If the file cannot be opened, a null pointer is returned.
86The
87.Fn RIPEMD160_FileChunk
88function is similar to
89.Fn RIPEMD160_File ,
90but it only calculates the digest over a byte-range of the file specified,
91starting at
92.Fa offset
93and spanning
94.Fa length
95bytes.
96If the
97.Fa length
98parameter is specified as 0, or more than the length of the remaining part
99of the file,
100.Fn RIPEMD160_FileChunk
101calculates the digest from
102.Fa offset
103to the end of file.
104The
105.Fn RIPEMD160_Data
106function calculates the digest of a chunk of data in memory, and uses
107.Fn RIPEMD160_End
108to return the result.
109.Pp
110When using
111.Fn RIPEMD160_End ,
112.Fn RIPEMD160_File ,
113or
114.Fn RIPEMD160_Data ,
115the
116.Fa buf
117argument can be a null pointer, in which case the returned string
118is allocated with
119.Xr malloc 3
120and subsequently must be explicitly deallocated using
121.Xr free 3
122after use.
123If the
124.Fa buf
125argument is non-null it must point to at least 41 characters of buffer space.
126.Sh ERRORS
127The
128.Fn RIPEMD160_End
129function called with a null buf argument may fail and return NULL if:
130.Bl -tag -width Er
131.It Bq Er ENOMEM
132Insufficient storage space is available.
133.El
134.Pp
135The
136.Fn RIPEMD160_File
137and
138.Fn RIPEMD160_FileChunk
139may return NULL when underlying
140.Xr open 2 ,
141.Xr fstat 2 ,
142.Xr lseek 2 ,
143or
144.Xr RIPEMD160_End 3
145fail.
146.Sh SEE ALSO
147.Xr md4 3 ,
148.Xr md5 3 ,
149.Xr sha 3 ,
150.Xr sha256 3 ,
151.Xr sha512 3 ,
152.Xr skein 3
153.Sh HISTORY
154These functions appeared in
155.Fx 4.0 .
156.Sh AUTHORS
157The core hash routines were implemented by Eric Young based on the
158published RIPEMD160 specification.
159.Sh BUGS
160No method is known to exist which finds two files having the same hash value,
161nor to find a file with a specific hash value.
162There is on the other hand no guarantee that such a method does not exist.
163