Здравствуйте.
У кого нибудь есть опыт работы с IPP криптографической библиотекой??
Есть две функции восстановленные из библиотеки. Необходимо сделать простенькую утилиту которая смогла бы зашифровать и расшифровать данные аналогичным способом.
_BOOL4 __usercall cr_init@<eax>(int a1@<esi>)
{
int v1; // eax
_BOOL4 v2; // ecx
int v4; // eax
int v5; // eax
int v6; // eax
int v7; // esi
signed int v8; // eax
int v9; // eax
signed int v10; // eax
int v11; // eax
int v12; // eax
int v13; // [esp+0h] [ebp-Ch]
v13 = a1;
ippStaticInit();
v1 = ippsECCPGetSize(force_to_data_0, &ecc_ctx_size);
v2 = 1;
if ( !v1 )
{
v4 = ippMalloc(ecc_ctx_size);
p_ecc = v4;
v5 = ippsECCPInit(force_to_data_0, v4);
v2 = 1;
if ( !v5 )
{
v6 = ippsECCPSetStd(65544, p_ecc);
v2 = 1;
if ( !v6 )
{
v7 = (unsigned int)force_to_data_0 >> 5;
ippsBigNumGetSize((unsigned int)force_to_data_0 >> 5);
x_bn_length = v7;
x_bn_buf_size = v13;
ecc_prime = init_big_num_state(v7, v13);
v2 = 1;
if ( ecc_prime )
{
ecc_a = init_big_num_state(v7, v13);
v2 = 1;
if ( ecc_a )
{
ecc_b = init_big_num_state(v7, v13);
v2 = 1;
if ( ecc_b )
{
ecc_gx = init_big_num_state(v7, v13);
v2 = 1;
if ( ecc_gx )
{
ecc_gy = init_big_num_state(v7, v13);
v2 = 1;
if ( ecc_gy )
{
v8 = init_big_num_state(v7, v13);
ecc_order = v8;
v2 = 1;
if ( v8 )
{
v9 = ippsECCPGet(ecc_prime, ecc_a, ecc_b, ecc_gx, ecc_gy, v8, &cofactor, p_ecc);
v2 = 1;
if ( !v9 )
{
Qa = init_ecc_point(force_to_data_0);
v2 = 1;
if ( Qa )
{
v10 = init_ecc_point(force_to_data_0);
G = v10;
v2 = 1;
if ( v10 )
{
v11 = ippsECCPSetPoint(ecc_gx, ecc_gy, v10, p_ecc);
v2 = 1;
if ( !v11 )
{
v12 = generate_big_number(force_to_data_0 / 2, &mc_private_key);
da = v12;
v2 = 1;
if ( v12 )
v2 = ippsECCPMulPointScalar(G, v12, Qa, p_ecc) != 0;
}
}
}
}
}
}
}
}
}
}
}
}
}
return v2;
}
signed int __cdecl cr_decrypt(int a1, int a2, int a3, int a4, int a5, int a6)
{
signed int v6; // edx
int v7; // eax
signed int v8; // eax
signed int v9; // ebp
int v10; // eax
int v11; // edi
int v12; // esi
signed int v14; // [esp+10h] [ebp-1Ch]
signed int v15; // [esp+14h] [ebp-18h]
int v16; // [esp+18h] [ebp-14h]
v16 = init_public_key(force_to_data_0, a5, a6 / 2, a6 / 2 + a5, a6 / 2);
v6 = 2;
if ( v16 )
{
v15 = init_ecc_point(force_to_data_0);
v6 = 2;
if ( v15 )
{
v7 = ippsECCPMulPointScalar(v16, da, v15, p_ecc);
v6 = 2;
if ( !v7 )
{
v14 = init_big_num_state(x_bn_length, x_bn_buf_size);
v6 = 2;
if ( v14 )
{
v8 = init_big_num_state(x_bn_length, x_bn_buf_size);
v9 = v8;
v6 = 2;
if ( v8 )
{
v10 = ippsECCPGetPoint(v14, v8, v15, p_ecc);
v6 = 2;
if ( !v10 )
{
v11 = init_two_fish_ctx(v14);
v12 = init_twofish_iv(v9);
get_plain_data(a1, a2, v11, v12, a3);
ippFree(v11);
ippFree(v12);
ippFree(v9);
ippFree(v14);
ippFree(v15);
ippFree(v16);
v6 = 0;
}
}
}
}
}
}
return v6;
}
signed int __cdecl cr_encrypt(int a1, int a2, int a3, int a4, int a5, int a6)
{
signed int v6; // edx
int v7; // eax
signed int v8; // eax
signed int v9; // ebp
int v10; // eax
int v11; // edi
int v12; // esi
signed int v14; // [esp+10h] [ebp-1Ch]
signed int v15; // [esp+14h] [ebp-18h]
int v16; // [esp+18h] [ebp-14h]
v16 = init_public_key(force_to_data_0, a5, a6 / 2, a6 / 2 + a5, a6 / 2);
v6 = 2;
if ( v16 )
{
v15 = init_ecc_point(force_to_data_0);
v6 = 2;
if ( v15 )
{
v7 = ippsECCPMulPointScalar(v16, da, v15, p_ecc);
v6 = 2;
if ( !v7 )
{
v14 = init_big_num_state(x_bn_length, x_bn_buf_size);
v6 = 2;
if ( v14 )
{
v8 = init_big_num_state(x_bn_length, x_bn_buf_size);
v9 = v8;
v6 = 2;
if ( v8 )
{
v10 = ippsECCPGetPoint(v14, v8, v15, p_ecc);
v6 = 2;
if ( !v10 )
{
v11 = init_two_fish_ctx(v14);
v12 = init_twofish_iv(v9);
get_cipher_data(a1, a2, v11, v12, a3);
ippFree(v11);
ippFree(v12);
ippFree(v9);
ippFree(v14);
ippFree(v15);
ippFree(v16);
v6 = 0;
}
}
}
}
}
}
return v6;
}
Вроде нашел библиотеку ipp но там нету функций таких. А поиск по функциям кидает на разные страницы Intel но никак не нахожу примера использования.