mirror of
				https://github.com/PowerShell/Win32-OpenSSH.git
				synced 2025-10-31 03:34:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			238 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			238 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * include/kerberosIV/des.h
 | |
|  *
 | |
|  * Copyright 1987, 1988, 1994, 2002 by the Massachusetts Institute of
 | |
|  * Technology.  All Rights Reserved.
 | |
|  *
 | |
|  * Export of this software from the United States of America may
 | |
|  *   require a specific license from the United States Government.
 | |
|  *   It is the responsibility of any person or organization contemplating
 | |
|  *   export to obtain such a license before exporting.
 | |
|  * 
 | |
|  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
 | |
|  * distribute this software and its documentation for any purpose and
 | |
|  * without fee is hereby granted, provided that the above copyright
 | |
|  * notice appear in all copies and that both that copyright notice and
 | |
|  * this permission notice appear in supporting documentation, and that
 | |
|  * the name of M.I.T. not be used in advertising or publicity pertaining
 | |
|  * to distribution of the software without specific, written prior
 | |
|  * permission.  Furthermore if you modify this software you must label
 | |
|  * your software as modified software and not distribute it in such a
 | |
|  * fashion that it might be confused with the original M.I.T. software.
 | |
|  * M.I.T. makes no representations about the suitability of
 | |
|  * this software for any purpose.  It is provided "as is" without express
 | |
|  * or implied warranty.
 | |
|  * 
 | |
|  * Include file for the Data Encryption Standard library.
 | |
|  */
 | |
| 
 | |
| #if defined(__MACH__) && defined(__APPLE__)
 | |
| #include <TargetConditionals.h>
 | |
| #include <AvailabilityMacros.h>
 | |
| #if TARGET_RT_MAC_CFM
 | |
| #error "Use KfM 4.0 SDK headers for CFM compilation."
 | |
| #endif
 | |
| #ifdef AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
 | |
| #define KRB5INT_DES_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
 | |
| #endif
 | |
| #endif /* defined(__MACH__) && defined(__APPLE__) */
 | |
| 
 | |
| /* Macro to add deprecated attribute to DES types and functions */
 | |
| /* Currently only defined on Mac OS X 10.5 and later.           */
 | |
| #ifndef KRB5INT_DES_DEPRECATED
 | |
| #define KRB5INT_DES_DEPRECATED
 | |
| #endif
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| #ifndef KRBINT_BEGIN_DECLS
 | |
| #define KRBINT_BEGIN_DECLS	extern "C" {
 | |
| #define KRBINT_END_DECLS	}
 | |
| #endif
 | |
| #else
 | |
| #define KRBINT_BEGIN_DECLS
 | |
| #define KRBINT_END_DECLS
 | |
| #endif
 | |
| 
 | |
| #ifndef KRB5INT_DES_TYPES_DEFINED
 | |
| #define KRB5INT_DES_TYPES_DEFINED
 | |
| 
 | |
| #include <limits.h>
 | |
| 
 | |
| KRBINT_BEGIN_DECLS
 | |
| 
 | |
| #if TARGET_OS_MAC
 | |
| #	pragma pack(push,2)
 | |
| #endif
 | |
| 
 | |
| #if UINT_MAX >= 0xFFFFFFFFUL
 | |
| #define DES_INT32 int
 | |
| #define DES_UINT32 unsigned int
 | |
| #else
 | |
| #define DES_INT32 long
 | |
| #define DES_UINT32 unsigned long
 | |
| #endif
 | |
| 
 | |
| typedef unsigned char des_cblock[8] 	/* crypto-block size */
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| /*
 | |
|  * Key schedule.
 | |
|  *
 | |
|  * This used to be
 | |
|  *
 | |
|  * typedef struct des_ks_struct {
 | |
|  *     union { DES_INT32 pad; des_cblock _;} __;
 | |
|  * } des_key_schedule[16];
 | |
|  *
 | |
|  * but it would cause trouble if DES_INT32 were ever more than 4
 | |
|  * bytes.  The reason is that all the encryption functions cast it to
 | |
|  * (DES_INT32 *), and treat it as if it were DES_INT32[32].  If
 | |
|  * 2*sizeof(DES_INT32) is ever more than sizeof(des_cblock), the
 | |
|  * caller-allocated des_key_schedule will be overflowed by the key
 | |
|  * scheduling functions.  We can't assume that every platform will
 | |
|  * have an exact 32-bit int, and nothing should be looking inside a
 | |
|  * des_key_schedule anyway.
 | |
|  */
 | |
| typedef struct des_ks_struct {  DES_INT32 _[2]; } des_key_schedule[16] 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| #if TARGET_OS_MAC
 | |
| #	pragma pack(pop)
 | |
| #endif
 | |
| 
 | |
| KRBINT_END_DECLS
 | |
| 
 | |
| #endif /* KRB5INT_DES_TYPES_DEFINED */
 | |
| 
 | |
| /* only do the whole thing once	 */
 | |
| #ifndef DES_DEFS
 | |
| /*
 | |
|  * lib/crypto/des/des_int.h defines KRB5INT_CRYPTO_DES_INT temporarily
 | |
|  * to avoid including the defintions and declarations below.  The
 | |
|  * reason that the crypto library needs to include this file is that
 | |
|  * it needs to have its types aligned with krb4's types.
 | |
|  */
 | |
| #ifndef KRB5INT_CRYPTO_DES_INT
 | |
| #define DES_DEFS
 | |
| 
 | |
| #if defined(_WIN32)
 | |
| #ifndef KRB4
 | |
| #define KRB4 1
 | |
| #endif
 | |
| #include <win-mac.h>
 | |
| #endif
 | |
| #include <stdio.h> /* need FILE for des_cblock_print_file */
 | |
| 
 | |
| KRBINT_BEGIN_DECLS
 | |
| 
 | |
| #if TARGET_OS_MAC
 | |
| #	pragma pack(push,2)
 | |
| #endif
 | |
| 
 | |
| /* Windows declarations */
 | |
| #ifndef KRB5_CALLCONV
 | |
| #define KRB5_CALLCONV
 | |
| #define KRB5_CALLCONV_C
 | |
| #endif
 | |
| 
 | |
| #define DES_KEY_SZ 	(sizeof(des_cblock))
 | |
| #define DES_ENCRYPT	1
 | |
| #define DES_DECRYPT	0
 | |
| 
 | |
| #ifndef NCOMPAT
 | |
| #define C_Block des_cblock
 | |
| #define Key_schedule des_key_schedule
 | |
| #define ENCRYPT DES_ENCRYPT
 | |
| #define DECRYPT DES_DECRYPT
 | |
| #define KEY_SZ DES_KEY_SZ
 | |
| #define string_to_key des_string_to_key
 | |
| #define read_pw_string des_read_pw_string
 | |
| #define random_key des_random_key
 | |
| #define pcbc_encrypt des_pcbc_encrypt
 | |
| #define key_sched des_key_sched
 | |
| #define cbc_encrypt des_cbc_encrypt
 | |
| #define cbc_cksum des_cbc_cksum
 | |
| #define C_Block_print des_cblock_print
 | |
| #define quad_cksum des_quad_cksum
 | |
| typedef struct des_ks_struct bit_64;
 | |
| #endif
 | |
| 
 | |
| #define des_cblock_print(x) des_cblock_print_file(x, stdout)
 | |
| 
 | |
| /*
 | |
|  * Function Prototypes
 | |
|  */
 | |
| 
 | |
| int KRB5_CALLCONV des_key_sched (C_Block, Key_schedule) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| int KRB5_CALLCONV
 | |
| des_pcbc_encrypt (C_Block *in, C_Block *out, long length,
 | |
| 		  const des_key_schedule schedule, C_Block *ivec,
 | |
| 		  int enc) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| unsigned long KRB5_CALLCONV
 | |
| des_quad_cksum (const unsigned char *in, unsigned DES_INT32 *out,
 | |
| 		long length, int out_count, C_Block *seed) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| /*
 | |
|  * XXX ABI change: used to return void; also, cns/kfm have signed long
 | |
|  * instead of unsigned long length.
 | |
|  */
 | |
| unsigned long KRB5_CALLCONV
 | |
| des_cbc_cksum(const des_cblock *, des_cblock *, unsigned long,
 | |
| 	      const des_key_schedule, const des_cblock *) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| int KRB5_CALLCONV des_string_to_key (const char *, C_Block) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| void afs_string_to_key(char *, char *, des_cblock) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| /* XXX ABI change: used to return krb5_error_code */
 | |
| int KRB5_CALLCONV des_read_password(des_cblock *, char *, int) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| int KRB5_CALLCONV des_ecb_encrypt(des_cblock *, des_cblock *,
 | |
| 				  const des_key_schedule, int) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| /* XXX kfm/cns have signed long length */
 | |
| int des_cbc_encrypt(des_cblock *, des_cblock *, unsigned long,
 | |
| 		    const des_key_schedule, const des_cblock *, int) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| void des_fixup_key_parity(des_cblock) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| int des_check_key_parity(des_cblock) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| int KRB5_CALLCONV des_new_random_key(des_cblock) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| void des_init_random_number_generator(des_cblock) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| int des_random_key(des_cblock *) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| int des_is_weak_key(des_cblock) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| void des_cblock_print_file(des_cblock *, FILE *fp) 
 | |
| KRB5INT_DES_DEPRECATED;
 | |
| 
 | |
| 
 | |
| #if TARGET_OS_MAC
 | |
| #	pragma pack(pop)
 | |
| #endif
 | |
| 
 | |
| KRBINT_END_DECLS
 | |
| 
 | |
| #endif /* KRB5INT_CRYPTO_DES_INT */
 | |
| #endif	/* DES_DEFS */
 |