Blame test/destest.c

Packit Service 084de1
/*
Packit Service 084de1
 * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
 *
Packit Service 084de1
 * Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
 * this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
 * in the file LICENSE in the source distribution or at
Packit Service 084de1
 * https://www.openssl.org/source/license.html
Packit Service 084de1
 */
Packit Service 084de1
Packit Service 084de1
#include <openssl/e_os2.h>
Packit Service 084de1
#include <string.h>
Packit Service 084de1
Packit Service 084de1
#include "testutil.h"
Packit Service 084de1
Packit Service 084de1
#ifndef OPENSSL_NO_DES
Packit Service 084de1
# include <openssl/des.h>
Packit Service 084de1
Packit Service 084de1
/* In case any platform doesn't use unsigned int for its checksums */
Packit Service 084de1
# define TEST_cs_eq  TEST_uint_eq
Packit Service 084de1
Packit Service 084de1
# define DATA_BUF_SIZE      20
Packit Service 084de1
Packit Service 084de1
/* tisk tisk - the test keys don't all have odd parity :-( */
Packit Service 084de1
/* test data */
Packit Service 084de1
# define NUM_TESTS 34
Packit Service 084de1
static unsigned char key_data[NUM_TESTS][8] = {
Packit Service 084de1
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
Packit Service 084de1
    {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
Packit Service 084de1
    {0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
Packit Service 084de1
    {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
Packit Service 084de1
    {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
Packit Service 084de1
    {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
Packit Service 084de1
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
Packit Service 084de1
    {0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10},
Packit Service 084de1
    {0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E, 0x57},
Packit Service 084de1
    {0x01, 0x31, 0xD9, 0x61, 0x9D, 0xC1, 0x37, 0x6E},
Packit Service 084de1
    {0x07, 0xA1, 0x13, 0x3E, 0x4A, 0x0B, 0x26, 0x86},
Packit Service 084de1
    {0x38, 0x49, 0x67, 0x4C, 0x26, 0x02, 0x31, 0x9E},
Packit Service 084de1
    {0x04, 0xB9, 0x15, 0xBA, 0x43, 0xFE, 0xB5, 0xB6},
Packit Service 084de1
    {0x01, 0x13, 0xB9, 0x70, 0xFD, 0x34, 0xF2, 0xCE},
Packit Service 084de1
    {0x01, 0x70, 0xF1, 0x75, 0x46, 0x8F, 0xB5, 0xE6},
Packit Service 084de1
    {0x43, 0x29, 0x7F, 0xAD, 0x38, 0xE3, 0x73, 0xFE},
Packit Service 084de1
    {0x07, 0xA7, 0x13, 0x70, 0x45, 0xDA, 0x2A, 0x16},
Packit Service 084de1
    {0x04, 0x68, 0x91, 0x04, 0xC2, 0xFD, 0x3B, 0x2F},
Packit Service 084de1
    {0x37, 0xD0, 0x6B, 0xB5, 0x16, 0xCB, 0x75, 0x46},
Packit Service 084de1
    {0x1F, 0x08, 0x26, 0x0D, 0x1A, 0xC2, 0x46, 0x5E},
Packit Service 084de1
    {0x58, 0x40, 0x23, 0x64, 0x1A, 0xBA, 0x61, 0x76},
Packit Service 084de1
    {0x02, 0x58, 0x16, 0x16, 0x46, 0x29, 0xB0, 0x07},
Packit Service 084de1
    {0x49, 0x79, 0x3E, 0xBC, 0x79, 0xB3, 0x25, 0x8F},
Packit Service 084de1
    {0x4F, 0xB0, 0x5E, 0x15, 0x15, 0xAB, 0x73, 0xA7},
Packit Service 084de1
    {0x49, 0xE9, 0x5D, 0x6D, 0x4C, 0xA2, 0x29, 0xBF},
Packit Service 084de1
    {0x01, 0x83, 0x10, 0xDC, 0x40, 0x9B, 0x26, 0xD6},
Packit Service 084de1
    {0x1C, 0x58, 0x7F, 0x1C, 0x13, 0x92, 0x4F, 0xEF},
Packit Service 084de1
    {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01},
Packit Service 084de1
    {0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x0E, 0x0E, 0x0E},
Packit Service 084de1
    {0xE0, 0xFE, 0xE0, 0xFE, 0xF1, 0xFE, 0xF1, 0xFE},
Packit Service 084de1
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
Packit Service 084de1
    {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
Packit Service 084de1
    {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
Packit Service 084de1
    {0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10}
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char plain_data[NUM_TESTS][8] = {
Packit Service 084de1
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
Packit Service 084de1
    {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
Packit Service 084de1
    {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
Packit Service 084de1
    {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
Packit Service 084de1
    {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11},
Packit Service 084de1
    {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
Packit Service 084de1
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
Packit Service 084de1
    {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
Packit Service 084de1
    {0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67, 0x42},
Packit Service 084de1
    {0x5C, 0xD5, 0x4C, 0xA8, 0x3D, 0xEF, 0x57, 0xDA},
Packit Service 084de1
    {0x02, 0x48, 0xD4, 0x38, 0x06, 0xF6, 0x71, 0x72},
Packit Service 084de1
    {0x51, 0x45, 0x4B, 0x58, 0x2D, 0xDF, 0x44, 0x0A},
Packit Service 084de1
    {0x42, 0xFD, 0x44, 0x30, 0x59, 0x57, 0x7F, 0xA2},
Packit Service 084de1
    {0x05, 0x9B, 0x5E, 0x08, 0x51, 0xCF, 0x14, 0x3A},
Packit Service 084de1
    {0x07, 0x56, 0xD8, 0xE0, 0x77, 0x47, 0x61, 0xD2},
Packit Service 084de1
    {0x76, 0x25, 0x14, 0xB8, 0x29, 0xBF, 0x48, 0x6A},
Packit Service 084de1
    {0x3B, 0xDD, 0x11, 0x90, 0x49, 0x37, 0x28, 0x02},
Packit Service 084de1
    {0x26, 0x95, 0x5F, 0x68, 0x35, 0xAF, 0x60, 0x9A},
Packit Service 084de1
    {0x16, 0x4D, 0x5E, 0x40, 0x4F, 0x27, 0x52, 0x32},
Packit Service 084de1
    {0x6B, 0x05, 0x6E, 0x18, 0x75, 0x9F, 0x5C, 0xCA},
Packit Service 084de1
    {0x00, 0x4B, 0xD6, 0xEF, 0x09, 0x17, 0x60, 0x62},
Packit Service 084de1
    {0x48, 0x0D, 0x39, 0x00, 0x6E, 0xE7, 0x62, 0xF2},
Packit Service 084de1
    {0x43, 0x75, 0x40, 0xC8, 0x69, 0x8F, 0x3C, 0xFA},
Packit Service 084de1
    {0x07, 0x2D, 0x43, 0xA0, 0x77, 0x07, 0x52, 0x92},
Packit Service 084de1
    {0x02, 0xFE, 0x55, 0x77, 0x81, 0x17, 0xF1, 0x2A},
Packit Service 084de1
    {0x1D, 0x9D, 0x5C, 0x50, 0x18, 0xF7, 0x28, 0xC2},
Packit Service 084de1
    {0x30, 0x55, 0x32, 0x28, 0x6D, 0x6F, 0x29, 0x5A},
Packit Service 084de1
    {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
Packit Service 084de1
    {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
Packit Service 084de1
    {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF},
Packit Service 084de1
    {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
Packit Service 084de1
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
Packit Service 084de1
    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
Packit Service 084de1
    {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cipher_data[NUM_TESTS][8] = {
Packit Service 084de1
    {0x8C, 0xA6, 0x4D, 0xE9, 0xC1, 0xB1, 0x23, 0xA7},
Packit Service 084de1
    {0x73, 0x59, 0xB2, 0x16, 0x3E, 0x4E, 0xDC, 0x58},
Packit Service 084de1
    {0x95, 0x8E, 0x6E, 0x62, 0x7A, 0x05, 0x55, 0x7B},
Packit Service 084de1
    {0xF4, 0x03, 0x79, 0xAB, 0x9E, 0x0E, 0xC5, 0x33},
Packit Service 084de1
    {0x17, 0x66, 0x8D, 0xFC, 0x72, 0x92, 0x53, 0x2D},
Packit Service 084de1
    {0x8A, 0x5A, 0xE1, 0xF8, 0x1A, 0xB8, 0xF2, 0xDD},
Packit Service 084de1
    {0x8C, 0xA6, 0x4D, 0xE9, 0xC1, 0xB1, 0x23, 0xA7},
Packit Service 084de1
    {0xED, 0x39, 0xD9, 0x50, 0xFA, 0x74, 0xBC, 0xC4},
Packit Service 084de1
    {0x69, 0x0F, 0x5B, 0x0D, 0x9A, 0x26, 0x93, 0x9B},
Packit Service 084de1
    {0x7A, 0x38, 0x9D, 0x10, 0x35, 0x4B, 0xD2, 0x71},
Packit Service 084de1
    {0x86, 0x8E, 0xBB, 0x51, 0xCA, 0xB4, 0x59, 0x9A},
Packit Service 084de1
    {0x71, 0x78, 0x87, 0x6E, 0x01, 0xF1, 0x9B, 0x2A},
Packit Service 084de1
    {0xAF, 0x37, 0xFB, 0x42, 0x1F, 0x8C, 0x40, 0x95},
Packit Service 084de1
    {0x86, 0xA5, 0x60, 0xF1, 0x0E, 0xC6, 0xD8, 0x5B},
Packit Service 084de1
    {0x0C, 0xD3, 0xDA, 0x02, 0x00, 0x21, 0xDC, 0x09},
Packit Service 084de1
    {0xEA, 0x67, 0x6B, 0x2C, 0xB7, 0xDB, 0x2B, 0x7A},
Packit Service 084de1
    {0xDF, 0xD6, 0x4A, 0x81, 0x5C, 0xAF, 0x1A, 0x0F},
Packit Service 084de1
    {0x5C, 0x51, 0x3C, 0x9C, 0x48, 0x86, 0xC0, 0x88},
Packit Service 084de1
    {0x0A, 0x2A, 0xEE, 0xAE, 0x3F, 0xF4, 0xAB, 0x77},
Packit Service 084de1
    {0xEF, 0x1B, 0xF0, 0x3E, 0x5D, 0xFA, 0x57, 0x5A},
Packit Service 084de1
    {0x88, 0xBF, 0x0D, 0xB6, 0xD7, 0x0D, 0xEE, 0x56},
Packit Service 084de1
    {0xA1, 0xF9, 0x91, 0x55, 0x41, 0x02, 0x0B, 0x56},
Packit Service 084de1
    {0x6F, 0xBF, 0x1C, 0xAF, 0xCF, 0xFD, 0x05, 0x56},
Packit Service 084de1
    {0x2F, 0x22, 0xE4, 0x9B, 0xAB, 0x7C, 0xA1, 0xAC},
Packit Service 084de1
    {0x5A, 0x6B, 0x61, 0x2C, 0xC2, 0x6C, 0xCE, 0x4A},
Packit Service 084de1
    {0x5F, 0x4C, 0x03, 0x8E, 0xD1, 0x2B, 0x2E, 0x41},
Packit Service 084de1
    {0x63, 0xFA, 0xC0, 0xD0, 0x34, 0xD9, 0xF7, 0x93},
Packit Service 084de1
    {0x61, 0x7B, 0x3A, 0x0C, 0xE8, 0xF0, 0x71, 0x00},
Packit Service 084de1
    {0xDB, 0x95, 0x86, 0x05, 0xF8, 0xC8, 0xC6, 0x06},
Packit Service 084de1
    {0xED, 0xBF, 0xD1, 0xC6, 0x6C, 0x29, 0xCC, 0xC7},
Packit Service 084de1
    {0x35, 0x55, 0x50, 0xB2, 0x15, 0x0E, 0x24, 0x51},
Packit Service 084de1
    {0xCA, 0xAA, 0xAF, 0x4D, 0xEA, 0xF1, 0xDB, 0xAE},
Packit Service 084de1
    {0xD5, 0xD4, 0x4F, 0xF7, 0x20, 0x68, 0x3D, 0x0D},
Packit Service 084de1
    {0x2A, 0x2B, 0xB0, 0x08, 0xDF, 0x97, 0xC2, 0xF2}
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cipher_ecb2[NUM_TESTS - 1][8] = {
Packit Service 084de1
    {0x92, 0x95, 0xB5, 0x9B, 0xB3, 0x84, 0x73, 0x6E},
Packit Service 084de1
    {0x19, 0x9E, 0x9D, 0x6D, 0xF3, 0x9A, 0xA8, 0x16},
Packit Service 084de1
    {0x2A, 0x4B, 0x4D, 0x24, 0x52, 0x43, 0x84, 0x27},
Packit Service 084de1
    {0x35, 0x84, 0x3C, 0x01, 0x9D, 0x18, 0xC5, 0xB6},
Packit Service 084de1
    {0x4A, 0x5B, 0x2F, 0x42, 0xAA, 0x77, 0x19, 0x25},
Packit Service 084de1
    {0xA0, 0x6B, 0xA9, 0xB8, 0xCA, 0x5B, 0x17, 0x8A},
Packit Service 084de1
    {0xAB, 0x9D, 0xB7, 0xFB, 0xED, 0x95, 0xF2, 0x74},
Packit Service 084de1
    {0x3D, 0x25, 0x6C, 0x23, 0xA7, 0x25, 0x2F, 0xD6},
Packit Service 084de1
    {0xB7, 0x6F, 0xAB, 0x4F, 0xBD, 0xBD, 0xB7, 0x67},
Packit Service 084de1
    {0x8F, 0x68, 0x27, 0xD6, 0x9C, 0xF4, 0x1A, 0x10},
Packit Service 084de1
    {0x82, 0x57, 0xA1, 0xD6, 0x50, 0x5E, 0x81, 0x85},
Packit Service 084de1
    {0xA2, 0x0F, 0x0A, 0xCD, 0x80, 0x89, 0x7D, 0xFA},
Packit Service 084de1
    {0xCD, 0x2A, 0x53, 0x3A, 0xDB, 0x0D, 0x7E, 0xF3},
Packit Service 084de1
    {0xD2, 0xC2, 0xBE, 0x27, 0xE8, 0x1B, 0x68, 0xE3},
Packit Service 084de1
    {0xE9, 0x24, 0xCF, 0x4F, 0x89, 0x3C, 0x5B, 0x0A},
Packit Service 084de1
    {0xA7, 0x18, 0xC3, 0x9F, 0xFA, 0x9F, 0xD7, 0x69},
Packit Service 084de1
    {0x77, 0x2C, 0x79, 0xB1, 0xD2, 0x31, 0x7E, 0xB1},
Packit Service 084de1
    {0x49, 0xAB, 0x92, 0x7F, 0xD0, 0x22, 0x00, 0xB7},
Packit Service 084de1
    {0xCE, 0x1C, 0x6C, 0x7D, 0x85, 0xE3, 0x4A, 0x6F},
Packit Service 084de1
    {0xBE, 0x91, 0xD6, 0xE1, 0x27, 0xB2, 0xE9, 0x87},
Packit Service 084de1
    {0x70, 0x28, 0xAE, 0x8F, 0xD1, 0xF5, 0x74, 0x1A},
Packit Service 084de1
    {0xAA, 0x37, 0x80, 0xBB, 0xF3, 0x22, 0x1D, 0xDE},
Packit Service 084de1
    {0xA6, 0xC4, 0xD2, 0x5E, 0x28, 0x93, 0xAC, 0xB3},
Packit Service 084de1
    {0x22, 0x07, 0x81, 0x5A, 0xE4, 0xB7, 0x1A, 0xAD},
Packit Service 084de1
    {0xDC, 0xCE, 0x05, 0xE7, 0x07, 0xBD, 0xF5, 0x84},
Packit Service 084de1
    {0x26, 0x1D, 0x39, 0x2C, 0xB3, 0xBA, 0xA5, 0x85},
Packit Service 084de1
    {0xB4, 0xF7, 0x0F, 0x72, 0xFB, 0x04, 0xF0, 0xDC},
Packit Service 084de1
    {0x95, 0xBA, 0xA9, 0x4E, 0x87, 0x36, 0xF2, 0x89},
Packit Service 084de1
    {0xD4, 0x07, 0x3A, 0xF1, 0x5A, 0x17, 0x82, 0x0E},
Packit Service 084de1
    {0xEF, 0x6F, 0xAF, 0xA7, 0x66, 0x1A, 0x7E, 0x89},
Packit Service 084de1
    {0xC1, 0x97, 0xF5, 0x58, 0x74, 0x8A, 0x20, 0xE7},
Packit Service 084de1
    {0x43, 0x34, 0xCF, 0xDA, 0x22, 0xC4, 0x86, 0xC8},
Packit Service 084de1
    {0x08, 0xD7, 0xB4, 0xFB, 0x62, 0x9D, 0x08, 0x85}
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cbc_key[8] =
Packit Service 084de1
    { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
Packit Service 084de1
static unsigned char cbc2_key[8] =
Packit Service 084de1
    { 0xf1, 0xe0, 0xd3, 0xc2, 0xb5, 0xa4, 0x97, 0x86 };
Packit Service 084de1
static unsigned char cbc3_key[8] =
Packit Service 084de1
    { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 };
Packit Service 084de1
static unsigned char cbc_iv[8] =
Packit Service 084de1
    { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 };
Packit Service 084de1
/*
Packit Service 084de1
 * Changed the following text constant to binary so it will work on ebcdic
Packit Service 084de1
 * machines :-)
Packit Service 084de1
 */
Packit Service 084de1
/* static char cbc_data[40]="7654321 Now is the time for \0001"; */
Packit Service 084de1
static unsigned char cbc_data[40] = {
Packit Service 084de1
    0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,
Packit Service 084de1
    0x4E, 0x6F, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,
Packit Service 084de1
    0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20,
Packit Service 084de1
    0x66, 0x6F, 0x72, 0x20, 0x00, 0x31, 0x00, 0x00,
Packit Service 084de1
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cbc_ok[32] = {
Packit Service 084de1
    0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
Packit Service 084de1
    0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb,
Packit Service 084de1
    0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68,
Packit Service 084de1
    0x1d, 0x26, 0x93, 0x97, 0xf7, 0xfe, 0x62, 0xb4
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
# ifdef SCREW_THE_PARITY
Packit Service 084de1
#  error "SCREW_THE_PARITY is not meant to be defined."
Packit Service 084de1
#  error "Original vectors are preserved for reference only."
Packit Service 084de1
static unsigned char cbc2_key[8] =
Packit Service 084de1
    { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 };
Packit Service 084de1
static unsigned char xcbc_ok[32] = {
Packit Service 084de1
    0x86, 0x74, 0x81, 0x0D, 0x61, 0xA4, 0xA5, 0x48,
Packit Service 084de1
    0xB9, 0x93, 0x03, 0xE1, 0xB8, 0xBB, 0xBD, 0xBD,
Packit Service 084de1
    0x64, 0x30, 0x0B, 0xB9, 0x06, 0x65, 0x81, 0x76,
Packit Service 084de1
    0x04, 0x1D, 0x77, 0x62, 0x17, 0xCA, 0x2B, 0xD2,
Packit Service 084de1
};
Packit Service 084de1
# else
Packit Service 084de1
static unsigned char xcbc_ok[32] = {
Packit Service 084de1
    0x84, 0x6B, 0x29, 0x14, 0x85, 0x1E, 0x9A, 0x29,
Packit Service 084de1
    0x54, 0x73, 0x2F, 0x8A, 0xA0, 0xA6, 0x11, 0xC1,
Packit Service 084de1
    0x15, 0xCD, 0xC2, 0xD7, 0x95, 0x1B, 0x10, 0x53,
Packit Service 084de1
    0xA6, 0x3C, 0x5E, 0x03, 0xB2, 0x1A, 0xA3, 0xC4,
Packit Service 084de1
};
Packit Service 084de1
# endif
Packit Service 084de1
Packit Service 084de1
static unsigned char cbc3_ok[32] = {
Packit Service 084de1
    0x3F, 0xE3, 0x01, 0xC9, 0x62, 0xAC, 0x01, 0xD0,
Packit Service 084de1
    0x22, 0x13, 0x76, 0x3C, 0x1C, 0xBD, 0x4C, 0xDC,
Packit Service 084de1
    0x79, 0x96, 0x57, 0xC0, 0x64, 0xEC, 0xF5, 0xD4,
Packit Service 084de1
    0x1C, 0x67, 0x38, 0x12, 0xCF, 0xDE, 0x96, 0x75
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char pcbc_ok[32] = {
Packit Service 084de1
    0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4,
Packit Service 084de1
    0x6d, 0xec, 0xb4, 0x70, 0xa0, 0xe5, 0x6b, 0x15,
Packit Service 084de1
    0xae, 0xa6, 0xbf, 0x61, 0xed, 0x7d, 0x9c, 0x9f,
Packit Service 084de1
    0xf7, 0x17, 0x46, 0x3b, 0x8a, 0xb3, 0xcc, 0x88
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cfb_key[8] =
Packit Service 084de1
    { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
Packit Service 084de1
static unsigned char cfb_iv[8] =
Packit Service 084de1
    { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef };
Packit Service 084de1
static unsigned char cfb_buf1[40], cfb_buf2[40], cfb_tmp[8];
Packit Service 084de1
static unsigned char plain[24] = {
Packit Service 084de1
    0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73,
Packit Service 084de1
    0x20, 0x74, 0x68, 0x65, 0x20, 0x74,
Packit Service 084de1
    0x69, 0x6d, 0x65, 0x20, 0x66, 0x6f,
Packit Service 084de1
    0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cfb_cipher8[24] = {
Packit Service 084de1
    0xf3, 0x1f, 0xda, 0x07, 0x01, 0x14, 0x62, 0xee, 0x18, 0x7f, 0x43, 0xd8,
Packit Service 084de1
    0x0a, 0x7c, 0xd9, 0xb5, 0xb0, 0xd2, 0x90, 0xda, 0x6e, 0x5b, 0x9a, 0x87
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cfb_cipher16[24] = {
Packit Service 084de1
    0xF3, 0x09, 0x87, 0x87, 0x7F, 0x57, 0xF7, 0x3C, 0x36, 0xB6, 0xDB, 0x70,
Packit Service 084de1
    0xD8, 0xD5, 0x34, 0x19, 0xD3, 0x86, 0xB2, 0x23, 0xB7, 0xB2, 0xAD, 0x1B
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cfb_cipher32[24] = {
Packit Service 084de1
    0xF3, 0x09, 0x62, 0x49, 0xA4, 0xDF, 0xA4, 0x9F, 0x33, 0xDC, 0x7B, 0xAD,
Packit Service 084de1
    0x4C, 0xC8, 0x9F, 0x64, 0xE4, 0x53, 0xE5, 0xEC, 0x67, 0x20, 0xDA, 0xB6
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cfb_cipher48[24] = {
Packit Service 084de1
    0xF3, 0x09, 0x62, 0x49, 0xC7, 0xF4, 0x30, 0xB5, 0x15, 0xEC, 0xBB, 0x85,
Packit Service 084de1
    0x97, 0x5A, 0x13, 0x8C, 0x68, 0x60, 0xE2, 0x38, 0x34, 0x3C, 0xDC, 0x1F
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char cfb_cipher64[24] = {
Packit Service 084de1
    0xF3, 0x09, 0x62, 0x49, 0xC7, 0xF4, 0x6E, 0x51, 0xA6, 0x9E, 0x83, 0x9B,
Packit Service 084de1
    0x1A, 0x92, 0xF7, 0x84, 0x03, 0x46, 0x71, 0x33, 0x89, 0x8E, 0xA6, 0x22
Packit Service 084de1
};
Packit Service 084de1
Packit Service 084de1
static unsigned char ofb_key[8] =
Packit Service 084de1
    { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
Packit Service 084de1
static unsigned char ofb_iv[8] =
Packit Service 084de1
    { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef };
Packit Service 084de1
static unsigned char ofb_buf1[24], ofb_buf2[24], ofb_tmp[8];
Packit Service 084de1
static unsigned char ofb_cipher[24] = {
Packit Service 084de1
    0xf3, 0x09, 0x62, 0x49, 0xc7, 0xf4, 0x6e, 0x51,
Packit Service 084de1
    0x35, 0xf2, 0x4a, 0x24, 0x2e, 0xeb, 0x3d, 0x3f,
Packit Service 084de1
    0x3d, 0x6d, 0x5b, 0xe3, 0x25, 0x5a, 0xf8, 0xc3
Packit Service 084de1
};
Packit Service 084de1
static DES_LONG cbc_cksum_ret = 0xF7FE62B4L;
Packit Service 084de1
static unsigned char cbc_cksum_data[8] =
Packit Service 084de1
    { 0x1D, 0x26, 0x93, 0x97, 0xf7, 0xfe, 0x62, 0xb4 };
Packit Service 084de1
Packit Service 084de1
static char *pt(const unsigned char *p, char buf[DATA_BUF_SIZE])
Packit Service 084de1
{
Packit Service 084de1
    char *ret;
Packit Service 084de1
    int i;
Packit Service 084de1
    static char *f = "0123456789ABCDEF";
Packit Service 084de1
Packit Service 084de1
    ret = &(buf[0]);
Packit Service 084de1
    for (i = 0; i < 8; i++) {
Packit Service 084de1
        ret[i * 2] = f[(p[i] >> 4) & 0xf];
Packit Service 084de1
        ret[i * 2 + 1] = f[p[i] & 0xf];
Packit Service 084de1
    }
Packit Service 084de1
    ret[16] = '\0';
Packit Service 084de1
    return ret;
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_ecb(int i)
Packit Service 084de1
{
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    DES_cblock in, out, outin;
Packit Service 084de1
    char b1[DATA_BUF_SIZE], b2[DATA_BUF_SIZE];
Packit Service 084de1
Packit Service 084de1
    DES_set_key_unchecked(&key_data[i], &ks);
Packit Service 084de1
    memcpy(in, plain_data[i], 8);
Packit Service 084de1
    memset(out, 0, 8);
Packit Service 084de1
    memset(outin, 0, 8);
Packit Service 084de1
    DES_ecb_encrypt(&in, &out, &ks, DES_ENCRYPT);
Packit Service 084de1
    DES_ecb_encrypt(&out, &outin, &ks, DES_DECRYPT);
Packit Service 084de1
Packit Service 084de1
    if (!TEST_mem_eq(out, 8, cipher_data[i], 8)) {
Packit Service 084de1
        TEST_info("Encryption error %2d k=%s p=%s", i + 1,
Packit Service 084de1
                  pt(key_data[i], b1), pt(in, b2));
Packit Service 084de1
        return 0;
Packit Service 084de1
    }
Packit Service 084de1
    if (!TEST_mem_eq(in, 8, outin, 8)) {
Packit Service 084de1
        TEST_info("Decryption error %2d k=%s p=%s", i + 1,
Packit Service 084de1
                  pt(key_data[i], b1), pt(out, b2));
Packit Service 084de1
        return 0;
Packit Service 084de1
    }
Packit Service 084de1
    return 1;
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_ede_ecb(int i)
Packit Service 084de1
{
Packit Service 084de1
    DES_cblock in, out, outin;
Packit Service 084de1
    DES_key_schedule ks, ks2, ks3;
Packit Service 084de1
    char b1[DATA_BUF_SIZE], b2[DATA_BUF_SIZE];
Packit Service 084de1
Packit Service 084de1
    DES_set_key_unchecked(&key_data[i], &ks);
Packit Service 084de1
    DES_set_key_unchecked(&key_data[i + 1], &ks2;;
Packit Service 084de1
    DES_set_key_unchecked(&key_data[i + 2], &ks3;;
Packit Service 084de1
    memcpy(in, plain_data[i], 8);
Packit Service 084de1
    memset(out, 0, 8);
Packit Service 084de1
    memset(outin, 0, 8);
Packit Service 084de1
    DES_ecb3_encrypt(&in, &out, &ks, &ks2, &ks, DES_ENCRYPT);
Packit Service 084de1
    DES_ecb3_encrypt(&out, &outin, &ks, &ks2, &ks, DES_DECRYPT);
Packit Service 084de1
Packit Service 084de1
    if (!TEST_mem_eq(out, 8, cipher_ecb2[i], 8)) {
Packit Service 084de1
        TEST_info("Encryption error %2d k=%s p=%s", i + 1,
Packit Service 084de1
                  pt(key_data[i], b1), pt(in, b2));
Packit Service 084de1
        return 0;
Packit Service 084de1
    }
Packit Service 084de1
    if (!TEST_mem_eq(in, 8, outin, 8)) {
Packit Service 084de1
        TEST_info("Decryption error %2d k=%s p=%s ", i + 1,
Packit Service 084de1
                  pt(key_data[i], b1), pt(out, b2));
Packit Service 084de1
        return 0;
Packit Service 084de1
    }
Packit Service 084de1
    return 1;
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_cbc(void)
Packit Service 084de1
{
Packit Service 084de1
    unsigned char cbc_in[40];
Packit Service 084de1
    unsigned char cbc_out[40];
Packit Service 084de1
    DES_cblock iv3;
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    const size_t cbc_data_len = strlen((char *)cbc_data);
Packit Service 084de1
Packit Service 084de1
    if (!TEST_int_eq(DES_set_key_checked(&cbc_key, &ks), 0))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memset(cbc_out, 0, sizeof(cbc_out));
Packit Service 084de1
    memset(cbc_in, 0, sizeof(cbc_in));
Packit Service 084de1
    memcpy(iv3, cbc_iv, sizeof(cbc_iv));
Packit Service 084de1
    DES_ncbc_encrypt(cbc_data, cbc_out, cbc_data_len + 1, &ks,
Packit Service 084de1
                     &iv3, DES_ENCRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(cbc_out, 32, cbc_ok, 32))
Packit Service 084de1
        return 0;
Packit Service 084de1
Packit Service 084de1
    memcpy(iv3, cbc_iv, sizeof(cbc_iv));
Packit Service 084de1
    DES_ncbc_encrypt(cbc_out, cbc_in, cbc_data_len + 1, &ks,
Packit Service 084de1
                     &iv3, DES_DECRYPT);
Packit Service 084de1
    return TEST_mem_eq(cbc_in, cbc_data_len, cbc_data, cbc_data_len);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_ede_cbc(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_cblock iv3;
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    unsigned char cbc_in[40];
Packit Service 084de1
    unsigned char cbc_out[40];
Packit Service 084de1
    const size_t n = strlen((char *)cbc_data) + 1;
Packit Service 084de1
Packit Service 084de1
    if (!TEST_int_eq(DES_set_key_checked(&cbc_key, &ks), 0))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memset(cbc_out, 0, sizeof(cbc_out));
Packit Service 084de1
    memset(cbc_in, 0, sizeof(cbc_in));
Packit Service 084de1
    memcpy(iv3, cbc_iv, sizeof(cbc_iv));
Packit Service 084de1
    DES_xcbc_encrypt(cbc_data, cbc_out, n, &ks, &iv3, &cbc2_key, &cbc3_key,
Packit Service 084de1
                     DES_ENCRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(cbc_out, sizeof(xcbc_ok), xcbc_ok, sizeof(xcbc_ok)))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memcpy(iv3, cbc_iv, sizeof(cbc_iv));
Packit Service 084de1
    DES_xcbc_encrypt(cbc_out, cbc_in, n, &ks, &iv3, &cbc2_key, &cbc3_key,
Packit Service 084de1
                     DES_DECRYPT);
Packit Service 084de1
    return TEST_mem_eq(cbc_data, n, cbc_data, n);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_ede_cbc(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_cblock iv3;
Packit Service 084de1
    DES_key_schedule ks, ks2, ks3;
Packit Service 084de1
    unsigned char cbc_in[40];
Packit Service 084de1
    unsigned char cbc_out[40];
Packit Service 084de1
    const size_t i = strlen((char *)cbc_data) + 1;
Packit Service 084de1
    const size_t n = (i + 7) / 8 * 8;
Packit Service 084de1
Packit Service 084de1
    if (!TEST_int_eq(DES_set_key_checked(&cbc_key, &ks), 0))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_int_eq(DES_set_key_checked(&cbc2_key, &ks2), 0))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_int_eq(DES_set_key_checked(&cbc3_key, &ks3), 0))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memset(cbc_out, 0, sizeof(cbc_out));
Packit Service 084de1
    memset(cbc_in, 0, sizeof(cbc_in));
Packit Service 084de1
    memcpy(iv3, cbc_iv, sizeof(cbc_iv));
Packit Service 084de1
Packit Service 084de1
    DES_ede3_cbc_encrypt(cbc_data, cbc_out, 16L, &ks, &ks2, &ks3, &iv3,
Packit Service 084de1
                         DES_ENCRYPT);
Packit Service 084de1
    DES_ede3_cbc_encrypt(&cbc_data[16], &cbc_out[16], i - 16, &ks, &ks2,
Packit Service 084de1
                         &ks3, &iv3, DES_ENCRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(cbc_out, n, cbc3_ok, n))
Packit Service 084de1
        return 0;
Packit Service 084de1
Packit Service 084de1
    memcpy(iv3, cbc_iv, sizeof(cbc_iv));
Packit Service 084de1
    DES_ede3_cbc_encrypt(cbc_out, cbc_in, i, &ks, &ks2, &ks3, &iv3,
Packit Service 084de1
                         DES_DECRYPT);
Packit Service 084de1
    return TEST_mem_eq(cbc_in, i, cbc_data, i);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_input_align(int i)
Packit Service 084de1
{
Packit Service 084de1
    unsigned char cbc_out[40];
Packit Service 084de1
    DES_cblock iv;
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    const size_t n = strlen(i + (char *)cbc_data) + 1;
Packit Service 084de1
Packit Service 084de1
    memset(cbc_out, 0, sizeof(cbc_out));
Packit Service 084de1
    memcpy(iv, cbc_iv, sizeof(cbc_iv));
Packit Service 084de1
    if (!TEST_int_eq(DES_set_key_checked(&cbc_key, &ks), 0))
Packit Service 084de1
        return 0;
Packit Service 084de1
    DES_ncbc_encrypt(&cbc_data[i], cbc_out, n, &ks, &iv, DES_ENCRYPT);
Packit Service 084de1
    return 1;
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_output_align(int i)
Packit Service 084de1
{
Packit Service 084de1
    unsigned char cbc_out[40];
Packit Service 084de1
    DES_cblock iv;
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    const size_t n = strlen((char *)cbc_data) + 1;
Packit Service 084de1
Packit Service 084de1
    memset(cbc_out, 0, sizeof(cbc_out));
Packit Service 084de1
    memcpy(iv, cbc_iv, sizeof(cbc_iv));
Packit Service 084de1
    if (!TEST_int_eq(DES_set_key_checked(&cbc_key, &ks), 0))
Packit Service 084de1
        return 0;
Packit Service 084de1
    DES_ncbc_encrypt(cbc_data, &cbc_out[i], n, &ks, &iv, DES_ENCRYPT);
Packit Service 084de1
    return 1;
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_crypt(void)
Packit Service 084de1
{
Packit Service 084de1
    if (!TEST_str_eq("efGnQx2725bI2", DES_crypt("testing", "ef")))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_str_eq("yA1Rp/1hZXIJk", DES_crypt("bca76;23", "yA")))
Packit Service 084de1
        return 0;
Packit Service 084de1
Packit Service 084de1
    if (!TEST_ptr_null(DES_crypt("testing", "y\202")))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_ptr_null(DES_crypt("testing", "\0A")))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_ptr_null(DES_crypt("testing", "A")))
Packit Service 084de1
        return 0;
Packit Service 084de1
    return 1;
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_pcbc(void)
Packit Service 084de1
{
Packit Service 084de1
    unsigned char cbc_in[40];
Packit Service 084de1
    unsigned char cbc_out[40];
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    const int n = strlen((char *)cbc_data) + 1;
Packit Service 084de1
Packit Service 084de1
    if (!TEST_int_eq(DES_set_key_checked(&cbc_key, &ks), 0))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memset(cbc_out, 0, sizeof(cbc_out));
Packit Service 084de1
    memset(cbc_in, 0, sizeof(cbc_in));
Packit Service 084de1
    DES_pcbc_encrypt(cbc_data, cbc_out, n, &ks,
Packit Service 084de1
                     &cbc_iv, DES_ENCRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(cbc_out, sizeof(pcbc_ok), pcbc_ok, sizeof(pcbc_ok)))
Packit Service 084de1
        return 0;
Packit Service 084de1
    DES_pcbc_encrypt(cbc_out, cbc_in, n, &ks,
Packit Service 084de1
                     &cbc_iv, DES_DECRYPT);
Packit Service 084de1
    return TEST_mem_eq(cbc_in, n, cbc_data, n);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int cfb_test(int bits, unsigned char *cfb_cipher)
Packit Service 084de1
{
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
Packit Service 084de1
    DES_set_key_checked(&cfb_key, &ks);
Packit Service 084de1
    memcpy(cfb_tmp, cfb_iv, sizeof(cfb_iv));
Packit Service 084de1
    DES_cfb_encrypt(plain, cfb_buf1, bits, sizeof(plain), &ks, &cfb_tmp,
Packit Service 084de1
                    DES_ENCRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(cfb_cipher, sizeof(plain), cfb_buf1, sizeof(plain)))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memcpy(cfb_tmp, cfb_iv, sizeof(cfb_iv));
Packit Service 084de1
    DES_cfb_encrypt(cfb_buf1, cfb_buf2, bits, sizeof(plain), &ks, &cfb_tmp,
Packit Service 084de1
                    DES_DECRYPT);
Packit Service 084de1
    return TEST_mem_eq(plain, sizeof(plain), cfb_buf2, sizeof(plain));
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_cfb8(void)
Packit Service 084de1
{
Packit Service 084de1
    return cfb_test(8, cfb_cipher8);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_cfb16(void)
Packit Service 084de1
{
Packit Service 084de1
    return cfb_test(16, cfb_cipher16);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_cfb32(void)
Packit Service 084de1
{
Packit Service 084de1
    return cfb_test(32, cfb_cipher32);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_cfb48(void)
Packit Service 084de1
{
Packit Service 084de1
    return cfb_test(48, cfb_cipher48);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_cfb64(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    int n;
Packit Service 084de1
    size_t i;
Packit Service 084de1
Packit Service 084de1
    if (!cfb_test(64, cfb_cipher64))
Packit Service 084de1
        return 0;
Packit Service 084de1
Packit Service 084de1
    DES_set_key_checked(&cfb_key, &ks);
Packit Service 084de1
    memcpy(cfb_tmp, cfb_iv, sizeof(cfb_iv));
Packit Service 084de1
    n = 0;
Packit Service 084de1
    DES_cfb64_encrypt(plain, cfb_buf1, 12, &ks, &cfb_tmp, &n, DES_ENCRYPT);
Packit Service 084de1
    DES_cfb64_encrypt(&plain[12], &cfb_buf1[12], sizeof(plain) - 12, &ks,
Packit Service 084de1
                      &cfb_tmp, &n, DES_ENCRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(cfb_cipher64, sizeof(plain), cfb_buf1, sizeof(plain)))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memcpy(cfb_tmp, cfb_iv, sizeof(cfb_iv));
Packit Service 084de1
    n = 0;
Packit Service 084de1
    DES_cfb64_encrypt(cfb_buf1, cfb_buf2, 17, &ks, &cfb_tmp, &n, DES_DECRYPT);
Packit Service 084de1
    DES_cfb64_encrypt(&cfb_buf1[17], &cfb_buf2[17],
Packit Service 084de1
                      sizeof(plain) - 17, &ks, &cfb_tmp, &n, DES_DECRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(plain, sizeof(plain), cfb_buf2, sizeof(plain)))
Packit Service 084de1
        return 0;
Packit Service 084de1
Packit Service 084de1
    memcpy(cfb_tmp, cfb_iv, sizeof(cfb_iv));
Packit Service 084de1
    for (i = 0; i < sizeof(plain); i++)
Packit Service 084de1
        DES_cfb_encrypt(&plain[i], &cfb_buf1[i], 8, 1, &ks, &cfb_tmp,
Packit Service 084de1
                        DES_ENCRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(cfb_cipher8, sizeof(plain), cfb_buf1, sizeof(plain)))
Packit Service 084de1
        return 0;
Packit Service 084de1
Packit Service 084de1
    memcpy(cfb_tmp, cfb_iv, sizeof(cfb_iv));
Packit Service 084de1
    for (i = 0; i < sizeof(plain); i++)
Packit Service 084de1
        DES_cfb_encrypt(&cfb_buf1[i], &cfb_buf2[i], 8, 1, &ks, &cfb_tmp,
Packit Service 084de1
                        DES_DECRYPT);
Packit Service 084de1
    return TEST_mem_eq(plain, sizeof(plain), cfb_buf2, sizeof(plain));
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_ede_cfb64(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    int n;
Packit Service 084de1
Packit Service 084de1
    DES_set_key_checked(&cfb_key, &ks);
Packit Service 084de1
    memcpy(cfb_tmp, cfb_iv, sizeof(cfb_iv));
Packit Service 084de1
    n = 0;
Packit Service 084de1
    DES_ede3_cfb64_encrypt(plain, cfb_buf1, 12, &ks, &ks, &ks, &cfb_tmp, &n,
Packit Service 084de1
                           DES_ENCRYPT);
Packit Service 084de1
    DES_ede3_cfb64_encrypt(&plain[12], &cfb_buf1[12], sizeof(plain) - 12, &ks,
Packit Service 084de1
                           &ks, &ks, &cfb_tmp, &n, DES_ENCRYPT);
Packit Service 084de1
    if (!TEST_mem_eq(cfb_cipher64, sizeof(plain), cfb_buf1, sizeof(plain)))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memcpy(cfb_tmp, cfb_iv, sizeof(cfb_iv));
Packit Service 084de1
    n = 0;
Packit Service 084de1
    DES_ede3_cfb64_encrypt(cfb_buf1, cfb_buf2, (long)17, &ks, &ks, &ks,
Packit Service 084de1
                           &cfb_tmp, &n, DES_DECRYPT);
Packit Service 084de1
    DES_ede3_cfb64_encrypt(&cfb_buf1[17], &cfb_buf2[17], sizeof(plain) - 17,
Packit Service 084de1
                           &ks, &ks, &ks, &cfb_tmp, &n, DES_DECRYPT);
Packit Service 084de1
    return TEST_mem_eq(plain, sizeof(plain), cfb_buf2, sizeof(plain));
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_ofb(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
Packit Service 084de1
    DES_set_key_checked(&ofb_key, &ks);
Packit Service 084de1
    memcpy(ofb_tmp, ofb_iv, sizeof(ofb_iv));
Packit Service 084de1
    DES_ofb_encrypt(plain, ofb_buf1, 64, sizeof(plain) / 8, &ks, &ofb_tmp);
Packit Service 084de1
    if (!TEST_mem_eq(ofb_cipher, sizeof(ofb_buf1), ofb_buf1, sizeof(ofb_buf1)))
Packit Service 084de1
        return 0;
Packit Service 084de1
Packit Service 084de1
    memcpy(ofb_tmp, ofb_iv, sizeof(ofb_iv));
Packit Service 084de1
    DES_ofb_encrypt(ofb_buf1, ofb_buf2, 64, sizeof(ofb_buf1) / 8, &ks,
Packit Service 084de1
                    &ofb_tmp);
Packit Service 084de1
    return TEST_mem_eq(plain, sizeof(ofb_buf2), ofb_buf2, sizeof(ofb_buf2));
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_ofb64(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    int num;
Packit Service 084de1
    size_t i;
Packit Service 084de1
Packit Service 084de1
    DES_set_key_checked(&ofb_key, &ks);
Packit Service 084de1
    memcpy(ofb_tmp, ofb_iv, sizeof(ofb_iv));
Packit Service 084de1
    memset(ofb_buf1, 0, sizeof(ofb_buf1));
Packit Service 084de1
    memset(ofb_buf2, 0, sizeof(ofb_buf1));
Packit Service 084de1
    num = 0;
Packit Service 084de1
    for (i = 0; i < sizeof(plain); i++) {
Packit Service 084de1
        DES_ofb64_encrypt(&plain[i], &ofb_buf1[i], 1, &ks, &ofb_tmp, &num);
Packit Service 084de1
    }
Packit Service 084de1
    if (!TEST_mem_eq(ofb_cipher, sizeof(ofb_buf1), ofb_buf1, sizeof(ofb_buf1)))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memcpy(ofb_tmp, ofb_iv, sizeof(ofb_iv));
Packit Service 084de1
    num = 0;
Packit Service 084de1
    DES_ofb64_encrypt(ofb_buf1, ofb_buf2, sizeof(ofb_buf1), &ks, &ofb_tmp,
Packit Service 084de1
                      &num);
Packit Service 084de1
    return TEST_mem_eq(plain, sizeof(ofb_buf2), ofb_buf2, sizeof(ofb_buf2));
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_ede_ofb64(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    int num;
Packit Service 084de1
    size_t i;
Packit Service 084de1
Packit Service 084de1
    DES_set_key_checked(&ofb_key, &ks);
Packit Service 084de1
    memcpy(ofb_tmp, ofb_iv, sizeof(ofb_iv));
Packit Service 084de1
    memset(ofb_buf1, 0, sizeof(ofb_buf1));
Packit Service 084de1
    memset(ofb_buf2, 0, sizeof(ofb_buf1));
Packit Service 084de1
    num = 0;
Packit Service 084de1
    for (i = 0; i < sizeof(plain); i++) {
Packit Service 084de1
        DES_ede3_ofb64_encrypt(&plain[i], &ofb_buf1[i], 1, &ks, &ks,
Packit Service 084de1
                               &ks, &ofb_tmp, &num);
Packit Service 084de1
    }
Packit Service 084de1
    if (!TEST_mem_eq(ofb_cipher, sizeof(ofb_buf1), ofb_buf1, sizeof(ofb_buf1)))
Packit Service 084de1
        return 0;
Packit Service 084de1
    memcpy(ofb_tmp, ofb_iv, sizeof(ofb_iv));
Packit Service 084de1
    num = 0;
Packit Service 084de1
    DES_ede3_ofb64_encrypt(ofb_buf1, ofb_buf2, sizeof(ofb_buf1), &ks, &ks, &ks,
Packit Service 084de1
                           &ofb_tmp, &num);
Packit Service 084de1
    return TEST_mem_eq(plain, sizeof(ofb_buf2), ofb_buf2, sizeof(ofb_buf2));
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_cbc_cksum(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_LONG cs;
Packit Service 084de1
    DES_key_schedule ks;
Packit Service 084de1
    unsigned char cret[8];
Packit Service 084de1
Packit Service 084de1
    DES_set_key_checked(&cbc_key, &ks);
Packit Service 084de1
    cs = DES_cbc_cksum(cbc_data, &cret, strlen((char *)cbc_data), &ks,
Packit Service 084de1
                       &cbc_iv);
Packit Service 084de1
    if (!TEST_cs_eq(cs, cbc_cksum_ret))
Packit Service 084de1
        return 0;
Packit Service 084de1
    return TEST_mem_eq(cret, 8, cbc_cksum_data, 8);
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
static int test_des_quad_cksum(void)
Packit Service 084de1
{
Packit Service 084de1
    DES_LONG cs, lqret[4];
Packit Service 084de1
Packit Service 084de1
    cs = DES_quad_cksum(cbc_data, (DES_cblock *)lqret,
Packit Service 084de1
                        (long)strlen((char *)cbc_data), 2,
Packit Service 084de1
                        (DES_cblock *)cbc_iv);
Packit Service 084de1
    if (!TEST_cs_eq(cs, 0x70d7a63aL))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_cs_eq(lqret[0], 0x327eba8dL))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_cs_eq(lqret[1], 0x201a49ccL))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_cs_eq(lqret[2], 0x70d7a63aL))
Packit Service 084de1
        return 0;
Packit Service 084de1
    if (!TEST_cs_eq(lqret[3], 0x501c2c26L))
Packit Service 084de1
        return 0;
Packit Service 084de1
    return 1;
Packit Service 084de1
}
Packit Service 084de1
#endif
Packit Service 084de1
Packit Service 084de1
int setup_tests(void)
Packit Service 084de1
{
Packit Service 084de1
#ifndef OPENSSL_NO_DES
Packit Service 084de1
    ADD_ALL_TESTS(test_des_ecb, NUM_TESTS);
Packit Service 084de1
    ADD_TEST(test_des_cbc);
Packit Service 084de1
    ADD_TEST(test_ede_cbc);
Packit Service 084de1
    ADD_ALL_TESTS(test_des_ede_ecb, NUM_TESTS - 2);
Packit Service 084de1
    ADD_TEST(test_des_ede_cbc);
Packit Service 084de1
    ADD_TEST(test_des_pcbc);
Packit Service 084de1
    ADD_TEST(test_des_cfb8);
Packit Service 084de1
    ADD_TEST(test_des_cfb16);
Packit Service 084de1
    ADD_TEST(test_des_cfb32);
Packit Service 084de1
    ADD_TEST(test_des_cfb48);
Packit Service 084de1
    ADD_TEST(test_des_cfb64);
Packit Service 084de1
    ADD_TEST(test_des_ede_cfb64);
Packit Service 084de1
    ADD_TEST(test_des_ofb);
Packit Service 084de1
    ADD_TEST(test_des_ofb64);
Packit Service 084de1
    ADD_TEST(test_des_ede_ofb64);
Packit Service 084de1
    ADD_TEST(test_des_cbc_cksum);
Packit Service 084de1
    ADD_TEST(test_des_quad_cksum);
Packit Service 084de1
    ADD_TEST(test_des_crypt);
Packit Service 084de1
    ADD_ALL_TESTS(test_input_align, 4);
Packit Service 084de1
    ADD_ALL_TESTS(test_output_align, 4);
Packit Service 084de1
#endif
Packit Service 084de1
    return 1;
Packit Service 084de1
}