ParamGeneration.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // ECOin - Copyright (c) - 2014/2022 - GPLv3 - epsylon@riseup.net (https://03c8.net)
  2. #ifndef PARAMGENERATION_H_
  3. #define PARAMGENERATION_H_
  4. namespace libzerocoin {
  5. void CalculateParams(Params &params, CBigNum N, std::string aux, uint32_t securityLevel);
  6. void calculateGroupParamLengths(uint32_t maxPLen, uint32_t securityLevel,
  7. uint32_t *pLen, uint32_t *qLen);
  8. // Constants
  9. #define STRING_COMMIT_GROUP "COIN_COMMITMENT_GROUP"
  10. #define STRING_AVC_GROUP "ACCUMULATED_VALUE_COMMITMENT_GROUP"
  11. #define STRING_AVC_ORDER "ACCUMULATED_VALUE_COMMITMENT_ORDER"
  12. #define STRING_AIC_GROUP "ACCUMULATOR_INTERNAL_COMMITMENT_GROUP"
  13. #define STRING_QRNCOMMIT_GROUPG "ACCUMULATOR_QRN_COMMITMENT_GROUPG"
  14. #define STRING_QRNCOMMIT_GROUPH "ACCUMULATOR_QRN_COMMITMENT_GROUPH"
  15. #define ACCUMULATOR_BASE_CONSTANT 31
  16. #define MAX_PRIMEGEN_ATTEMPTS 10000
  17. #define MAX_ACCUMGEN_ATTEMPTS 10000
  18. #define MAX_GENERATOR_ATTEMPTS 10000
  19. #define NUM_SCHNORRGEN_ATTEMPTS 10000
  20. // Prototypes
  21. bool primalityTestByTrialDivision(uint32_t candidate);
  22. uint256 calculateSeed(CBigNum modulus, std::string auxString, uint32_t securityLevel, std::string groupName);
  23. uint256 calculateGeneratorSeed(uint256 seed, uint256 pSeed, uint256 qSeed, std::string label, uint32_t index, uint32_t count);
  24. uint256 calculateHash(uint256 input);
  25. IntegerGroupParams deriveIntegerGroupParams(uint256 seed, uint32_t pLen, uint32_t qLen);
  26. IntegerGroupParams deriveIntegerGroupFromOrder(CBigNum &groupOrder);
  27. void calculateGroupModulusAndOrder(uint256 seed, uint32_t pLen, uint32_t qLen,
  28. CBigNum &resultModulus, CBigNum &resultGroupOrder,
  29. uint256 *resultPseed, uint256 *resultQseed);
  30. CBigNum calculateGroupGenerator(uint256 seed, uint256 pSeed, uint256 qSeed, CBigNum modulus,
  31. CBigNum groupOrder, uint32_t index);
  32. CBigNum generateRandomPrime(uint32_t primeBitLen, uint256 in_seed, uint256 *out_seed,
  33. uint32_t *prime_gen_counter);
  34. CBigNum generateIntegerFromSeed(uint32_t numBits, uint256 seed, uint32_t *numIterations);
  35. bool primalityTestByTrialDivision(uint32_t candidate);
  36. }/* namespace libzerocoin */
  37. #endif /* PARAMGENERATION_H_ */