Giter Club home page Giter Club logo

Comments (18)

scienceasdf avatar scienceasdf commented on September 24, 2024 1

I've tried to rename the B0, B1, B2, ... to m_B0, m_B1, m_B2, ... like this:

static void KeccakF1600Step(SHA3Context *p){
  int i;
  u64 m_B0, m_B1, m_B2, m_B3, m_B4;
  u64 C0, C1, C2, C3, C4;
  u64 D0, D1, D2, D3, D4;
  static const u64 RC[] = {
    0x0000000000000001ULL,  0x0000000000008082ULL,
    0x800000000000808aULL,  0x8000000080008000ULL,
    0x000000000000808bULL,  0x0000000080000001ULL,
    0x8000000080008081ULL,  0x8000000000008009ULL,
    0x000000000000008aULL,  0x0000000000000088ULL,
    0x0000000080008009ULL,  0x000000008000000aULL,
    0x000000008000808bULL,  0x800000000000008bULL,
    0x8000000000008089ULL,  0x8000000000008003ULL,
    0x8000000000008002ULL,  0x8000000000000080ULL,
    0x000000000000800aULL,  0x800000008000000aULL,
    0x8000000080008081ULL,  0x8000000000008080ULL,
    0x0000000080000001ULL,  0x8000000080008008ULL
  };
# define A00 (p->u.s[0])
# define A01 (p->u.s[1])
# define A02 (p->u.s[2])
# define A03 (p->u.s[3])
# define A04 (p->u.s[4])
# define A10 (p->u.s[5])
# define A11 (p->u.s[6])
# define A12 (p->u.s[7])
# define A13 (p->u.s[8])
# define A14 (p->u.s[9])
# define A20 (p->u.s[10])
# define A21 (p->u.s[11])
# define A22 (p->u.s[12])
# define A23 (p->u.s[13])
# define A24 (p->u.s[14])
# define A30 (p->u.s[15])
# define A31 (p->u.s[16])
# define A32 (p->u.s[17])
# define A33 (p->u.s[18])
# define A34 (p->u.s[19])
# define A40 (p->u.s[20])
# define A41 (p->u.s[21])
# define A42 (p->u.s[22])
# define A43 (p->u.s[23])
# define A44 (p->u.s[24])
# define ROL64(a,x) ((a<<x)|(a>>(64-x)))

  for(i=0; i<24; i+=4){
    C0 = A00^A10^A20^A30^A40;
    C1 = A01^A11^A21^A31^A41;
    C2 = A02^A12^A22^A32^A42;
    C3 = A03^A13^A23^A33^A43;
    C4 = A04^A14^A24^A34^A44;
    D0 = C4^ROL64(C1, 1);
    D1 = C0^ROL64(C2, 1);
    D2 = C1^ROL64(C3, 1);
    D3 = C2^ROL64(C4, 1);
    D4 = C3^ROL64(C0, 1);

    m_B0 = (A00^D0);
    m_B1 = ROL64((A11^D1), 44);
    m_B2 = ROL64((A22^D2), 43);
    m_B3 = ROL64((A33^D3), 21);
    m_B4 = ROL64((A44^D4), 14);
    A00 =   m_B0 ^((~m_B1)&  m_B2 );
    A00 ^= RC[i];
    A11 =   m_B1 ^((~m_B2)&  m_B3 );
    A22 =   m_B2 ^((~m_B3)&  m_B4 );
    A33 =   m_B3 ^((~m_B4)&  m_B0 );
    A44 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B2 = ROL64((A20^D0), 3);
    m_B3 = ROL64((A31^D1), 45);
    m_B4 = ROL64((A42^D2), 61);
    m_B0 = ROL64((A03^D3), 28);
    m_B1 = ROL64((A14^D4), 20);
    A20 =   m_B0 ^((~m_B1)&  m_B2 );
    A31 =   m_B1 ^((~m_B2)&  m_B3 );
    A42 =   m_B2 ^((~m_B3)&  m_B4 );
    A03 =   m_B3 ^((~m_B4)&  m_B0 );
    A14 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B4 = ROL64((A40^D0), 18);
    m_B0 = ROL64((A01^D1), 1);
    m_B1 = ROL64((A12^D2), 6);
    m_B2 = ROL64((A23^D3), 25);
    m_B3 = ROL64((A34^D4), 8);
    A40 =   m_B0 ^((~m_B1)&  m_B2 );
    A01 =   m_B1 ^((~m_B2)&  m_B3 );
    A12 =   m_B2 ^((~m_B3)&  m_B4 );
    A23 =   m_B3 ^((~m_B4)&  m_B0 );
    A34 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B1 = ROL64((A10^D0), 36);
    m_B2 = ROL64((A21^D1), 10);
    m_B3 = ROL64((A32^D2), 15);
    m_B4 = ROL64((A43^D3), 56);
    m_B0 = ROL64((A04^D4), 27);
    A10 =   m_B0 ^((~m_B1)&  m_B2 );
    A21 =   m_B1 ^((~m_B2)&  m_B3 );
    A32 =   m_B2 ^((~m_B3)&  m_B4 );
    A43 =   m_B3 ^((~m_B4)&  m_B0 );
    A04 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B3 = ROL64((A30^D0), 41);
    m_B4 = ROL64((A41^D1), 2);
    m_B0 = ROL64((A02^D2), 62);
    m_B1 = ROL64((A13^D3), 55);
    m_B2 = ROL64((A24^D4), 39);
    A30 =   m_B0 ^((~m_B1)&  m_B2 );
    A41 =   m_B1 ^((~m_B2)&  m_B3 );
    A02 =   m_B2 ^((~m_B3)&  m_B4 );
    A13 =   m_B3 ^((~m_B4)&  m_B0 );
    A24 =   m_B4 ^((~m_B0)&  m_B1 );

    C0 = A00^A20^A40^A10^A30;
    C1 = A11^A31^A01^A21^A41;
    C2 = A22^A42^A12^A32^A02;
    C3 = A33^A03^A23^A43^A13;
    C4 = A44^A14^A34^A04^A24;
    D0 = C4^ROL64(C1, 1);
    D1 = C0^ROL64(C2, 1);
    D2 = C1^ROL64(C3, 1);
    D3 = C2^ROL64(C4, 1);
    D4 = C3^ROL64(C0, 1);

    m_B0 = (A00^D0);
    m_B1 = ROL64((A31^D1), 44);
    m_B2 = ROL64((A12^D2), 43);
    m_B3 = ROL64((A43^D3), 21);
    m_B4 = ROL64((A24^D4), 14);
    A00 =   m_B0 ^((~m_B1)&  m_B2 );
    A00 ^= RC[i+1];
    A31 =   m_B1 ^((~m_B2)&  m_B3 );
    A12 =   m_B2 ^((~m_B3)&  m_B4 );
    A43 =   m_B3 ^((~m_B4)&  m_B0 );
    A24 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B2 = ROL64((A40^D0), 3);
    m_B3 = ROL64((A21^D1), 45);
    m_B4 = ROL64((A02^D2), 61);
    m_B0 = ROL64((A33^D3), 28);
    m_B1 = ROL64((A14^D4), 20);
    A40 =   m_B0 ^((~m_B1)&  m_B2 );
    A21 =   m_B1 ^((~m_B2)&  m_B3 );
    A02 =   m_B2 ^((~m_B3)&  m_B4 );
    A33 =   m_B3 ^((~m_B4)&  m_B0 );
    A14 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B4 = ROL64((A30^D0), 18);
    m_B0 = ROL64((A11^D1), 1);
    m_B1 = ROL64((A42^D2), 6);
    m_B2 = ROL64((A23^D3), 25);
    m_B3 = ROL64((A04^D4), 8);
    A30 =   m_B0 ^((~m_B1)&  m_B2 );
    A11 =   m_B1 ^((~m_B2)&  m_B3 );
    A42 =   m_B2 ^((~m_B3)&  m_B4 );
    A23 =   m_B3 ^((~m_B4)&  m_B0 );
    A04 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B1 = ROL64((A20^D0), 36);
    m_B2 = ROL64((A01^D1), 10);
    m_B3 = ROL64((A32^D2), 15);
    m_B4 = ROL64((A13^D3), 56);
    m_B0 = ROL64((A44^D4), 27);
    A20 =   m_B0 ^((~m_B1)&  m_B2 );
    A01 =   m_B1 ^((~m_B2)&  m_B3 );
    A32 =   m_B2 ^((~m_B3)&  m_B4 );
    A13 =   m_B3 ^((~m_B4)&  m_B0 );
    A44 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B3 = ROL64((A10^D0), 41);
    m_B4 = ROL64((A41^D1), 2);
    m_B0 = ROL64((A22^D2), 62);
    m_B1 = ROL64((A03^D3), 55);
    m_B2 = ROL64((A34^D4), 39);
    A10 =   m_B0 ^((~m_B1)&  m_B2 );
    A41 =   m_B1 ^((~m_B2)&  m_B3 );
    A22 =   m_B2 ^((~m_B3)&  m_B4 );
    A03 =   m_B3 ^((~m_B4)&  m_B0 );
    A34 =   m_B4 ^((~m_B0)&  m_B1 );

    C0 = A00^A40^A30^A20^A10;
    C1 = A31^A21^A11^A01^A41;
    C2 = A12^A02^A42^A32^A22;
    C3 = A43^A33^A23^A13^A03;
    C4 = A24^A14^A04^A44^A34;
    D0 = C4^ROL64(C1, 1);
    D1 = C0^ROL64(C2, 1);
    D2 = C1^ROL64(C3, 1);
    D3 = C2^ROL64(C4, 1);
    D4 = C3^ROL64(C0, 1);

    m_B0 = (A00^D0);
    m_B1 = ROL64((A21^D1), 44);
    m_B2 = ROL64((A42^D2), 43);
    m_B3 = ROL64((A13^D3), 21);
    m_B4 = ROL64((A34^D4), 14);
    A00 =   m_B0 ^((~m_B1)&  m_B2 );
    A00 ^= RC[i+2];
    A21 =   m_B1 ^((~m_B2)&  m_B3 );
    A42 =   m_B2 ^((~m_B3)&  m_B4 );
    A13 =   m_B3 ^((~m_B4)&  m_B0 );
    A34 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B2 = ROL64((A30^D0), 3);
    m_B3 = ROL64((A01^D1), 45);
    m_B4 = ROL64((A22^D2), 61);
    m_B0 = ROL64((A43^D3), 28);
    m_B1 = ROL64((A14^D4), 20);
    A30 =   m_B0 ^((~m_B1)&  m_B2 );
    A01 =   m_B1 ^((~m_B2)&  m_B3 );
    A22 =   m_B2 ^((~m_B3)&  m_B4 );
    A43 =   m_B3 ^((~m_B4)&  m_B0 );
    A14 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B4 = ROL64((A10^D0), 18);
    m_B0 = ROL64((A31^D1), 1);
    m_B1 = ROL64((A02^D2), 6);
    m_B2 = ROL64((A23^D3), 25);
    m_B3 = ROL64((A44^D4), 8);
    A10 =   m_B0 ^((~m_B1)&  m_B2 );
    A31 =   m_B1 ^((~m_B2)&  m_B3 );
    A02 =   m_B2 ^((~m_B3)&  m_B4 );
    A23 =   m_B3 ^((~m_B4)&  m_B0 );
    A44 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B1 = ROL64((A40^D0), 36);
    m_B2 = ROL64((A11^D1), 10);
    m_B3 = ROL64((A32^D2), 15);
    m_B4 = ROL64((A03^D3), 56);
    m_B0 = ROL64((A24^D4), 27);
    A40 =   m_B0 ^((~m_B1)&  m_B2 );
    A11 =   m_B1 ^((~m_B2)&  m_B3 );
    A32 =   m_B2 ^((~m_B3)&  m_B4 );
    A03 =   m_B3 ^((~m_B4)&  m_B0 );
    A24 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B3 = ROL64((A20^D0), 41);
    m_B4 = ROL64((A41^D1), 2);
    m_B0 = ROL64((A12^D2), 62);
    m_B1 = ROL64((A33^D3), 55);
    m_B2 = ROL64((A04^D4), 39);
    A20 =   m_B0 ^((~m_B1)&  m_B2 );
    A41 =   m_B1 ^((~m_B2)&  m_B3 );
    A12 =   m_B2 ^((~m_B3)&  m_B4 );
    A33 =   m_B3 ^((~m_B4)&  m_B0 );
    A04 =   m_B4 ^((~m_B0)&  m_B1 );

    C0 = A00^A30^A10^A40^A20;
    C1 = A21^A01^A31^A11^A41;
    C2 = A42^A22^A02^A32^A12;
    C3 = A13^A43^A23^A03^A33;
    C4 = A34^A14^A44^A24^A04;
    D0 = C4^ROL64(C1, 1);
    D1 = C0^ROL64(C2, 1);
    D2 = C1^ROL64(C3, 1);
    D3 = C2^ROL64(C4, 1);
    D4 = C3^ROL64(C0, 1);

    m_B0 = (A00^D0);
    m_B1 = ROL64((A01^D1), 44);
    m_B2 = ROL64((A02^D2), 43);
    m_B3 = ROL64((A03^D3), 21);
    m_B4 = ROL64((A04^D4), 14);
    A00 =   m_B0 ^((~m_B1)&  m_B2 );
    A00 ^= RC[i+3];
    A01 =   m_B1 ^((~m_B2)&  m_B3 );
    A02 =   m_B2 ^((~m_B3)&  m_B4 );
    A03 =   m_B3 ^((~m_B4)&  m_B0 );
    A04 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B2 = ROL64((A10^D0), 3);
    m_B3 = ROL64((A11^D1), 45);
    m_B4 = ROL64((A12^D2), 61);
    m_B0 = ROL64((A13^D3), 28);
    m_B1 = ROL64((A14^D4), 20);
    A10 =   m_B0 ^((~m_B1)&  m_B2 );
    A11 =   m_B1 ^((~m_B2)&  m_B3 );
    A12 =   m_B2 ^((~m_B3)&  m_B4 );
    A13 =   m_B3 ^((~m_B4)&  m_B0 );
    A14 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B4 = ROL64((A20^D0), 18);
    m_B0 = ROL64((A21^D1), 1);
    m_B1 = ROL64((A22^D2), 6);
    m_B2 = ROL64((A23^D3), 25);
    m_B3 = ROL64((A24^D4), 8);
    A20 =   m_B0 ^((~m_B1)&  m_B2 );
    A21 =   m_B1 ^((~m_B2)&  m_B3 );
    A22 =   m_B2 ^((~m_B3)&  m_B4 );
    A23 =   m_B3 ^((~m_B4)&  m_B0 );
    A24 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B1 = ROL64((A30^D0), 36);
    m_B2 = ROL64((A31^D1), 10);
    m_B3 = ROL64((A32^D2), 15);
    m_B4 = ROL64((A33^D3), 56);
    m_B0 = ROL64((A34^D4), 27);
    A30 =   m_B0 ^((~m_B1)&  m_B2 );
    A31 =   m_B1 ^((~m_B2)&  m_B3 );
    A32 =   m_B2 ^((~m_B3)&  m_B4 );
    A33 =   m_B3 ^((~m_B4)&  m_B0 );
    A34 =   m_B4 ^((~m_B0)&  m_B1 );

    m_B3 = ROL64((A40^D0), 41);
    m_B4 = ROL64((A41^D1), 2);
    m_B0 = ROL64((A42^D2), 62);
    m_B1 = ROL64((A43^D3), 55);
    m_B2 = ROL64((A44^D4), 39);
    A40 =   m_B0 ^((~m_B1)&  m_B2 );
    A41 =   m_B1 ^((~m_B2)&  m_B3 );
    A42 =   m_B2 ^((~m_B3)&  m_B4 );
    A43 =   m_B3 ^((~m_B4)&  m_B0 );
    A44 =   m_B4 ^((~m_B0)&  m_B1 );
  }
}

And then all this project can be built with NDK r18b clang toolchain.

from qtciphersqliteplugin.

scienceasdf avatar scienceasdf commented on September 24, 2024

I encounter errors too while using Qt 5.12.0 and Android ndk clang compiler. From the error message, I got it is because the variables u64 B0, B1, ... in shatree.c are conflicted with the macros B0, B1, ... in android-ndk-r18b/sysroot/usr/include/asm-generic/termbits.h.

from qtciphersqliteplugin.

liaoxuewei avatar liaoxuewei commented on September 24, 2024

I had fix compile B0 error, but can't generate so file, how to fix it? NDK r18b? I just found NDK r16b?

from qtciphersqliteplugin.

DisableAsync avatar DisableAsync commented on September 24, 2024

they said just build this project with app template, and open the generated apk file with archive softwares, then take the .so file inside

from qtciphersqliteplugin.

liaoxuewei avatar liaoxuewei commented on September 24, 2024

I could not generate any file, because there ware some errors in generating the file.

E:\Opensource\QtCipherSqlitePlugin\build-sqlitecipher-Android_for_armeabi_v7a_GCC_4_9_Qt_5_10_1_for_Android_armv7-Release.obj\regexp.obj: -1: error: file not recognized: File format not recognized
collect2.exe: -1: error: error: ld returned 1 exit status

from qtciphersqliteplugin.

DisableAsync avatar DisableAsync commented on September 24, 2024

have you tried to use new version of Qt?
i installed all new version of everything just now and successfully built android library
(errors actually generated, but they were about copying libs to qt installation dir. the lib was still properly made)
and tested it in an x86 emulator, everything worked just fine!

from qtciphersqliteplugin.

liaoxuewei avatar liaoxuewei commented on September 24, 2024

It worked fine now, there are some thing wrong. But i don't why, thinks!

from qtciphersqliteplugin.

zj511025 avatar zj511025 commented on September 24, 2024

It worked fine now, there are some thing wrong. But i don't why, thinks!

I had the same problem.
How did you solve it?

qt5.13 + mingw + android (ndkr19c)

from qtciphersqliteplugin.

zj511025 avatar zj511025 commented on September 24, 2024

have you tried to use new version of Qt?
i installed all new version of everything just now and successfully built android library
(errors actually generated, but they were about copying libs to qt installation dir. the lib was still properly made)
and tested it in an x86 emulator, everything worked just fine!

I had the same problem.
How did you solve it?

win+qt5.13 + mingw + android (ndkr19c)

from qtciphersqliteplugin.

DisableAsync avatar DisableAsync commented on September 24, 2024

have you tried to use new version of Qt?
i installed all new version of everything just now and successfully built android library
(errors actually generated, but they were about copying libs to qt installation dir. the lib was still properly made)
and tested it in an x86 emulator, everything worked just fine!

I had the same problem.
How did you solve it?

win+qt5.13 + mingw + android (ndkr19c)

to be specific, which problem you meant?

from qtciphersqliteplugin.

zj511025 avatar zj511025 commented on September 24, 2024

have you tried to use new version of Qt?
i installed all new version of everything just now and successfully built android library
(errors actually generated, but they were about copying libs to qt installation dir. the lib was still properly made)
and tested it in an x86 emulator, everything worked just fine!

I had the same problem.
How did you solve it?
win+qt5.13 + mingw + android (ndkr19c)

to be specific, which problem you meant?

我的意思是:
我和scienceasdf遇到了相同的问题。我在windows平台下,使用qt5.13,使用mingw编译Android_for_armeabi_v7a版本(ndk r19c),在下面的函数中报错:
static void KeccakF1600Step(SHA3Context *p)
1、u64 未定义
2、我打开上面的u64定义之后,报B0重复定义

我想请问一下,您们是如何解决这个问题的?

from qtciphersqliteplugin.

DisableAsync avatar DisableAsync commented on September 24, 2024

右鍵點擊 B0,點選重構,隨便起個名字

參考

from qtciphersqliteplugin.

zj511025 avatar zj511025 commented on September 24, 2024

右鍵點擊 B0,點選重構,隨便起個名字

參考

我是这么修改的。编译后报拷贝文件错误。我再到编译输出目录下看,实际上没有生成任何文件。不知为什么?

from qtciphersqliteplugin.

DisableAsync avatar DisableAsync commented on September 24, 2024

我試着重複這個問題,但是這次解決了u64和B0的問題後建置通過,沒有出現錯誤...

你可以試着在建置目錄下搜尋libsqlitecipher.so

from qtciphersqliteplugin.

zj511025 avatar zj511025 commented on September 24, 2024

我試着重複這個問題,但是這次解決了u64和B0的問題後建置通過,沒有出現錯誤...

你可以試着在建置目錄下搜尋libsqlitecipher.so

我搜了整个目录,没有找到libsqlitecipher.so文件。
您发现问题了吗?

from qtciphersqliteplugin.

DisableAsync avatar DisableAsync commented on September 24, 2024

抱歉哈,真的不了解情況。

from qtciphersqliteplugin.

zj511025 avatar zj511025 commented on September 24, 2024

抱歉哈,真的不了解情況。

这个插件,对qt和Android的版本有要求吗?

from qtciphersqliteplugin.

DisableAsync avatar DisableAsync commented on September 24, 2024

不知道哦。
我這邊用的東西都是最新版本。
主機作業系統的話是Pop!_OS 19.04。

from qtciphersqliteplugin.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.