From 1603dbd6e2f3d9896b443850b45eb8612858d131 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 5 Jun 2023 12:29:54 +0300 Subject: [PATCH] Header improvements, refactor continues --- src/header.h | 11 +++++++---- src/server.cpp | 7 ++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/header.h b/src/header.h index f8995bb..bc4b7ea 100644 --- a/src/header.h +++ b/src/header.h @@ -43,11 +43,14 @@ #define SHA_MSG_LENGTH_XP (4 + 2 * FIELD_BYTES) #define SHA_MSG_LENGTH_2003 (3 + 2 * FIELD_BYTES_2003) -#define NEXTSNBITS(field, n, offset) (((QWORD)field >> offset) & ((1ULL << (n)) - 1)) -#define FIRSTNBITS(field, n) NEXTSNBITS(field, n, 0) +#define NEXTSNBITS(field, n, offset) (((QWORD)(field) >> (offset)) & ((1ULL << (n)) - 1)) +#define FIRSTNBITS(field, n) NEXTSNBITS((field), (n), 0) -#define BYDWORD(n) (*(n + 0) | *(n + 1) << 8 | *(n + 2) << 16 | *(n + 3) << 24) -#define BITMASK(n) ((1ULL << n) - 1) +#define HIBYTES(field, bytes) NEXTSNBITS((QWORD)(field), ((bytes) * 8), ((bytes) * 8)) +#define LOBYTES(field, bytes) FIRSTNBITS((QWORD)(field), ((bytes) * 8)) + +#define BYDWORD(n) (*((n) + 0) | *((n) + 1) << 8 | *((n) + 2) << 16 | *((n) + 3) << 24) +#define BITMASK(n) ((1ULL << (n)) - 1) // Confirmation ID generator constants #define SUCCESS 0 diff --git a/src/server.cpp b/src/server.cpp index 35c52bc..5cf585b 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -299,8 +299,7 @@ void generateServerKey( BN_rshift1(s, s); // Convert s from BigNum back to bytecode and reverse the endianness. - BN_bn2bin(s, (BYTE *)&pSignature); - endian((BYTE *)&pSignature, BN_num_bytes(s)); + BN_bn2lebinpad(s, (BYTE *)&pSignature, BN_num_bytes(s)); // Pack product key. packServer(bKey, pChannelID, hash, pSignature, pAuthInfo); @@ -310,10 +309,12 @@ void generateServerKey( BN_free(x); BN_free(y); BN_free(b); - } while ((pSignature >> 32) >= 0x40000000); + } while (HIBYTES(pSignature, sizeof(DWORD)) >= 0x40000000); base24(pKey, (BYTE *)bKey); + std::cout << "attempt pass" << std::endl; + BN_CTX_free(ctx); EC_POINT_free(r); }