freebsd-dev/lib/libc/rpc/des_crypt.3

131 lines
2.6 KiB
Groff
Raw Normal View History

.\" @(#)des_crypt.3 2.1 88/08/11 4.0 RPCSRC; from 1.16 88/03/02 SMI;
1999-08-28 00:22:10 +00:00
.\" $FreeBSD$
.\"
2001-01-17 18:26:21 +00:00
.Dd October 6, 1987
.Dt DES_CRYPT 3
.Os
.Sh NAME
.Nm des_crypt , ecb_crypt , cbc_crypt , des_setparity
.Nd "fast DES encryption"
.Sh LIBRARY
.Lb libc
.Sh SYNOPSIS
.In rpc/des_crypt.h
2001-01-17 18:26:21 +00:00
.Ft int
.Fn ecb_crypt "char *key" "char *data" "unsigned datalen" "unsigned mode"
.Ft int
.Fn cbc_crypt "char *key" "char *data" "unsigned datalen" "unsigned mode" "char *ivec"
.Ft void
.Fn des_setparity "char *key"
.Sh DESCRIPTION
2002-12-18 12:45:11 +00:00
The
2001-01-17 18:26:21 +00:00
.Fn ecb_crypt
and
2001-01-17 18:26:21 +00:00
.Fn cbc_crypt
2002-12-18 12:45:11 +00:00
functions
implement the
2001-01-17 18:26:21 +00:00
.Tn NBS
.Tn DES
(Data Encryption Standard).
These routines are faster and more general purpose than
2001-01-17 18:26:21 +00:00
.Xr crypt 3 .
They also are able to utilize
2001-01-17 18:26:21 +00:00
.Tn DES
hardware if it is available.
2002-12-18 12:45:11 +00:00
The
2001-01-17 18:26:21 +00:00
.Fn ecb_crypt
2002-12-18 12:45:11 +00:00
function
encrypts in
2001-01-17 18:26:21 +00:00
.Tn ECB
(Electronic Code Book)
mode, which encrypts blocks of data independently.
2002-12-18 12:45:11 +00:00
The
2001-01-17 18:26:21 +00:00
.Fn cbc_crypt
2002-12-18 12:45:11 +00:00
function
encrypts in
2001-01-17 18:26:21 +00:00
.Tn CBC
(Cipher Block Chaining)
mode, which chains together
successive blocks.
2001-01-17 18:26:21 +00:00
.Tn CBC
mode protects against insertions, deletions and
substitutions of blocks.
Also, regularities in the clear text will
not appear in the cipher text.
2001-01-17 18:26:21 +00:00
.Pp
Here is how to use these routines.
2002-12-19 09:40:28 +00:00
The first argument,
2001-01-17 18:26:21 +00:00
.Fa key ,
is the 8-byte encryption key with parity.
To set the key's parity, which for
2001-01-17 18:26:21 +00:00
.Tn DES
is in the low bit of each byte, use
2001-01-17 18:26:21 +00:00
.Fn des_setparity .
2002-12-19 09:40:28 +00:00
The second argument,
2001-01-17 18:26:21 +00:00
.Fa data ,
contains the data to be encrypted or decrypted.
The
2002-12-19 09:40:28 +00:00
third argument,
2001-01-17 18:26:21 +00:00
.Fa datalen ,
is the length in bytes of
2001-01-17 18:26:21 +00:00
.Fa data ,
which must be a multiple of 8.
2002-12-19 09:40:28 +00:00
The fourth argument,
2001-01-17 18:26:21 +00:00
.Fa mode ,
is formed by
2001-01-17 18:26:21 +00:00
.Em OR Ns 'ing
together some things.
For the encryption direction
.Em OR
in either
.Dv DES_ENCRYPT
or
2001-01-17 18:26:21 +00:00
.Dv DES_DECRYPT .
For software versus hardware
2001-01-17 18:26:21 +00:00
encryption,
.Em OR
in either
.Dv DES_HW
or
2001-01-17 18:26:21 +00:00
.Dv DES_SW .
If
2001-01-17 18:26:21 +00:00
.Dv DES_HW
is specified, and there is no hardware, then the encryption is performed
in software and the routine returns
2001-01-17 18:26:21 +00:00
.Er DESERR_NOHWDEVICE .
For
2001-01-17 18:26:21 +00:00
.Fn cbc_crypt ,
2002-12-19 09:40:28 +00:00
the
2001-01-17 18:26:21 +00:00
.Fa ivec
2002-12-19 09:40:28 +00:00
argument
2001-06-24 01:34:38 +00:00
is the 8-byte initialization
2001-01-17 18:26:21 +00:00
vector for the chaining.
It is updated to the next initialization
vector upon return.
2001-01-17 18:26:21 +00:00
.Sh ERRORS
.Bl -tag -width [DESERR_NOHWDEVICE] -compact
.It Bq Er DESERR_NONE
No error.
2001-01-17 18:26:21 +00:00
.It Bq Er DESERR_NOHWDEVICE
Encryption succeeded, but done in software instead of the requested hardware.
.It Bq Er DESERR_HWERROR
An error occurred in the hardware or driver.
2001-01-17 18:26:21 +00:00
.It Bq Er DESERR_BADPARAM
2002-12-19 09:40:28 +00:00
Bad argument to routine.
2001-01-17 18:26:21 +00:00
.El
.Pp
Given a result status
2001-01-17 18:26:21 +00:00
.Va stat ,
the macro
2001-01-17 18:26:21 +00:00
.Fn DES_FAILED stat
is false only for the first two statuses.
2001-01-17 18:26:21 +00:00
.Sh SEE ALSO
.\" .Xr des 1 ,
.Xr crypt 3
.Sh RESTRICTIONS
These routines are not available in RPCSRC 4.0.
2001-01-17 18:26:21 +00:00
This information is provided to describe the
.Tn DES
interface expected by
Secure RPC.