mirror of https://github.com/dnomd343/ClearDNS
				
				
			
				 3 changed files with 2 additions and 205 deletions
			
			
		| @ -1,3 +1,3 @@ | |||||
| cmake_minimum_required(VERSION 2.8.12) | cmake_minimum_required(VERSION 2.8.12) | ||||
| 
 | 
 | ||||
| add_library(blowfish crypt_blowfish.c crypt_gensalt.c wrapper.c x86.S) | add_library(blowfish crypt_blowfish.c crypt_gensalt.c wrapper.c) | ||||
|  | |||||
| @ -1,203 +0,0 @@ | |||||
| /* |  | ||||
|  * Written by Solar Designer <solar at openwall.com> in 1998-2010. |  | ||||
|  * No copyright is claimed, and the software is hereby placed in the public |  | ||||
|  * domain.  In case this attempt to disclaim copyright and place the software |  | ||||
|  * in the public domain is deemed null and void, then the software is |  | ||||
|  * Copyright (c) 1998-2010 Solar Designer and it is hereby released to the |  | ||||
|  * general public under the following terms: |  | ||||
|  * |  | ||||
|  * Redistribution and use in source and binary forms, with or without |  | ||||
|  * modification, are permitted. |  | ||||
|  * |  | ||||
|  * There's ABSOLUTELY NO WARRANTY, express or implied. |  | ||||
|  * |  | ||||
|  * See crypt_blowfish.c for more information. |  | ||||
|  */ |  | ||||
| 
 |  | ||||
| #ifdef __i386__ |  | ||||
| 
 |  | ||||
| #if defined(__OpenBSD__) && !defined(__ELF__) |  | ||||
| #define UNDERSCORES |  | ||||
| #define ALIGN_LOG |  | ||||
| #endif |  | ||||
| 
 |  | ||||
| #if defined(__CYGWIN32__) || defined(__MINGW32__) |  | ||||
| #define UNDERSCORES |  | ||||
| #endif |  | ||||
| 
 |  | ||||
| #ifdef __DJGPP__ |  | ||||
| #define UNDERSCORES |  | ||||
| #define ALIGN_LOG |  | ||||
| #endif |  | ||||
| 
 |  | ||||
| #ifdef UNDERSCORES |  | ||||
| #define _BF_body_r			__BF_body_r |  | ||||
| #endif |  | ||||
| 
 |  | ||||
| #ifdef ALIGN_LOG |  | ||||
| #define DO_ALIGN(log)			.align (log) |  | ||||
| #elif defined(DUMBAS) |  | ||||
| #define DO_ALIGN(log)			.align 1 << log |  | ||||
| #else |  | ||||
| #define DO_ALIGN(log)			.align (1 << (log)) |  | ||||
| #endif |  | ||||
| 
 |  | ||||
| #define BF_FRAME			0x200 |  | ||||
| #define ctx				%esp |  | ||||
| 
 |  | ||||
| #define BF_ptr				(ctx) |  | ||||
| 
 |  | ||||
| #define S(N, r)				N+BF_FRAME(ctx,r,4) |  | ||||
| #ifdef DUMBAS |  | ||||
| #define P(N)				0x1000+N+N+N+N+BF_FRAME(ctx) |  | ||||
| #else |  | ||||
| #define P(N)				0x1000+4*N+BF_FRAME(ctx) |  | ||||
| #endif |  | ||||
| 
 |  | ||||
| /* |  | ||||
|  * This version of the assembly code is optimized primarily for the original |  | ||||
|  * Intel Pentium but is also careful to avoid partial register stalls on the |  | ||||
|  * Pentium Pro family of processors (tested up to Pentium III Coppermine). |  | ||||
|  * |  | ||||
|  * It is possible to do 15% faster on the Pentium Pro family and probably on |  | ||||
|  * many non-Intel x86 processors, but, unfortunately, that would make things |  | ||||
|  * twice slower for the original Pentium. |  | ||||
|  * |  | ||||
|  * An additional 2% speedup may be achieved with non-reentrant code. |  | ||||
|  */ |  | ||||
| 
 |  | ||||
| #define L				%esi |  | ||||
| #define R				%edi |  | ||||
| #define tmp1				%eax |  | ||||
| #define tmp1_lo				%al |  | ||||
| #define tmp2				%ecx |  | ||||
| #define tmp2_hi				%ch |  | ||||
| #define tmp3				%edx |  | ||||
| #define tmp3_lo				%dl |  | ||||
| #define tmp4				%ebx |  | ||||
| #define tmp4_hi				%bh |  | ||||
| #define tmp5				%ebp |  | ||||
| 
 |  | ||||
| .text |  | ||||
| 
 |  | ||||
| #define BF_ROUND(L, R, N) \ |  | ||||
| 	xorl L,tmp2; \ |  | ||||
| 	xorl tmp1,tmp1; \ |  | ||||
| 	movl tmp2,L; \ |  | ||||
| 	shrl $16,tmp2; \ |  | ||||
| 	movl L,tmp4; \ |  | ||||
| 	movb tmp2_hi,tmp1_lo; \ |  | ||||
| 	andl $0xFF,tmp2; \ |  | ||||
| 	movb tmp4_hi,tmp3_lo; \ |  | ||||
| 	andl $0xFF,tmp4; \ |  | ||||
| 	movl S(0,tmp1),tmp1; \ |  | ||||
| 	movl S(0x400,tmp2),tmp5; \ |  | ||||
| 	addl tmp5,tmp1; \ |  | ||||
| 	movl S(0x800,tmp3),tmp5; \ |  | ||||
| 	xorl tmp5,tmp1; \ |  | ||||
| 	movl S(0xC00,tmp4),tmp5; \ |  | ||||
| 	addl tmp1,tmp5; \ |  | ||||
| 	movl 4+P(N),tmp2; \ |  | ||||
| 	xorl tmp5,R |  | ||||
| 
 |  | ||||
| #define BF_ENCRYPT_START \ |  | ||||
| 	BF_ROUND(L, R, 0); \ |  | ||||
| 	BF_ROUND(R, L, 1); \ |  | ||||
| 	BF_ROUND(L, R, 2); \ |  | ||||
| 	BF_ROUND(R, L, 3); \ |  | ||||
| 	BF_ROUND(L, R, 4); \ |  | ||||
| 	BF_ROUND(R, L, 5); \ |  | ||||
| 	BF_ROUND(L, R, 6); \ |  | ||||
| 	BF_ROUND(R, L, 7); \ |  | ||||
| 	BF_ROUND(L, R, 8); \ |  | ||||
| 	BF_ROUND(R, L, 9); \ |  | ||||
| 	BF_ROUND(L, R, 10); \ |  | ||||
| 	BF_ROUND(R, L, 11); \ |  | ||||
| 	BF_ROUND(L, R, 12); \ |  | ||||
| 	BF_ROUND(R, L, 13); \ |  | ||||
| 	BF_ROUND(L, R, 14); \ |  | ||||
| 	BF_ROUND(R, L, 15); \ |  | ||||
| 	movl BF_ptr,tmp5; \ |  | ||||
| 	xorl L,tmp2; \ |  | ||||
| 	movl P(17),L |  | ||||
| 
 |  | ||||
| #define BF_ENCRYPT_END \ |  | ||||
| 	xorl R,L; \ |  | ||||
| 	movl tmp2,R |  | ||||
| 
 |  | ||||
| DO_ALIGN(5) |  | ||||
| .globl _BF_body_r |  | ||||
| _BF_body_r: |  | ||||
| 	movl 4(%esp),%eax |  | ||||
| 	pushl %ebp |  | ||||
| 	pushl %ebx |  | ||||
| 	pushl %esi |  | ||||
| 	pushl %edi |  | ||||
| 	subl $BF_FRAME-8,%eax |  | ||||
| 	xorl L,L |  | ||||
| 	cmpl %esp,%eax |  | ||||
| 	ja BF_die |  | ||||
| 	xchgl %eax,%esp |  | ||||
| 	xorl R,R |  | ||||
| 	pushl %eax |  | ||||
| 	leal 0x1000+BF_FRAME-4(ctx),%eax |  | ||||
| 	movl 0x1000+BF_FRAME-4(ctx),tmp2 |  | ||||
| 	pushl %eax |  | ||||
| 	xorl tmp3,tmp3 |  | ||||
| BF_loop_P: |  | ||||
| 	BF_ENCRYPT_START |  | ||||
| 	addl $8,tmp5 |  | ||||
| 	BF_ENCRYPT_END |  | ||||
| 	leal 0x1000+18*4+BF_FRAME(ctx),tmp1 |  | ||||
| 	movl tmp5,BF_ptr |  | ||||
| 	cmpl tmp5,tmp1 |  | ||||
| 	movl L,-8(tmp5) |  | ||||
| 	movl R,-4(tmp5) |  | ||||
| 	movl P(0),tmp2 |  | ||||
| 	ja BF_loop_P |  | ||||
| 	leal BF_FRAME(ctx),tmp5 |  | ||||
| 	xorl tmp3,tmp3 |  | ||||
| 	movl tmp5,BF_ptr |  | ||||
| BF_loop_S: |  | ||||
| 	BF_ENCRYPT_START |  | ||||
| 	BF_ENCRYPT_END |  | ||||
| 	movl P(0),tmp2 |  | ||||
| 	movl L,(tmp5) |  | ||||
| 	movl R,4(tmp5) |  | ||||
| 	BF_ENCRYPT_START |  | ||||
| 	BF_ENCRYPT_END |  | ||||
| 	movl P(0),tmp2 |  | ||||
| 	movl L,8(tmp5) |  | ||||
| 	movl R,12(tmp5) |  | ||||
| 	BF_ENCRYPT_START |  | ||||
| 	BF_ENCRYPT_END |  | ||||
| 	movl P(0),tmp2 |  | ||||
| 	movl L,16(tmp5) |  | ||||
| 	movl R,20(tmp5) |  | ||||
| 	BF_ENCRYPT_START |  | ||||
| 	addl $32,tmp5 |  | ||||
| 	BF_ENCRYPT_END |  | ||||
| 	leal 0x1000+BF_FRAME(ctx),tmp1 |  | ||||
| 	movl tmp5,BF_ptr |  | ||||
| 	cmpl tmp5,tmp1 |  | ||||
| 	movl P(0),tmp2 |  | ||||
| 	movl L,-8(tmp5) |  | ||||
| 	movl R,-4(tmp5) |  | ||||
| 	ja BF_loop_S |  | ||||
| 	movl 4(%esp),%esp |  | ||||
| 	popl %edi |  | ||||
| 	popl %esi |  | ||||
| 	popl %ebx |  | ||||
| 	popl %ebp |  | ||||
| 	ret |  | ||||
| 
 |  | ||||
| BF_die: |  | ||||
| /* Oops, need to re-compile with a larger BF_FRAME. */ |  | ||||
| 	hlt |  | ||||
| 	jmp BF_die |  | ||||
| 
 |  | ||||
| #endif |  | ||||
| 
 |  | ||||
| #if defined(__ELF__) && defined(__linux__) |  | ||||
| .section .note.GNU-stack,"",@progbits |  | ||||
| #endif |  | ||||
					Loading…
					
					
				
		Reference in new issue