111 lines
3.2 KiB
Groff
111 lines
3.2 KiB
Groff
|
.\"
|
||
|
.\" ----------------------------------------------------------------------------
|
||
|
.\" "THE BEER-WARE LICENSE" (Revision 42):
|
||
|
.\" <phk@login.dkuug.dk> wrote this file. As long as you retain this notice you
|
||
|
.\" can do whatever you want with this stuff. If we meet some day, and you think
|
||
|
.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||
|
.\" ----------------------------------------------------------------------------
|
||
|
.\"
|
||
|
.\" From: Id: mdX.3,v 1.14 1999/02/11 20:31:49 wollman Exp
|
||
|
.\" $Id: sha.3,v 1.1 1999/02/26 04:24:56 wollman Exp $
|
||
|
.\"
|
||
|
.Dd February 26, 1999
|
||
|
.Dt RIPEMD 3
|
||
|
.Os FreeBSD 4.0
|
||
|
.Sh NAME
|
||
|
.Nm RIPEMD160_Init ,
|
||
|
.Nm RIPEMD160_Update ,
|
||
|
.Nm RIPEMD160_Final ,
|
||
|
.Nm RIPEMD160_End ,
|
||
|
.Nm RIPEMD160_File ,
|
||
|
.Nm RIPEMD160_Data
|
||
|
.Nd calculate the RIPEMD160 message digest
|
||
|
.Sh SYNOPSIS
|
||
|
.Fd #include <sys/types.h>
|
||
|
.Fd #include <ripemd.h>
|
||
|
.Ft void
|
||
|
.Fn RIPEMD160_Init "RIPEMD160_CTX *context"
|
||
|
.Ft void
|
||
|
.Fn RIPEMD160_Update "RIPEMD160_CTX *context" "const unsigned char *data" "unsigned int len"
|
||
|
.Ft void
|
||
|
.Fn RIPEMD160_Final "unsigned char digest[20]" "RIPEMD160_CTX *context"
|
||
|
.Ft "char *"
|
||
|
.Fn RIPEMD160_End "RIPEMD160_CTX *context" "char *buf"
|
||
|
.Ft "char *"
|
||
|
.Fn RIPEMD160_File "const char *filename" "char *buf"
|
||
|
.Ft "char *"
|
||
|
.Fn RIPEMD160_Data "const unsigned char *data" "unsigned int len" "char *buf"
|
||
|
.Sh DESCRIPTION
|
||
|
The
|
||
|
.Li RIPEMD160_
|
||
|
functions calculate a 160-bit cryptographic checksum (digest)
|
||
|
for any number of input bytes. A cryptographic checksum is a one-way
|
||
|
hash function; that is, it is computationally impractical to find
|
||
|
the input corresponding to a particular output. This net result is
|
||
|
a ``fingerprint'' of the input-data, which doesn't disclose the actual
|
||
|
input.
|
||
|
.Pp
|
||
|
The
|
||
|
.Fn RIPEMD160_Init ,
|
||
|
.Fn RIPEMD160_Update ,
|
||
|
and
|
||
|
.Fn RIPEMD160_Final
|
||
|
functions are the core functions. Allocate an RIPEMD160_CTX, initialize it with
|
||
|
.Fn RIPEMD160_Init ,
|
||
|
run over the data with
|
||
|
.Fn RIPEMD160_Update ,
|
||
|
and finally extract the result using
|
||
|
.Fn RIPEMD160_Final .
|
||
|
.Pp
|
||
|
.Fn RIPEMD160_End
|
||
|
is a wrapper for
|
||
|
.Fn RIPEMD160_Final
|
||
|
which converts the return value to a 41-character
|
||
|
(including the terminating '\e0')
|
||
|
.Tn ASCII
|
||
|
string which represents the 160 bits in hexadecimal.
|
||
|
.Pp
|
||
|
.Fn RIPEMD160_File
|
||
|
calculates the digest of a file, and uses
|
||
|
.Fn RIPEMD160_End
|
||
|
to return the result.
|
||
|
If the file cannot be opened, a null pointer is returned.
|
||
|
.Fn RIPEMD160_Data
|
||
|
calculates the digest of a chunk of data in memory, and uses
|
||
|
.Fn RIPEMD160_End
|
||
|
to return the result.
|
||
|
.Pp
|
||
|
When using
|
||
|
.Fn RIPEMD160_End ,
|
||
|
.Fn RIPEMD160_File ,
|
||
|
or
|
||
|
.Fn RIPEMD160_Data ,
|
||
|
the
|
||
|
.Ar buf
|
||
|
argument can be a null pointer, in which case the returned string
|
||
|
is allocated with
|
||
|
.Xr malloc 3
|
||
|
and subsequently must be explicitly deallocated using
|
||
|
.Xr free 3
|
||
|
after use.
|
||
|
If the
|
||
|
.Ar buf
|
||
|
argument is non-null it must point to at least 41 characters of buffer space.
|
||
|
.Sh SEE ALSO
|
||
|
.Xr md2 3 ,
|
||
|
.Xr md4 3 ,
|
||
|
.Xr md5 3 ,
|
||
|
.Xr sha 3
|
||
|
.Sh AUTHORS
|
||
|
The core hash routines were implemented by Eric Young based on the
|
||
|
published
|
||
|
.Tn RIPEMD160
|
||
|
specification.
|
||
|
.Sh HISTORY
|
||
|
These functions appeared in
|
||
|
.Fx 4.0 .
|
||
|
.Sh BUGS
|
||
|
No method is known to exist which finds two files having the same hash value,
|
||
|
nor to find a file with a specific hash value.
|
||
|
There is on the other hand no guarantee that such a method doesn't exist.
|