mirror of https://github.com/mkerrisk/man-pages
133 lines
3.1 KiB
Groff
133 lines
3.1 KiB
Groff
.\" @(#)des_crypt.3 2.1 88/08/11 4.0 RPCSRC; from 1.16 88/03/02 SMI;
|
|
.\"
|
|
.\" Taken from libc4 sources, which say:
|
|
.\" Copyright (C) 1993 Eric Young - can be distributed under GPL.
|
|
.\"
|
|
.\" However, the above header line suggests that this file in fact is
|
|
.\" Copyright Sun Microsystems, Inc (and is provided for unrestricted use,
|
|
.\" see other Sun RPC sources).
|
|
.\"
|
|
.TH DES_CRYPT 3 "6 October 1987"
|
|
.SH NAME
|
|
des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED \- fast DES encryption
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.\" Sun version
|
|
.\" .B #include <des_crypt.h>
|
|
.B #include <rpc/des_crypt.h>
|
|
.LP
|
|
.BI "int ecb_crypt(char *" key ", char *" data ", unsigned " datalen ,
|
|
.BI " unsigned " mode );
|
|
.LP
|
|
.BI "int cbc_crypt(char *" key ", char *" data ", unsigned " datalen ,
|
|
.BI " unsigned " mode ", char *" ivec );
|
|
.LP
|
|
.BI "void des_setparity(char *" key );
|
|
.LP
|
|
.BI "int DES_FAILED(int " status );
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.BR ecb_crypt ()
|
|
and
|
|
.BR cbc_crypt ()
|
|
implement the
|
|
.SM NBS
|
|
.SM DES
|
|
(Data Encryption Standard).
|
|
These routines are faster and more general purpose than
|
|
.BR crypt (3).
|
|
They also are able to utilize
|
|
.SM DES
|
|
hardware if it is available.
|
|
.BR ecb_crypt ()
|
|
encrypts in
|
|
.SM ECB
|
|
(Electronic Code Book)
|
|
mode, which encrypts blocks of data independently.
|
|
.BR cbc_crypt ()
|
|
encrypts in
|
|
.SM CBC
|
|
(Cipher Block Chaining)
|
|
mode, which chains together
|
|
successive blocks.
|
|
.SM CBC
|
|
mode protects against insertions, deletions and
|
|
substitutions of blocks. Also, regularities in the clear text will
|
|
not appear in the cipher text.
|
|
.LP
|
|
Here is how to use these routines. The first parameter,
|
|
.IR key ,
|
|
is the 8-byte encryption key with parity.
|
|
To set the key's parity, which for
|
|
.SM DES
|
|
is in the low bit of each byte, use
|
|
.BR des_setparity ().
|
|
The second parameter,
|
|
.IR data ,
|
|
contains the data to be encrypted or decrypted. The
|
|
third parameter,
|
|
.IR datalen ,
|
|
is the length in bytes of
|
|
.IR data ,
|
|
which must be a multiple of 8. The fourth parameter,
|
|
.IR mode ,
|
|
is formed by
|
|
.SM OR\s0'ing
|
|
together some things. For the encryption direction 'or' in either
|
|
.SM DES_ENCRYPT
|
|
or
|
|
.SM DES_DECRYPT\s0.
|
|
For software versus hardware
|
|
encryption, 'or' in either
|
|
.SM DES_HW
|
|
or
|
|
.SM DES_SW\s0.
|
|
If
|
|
.SM DES_HW
|
|
is specified, and there is no hardware, then the encryption is performed
|
|
in software and the routine returns
|
|
.SM DESERR_NOHWDEVICE\s0.
|
|
For
|
|
.BR cbc_crypt (),
|
|
the parameter
|
|
.I ivec
|
|
is the 8-byte initialization
|
|
vector for the chaining. It is updated to the next initialization
|
|
vector upon return.
|
|
.LP
|
|
.SH "SEE ALSO"
|
|
.BR des (1),
|
|
.BR crypt (3)
|
|
.\" added, aeb
|
|
and
|
|
.BR xcrypt (3)
|
|
.SH DIAGNOSTICS
|
|
.PD 0
|
|
.TP 20
|
|
.SM DESERR_NONE
|
|
No error.
|
|
.TP
|
|
.SM DESERR_NOHWDEVICE
|
|
Encryption succeeded, but done in software instead of the requested hardware.
|
|
.TP
|
|
.SM DESERR_HWERROR
|
|
An error occurred in the hardware or driver.
|
|
.TP
|
|
.SM DESERR_BADPARAM
|
|
Bad parameter to routine.
|
|
.PD
|
|
.LP
|
|
Given a result status
|
|
.IR stat ,
|
|
the macro
|
|
.\" .SM DES_FAILED\c
|
|
.\" .BR ( stat )
|
|
.BI DES_FAILED( stat )
|
|
is false only for the first two statuses.
|
|
|
|
.\" So far the Sun page
|
|
.\" Some additions - aeb
|
|
.SH AVAILABILITY
|
|
These routines are present in libc 4.6.27 and later, and in
|
|
glibc 2.1 and later.
|