From 13b3ab3caec92f64d3c6ba60afc99214a2fb523f Mon Sep 17 00:00:00 2001 From: sniperbeamer Date: Sun, 18 Jan 2009 12:00:47 +0000 Subject: [PATCH] Update translations Update AES implementation - enable VIA padlock Untag 0.4.0beta1 git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@255 b624d157-de02-0410-bad0-e51aec6abb33 --- COPYING | 8 +- share/keepassx/i18n/keepassx-cs_CZ.qm | Bin 42840 -> 43065 bytes share/keepassx/i18n/keepassx-de_DE.qm | Bin 58387 -> 58285 bytes share/keepassx/i18n/keepassx-es_ES.qm | Bin 59921 -> 59869 bytes share/keepassx/i18n/keepassx-fr_FR.qm | Bin 44166 -> 44411 bytes share/keepassx/i18n/keepassx-gl_ES.qm | Bin 58941 -> 58887 bytes share/keepassx/i18n/keepassx-it_IT.qm | Bin 58313 -> 58263 bytes share/keepassx/i18n/keepassx-ja_JP.qm | Bin 47380 -> 47068 bytes share/keepassx/i18n/keepassx-ru_RU.qm | Bin 41742 -> 41740 bytes src/crypto/aes.h | 6 +- src/crypto/aes_via_ace.h | 529 ++++++++++++++++++++++++++ src/crypto/aesopt.h | 5 +- src/crypto/aestab.c | 60 +-- src/crypto/aestab.h | 12 +- src/crypto/yarrow.cpp | 4 +- src/src.pro | 1 + 16 files changed, 587 insertions(+), 38 deletions(-) create mode 100644 src/crypto/aes_via_ace.h diff --git a/COPYING b/COPYING index 28b7278..376dd53 100644 --- a/COPYING +++ b/COPYING @@ -1,5 +1,5 @@ -Copyright (C) 2005-2007 Tarek Saidi -Copyright (C) 2007-2008 Felix Geyer +Copyright (C) 2005-2008 Tarek Saidi +Copyright (C) 2007-2009 Felix Geyer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -14,11 +14,11 @@ text of the GNU General Public License below for more details. Other licenses: apg/*: - Copyright (c) 1999, 2000, 2001, 2002, 2003 Adel I. Mirzazhanov + Copyright (c) 1999, 2000, 2001, 2002, 2003 Adel I. Mirzazhanov 3-clause BSD license crypto/aes*: - Copyright (c) 1998-2008, Brian Gladman, Worcester + Copyright (c) 1998-2008, Brian Gladman 3-clause BSD license crypto/arcfour*: diff --git a/share/keepassx/i18n/keepassx-cs_CZ.qm b/share/keepassx/i18n/keepassx-cs_CZ.qm index 87a1fd4eabf53f7ed4cbddd9d9b70b84e1c4902d..627ca3a91ecae6da6374c004ae92add0ad8be98d 100644 GIT binary patch delta 4869 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 diff --git a/share/keepassx/i18n/keepassx-de_DE.qm b/share/keepassx/i18n/keepassx-de_DE.qm index 307ddb229a5c430d6e5eb3845db29d51b8bde5f7..00b9b5dd38badd6bd18d6c97d2cfd1e3baf4d4f2 100644 GIT binary patch delta 4642 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 M&F!kP%#+Xk4`wVqoB#j- delta 4717 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 diff --git a/share/keepassx/i18n/keepassx-es_ES.qm b/share/keepassx/i18n/keepassx-es_ES.qm index 25923469279254c099574c5080fc182a34c266c6..3e8341c767c6a74560e55b45210687b098033ae2 100644 GIT binary patch delta 4653 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 Q>d#p;RjOBGN~uu%A3Rzv3;+NC delta 4615 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 CBRb6h delta 4696 zcmY+Id0b8T|Ht3=o^#JV_uO;OwU+EAOSVEH(W*!)*&-!lUm~<_x%3&ejgq@&-vWXd7tbjK=k`{VsCdQGQUaen_Qx#a8h}@z=ArN<+Dk(90I!h zMXLR<-qw>;`4L3yQQ{6UP~3&|pG{#^Z!$g*NVKgJ^($kE)~l)CZ@s`f)bGzhL>m&Q ze>~PV#Zdn%P%y3)S-KfE5iOrVW7Ez-z&&yu_70k+f$xcOT)@vn2ZKPw)4dUd`#gGq zu-Idw%$#8GJMJT7=48n{m_x3^m5_4F)TWbjNoO(Y(r|Ij=`rgaaQ4qIdf^rZ>=JL191GVSbWO6^%9E2Yd)MBd5W zh}O=eX(ud+4jiZHCy)o>-sJP-<6zlrTRLmJkEmcY zT~cFz+Xk7lzR)$xCn!%Fx@(Q~gg@v(5Vo9-oQ8AI1sMsHnOf)`3arkE_aN)S(h}#~b z7)M1p(~jsTKgF3@cs@2laXA^k_nEBtWDSKk^-(lC=ustW<|=gqpwV1~vRB`iM58Q~ zqx?{Mnj=cvN)wcrv(huZlC_2K zghpA`606O}l;>VTp$XTOZ-0bmytgYG&z~pa!x*-04qX12(K;ej@o9`0cpM>l%!uER zWMv+V&f*4ohZUo9M|m&IV_MtTp(|E1M%MR;D%vro9X*MrwPt#nw#SC*DyFxMKbp*1 zX5jceM2p@rR(H!_3HUXds7*ha%c~iuQNcvZ?l9xNq65b5Wv0yEj(wFfmv3Qam9`}c zJjyIsgpgFeV-`J(M6=q#q`Xf=_bz2hJDC!dCoyI58r-*LDnbp=q>}@4^$SCk)|t8f z9A%iJV;=35h>RvO&%;I#tukkYWOJe;pV|IK@Rap5nE^9d%a~@O{ZCozIIO$tSleCo zMBOS`r?-%ID1;rC*_CKccXsBlP^^s~8}u92ht#m)oxovkY?L8?JuGixqgv=~FVnY| zO#fqSOc?t9!JBM+5$Ya2Z)`H`Se*l}G zh(@+D4tx(*fgixH;76h$OAzxWD1bHOCw{_3HWnJeyWm%%U^R%27iHi=+8S))OBMTi4!sVgM*@6MNXyp!UQOq>tOqPND zr4*K}{>+|U0_9*}`DduPgh? zLLfR-z<%2nh~)i~ZR+NR4tZTAM8k3mN0n99FDSzTl~qm%%FReM#s|-}6~JtS#E`BU z6I6wy2~xSPctX_bqslwv9J2heN{-nT)%@4+bC!sy(jSIDRIwJ59B7Ba(05 z->M_W;BsxYOj{$FcEPHXdlQMqj#X8~L%vtEsw&YGRd!2t?g zk3&Q!(m7B4HZ&Fu=k*|is9lasn_Jve=VH|BZEg*R7kKUGB3$6=A6IhGGfjw2mvS3w zFA`<&Tx?1q8df256O{#8s|B2=YE~r&o$Z8y&cM+ZS;8K$&5I+?~e| zxbau+nWi37bRhSlr3DMVG7qb`S1)m&>8)0_cy>jBn%kO9v{k9@9cWMzb)1R|(Ce0Z zKswHImFa40(@HcVZ?*Hq7<9k@wO5}$sQ)PStVs}bK1lr|BN6Q|RwwqkN3^>_ope7D zAt_YvJo~&!^V$ zlk^kN9Uk)kQShQKAJV`Oac%fe*HF-z4;z5zLmT*Y|3YvRYLrgUBvPEx6wvTg#h-&b>SG(4v>M93FI3uTV@ ze>y7U`=z%vwaz%x=S68=drX0g`)d9U>_wD1LDQ6oGCD9)VEhAdZYUR+rOoK+<$|$g z5vs>i=rF<@Cu)}u{o|A{DiwwpQj!I?fB%JfKT~j@0ZZH# z2@_@@mf>%NDFv|HE?<~?_C5N+WnrETk}8H3=8bBHV|0_u;l9GWJ-H~iI+9TGw_BT@hDdkB$lD~Nve6{1e#EMK}_ zh&zH8@}q?mPq?lwSxEnitj+x>6xw~k0VP>x)=inUWHO$7YcP_?9iYzLW8oNX#NMGfqji{1_$A}Z58U@_L1;vfd(G49a9ql+RTrIh4-HVa^S+3gY zzro0nhqb*2m4($?QZ zQb#Y=)_(?n57AyTytx4v&(}Wq;{t|DkoND1P+(7#s3?1i^ZrkwGV=w-QJw6nTD_8XB3=gDU7d;2v zLO&TS&ZzB)+&Lkx^0|(wI!iRf#&sof@fTCOoWmV{McY;P0G6v0ILH!{1~ z%RF;jtQvq$OEF?i$$m7hTL!VF2?``vi2t8Y6O_bZ+BM(6x7Lwxm}+Py|Hy6L+%^}>Hh zoYnU@2?Mr1&|6&HgQJUfeFt($1+1{+*vM=6~j5 zqU(OecUp&YO2we$sT~F@tdkw9+b8epz$>~ZXLp!|e-$QPHq@Qg&=4AgKUTQ5r-=Vr j8Sy_W<}JVCM2q2xzfsA)CVe0z+QdT9z4)k!ckTZHuO&^A diff --git a/share/keepassx/i18n/keepassx-it_IT.qm b/share/keepassx/i18n/keepassx-it_IT.qm index 3178c3b8795d7abe3b9d695807547dd1972c05c4..94ee4874e03d355cd79822e6ff3e1acde066b55c 100644 GIT binary patch delta 4632 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 diff --git a/share/keepassx/i18n/keepassx-ja_JP.qm b/share/keepassx/i18n/keepassx-ja_JP.qm index 610cd3af51f10347d12c442b87fd5990fed3ebbc..3fae6cc799b6d595d7beb3830871e8cb91f79fde 100644 GIT binary patch delta 4620 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 diff --git a/share/keepassx/i18n/keepassx-ru_RU.qm b/share/keepassx/i18n/keepassx-ru_RU.qm index 92c76a2c67f6f943ba6f4fd85b245b99e09d591c..d983f9f8e4040a4ec111e7437bf0599c824e5035 100644 GIT binary patch delta 4607 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 Ms 1200 ) +#define aligned_auto(type, name, no, stride) __declspec(align(stride)) type name[no] +#else +#define aligned_auto(type, name, no, stride) \ + unsigned char _##name[no * sizeof(type) + stride]; \ + type *name = (type*)(16 * ((((unsigned long)(_##name)) + stride - 1) / stride)) +#endif + +#if defined( _MSC_VER ) && ( _MSC_VER > 1200 ) +#define aligned_array(type, name, no, stride) __declspec(align(stride)) type name[no] +#elif defined( __GNUC__ ) +#define aligned_array(type, name, no, stride) type name[no] __attribute__ ((aligned(stride))) +#else +#define aligned_array(type, name, no, stride) type name[no] +#endif + +/* VIA ACE codeword */ + +static unsigned char via_flags = 0; + +#if defined ( _MSC_VER ) && ( _MSC_VER > 800 ) + +#define NEH_REKEY __asm pushfd __asm popfd +#define NEH_AES __asm _emit 0xf3 __asm _emit 0x0f __asm _emit 0xa7 +#define NEH_ECB NEH_AES __asm _emit 0xc8 +#define NEH_CBC NEH_AES __asm _emit 0xd0 +#define NEH_CFB NEH_AES __asm _emit 0xe0 +#define NEH_OFB NEH_AES __asm _emit 0xe8 +#define NEH_RNG __asm _emit 0x0f __asm _emit 0xa7 __asm _emit 0xc0 + +INLINE int has_cpuid(void) +{ char ret_value; + __asm + { pushfd /* save EFLAGS register */ + mov eax,[esp] /* copy it to eax */ + mov edx,0x00200000 /* CPUID bit position */ + xor eax,edx /* toggle the CPUID bit */ + push eax /* attempt to set EFLAGS to */ + popfd /* the new value */ + pushfd /* get the new EFLAGS value */ + pop eax /* into eax */ + xor eax,[esp] /* xor with original value */ + and eax,edx /* has CPUID bit changed? */ + setne al /* set to 1 if we have been */ + mov ret_value,al /* able to change it */ + popfd /* restore original EFLAGS */ + } + return (int)ret_value; +} + +INLINE int is_via_cpu(void) +{ char ret_value; + __asm + { xor eax,eax /* use CPUID to get vendor */ + cpuid /* identity string */ + xor eax,eax /* is it "CentaurHauls" ? */ + sub ebx,0x746e6543 /* 'Cent' */ + or eax,ebx + sub edx,0x48727561 /* 'aurH' */ + or eax,edx + sub ecx,0x736c7561 /* 'auls' */ + or eax,ecx + sete al /* set to 1 if it is VIA ID */ + mov dl,NEH_CPU_READ /* mark CPU type as read */ + or dl,al /* & store result in flags */ + mov [via_flags],dl /* set VIA detected flag */ + mov ret_value,al /* able to change it */ + } + return (int)ret_value; +} + +INLINE int read_via_flags(void) +{ char ret_value = 0; + __asm + { + mov eax,0xC0000000 /* Centaur extended CPUID */ + cpuid + mov edx,0xc0000001 /* >= 0xc0000001 if support */ + cmp eax,edx /* for VIA extended feature */ + jnae no_rng /* flags is available */ + mov eax,edx /* read Centaur extended */ + cpuid /* feature flags */ + mov eax,NEH_FLAGS_MASK /* mask out and save */ + and eax,edx /* the RNG and ACE flags */ + or [via_flags],al /* present & enabled flags */ + mov ret_value,al /* able to change it */ +no_rng: + } + return (int)ret_value; +} + +INLINE unsigned int via_rng_in(void *buf) +{ char ret_value = 0x1f; + __asm + { + push edi + mov edi,buf /* input buffer address */ + xor edx,edx /* try to fetch 8 bytes */ + NEH_RNG /* do RNG read operation */ + and ret_value,al /* count of bytes returned */ + pop edi + } + return (int)ret_value; +} + +INLINE void via_ecb_op5( + const void *k, const void *c, const void *s, void *d, int l) +{ __asm + { + NEH_REKEY + mov ebx, (k) + mov edx, (c) + mov esi, (s) + mov edi, (d) + mov ecx, (l) + NEH_ECB + } +} + +INLINE void via_cbc_op6( + const void *k, const void *c, const void *s, void *d, int l, void *v) +{ __asm + { + NEH_REKEY + mov ebx, (k) + mov edx, (c) + mov esi, (s) + mov edi, (d) + mov ecx, (l) + mov eax, (v) + NEH_CBC + } +} + +INLINE void via_cbc_op7( + const void *k, const void *c, const void *s, void *d, int l, void *v, void *w) +{ __asm + { + NEH_REKEY + mov ebx, (k) + mov edx, (c) + mov esi, (s) + mov edi, (d) + mov ecx, (l) + mov eax, (v) + NEH_CBC + mov esi, eax + mov edi, (w) + movsd + movsd + movsd + movsd + } +} + +INLINE void via_cfb_op6( + const void *k, const void *c, const void *s, void *d, int l, void *v) +{ __asm + { + NEH_REKEY + mov ebx, (k) + mov edx, (c) + mov esi, (s) + mov edi, (d) + mov ecx, (l) + mov eax, (v) + NEH_CFB + } +} + +INLINE void via_cfb_op7( + const void *k, const void *c, const void *s, void *d, int l, void *v, void *w) +{ __asm + { + NEH_REKEY + mov ebx, (k) + mov edx, (c) + mov esi, (s) + mov edi, (d) + mov ecx, (l) + mov eax, (v) + NEH_CFB + mov esi, eax + mov edi, (w) + movsd + movsd + movsd + movsd + } +} + +INLINE void via_ofb_op6( + const void *k, const void *c, const void *s, void *d, int l, void *v) +{ __asm + { + NEH_REKEY + mov ebx, (k) + mov edx, (c) + mov esi, (s) + mov edi, (d) + mov ecx, (l) + mov eax, (v) + NEH_OFB + } +} + +#elif defined( __GNUC__ ) + +#define NEH_REKEY asm("pushfl\n popfl\n\t") +#define NEH_ECB asm(".byte 0xf3, 0x0f, 0xa7, 0xc8\n\t") +#define NEH_CBC asm(".byte 0xf3, 0x0f, 0xa7, 0xd0\n\t") +#define NEH_CFB asm(".byte 0xf3, 0x0f, 0xa7, 0xe0\n\t") +#define NEH_OFB asm(".byte 0xf3, 0x0f, 0xa7, 0xe8\n\t") +#define NEH_RNG asm(".byte 0x0f, 0xa7, 0xc0\n\t"); + +INLINE int has_cpuid(void) +{ int val; + asm("pushfl\n\t"); + asm("movl 0(%esp),%eax\n\t"); + asm("xor $0x00200000,%eax\n\t"); + asm("pushl %eax\n\t"); + asm("popfl\n\t"); + asm("pushfl\n\t"); + asm("popl %eax\n\t"); + asm("xorl 0(%esp),%edx\n\t"); + asm("andl $0x00200000,%eax\n\t"); + asm("movl %%eax,%0\n\t" : "=m" (val)); + asm("popfl\n\t"); + return val ? 1 : 0; +} + +INLINE int is_via_cpu(void) +{ int val; + asm("xorl %eax,%eax\n\t"); + asm("cpuid\n\t"); + asm("xorl %eax,%eax\n\t"); + asm("subl $0x746e6543,%ebx\n\t"); + asm("orl %ebx,%eax\n\t"); + asm("subl $0x48727561,%edx\n\t"); + asm("orl %edx,%eax\n\t"); + asm("subl $0x736c7561,%ecx\n\t"); + asm("orl %ecx,%eax\n\t"); + asm("movl %%eax,%0\n\t" : "=m" (val)); + val = (val ? 0 : 1); + via_flags = (val | NEH_CPU_READ); + return val; +} + +INLINE int read_via_flags(void) +{ unsigned char val; + asm("movl $0xc0000000,%eax\n\t"); + asm("cpuid\n\t"); + asm("movl $0xc0000001,%edx\n\t"); + asm("cmpl %edx,%eax\n\t"); + asm("setae %al\n\t"); + asm("movb %%al,%0\n\t" : "=m" (val)); + if(!val) return 0; + asm("movl $0xc0000001,%eax\n\t"); + asm("cpuid\n\t"); + asm("movb %%dl,%0\n\t" : "=m" (val)); + val &= NEH_FLAGS_MASK; + via_flags |= val; + return (int) val; +} + +INLINE int via_rng_in(void *buf) +{ int val; + asm("pushl %edi\n\t"); + asm("movl %0,%%edi\n\t" : : "m" (buf)); + asm("xorl %edx,%edx\n\t"); + NEH_RNG + asm("andl $0x0000001f,%eax\n\t"); + asm("movl %%eax,%0\n\t" : "=m" (val)); + asm("popl %edi\n\t"); + return val; +} + +INLINE volatile void via_ecb_op5( + const void *k, const void *c, const void *s, void *d, int l) +{ + NEH_REKEY; + asm("movl %0, %%ebx\n\t" : : "m" (k)); + asm("movl %0, %%edx\n\t" : : "m" (c)); + asm("movl %0, %%esi\n\t" : : "m" (s)); + asm("movl %0, %%edi\n\t" : : "m" (d)); + asm("movl %0, %%ecx\n\t" : : "m" (l)); + NEH_ECB; +} + +INLINE volatile void via_cbc_op6( + const void *k, const void *c, const void *s, void *d, int l, void *v) +{ + NEH_REKEY; + asm("movl %0, %%ebx\n\t" : : "m" (k)); + asm("movl %0, %%edx\n\t" : : "m" (c)); + asm("movl %0, %%esi\n\t" : : "m" (s)); + asm("movl %0, %%edi\n\t" : : "m" (d)); + asm("movl %0, %%ecx\n\t" : : "m" (l)); + asm("movl %0, %%eax\n\t" : : "m" (v)); + NEH_CBC; +} + +INLINE volatile void via_cbc_op7( + const void *k, const void *c, const void *s, void *d, int l, void *v, void *w) +{ + NEH_REKEY; + asm("movl %0, %%ebx\n\t" : : "m" (k)); + asm("movl %0, %%edx\n\t" : : "m" (c)); + asm("movl %0, %%esi\n\t" : : "m" (s)); + asm("movl %0, %%edi\n\t" : : "m" (d)); + asm("movl %0, %%ecx\n\t" : : "m" (l)); + asm("movl %0, %%eax\n\t" : : "m" (v)); + NEH_CBC; + asm("movl %eax,%esi\n\t"); + asm("movl %0, %%edi\n\t" : : "m" (w)); + asm("movsl; movsl; movsl; movsl\n\t"); +} + +INLINE volatile void via_cfb_op6( + const void *k, const void *c, const void *s, void *d, int l, void *v) +{ + NEH_REKEY; + asm("movl %0, %%ebx\n\t" : : "m" (k)); + asm("movl %0, %%edx\n\t" : : "m" (c)); + asm("movl %0, %%esi\n\t" : : "m" (s)); + asm("movl %0, %%edi\n\t" : : "m" (d)); + asm("movl %0, %%ecx\n\t" : : "m" (l)); + asm("movl %0, %%eax\n\t" : : "m" (v)); + NEH_CFB; +} + +INLINE volatile void via_cfb_op7( + const void *k, const void *c, const void *s, void *d, int l, void *v, void *w) +{ + NEH_REKEY; + asm("movl %0, %%ebx\n\t" : : "m" (k)); + asm("movl %0, %%edx\n\t" : : "m" (c)); + asm("movl %0, %%esi\n\t" : : "m" (s)); + asm("movl %0, %%edi\n\t" : : "m" (d)); + asm("movl %0, %%ecx\n\t" : : "m" (l)); + asm("movl %0, %%eax\n\t" : : "m" (v)); + NEH_CFB; + asm("movl %eax,%esi\n\t"); + asm("movl %0, %%edi\n\t" : : "m" (w)); + asm("movsl; movsl; movsl; movsl\n\t"); +} + +INLINE volatile void via_ofb_op6( + const void *k, const void *c, const void *s, void *d, int l, void *v) +{ + NEH_REKEY; + asm("movl %0, %%ebx\n\t" : : "m" (k)); + asm("movl %0, %%edx\n\t" : : "m" (c)); + asm("movl %0, %%esi\n\t" : : "m" (s)); + asm("movl %0, %%edi\n\t" : : "m" (d)); + asm("movl %0, %%ecx\n\t" : : "m" (l)); + asm("movl %0, %%eax\n\t" : : "m" (v)); + NEH_OFB; +} + +#else +#error VIA ACE is not available with this compiler +#endif + +INLINE int via_ace_test(void) +{ + return has_cpuid() && is_via_cpu() && ((read_via_flags() & NEH_ACE_FLAGS) == NEH_ACE_FLAGS); +} + +#define VIA_ACE_AVAILABLE (((via_flags & NEH_ACE_FLAGS) == NEH_ACE_FLAGS) \ + || (via_flags & NEH_CPU_READ) && (via_flags & NEH_CPU_IS_VIA) || via_ace_test()) + +INLINE int via_rng_test(void) +{ + return has_cpuid() && is_via_cpu() && ((read_via_flags() & NEH_RNG_FLAGS) == NEH_RNG_FLAGS); +} + +#define VIA_RNG_AVAILABLE (((via_flags & NEH_RNG_FLAGS) == NEH_RNG_FLAGS) \ + || (via_flags & NEH_CPU_READ) && (via_flags & NEH_CPU_IS_VIA) || via_rng_test()) + +INLINE int read_via_rng(void *buf, int count) +{ int nbr, max_reads, lcnt = count; + unsigned char *p, *q; + aligned_auto(unsigned char, bp, 64, 16); + + if(!VIA_RNG_AVAILABLE) + return 0; + + do + { + max_reads = MAX_READ_ATTEMPTS; + do + nbr = via_rng_in(bp); + while + (nbr == 0 && --max_reads); + + lcnt -= nbr; + p = (unsigned char*)buf; q = bp; + while(nbr--) + *p++ = *q++; + } + while + (lcnt && max_reads); + + return count - lcnt; +} + +#endif diff --git a/src/crypto/aesopt.h b/src/crypto/aesopt.h index 5ddaeb6..77bb36c 100644 --- a/src/crypto/aesopt.h +++ b/src/crypto/aesopt.h @@ -170,12 +170,11 @@ /* 2. VIA ACE SUPPORT */ -// DISABLE VIA ACE -/*#if defined( __GNUC__ ) && defined( __i386__ ) \ +#if defined( __GNUC__ ) && defined( __i386__ ) \ || defined( _WIN32 ) && defined( _M_IX86 ) \ && !(defined( _WIN64 ) || defined( _WIN32_WCE ) || defined( _MSC_VER ) && ( _MSC_VER <= 800 )) # define VIA_ACE_POSSIBLE -#endif*/ +#endif /* Define this option if support for the VIA ACE is required. This uses inline assembler instructions and is only implemented for the Microsoft, diff --git a/src/crypto/aestab.c b/src/crypto/aestab.c index 94027e3..63dc93e 100644 --- a/src/crypto/aestab.c +++ b/src/crypto/aestab.c @@ -224,38 +224,52 @@ static uint_8t hibit(const uint_32t x) /* return the inverse of the finite field element x */ -static uint_8t fi(const uint_8t x) +static uint_8t gf_inv(const uint_8t x) { uint_8t p1 = x, p2 = BPOLY, n1 = hibit(x), n2 = 0x80, v1 = 1, v2 = 0; - if(x < 2) return x; + if(x < 2) + return x; - for(;;) + for( ; ; ) { - if(!n1) return v1; - - while(n2 >= n1) - { - n2 /= n1; p2 ^= p1 * n2; v2 ^= v1 * n2; n2 = hibit(p2); - } - - if(!n2) return v2; - - while(n1 >= n2) - { - n1 /= n2; p1 ^= p2 * n1; v1 ^= v2 * n1; n1 = hibit(p1); - } + if(n1) + while(n2 >= n1) /* divide polynomial p2 by p1 */ + { + n2 /= n1; /* shift smaller polynomial left */ + p2 ^= (p1 * n2) & 0xff; /* and remove from larger one */ + v2 ^= v1 * n2; /* shift accumulated value and */ + n2 = hibit(p2); /* add into result */ + } + else + return v1; + + if(n2) /* repeat with values swapped */ + while(n1 >= n2) + { + n1 /= n2; + p1 ^= p2 * n1; + v1 ^= v2 * n1; + n1 = hibit(p1); + } + else + return v2; } } #endif /* The forward and inverse affine transformations used in the S-box */ +uint_8t fwd_affine(const uint_8t x) +{ uint_32t w = x; + w ^= (w << 1) ^ (w << 2) ^ (w << 3) ^ (w << 4); + return 0x63 ^ ((w ^ (w >> 8)) & 0xff); +} -#define fwd_affine(x) \ - (w = (uint_32t)x, w ^= (w<<1)^(w<<2)^(w<<3)^(w<<4), 0x63^(uint_8t)(w^(w>>8))) - -#define inv_affine(x) \ - (w = (uint_32t)x, w = (w<<1)^(w<<3)^(w<<6), 0x05^(uint_8t)(w^(w>>8))) +uint_8t inv_affine(const uint_8t x) +{ uint_32t w = x; + w = (w << 1) ^ (w << 3) ^ (w << 6); + return 0x05 ^ ((w ^ (w >> 8)) & 0xff); +} static int init = 0; @@ -297,7 +311,7 @@ AES_RETURN aes_init(void) for(i = 0; i < 256; ++i) { uint_8t b; - b = fwd_affine(fi((uint_8t)i)); + b = fwd_affine(gf_inv((uint_8t)i)); w = bytes2word(f2(b), b, b, f3(b)); #if defined( SBX_SET ) @@ -335,7 +349,7 @@ AES_RETURN aes_init(void) t_set(l,s)[3][i] = upr(w,3); #endif - b = fi(inv_affine((uint_8t)i)); + b = gf_inv(inv_affine((uint_8t)i)); w = bytes2word(fe(b), f9(b), fd(b), fb(b)); #if defined( IM1_SET ) /* tables for the inverse mix column operation */ diff --git a/src/crypto/aestab.h b/src/crypto/aestab.h index a5e7834..5254f7e 100644 --- a/src/crypto/aestab.h +++ b/src/crypto/aestab.h @@ -68,6 +68,10 @@ #if !defined( _AESTAB_H ) #define _AESTAB_H +#if defined(__cplusplus) +extern "C" { +#endif + #define t_dec(m,n) t_##m##n #define t_set(m,n) t_##m##n #define t_use(m,n) t_##m##n @@ -83,9 +87,7 @@ # define CONST #endif -#if defined(__cplusplus) -# define EXTERN extern "C" -#elif defined(DO_TABLES) +#if defined(DO_TABLES) # define EXTERN #else # define EXTERN extern @@ -171,4 +173,8 @@ EXTERN ALIGN CONST uint_32t t_dec(r,c)[RC_LENGTH]; d_4(uint_32t, t_dec(i,m), mm_data, v0, v1, v2, v3); #endif +#if defined(__cplusplus) +} +#endif + #endif diff --git a/src/crypto/yarrow.cpp b/src/crypto/yarrow.cpp index 5f9c534..2afde20 100644 --- a/src/crypto/yarrow.cpp +++ b/src/crypto/yarrow.cpp @@ -194,7 +194,7 @@ yarrow_fast_reseed(struct yarrow256_ctx *ctx) /* Iterate */ yarrow_iterate(digest); - aes_encrypt_key(digest,sizeof(digest),&ctx->key); + aes_encrypt_key256(digest,&ctx->key); /* Derive new counter value */ memset(ctx->counter, 0, sizeof(ctx->counter)); @@ -332,7 +332,7 @@ yarrow_gate(struct yarrow256_ctx *ctx) for (i = 0; i < sizeof(key); i+= AES_BLOCK_SIZE) yarrow_generate_block(ctx, key + i); - aes_encrypt_key(key,sizeof(key),&ctx->key); + aes_encrypt_key256(key,&ctx->key); } void diff --git a/src/src.pro b/src/src.pro index 7183955..478db71 100644 --- a/src/src.pro +++ b/src/src.pro @@ -176,6 +176,7 @@ HEADERS += main.h \ crypto/aes_types.h \ crypto/aesopt.h \ crypto/aestab.h \ + crypto/aes_via_ace.h \ crypto/arcfour.h \ crypto/blowfish.h \ crypto/sha256.h \