mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 01:15:09 +00:00
130 lines
2.6 KiB
Text
130 lines
2.6 KiB
Text
![]() |
.\" @(#)des_crypt.3 2.1 88/08/11 4.0 RPCSRC; from 1.16 88/03/02 SMI;
|
||
|
.\"
|
||
|
.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
|
||
|
.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
|
||
|
The
|
||
|
.Fn ecb_crypt
|
||
|
and
|
||
|
.Fn cbc_crypt
|
||
|
functions
|
||
|
implement the
|
||
|
.Tn NBS
|
||
|
.Tn DES
|
||
|
(Data Encryption Standard).
|
||
|
These routines are faster and more general purpose than
|
||
|
.Xr crypt 3 .
|
||
|
They also are able to utilize
|
||
|
.Tn DES
|
||
|
hardware if it is available.
|
||
|
The
|
||
|
.Fn ecb_crypt
|
||
|
function
|
||
|
encrypts in
|
||
|
.Tn ECB
|
||
|
(Electronic Code Book)
|
||
|
mode, which encrypts blocks of data independently.
|
||
|
The
|
||
|
.Fn cbc_crypt
|
||
|
function
|
||
|
encrypts in
|
||
|
.Tn CBC
|
||
|
(Cipher Block Chaining)
|
||
|
mode, which chains together
|
||
|
successive blocks.
|
||
|
.Tn CBC
|
||
|
mode protects against insertions, deletions and
|
||
|
substitutions of blocks.
|
||
|
Also, regularities in the clear text will
|
||
|
not appear in the cipher text.
|
||
|
.Pp
|
||
|
Here is how to use these routines.
|
||
|
The first argument,
|
||
|
.Fa key ,
|
||
|
is the 8-byte encryption key with parity.
|
||
|
To set the key's parity, which for
|
||
|
.Tn DES
|
||
|
is in the low bit of each byte, use
|
||
|
.Fn des_setparity .
|
||
|
The second argument,
|
||
|
.Fa data ,
|
||
|
contains the data to be encrypted or decrypted.
|
||
|
The
|
||
|
third argument,
|
||
|
.Fa datalen ,
|
||
|
is the length in bytes of
|
||
|
.Fa data ,
|
||
|
which must be a multiple of 8.
|
||
|
The fourth argument,
|
||
|
.Fa mode ,
|
||
|
is formed by
|
||
|
.Em OR Ns 'ing
|
||
|
together some things.
|
||
|
For the encryption direction
|
||
|
.Em OR
|
||
|
in either
|
||
|
.Dv DES_ENCRYPT
|
||
|
or
|
||
|
.Dv DES_DECRYPT .
|
||
|
For software versus hardware
|
||
|
encryption,
|
||
|
.Em OR
|
||
|
in either
|
||
|
.Dv DES_HW
|
||
|
or
|
||
|
.Dv DES_SW .
|
||
|
If
|
||
|
.Dv DES_HW
|
||
|
is specified, and there is no hardware, then the encryption is performed
|
||
|
in software and the routine returns
|
||
|
.Er DESERR_NOHWDEVICE .
|
||
|
For
|
||
|
.Fn cbc_crypt ,
|
||
|
the
|
||
|
.Fa ivec
|
||
|
argument
|
||
|
is the 8-byte initialization
|
||
|
vector for the chaining.
|
||
|
It is updated to the next initialization
|
||
|
vector upon return.
|
||
|
.Sh ERRORS
|
||
|
.Bl -tag -width [DESERR_NOHWDEVICE] -compact
|
||
|
.It Bq Er DESERR_NONE
|
||
|
No error.
|
||
|
.It Bq Er DESERR_NOHWDEVICE
|
||
|
Encryption succeeded, but done in software instead of the requested hardware.
|
||
|
.It Bq Er DESERR_HWERR
|
||
|
An error occurred in the hardware or driver.
|
||
|
.It Bq Er DESERR_BADPARAM
|
||
|
Bad argument to routine.
|
||
|
.El
|
||
|
.Pp
|
||
|
Given a result status
|
||
|
.Va stat ,
|
||
|
the macro
|
||
|
.Fn DES_FAILED stat
|
||
|
is false only for the first two statuses.
|
||
|
.Sh SEE ALSO
|
||
|
.\" .Xr des 1 ,
|
||
|
.Xr crypt 3
|
||
|
.Sh RESTRICTIONS
|
||
|
These routines are not available in RPCSRC 4.0.
|
||
|
This information is provided to describe the
|
||
|
.Tn DES
|
||
|
interface expected by
|
||
|
Secure RPC.
|