65 lines
1.7 KiB
C
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
|