Пример #1
0
/*
 * Common code to cbc_crypt() & ecb_crypt()
 */
static int
common_crypt(char *key, char *buf, size_t len, unsigned int mode,
    struct desparams *desp)
{
	int desdev;

	if ((len % 8) != 0 || len > DES_MAXDATA)
		return (DESERR_BADPARAM);

	desp->des_dir =
	    ((mode & DES_DIRMASK) == DES_ENCRYPT) ? ENCRYPT : DECRYPT;

	desdev = mode & DES_DEVMASK;
	COPY8(key, desp->des_key);

#ifdef sun_hardware
	if (desdev == DES_HW) {
		int res;

		if (g_desfd < 0 &&
		    (g_desfd == -1 || (g_desfd = getdesfd()) < 0))
				goto software;	/* no hardware device */

		/*
		 * hardware
		 */
		desp->des_len = len;
		if (len <= DES_QUICKLEN) {
			DESCOPY(buf, desp->des_data, len);
			res = ioctl(g_desfd, DESIOCQUICK, (char *)desp);
			DESCOPY(desp->des_data, buf, len);
		} else {
			desp->des_buf = (uchar_t *)buf;
			res = ioctl(g_desfd, DESIOCBLOCK, (char *)desp);
		}
		return (res == 0 ? DESERR_NONE : DESERR_HWERROR);
	}
software:
#endif
	/*
	 * software
	 */
	if (!_des_crypt(buf, len, desp))
		return (DESERR_HWERROR);

	return (desdev == DES_SW ? DESERR_NONE : DESERR_NOHWDEVICE);
}
Пример #2
0
char *
crypt(const char *key, const char *salt)
{
  if (salt[0] == '$' && salt[2] == '$') {
    switch (salt[1]) {
#ifdef MD5_IMPL
      case '1': /* md5 */
        /* Unimplemented */
        break;
#endif
      /* SHA 256/512: Unimplemented  */
      case '5': /* SHA 256 */
      case '6': /* SHA 512 */
      default:
        break;
    }
  }
  return _des_crypt(key, salt);
}
Пример #3
0
/*
 * Common code to cbc_crypt() & ecb_crypt()
 */
static int common_crypt (char *key, char *buf, register unsigned len,
                         unsigned mode, register struct desparams *desp)
{
    register int desdev;

    if ((len % 8) != 0 || len > DES_MAXDATA)
        return DESERR_BADPARAM;

    desp->des_dir =
        ((mode & DES_DIRMASK) == DES_ENCRYPT) ? ENCRYPT : DECRYPT;

    desdev = mode & DES_DEVMASK;
    COPY8 (key, desp->des_key);
    /*
     * software
     */
    if (!_des_crypt (buf, len, desp))
        return DESERR_HWERROR;

    return desdev == DES_SW ? DESERR_NONE : DESERR_NOHWDEVICE;
}