1997-05-28 05:00:11 +00:00
|
|
|
.\" @(#)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$
|
1999-07-12 20:50:10 +00:00
|
|
|
.\"
|
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
|
2001-10-01 16:09:29 +00:00
|
|
|
.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
|
1997-05-28 05:00:11 +00:00
|
|
|
and
|
2001-01-17 18:26:21 +00:00
|
|
|
.Fn cbc_crypt
|
2002-12-18 12:45:11 +00:00
|
|
|
functions
|
1997-05-28 05:00:11 +00:00
|
|
|
implement the
|
2001-01-17 18:26:21 +00:00
|
|
|
.Tn NBS
|
|
|
|
.Tn DES
|
1997-05-28 05:00:11 +00:00
|
|
|
(Data Encryption Standard).
|
|
|
|
These routines are faster and more general purpose than
|
2001-01-17 18:26:21 +00:00
|
|
|
.Xr crypt 3 .
|
1997-05-28 05:00:11 +00:00
|
|
|
They also are able to utilize
|
2001-01-17 18:26:21 +00:00
|
|
|
.Tn DES
|
1997-05-28 05:00:11 +00:00
|
|
|
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
|
1997-05-28 05:00:11 +00:00
|
|
|
encrypts in
|
2001-01-17 18:26:21 +00:00
|
|
|
.Tn ECB
|
1997-05-28 05:00:11 +00:00
|
|
|
(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
|
1997-05-28 05:00:11 +00:00
|
|
|
encrypts in
|
2001-01-17 18:26:21 +00:00
|
|
|
.Tn CBC
|
1997-05-28 05:00:11 +00:00
|
|
|
(Cipher Block Chaining)
|
|
|
|
mode, which chains together
|
|
|
|
successive blocks.
|
2001-01-17 18:26:21 +00:00
|
|
|
.Tn CBC
|
1997-05-28 05:00:11 +00:00
|
|
|
mode protects against insertions, deletions and
|
2000-03-02 09:14:21 +00:00
|
|
|
substitutions of blocks.
|
|
|
|
Also, regularities in the clear text will
|
1997-05-28 05:00:11 +00:00
|
|
|
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 ,
|
1997-05-28 05:00:11 +00:00
|
|
|
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
|
1997-05-28 05:00:11 +00:00
|
|
|
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 ,
|
2000-03-02 09:14:21 +00:00
|
|
|
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 ,
|
1997-05-28 05:00:11 +00:00
|
|
|
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 ,
|
1997-05-28 05:00:11 +00:00
|
|
|
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
|
1997-05-28 05:00:11 +00:00
|
|
|
or
|
2001-01-17 18:26:21 +00:00
|
|
|
.Dv DES_DECRYPT .
|
1997-05-28 05:00:11 +00:00
|
|
|
For software versus hardware
|
2001-01-17 18:26:21 +00:00
|
|
|
encryption,
|
|
|
|
.Em OR
|
|
|
|
in either
|
|
|
|
.Dv DES_HW
|
1997-05-28 05:00:11 +00:00
|
|
|
or
|
2001-01-17 18:26:21 +00:00
|
|
|
.Dv DES_SW .
|
1997-05-28 05:00:11 +00:00
|
|
|
If
|
2001-01-17 18:26:21 +00:00
|
|
|
.Dv DES_HW
|
1997-05-28 05:00:11 +00:00
|
|
|
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 .
|
1997-05-28 05:00:11 +00:00
|
|
|
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
|
1997-05-28 05:00:11 +00:00
|
|
|
vector upon return.
|
2001-01-17 18:26:21 +00:00
|
|
|
.Sh ERRORS
|
|
|
|
.Bl -tag -width [DESERR_NOHWDEVICE] -compact
|
|
|
|
.It Bq Er DESERR_NONE
|
1997-05-28 05:00:11 +00:00
|
|
|
No error.
|
2001-01-17 18:26:21 +00:00
|
|
|
.It Bq Er DESERR_NOHWDEVICE
|
1997-05-28 05:00:11 +00:00
|
|
|
Encryption succeeded, but done in software instead of the requested hardware.
|
2001-01-17 18:26:21 +00:00
|
|
|
.It Bq Er DESERR_HWERR
|
1997-05-28 05:00:11 +00:00
|
|
|
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
|
1997-05-28 05:00:11 +00:00
|
|
|
Given a result status
|
2001-01-17 18:26:21 +00:00
|
|
|
.Va stat ,
|
1997-05-28 05:00:11 +00:00
|
|
|
the macro
|
2001-01-17 18:26:21 +00:00
|
|
|
.Fn DES_FAILED stat
|
1997-05-28 05:00:11 +00:00
|
|
|
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
|
1997-05-28 05:00:11 +00:00
|
|
|
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
|
1997-05-28 05:00:11 +00:00
|
|
|
Secure RPC.
|