Blame man/des_crypt.3t

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