$FreeBSD$
#include <des_crypt.h>int ecb_crypt(key, data, datalen, mode) char *key; char *data; unsigned datalen; unsigned mode;
int cbc_crypt(key, data, datalen, mode, ivec) char *key; char *data; unsigned datalen; unsigned mode; char *ivec;
void des_setparity(key) char *key;
Here is how to use these routines. The first parameter, 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 parameter, data , contains the data to be encrypted or decrypted. The third parameter, datalen , is the length in bytes of data , which must be a multiple of 8. The fourth parameter, mode , is formed by OR\s0'ing together some things. For the encryption direction 'or' in either DES_ENCRYPT or DES_DECRYPT\s0. For software versus hardware encryption, 'or' in either DES_HW or DES_SW\s0. If DES_HW is specified, and there is no hardware, then the encryption is performed in software and the routine returns DESERR_NOHWDEVICE\s0. For cbc_crypt , the parameter ivec is the the 8-byte initialization vector for the chaining. It is updated to the next initialization vector upon return.
0
20 DESERR_NONE No error.
DESERR_NOHWDEVICE Encryption succeeded, but done in software instead of the requested hardware.
DESERR_HWERR An error occurred in the hardware or driver.
DESERR_BADPARAM Bad parameter to routine.
Given a result status stat , the macro DES_FAILED\c ( stat ) is false only for the first two statuses.