The setkey() function provides access to an implementation-defined
encoding algorithm. The argument of setkey() is an array of length 64
bytes containing only the bytes with numerical value of 0 and 1. If this
string is divided into groups of 8, the low-order bit in each group is
ignored; this gives a 56-bit key which is used by the algorithm. This is the
key that shall be used with the algorithm to encode a string block
passed to encrypt().
The setkey() function shall not change the setting of errno if
successful. An application wishing to check for error situations should set
errno to 0 before calling setkey(). If errno is non-zero
on return, an error has occurred.
The setkey() function need not be reentrant. A function that is not
required to be reentrant is not required to be thread-safe.
Decoding need not be implemented in all environments. This is related to
government restrictions in some countries on encryption and decryption
routines. Historical practice has been to ship a different version of the
encryption library without the decryption feature in the routines supplied.
Thus the exported version of encrypt() does encoding but not decoding.
Portions of this text are reprinted and reproduced in electronic form from IEEE
Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable
Operating System Interface (POSIX), The Open Group Base Specifications Issue
6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics
Engineers, Inc and The Open Group. In the event of any discrepancy between
this version and the original IEEE and The Open Group Standard, the original
IEEE and The Open Group Standard is the referee document. The original
Standard can be obtained online at http://www.opengroup.org/unix/online.html