MastersThesis/TIIGER_TLS/PQ_TIIGER_TLS/sal/miracl-winx64-15-04-24/includes/newhope.h
2024-04-15 12:18:26 +02:00

65 lines
1.7 KiB
C++

/*
* Copyright (c) 2012-2020 MIRACL UK Ltd.
*
* This file is part of MIRACL Core
* (see https://github.com/miracl/core).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* NewHope Simple API */
#ifndef NHS_H
#define NHS_H
#include "core.h"
/* NewHope parameters */
//q= 12289
#define RLWE_PRIME 0x3001 // q in Hex
#define RLWE_LGN 10 // Degree n=2^LGN
#define RLWE_ND 0xF7002FFF // 1/(R-q) mod R
#define RLWE_ONE 0x2AC8 // R mod q
#define RLWE_R2MODP 0x1620 // R^2 mod q
namespace core {
/** @brief NHS server first pass
*
@param RNG Random Number Generator handle
@param SB seed and polynomial B concatenated - output
@param S server secret - output
*/
extern void NHS_SERVER_1(csprng *RNG, octet *SB, octet *S);
/** @brief NHS client pass
*
@param RNG Random Number Generator handle
@param SB seed and polynomial B concatenated - input
@param UC polynomial U and compressed polynomial c - output
@param KEY client key
*/
extern void NHS_CLIENT(csprng *RNG, octet *SB, octet *UC, octet *KEY);
/** @brief NHS server second pass
*
@param S server secret - input
@param UC polynomial U and compressed polynomial c - input
@param KEY server key
*/
extern void NHS_SERVER_2(octet *S, octet *UC, octet *KEY);
}
#endif