mirror of https://github.com/dnomd343/ClearDNS
Dnomd343
2 years ago
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