WIP
This commit is contained in:
parent
8749bcb1a7
commit
070a06bf62
@ -9,6 +9,8 @@ set(CMAKE_VERBOSE_MAKEFILE ON)
|
|||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "~/.cmake/Modules")
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "~/.cmake/Modules")
|
||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "3rd/cmake-modules")
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "3rd/cmake-modules")
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
|
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
|
||||||
|
|
||||||
@ -301,6 +303,14 @@ define_kem_alg(
|
|||||||
lightsaber_clean
|
lightsaber_clean
|
||||||
PQCLEAN_LIGHTSABER_CLEAN "${SRC_CLEAN_LIGHTSABER}" "${INC_CLEAN_LIGHTSABER}")
|
PQCLEAN_LIGHTSABER_CLEAN "${SRC_CLEAN_LIGHTSABER}" "${INC_CLEAN_LIGHTSABER}")
|
||||||
|
|
||||||
|
#function(define_frodo_src path)
|
||||||
|
#endif()
|
||||||
|
# -rw-r--r-- 1 kris kris 13783 Mar 1 12:35 kem.c
|
||||||
|
# -rw-r--r-- 1 kris kris 3343 Mar 1 12:35 matrix_shake.c
|
||||||
|
# -rw-r--r-- 1 kris kris 1426 Mar 1 12:35 noise.c
|
||||||
|
# -rw-r--r-- 1 kris kris 9202 Mar 1 12:35 util.c
|
||||||
|
|
||||||
|
|
||||||
# AVX2 targets
|
# AVX2 targets
|
||||||
if(${ARCH} STREQUAL "ARCH_x86_64")
|
if(${ARCH} STREQUAL "ARCH_x86_64")
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#include "params.h"
|
#include "params.h"
|
||||||
#include "rounding.h"
|
#include "rounding.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
/*************************************************
|
/*************************************************
|
||||||
* Name: PQCLEAN_DILITHIUM2_CLEAN_power2round
|
* Name: PQCLEAN_DILITHIUM2_CLEAN_power2round
|
||||||
@ -37,14 +39,46 @@ int32_t PQCLEAN_DILITHIUM2_CLEAN_power2round(int32_t *a0, int32_t a) {
|
|||||||
* Returns a1.
|
* Returns a1.
|
||||||
**************************************************/
|
**************************************************/
|
||||||
int32_t PQCLEAN_DILITHIUM2_CLEAN_decompose(int32_t *a0, int32_t a) {
|
int32_t PQCLEAN_DILITHIUM2_CLEAN_decompose(int32_t *a0, int32_t a) {
|
||||||
int32_t a1;
|
int32_t a1 = 0;
|
||||||
|
uint64_t r;
|
||||||
|
|
||||||
|
int32_t r0, r1;
|
||||||
|
|
||||||
|
assert(a>0); assert(a<Q);
|
||||||
|
|
||||||
|
// mod ALPHA
|
||||||
|
static const uint32_t u = 360800;
|
||||||
|
r = ((uint64_t)a)*u;
|
||||||
|
r >>= 36;
|
||||||
|
r *= 2 * GAMMA2;
|
||||||
|
r = a - r;
|
||||||
|
|
||||||
|
if (r>(2*GAMMA2)) {
|
||||||
|
r -= 2*GAMMA2;
|
||||||
|
}
|
||||||
|
|
||||||
|
r1 = ((int32_t)r)*2*GAMMA2;
|
||||||
|
|
||||||
|
// centrize
|
||||||
|
if (r > GAMMA2) {
|
||||||
|
*a0 = (int32_t)r - 2*GAMMA2;
|
||||||
|
} else {
|
||||||
|
*a0 = r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// CASE: r-r0 = q-1 => r1=0, r0 = r0-1
|
||||||
|
|
||||||
|
// OLD
|
||||||
a1 = (a + 127) >> 7;
|
a1 = (a + 127) >> 7;
|
||||||
a1 = (a1 * 11275 + (1 << 23)) >> 24;
|
a1 = (a1 * 11275 + (1 << 23)) >> 24;
|
||||||
a1 ^= ((43 - a1) >> 31) & a1;
|
a1 ^= ((43 - a1) >> 31) & a1;
|
||||||
|
|
||||||
*a0 = a - a1 * 2 * GAMMA2;
|
// TODO: ten sam trick co w barrett
|
||||||
*a0 -= (((Q - 1) / 2 - *a0) >> 31) & Q;
|
int32_t a2 = ((uint64_t)a-*a0)/(2*GAMMA2);
|
||||||
|
|
||||||
|
//*a0 = a - a1 * 2 * GAMMA2;
|
||||||
|
//*a0 -= (((Q - 1) / 2 - *a0) >> 31) & Q;
|
||||||
|
printf("(%d, %d,\n)", a1, a2);
|
||||||
return a1;
|
return a1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user