1*0a6a1f1dSLionel Sambuc /* $NetBSD: des.h,v 1.1.1.3 2014/04/24 12:45:30 pettai Exp $ */ 2ebfedea0SLionel Sambuc 3ebfedea0SLionel Sambuc /* 4ebfedea0SLionel Sambuc * Copyright (c) 2005 Kungliga Tekniska Högskolan 5ebfedea0SLionel Sambuc * (Royal Institute of Technology, Stockholm, Sweden). 6ebfedea0SLionel Sambuc * All rights reserved. 7ebfedea0SLionel Sambuc * 8ebfedea0SLionel Sambuc * Redistribution and use in source and binary forms, with or without 9ebfedea0SLionel Sambuc * modification, are permitted provided that the following conditions 10ebfedea0SLionel Sambuc * are met: 11ebfedea0SLionel Sambuc * 12ebfedea0SLionel Sambuc * 1. Redistributions of source code must retain the above copyright 13ebfedea0SLionel Sambuc * notice, this list of conditions and the following disclaimer. 14ebfedea0SLionel Sambuc * 15ebfedea0SLionel Sambuc * 2. Redistributions in binary form must reproduce the above copyright 16ebfedea0SLionel Sambuc * notice, this list of conditions and the following disclaimer in the 17ebfedea0SLionel Sambuc * documentation and/or other materials provided with the distribution. 18ebfedea0SLionel Sambuc * 19ebfedea0SLionel Sambuc * 3. Neither the name of the Institute nor the names of its contributors 20ebfedea0SLionel Sambuc * may be used to endorse or promote products derived from this software 21ebfedea0SLionel Sambuc * without specific prior written permission. 22ebfedea0SLionel Sambuc * 23ebfedea0SLionel Sambuc * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 24ebfedea0SLionel Sambuc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25ebfedea0SLionel Sambuc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26ebfedea0SLionel Sambuc * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 27ebfedea0SLionel Sambuc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28ebfedea0SLionel Sambuc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29ebfedea0SLionel Sambuc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30ebfedea0SLionel Sambuc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31ebfedea0SLionel Sambuc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32ebfedea0SLionel Sambuc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33ebfedea0SLionel Sambuc * SUCH DAMAGE. 34ebfedea0SLionel Sambuc */ 35ebfedea0SLionel Sambuc 36ebfedea0SLionel Sambuc /* Id */ 37ebfedea0SLionel Sambuc 38ebfedea0SLionel Sambuc #ifndef _DESperate_H 39ebfedea0SLionel Sambuc #define _DESperate_H 1 40ebfedea0SLionel Sambuc 41ebfedea0SLionel Sambuc /* symbol renaming */ 42ebfedea0SLionel Sambuc #define _DES_ipfp_test _hc_DES_ipfp_test 43ebfedea0SLionel Sambuc #define DES_cbc_cksum hc_DES_cbc_cksum 44ebfedea0SLionel Sambuc #define DES_cbc_encrypt hc_DES_cbc_encrypt 45ebfedea0SLionel Sambuc #define DES_cfb64_encrypt hc_DES_cfb64_encrypt 46ebfedea0SLionel Sambuc #define DES_check_key_parity hc_DES_check_key_parity 47ebfedea0SLionel Sambuc #define DES_ecb3_encrypt hc_DES_ecb3_encrypt 48ebfedea0SLionel Sambuc #define DES_ecb_encrypt hc_DES_ecb_encrypt 49ebfedea0SLionel Sambuc #define DES_ede3_cbc_encrypt hc_DES_ede3_cbc_encrypt 50ebfedea0SLionel Sambuc #define DES_encrypt hc_DES_encrypt 51ebfedea0SLionel Sambuc #define DES_generate_random_block hc_DES_generate_random_block 52ebfedea0SLionel Sambuc #define DES_init_random_number_generator hc_DES_init_random_number_generator 53ebfedea0SLionel Sambuc #define DES_is_weak_key hc_DES_is_weak_key 54ebfedea0SLionel Sambuc #define DES_key_sched hc_DES_key_sched 55ebfedea0SLionel Sambuc #define DES_new_random_key hc_DES_new_random_key 56ebfedea0SLionel Sambuc #define DES_pcbc_encrypt hc_DES_pcbc_encrypt 57ebfedea0SLionel Sambuc #define DES_rand_data hc_DES_rand_data 58ebfedea0SLionel Sambuc #define DES_random_key hc_DES_random_key 59ebfedea0SLionel Sambuc #define DES_read_password hc_DES_read_password 60ebfedea0SLionel Sambuc #define DES_set_key hc_DES_set_key 61ebfedea0SLionel Sambuc #define DES_set_key_checked hc_DES_set_key_checked 62ebfedea0SLionel Sambuc #define DES_set_key_unchecked hc_DES_set_key_unchecked 63ebfedea0SLionel Sambuc #define DES_set_key_sched hc_DES_set_key_sched 64ebfedea0SLionel Sambuc #define DES_set_odd_parity hc_DES_set_odd_parity 65ebfedea0SLionel Sambuc #define DES_set_random_generator_seed hc_DES_set_random_generator_seed 66ebfedea0SLionel Sambuc #define DES_set_sequence_number hc_DES_set_sequence_number 67ebfedea0SLionel Sambuc #define DES_string_to_key hc_DES_string_to_key 68ebfedea0SLionel Sambuc 69ebfedea0SLionel Sambuc /* 70ebfedea0SLionel Sambuc * 71ebfedea0SLionel Sambuc */ 72ebfedea0SLionel Sambuc 73ebfedea0SLionel Sambuc #define DES_CBLOCK_LEN 8 74ebfedea0SLionel Sambuc #define DES_KEY_SZ 8 75ebfedea0SLionel Sambuc 76ebfedea0SLionel Sambuc #define DES_ENCRYPT 1 77ebfedea0SLionel Sambuc #define DES_DECRYPT 0 78ebfedea0SLionel Sambuc 79ebfedea0SLionel Sambuc typedef unsigned char DES_cblock[DES_CBLOCK_LEN]; 80ebfedea0SLionel Sambuc typedef struct DES_key_schedule 81ebfedea0SLionel Sambuc { 82ebfedea0SLionel Sambuc uint32_t ks[32]; 83ebfedea0SLionel Sambuc } DES_key_schedule; 84ebfedea0SLionel Sambuc 85ebfedea0SLionel Sambuc /* 86ebfedea0SLionel Sambuc * 87ebfedea0SLionel Sambuc */ 88ebfedea0SLionel Sambuc 89ebfedea0SLionel Sambuc #ifndef HC_DEPRECATED 90ebfedea0SLionel Sambuc #if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1 ))) 91ebfedea0SLionel Sambuc #define HC_DEPRECATED __attribute__((deprecated)) 92ebfedea0SLionel Sambuc #elif defined(_MSC_VER) && (_MSC_VER>1200) 93ebfedea0SLionel Sambuc #define HC_DEPRECATED __declspec(deprecated) 94ebfedea0SLionel Sambuc #else 95ebfedea0SLionel Sambuc #define HC_DEPRECATED 96ebfedea0SLionel Sambuc #endif 97ebfedea0SLionel Sambuc #endif 98ebfedea0SLionel Sambuc 99ebfedea0SLionel Sambuc #ifdef __cplusplus 100ebfedea0SLionel Sambuc extern "C" { 101ebfedea0SLionel Sambuc #endif 102ebfedea0SLionel Sambuc 103ebfedea0SLionel Sambuc void DES_set_odd_parity(DES_cblock *); 104ebfedea0SLionel Sambuc int DES_check_key_parity(DES_cblock *); 105ebfedea0SLionel Sambuc int DES_is_weak_key(DES_cblock *); 106ebfedea0SLionel Sambuc int HC_DEPRECATED DES_set_key(DES_cblock *, DES_key_schedule *); 107ebfedea0SLionel Sambuc int DES_set_key_checked(DES_cblock *, DES_key_schedule *); 108ebfedea0SLionel Sambuc int DES_set_key_unchecked(DES_cblock *, DES_key_schedule *); 109ebfedea0SLionel Sambuc int DES_key_sched(DES_cblock *, DES_key_schedule *); 110ebfedea0SLionel Sambuc void DES_string_to_key(const char *, DES_cblock *); 111ebfedea0SLionel Sambuc int DES_read_password(DES_cblock *, char *, int); 112ebfedea0SLionel Sambuc 113ebfedea0SLionel Sambuc void HC_DEPRECATED DES_rand_data(void *, int); 114ebfedea0SLionel Sambuc void HC_DEPRECATED DES_set_random_generator_seed(DES_cblock *); 115ebfedea0SLionel Sambuc void HC_DEPRECATED DES_generate_random_block(DES_cblock *); 116ebfedea0SLionel Sambuc void HC_DEPRECATED DES_set_sequence_number(void *); 117ebfedea0SLionel Sambuc void HC_DEPRECATED DES_init_random_number_generator(DES_cblock *); 118ebfedea0SLionel Sambuc void HC_DEPRECATED DES_random_key(DES_cblock *); 119ebfedea0SLionel Sambuc int HC_DEPRECATED DES_new_random_key(DES_cblock *); 120ebfedea0SLionel Sambuc 121ebfedea0SLionel Sambuc 122ebfedea0SLionel Sambuc void DES_encrypt(uint32_t [2], DES_key_schedule *, int); 123ebfedea0SLionel Sambuc void DES_ecb_encrypt(DES_cblock *, DES_cblock *, DES_key_schedule *, int); 124ebfedea0SLionel Sambuc void DES_ecb3_encrypt(DES_cblock *,DES_cblock *, DES_key_schedule *, 125ebfedea0SLionel Sambuc DES_key_schedule *, DES_key_schedule *, int); 126ebfedea0SLionel Sambuc void DES_pcbc_encrypt(const void *, void *, long, 127ebfedea0SLionel Sambuc DES_key_schedule *, DES_cblock *, int); 128ebfedea0SLionel Sambuc void DES_cbc_encrypt(const void *, void *, long, 129ebfedea0SLionel Sambuc DES_key_schedule *, DES_cblock *, int); 130ebfedea0SLionel Sambuc void DES_ede3_cbc_encrypt(const void *, void *, long, 131ebfedea0SLionel Sambuc DES_key_schedule *, DES_key_schedule *, 132ebfedea0SLionel Sambuc DES_key_schedule *, DES_cblock *, int); 133ebfedea0SLionel Sambuc void DES_cfb64_encrypt(const void *, void *, long, 134ebfedea0SLionel Sambuc DES_key_schedule *, DES_cblock *, int *, int); 135ebfedea0SLionel Sambuc 136ebfedea0SLionel Sambuc 137ebfedea0SLionel Sambuc uint32_t DES_cbc_cksum(const void *, DES_cblock *, 138ebfedea0SLionel Sambuc long, DES_key_schedule *, DES_cblock *); 139ebfedea0SLionel Sambuc 140ebfedea0SLionel Sambuc 141ebfedea0SLionel Sambuc void _DES_ipfp_test(void); 142ebfedea0SLionel Sambuc 143ebfedea0SLionel Sambuc #ifdef __cplusplus 144ebfedea0SLionel Sambuc } 145ebfedea0SLionel Sambuc #endif 146ebfedea0SLionel Sambuc 147ebfedea0SLionel Sambuc 148ebfedea0SLionel Sambuc #endif /* _DESperate_H */ 149