# des_crypt

## NAME



           des_crypt, ecb_crypt, cbc_crypt, des_setparity, DES_FAILED - fast
           DES encryption
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <rpc/des_crypt.h>**
    
           **[[deprecated]] int ecb_crypt(** unsigned int datalen;
                                        **char ***_key_**, char** _data_**[**_datalen_**],**
                                        **unsigned int** _datalen_**, unsigned int** _mode_**);**
           **[[deprecated]] int cbc_crypt(** unsigned int datalen;
                                        **char ***_key_**, char** _data_**[**_datalen_**],**
                                        **unsigned int** _datalen_**, unsigned int** _mode_**,**
                                        **char ***_ivec_**);**
    
           **[[deprecated]] void des_setparity(char ***_key_**);**
    
           **[[deprecated]] int DES_FAILED(int** _status_**);**
    


## DESCRIPTION



           **ecb_crypt**() and **cbc_crypt**() implement the NBS DES (Data Encryption
           Standard).  These routines are faster and more general purpose
           than crypt(3).  They also are able to utilize DES hardware if it
           is available.  **ecb_crypt**() encrypts in ECB (Electronic Code Book)
           mode, which encrypts blocks of data independently.  **cbc_crypt**()
           encrypts in CBC (Cipher Block Chaining) mode, which chains
           together successive blocks.  CBC mode protects against insertions,
           deletions, and substitutions of blocks.  Also, regularities in the
           clear text will not appear in the cipher text.
    
           Here is how to use these routines.  The first argument, _key_ , is
           the 8-byte encryption key with parity.  To set the key's parity,
           which for DES is in the low bit of each byte, use **des_setparity**().
           The second argument, _data_ , contains the data to be encrypted or
           decrypted.  The third argument, _datalen_ , is the length in bytes of
           _data_ , which must be a multiple of 8.  The fourth argument, _mode_ ,
           is formed by ORing together some things.  For the encryption
           direction OR in either **DES_ENCRYPT** or **DES_DECRYPT**.  For software
           versus hardware encryption, OR in either **DES_HW** or **DES_SW**.  If
           **DES_HW** is specified, and there is no hardware, then the encryption
           is performed in software and the routine returns
           **DESERR_NOHWDEVICE**.  For **cbc_crypt**(), the argument _ivec_ is the
           8-byte initialization vector for the chaining.  It is updated to
           the next initialization vector upon return.
    


## RETURN VALUE



           **DESERR_NONE**
                  No error.
    
           **DESERR_NOHWDEVICE**
                  Encryption succeeded, but done in software instead of the
                  requested hardware.
    
           **DESERR_HWERROR**
                  An error occurred in the hardware or driver.
    
           **DESERR_BADPARAM**
                  Bad argument to routine.
    
           Given a result status _stat_ , the macro **DES_FAILED(**_stat_**)** is false
           only for the first two statuses.
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌──────────────────────────────────────┬───────────────┬─────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├──────────────────────────────────────┼───────────────┼─────────┤
           │ **ecb_crypt**(), **cbc_crypt**(),            │ Thread safety │ MT-Safe │
           │ **des_setparity**()                      │               │         │
           └──────────────────────────────────────┴───────────────┴─────────┘
    


## STANDARDS



           None.
    


* * *