* This file is part of the openHiTLS project.
*
* openHiTLS is licensed under the Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#include "hitls_build.h"
#ifdef HITLS_CRYPTO_BN_RFC_PRIME
#include "crypt_errno.h"
#include "crypt_algid.h"
#include "bn_basic.h"
#if defined(HITLS_SIXTY_FOUR_BITS)
static const BN_UINT RFC2409_PRIME_1024[] = {
0xFFFFFFFFFFFFFFFFUL, 0x49286651ECE65381UL, 0xAE9F24117C4B1FE6UL, 0xEE386BFB5A899FA5UL,
0x0BFF5CB6F406B7EDUL, 0xF44C42E9A637ED6BUL, 0xE485B576625E7EC6UL, 0x4FE1356D6D51C245UL,
0x302B0A6DF25F1437UL, 0xEF9519B3CD3A431BUL, 0x514A08798E3404DDUL, 0x020BBEA63B139B22UL,
0x29024E088A67CC74UL, 0xC4C6628B80DC1CD1UL, 0xC90FDAA22168C234UL, 0xFFFFFFFFFFFFFFFFUL
};
static const BN_UINT RFC3526_PRIME_1536[] = {
0xFFFFFFFFFFFFFFFFUL, 0xF1746C08CA237327UL, 0x670C354E4ABC9804UL, 0x9ED529077096966DUL,
0x1C62F356208552BBUL, 0x83655D23DCA3AD96UL, 0x69163FA8FD24CF5FUL, 0x98DA48361C55D39AUL,
0xC2007CB8A163BF05UL, 0x49286651ECE45B3DUL, 0xAE9F24117C4B1FE6UL, 0xEE386BFB5A899FA5UL,
0x0BFF5CB6F406B7EDUL, 0xF44C42E9A637ED6BUL, 0xE485B576625E7EC6UL, 0x4FE1356D6D51C245UL,
0x302B0A6DF25F1437UL, 0xEF9519B3CD3A431BUL, 0x514A08798E3404DDUL, 0x020BBEA63B139B22UL,
0x29024E088A67CC74UL, 0xC4C6628B80DC1CD1UL, 0xC90FDAA22168C234UL, 0xFFFFFFFFFFFFFFFFUL
};
static const BN_UINT RFC3526_PRIME_2048[] = {
0xFFFFFFFFFFFFFFFFUL, 0x15728E5A8AACAA68UL, 0x15D2261898FA0510UL, 0x3995497CEA956AE5UL,
0xDE2BCBF695581718UL, 0xB5C55DF06F4C52C9UL, 0x9B2783A2EC07A28FUL, 0xE39E772C180E8603UL,
0x32905E462E36CE3BUL, 0xF1746C08CA18217CUL, 0x670C354E4ABC9804UL, 0x9ED529077096966DUL,
0x1C62F356208552BBUL, 0x83655D23DCA3AD96UL, 0x69163FA8FD24CF5FUL, 0x98DA48361C55D39AUL,
0xC2007CB8A163BF05UL, 0x49286651ECE45B3DUL, 0xAE9F24117C4B1FE6UL, 0xEE386BFB5A899FA5UL,
0x0BFF5CB6F406B7EDUL, 0xF44C42E9A637ED6BUL, 0xE485B576625E7EC6UL, 0x4FE1356D6D51C245UL,
0x302B0A6DF25F1437UL, 0xEF9519B3CD3A431BUL, 0x514A08798E3404DDUL, 0x020BBEA63B139B22UL,
0x29024E088A67CC74UL, 0xC4C6628B80DC1CD1UL, 0xC90FDAA22168C234UL, 0xFFFFFFFFFFFFFFFFUL
};
static const BN_UINT RFC3526_PRIME_3072[] = {
0xFFFFFFFFFFFFFFFFUL, 0x4B82D120A93AD2CAUL, 0x43DB5BFCE0FD108EUL, 0x08E24FA074E5AB31UL,
0x770988C0BAD946E2UL, 0xBBE117577A615D6CUL, 0x521F2B18177B200CUL, 0xD87602733EC86A64UL,
0xF12FFA06D98A0864UL, 0xCEE3D2261AD2EE6BUL, 0x1E8C94E04A25619DUL, 0xABF5AE8CDB0933D7UL,
0xB3970F85A6E1E4C7UL, 0x8AEA71575D060C7DUL, 0xECFB850458DBEF0AUL, 0xA85521ABDF1CBA64UL,
0xAD33170D04507A33UL, 0x15728E5A8AAAC42DUL, 0x15D2261898FA0510UL, 0x3995497CEA956AE5UL,
0xDE2BCBF695581718UL, 0xB5C55DF06F4C52C9UL, 0x9B2783A2EC07A28FUL, 0xE39E772C180E8603UL,
0x32905E462E36CE3BUL, 0xF1746C08CA18217CUL, 0x670C354E4ABC9804UL, 0x9ED529077096966DUL,
0x1C62F356208552BBUL, 0x83655D23DCA3AD96UL, 0x69163FA8FD24CF5FUL, 0x98DA48361C55D39AUL,
0xC2007CB8A163BF05UL, 0x49286651ECE45B3DUL, 0xAE9F24117C4B1FE6UL, 0xEE386BFB5A899FA5UL,
0x0BFF5CB6F406B7EDUL, 0xF44C42E9A637ED6BUL, 0xE485B576625E7EC6UL, 0x4FE1356D6D51C245UL,
0x302B0A6DF25F1437UL, 0xEF9519B3CD3A431BUL, 0x514A08798E3404DDUL, 0x020BBEA63B139B22UL,
0x29024E088A67CC74UL, 0xC4C6628B80DC1CD1UL, 0xC90FDAA22168C234UL, 0xFFFFFFFFFFFFFFFFUL
};
static const BN_UINT RFC3526_PRIME_4096[] = {
0xFFFFFFFFFFFFFFFFUL, 0x4DF435C934063199UL, 0x86FFB7DC90A6C08FUL, 0x93B4EA988D8FDDC1UL,
0xD0069127D5B05AA9UL, 0xB81BDD762170481CUL, 0x1F612970CEE2D7AFUL, 0x233BA186515BE7EDUL,
0x99B2964FA090C3A2UL, 0x287C59474E6BC05DUL, 0x2E8EFC141FBECAA6UL, 0xDBBBC2DB04DE8EF9UL,
0x2583E9CA2AD44CE8UL, 0x1A946834B6150BDAUL, 0x99C327186AF4E23CUL, 0x88719A10BDBA5B26UL,
0x1A723C12A787E6D7UL, 0x4B82D120A9210801UL, 0x43DB5BFCE0FD108EUL, 0x08E24FA074E5AB31UL,
0x770988C0BAD946E2UL, 0xBBE117577A615D6CUL, 0x521F2B18177B200CUL, 0xD87602733EC86A64UL,
0xF12FFA06D98A0864UL, 0xCEE3D2261AD2EE6BUL, 0x1E8C94E04A25619DUL, 0xABF5AE8CDB0933D7UL,
0xB3970F85A6E1E4C7UL, 0x8AEA71575D060C7DUL, 0xECFB850458DBEF0AUL, 0xA85521ABDF1CBA64UL,
0xAD33170D04507A33UL, 0x15728E5A8AAAC42DUL, 0x15D2261898FA0510UL, 0x3995497CEA956AE5UL,
0xDE2BCBF695581718UL, 0xB5C55DF06F4C52C9UL, 0x9B2783A2EC07A28FUL, 0xE39E772C180E8603UL,
0x32905E462E36CE3BUL, 0xF1746C08CA18217CUL, 0x670C354E4ABC9804UL, 0x9ED529077096966DUL,
0x1C62F356208552BBUL, 0x83655D23DCA3AD96UL, 0x69163FA8FD24CF5FUL, 0x98DA48361C55D39AUL,
0xC2007CB8A163BF05UL, 0x49286651ECE45B3DUL, 0xAE9F24117C4B1FE6UL, 0xEE386BFB5A899FA5UL,
0x0BFF5CB6F406B7EDUL, 0xF44C42E9A637ED6BUL, 0xE485B576625E7EC6UL, 0x4FE1356D6D51C245UL,
0x302B0A6DF25F1437UL, 0xEF9519B3CD3A431BUL, 0x514A08798E3404DDUL, 0x020BBEA63B139B22UL,
0x29024E088A67CC74UL, 0xC4C6628B80DC1CD1UL, 0xC90FDAA22168C234UL, 0xFFFFFFFFFFFFFFFFUL
};
static const BN_UINT RFC3526_PRIME_6144[] = {
0xFFFFFFFFFFFFFFFFUL, 0xE694F91E6DCC4024UL, 0x12BF2D5B0B7474D6UL, 0x043E8F663F4860EEUL,
0x387FE8D76E3C0468UL, 0xDA56C9EC2EF29632UL, 0xEB19CCB1A313D55CUL, 0xF550AA3D8A1FBFF0UL,
0x06A1D58BB7C5DA76UL, 0xA79715EEF29BE328UL, 0x14CC5ED20F8037E0UL, 0xCC8F6D7EBF48E1D8UL,
0x4BD407B22B4154AAUL, 0x0F1D45B7FF585AC5UL, 0x23A97A7E36CC88BEUL, 0x59E7C97FBEC7E8F3UL,
0xB5A84031900B1C9EUL, 0xD55E702F46980C82UL, 0xF482D7CE6E74FEF6UL, 0xF032EA15D1721D03UL,
0x5983CA01C64B92ECUL, 0x6FB8F401378CD2BFUL, 0x332051512BD7AF42UL, 0xDB7F1447E6CC254BUL,
0x44CE6CBACED4BB1BUL, 0xDA3EDBEBCF9B14EDUL, 0x179727B0865A8918UL, 0xB06A53ED9027D831UL,
0xE5DB382F413001AEUL, 0xF8FF9406AD9E530EUL, 0xC9751E763DBA37BDUL, 0xC1D4DCB2602646DEUL,
0x36C3FAB4D27C7026UL, 0x4DF435C934028492UL, 0x86FFB7DC90A6C08FUL, 0x93B4EA988D8FDDC1UL,
0xD0069127D5B05AA9UL, 0xB81BDD762170481CUL, 0x1F612970CEE2D7AFUL, 0x233BA186515BE7EDUL,
0x99B2964FA090C3A2UL, 0x287C59474E6BC05DUL, 0x2E8EFC141FBECAA6UL, 0xDBBBC2DB04DE8EF9UL,
0x2583E9CA2AD44CE8UL, 0x1A946834B6150BDAUL, 0x99C327186AF4E23CUL, 0x88719A10BDBA5B26UL,
0x1A723C12A787E6D7UL, 0x4B82D120A9210801UL, 0x43DB5BFCE0FD108EUL, 0x08E24FA074E5AB31UL,
0x770988C0BAD946E2UL, 0xBBE117577A615D6CUL, 0x521F2B18177B200CUL, 0xD87602733EC86A64UL,
0xF12FFA06D98A0864UL, 0xCEE3D2261AD2EE6BUL, 0x1E8C94E04A25619DUL, 0xABF5AE8CDB0933D7UL,
0xB3970F85A6E1E4C7UL, 0x8AEA71575D060C7DUL, 0xECFB850458DBEF0AUL, 0xA85521ABDF1CBA64UL,
0xAD33170D04507A33UL, 0x15728E5A8AAAC42DUL, 0x15D2261898FA0510UL, 0x3995497CEA956AE5UL,
0xDE2BCBF695581718UL, 0xB5C55DF06F4C52C9UL, 0x9B2783A2EC07A28FUL, 0xE39E772C180E8603UL,
0x32905E462E36CE3BUL, 0xF1746C08CA18217CUL, 0x670C354E4ABC9804UL, 0x9ED529077096966DUL,
0x1C62F356208552BBUL, 0x83655D23DCA3AD96UL, 0x69163FA8FD24CF5FUL, 0x98DA48361C55D39AUL,
0xC2007CB8A163BF05UL, 0x49286651ECE45B3DUL, 0xAE9F24117C4B1FE6UL, 0xEE386BFB5A899FA5UL,
0x0BFF5CB6F406B7EDUL, 0xF44C42E9A637ED6BUL, 0xE485B576625E7EC6UL, 0x4FE1356D6D51C245UL,
0x302B0A6DF25F1437UL, 0xEF9519B3CD3A431BUL, 0x514A08798E3404DDUL, 0x020BBEA63B139B22UL,
0x29024E088A67CC74UL, 0xC4C6628B80DC1CD1UL, 0xC90FDAA22168C234UL, 0xFFFFFFFFFFFFFFFFUL
};
static const BN_UINT RFC3526_PRIME_8192[] = {
0xFFFFFFFFFFFFFFFFUL, 0x60C980DD98EDD3DFUL, 0xC81F56E880B96E71UL, 0x9E3050E2765694DFUL,
0x9558E4475677E9AAUL, 0xC9190DA6FC026E47UL, 0x889A002ED5EE382BUL, 0x4009438B481C6CD7UL,
0x359046F4EB879F92UL, 0xFAF36BC31ECFA268UL, 0xB1D510BD7EE74D73UL, 0xF9AB48195DED7EA1UL,
0x64F31CC50846851DUL, 0x4597E899A0255DC1UL, 0xDF310EE074AB6A36UL, 0x6D2A13F83F44F82DUL,
0x062B3CF5B3A278A6UL, 0x79683303ED5BDD3AUL, 0xFA9D4B7FA2C087E8UL, 0x4BCBC8862F8385DDUL,
0x3473FC646CEA306BUL, 0x13EB57A81A23F0C7UL, 0x22222E04A4037C07UL, 0xE3FDB8BEFC848AD9UL,
0x238F16CBE39D652DUL, 0x3423B4742BF1C978UL, 0x3AAB639C5AE4F568UL, 0x2576F6936BA42466UL,
0x741FA7BF8AFC47EDUL, 0x3BC832B68D9DD300UL, 0xD8BEC4D073B931BAUL, 0x38777CB6A932DF8CUL,
0x74A3926F12FEE5E4UL, 0xE694F91E6DBE1159UL, 0x12BF2D5B0B7474D6UL, 0x043E8F663F4860EEUL,
0x387FE8D76E3C0468UL, 0xDA56C9EC2EF29632UL, 0xEB19CCB1A313D55CUL, 0xF550AA3D8A1FBFF0UL,
0x06A1D58BB7C5DA76UL, 0xA79715EEF29BE328UL, 0x14CC5ED20F8037E0UL, 0xCC8F6D7EBF48E1D8UL,
0x4BD407B22B4154AAUL, 0x0F1D45B7FF585AC5UL, 0x23A97A7E36CC88BEUL, 0x59E7C97FBEC7E8F3UL,
0xB5A84031900B1C9EUL, 0xD55E702F46980C82UL, 0xF482D7CE6E74FEF6UL, 0xF032EA15D1721D03UL,
0x5983CA01C64B92ECUL, 0x6FB8F401378CD2BFUL, 0x332051512BD7AF42UL, 0xDB7F1447E6CC254BUL,
0x44CE6CBACED4BB1BUL, 0xDA3EDBEBCF9B14EDUL, 0x179727B0865A8918UL, 0xB06A53ED9027D831UL,
0xE5DB382F413001AEUL, 0xF8FF9406AD9E530EUL, 0xC9751E763DBA37BDUL, 0xC1D4DCB2602646DEUL,
0x36C3FAB4D27C7026UL, 0x4DF435C934028492UL, 0x86FFB7DC90A6C08FUL, 0x93B4EA988D8FDDC1UL,
0xD0069127D5B05AA9UL, 0xB81BDD762170481CUL, 0x1F612970CEE2D7AFUL, 0x233BA186515BE7EDUL,
0x99B2964FA090C3A2UL, 0x287C59474E6BC05DUL, 0x2E8EFC141FBECAA6UL, 0xDBBBC2DB04DE8EF9UL,
0x2583E9CA2AD44CE8UL, 0x1A946834B6150BDAUL, 0x99C327186AF4E23CUL, 0x88719A10BDBA5B26UL,
0x1A723C12A787E6D7UL, 0x4B82D120A9210801UL, 0x43DB5BFCE0FD108EUL, 0x08E24FA074E5AB31UL,
0x770988C0BAD946E2UL, 0xBBE117577A615D6CUL, 0x521F2B18177B200CUL, 0xD87602733EC86A64UL,
0xF12FFA06D98A0864UL, 0xCEE3D2261AD2EE6BUL, 0x1E8C94E04A25619DUL, 0xABF5AE8CDB0933D7UL,
0xB3970F85A6E1E4C7UL, 0x8AEA71575D060C7DUL, 0xECFB850458DBEF0AUL, 0xA85521ABDF1CBA64UL,
0xAD33170D04507A33UL, 0x15728E5A8AAAC42DUL, 0x15D2261898FA0510UL, 0x3995497CEA956AE5UL,
0xDE2BCBF695581718UL, 0xB5C55DF06F4C52C9UL, 0x9B2783A2EC07A28FUL, 0xE39E772C180E8603UL,
0x32905E462E36CE3BUL, 0xF1746C08CA18217CUL, 0x670C354E4ABC9804UL, 0x9ED529077096966DUL,
0x1C62F356208552BBUL, 0x83655D23DCA3AD96UL, 0x69163FA8FD24CF5FUL, 0x98DA48361C55D39AUL,
0xC2007CB8A163BF05UL, 0x49286651ECE45B3DUL, 0xAE9F24117C4B1FE6UL, 0xEE386BFB5A899FA5UL,
0x0BFF5CB6F406B7EDUL, 0xF44C42E9A637ED6BUL, 0xE485B576625E7EC6UL, 0x4FE1356D6D51C245UL,
0x302B0A6DF25F1437UL, 0xEF9519B3CD3A431BUL, 0x514A08798E3404DDUL, 0x020BBEA63B139B22UL,
0x29024E088A67CC74UL, 0xC4C6628B80DC1CD1UL, 0xC90FDAA22168C234UL, 0xFFFFFFFFFFFFFFFFUL,
};
#elif defined(HITLS_THIRTY_TWO_BITS)
static const BN_UINT RFC2409_PRIME_1024[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0xECE65381, 0x49286651, 0x7C4B1FE6, 0xAE9F2411, 0x5A899FA5, 0xEE386BFB,
0xF406B7ED, 0x0BFF5CB6, 0xA637ED6B, 0xF44C42E9, 0x625E7EC6, 0xE485B576, 0x6D51C245, 0x4FE1356D,
0xF25F1437, 0x302B0A6D, 0xCD3A431B, 0xEF9519B3, 0x8E3404DD, 0x514A0879, 0x3B139B22, 0x020BBEA6,
0x8A67CC74, 0x29024E08, 0x80DC1CD1, 0xC4C6628B, 0x2168C234, 0xC90FDAA2, 0xFFFFFFFF, 0xFFFFFFFF,
};
static const BN_UINT RFC3526_PRIME_1536[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0xCA237327, 0xF1746C08, 0x4ABC9804, 0x670C354E, 0x7096966D, 0x9ED52907,
0x208552BB, 0x1C62F356, 0xDCA3AD96, 0x83655D23, 0xFD24CF5F, 0x69163FA8, 0x1C55D39A, 0x98DA4836,
0xA163BF05, 0xC2007CB8, 0xECE45B3D, 0x49286651, 0x7C4B1FE6, 0xAE9F2411, 0x5A899FA5, 0xEE386BFB,
0xF406B7ED, 0x0BFF5CB6, 0xA637ED6B, 0xF44C42E9, 0x625E7EC6, 0xE485B576, 0x6D51C245, 0x4FE1356D,
0xF25F1437, 0x302B0A6D, 0xCD3A431B, 0xEF9519B3, 0x8E3404DD, 0x514A0879, 0x3B139B22, 0x020BBEA6,
0x8A67CC74, 0x29024E08, 0x80DC1CD1, 0xC4C6628B, 0x2168C234, 0xC90FDAA2, 0xFFFFFFFF, 0xFFFFFFFF,
};
static const BN_UINT RFC3526_PRIME_2048[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0x8AACAA68, 0x15728E5A, 0x98FA0510, 0x15D22618, 0xEA956AE5, 0x3995497C,
0x95581718, 0xDE2BCBF6, 0x6F4C52C9, 0xB5C55DF0, 0xEC07A28F, 0x9B2783A2, 0x180E8603, 0xE39E772C,
0x2E36CE3B, 0x32905E46, 0xCA18217C, 0xF1746C08, 0x4ABC9804, 0x670C354E, 0x7096966D, 0x9ED52907,
0x208552BB, 0x1C62F356, 0xDCA3AD96, 0x83655D23, 0xFD24CF5F, 0x69163FA8, 0x1C55D39A, 0x98DA4836,
0xA163BF05, 0xC2007CB8, 0xECE45B3D, 0x49286651, 0x7C4B1FE6, 0xAE9F2411, 0x5A899FA5, 0xEE386BFB,
0xF406B7ED, 0x0BFF5CB6, 0xA637ED6B, 0xF44C42E9, 0x625E7EC6, 0xE485B576, 0x6D51C245, 0x4FE1356D,
0xF25F1437, 0x302B0A6D, 0xCD3A431B, 0xEF9519B3, 0x8E3404DD, 0x514A0879, 0x3B139B22, 0x020BBEA6,
0x8A67CC74, 0x29024E08, 0x80DC1CD1, 0xC4C6628B, 0x2168C234, 0xC90FDAA2, 0xFFFFFFFF, 0xFFFFFFFF
};
static const BN_UINT RFC3526_PRIME_3072[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0xA93AD2CA, 0x4B82D120, 0xE0FD108E, 0x43DB5BFC, 0x74E5AB31, 0x08E24FA0,
0xBAD946E2, 0x770988C0, 0x7A615D6C, 0xBBE11757, 0x177B200C, 0x521F2B18, 0x3EC86A64, 0xD8760273,
0xD98A0864, 0xF12FFA06, 0x1AD2EE6B, 0xCEE3D226, 0x4A25619D, 0x1E8C94E0, 0xDB0933D7, 0xABF5AE8C,
0xA6E1E4C7, 0xB3970F85, 0x5D060C7D, 0x8AEA7157, 0x58DBEF0A, 0xECFB8504, 0xDF1CBA64, 0xA85521AB,
0x04507A33, 0xAD33170D, 0x8AAAC42D, 0x15728E5A, 0x98FA0510, 0x15D22618, 0xEA956AE5, 0x3995497C,
0x95581718, 0xDE2BCBF6, 0x6F4C52C9, 0xB5C55DF0, 0xEC07A28F, 0x9B2783A2, 0x180E8603, 0xE39E772C,
0x2E36CE3B, 0x32905E46, 0xCA18217C, 0xF1746C08, 0x4ABC9804, 0x670C354E, 0x7096966D, 0x9ED52907,
0x208552BB, 0x1C62F356, 0xDCA3AD96, 0x83655D23, 0xFD24CF5F, 0x69163FA8, 0x1C55D39A, 0x98DA4836,
0xA163BF05, 0xC2007CB8, 0xECE45B3D, 0x49286651, 0x7C4B1FE6, 0xAE9F2411, 0x5A899FA5, 0xEE386BFB,
0xF406B7ED, 0x0BFF5CB6, 0xA637ED6B, 0xF44C42E9, 0x625E7EC6, 0xE485B576, 0x6D51C245, 0x4FE1356D,
0xF25F1437, 0x302B0A6D, 0xCD3A431B, 0xEF9519B3, 0x8E3404DD, 0x514A0879, 0x3B139B22, 0x020BBEA6,
0x8A67CC74, 0x29024E08, 0x80DC1CD1, 0xC4C6628B, 0x2168C234, 0xC90FDAA2, 0xFFFFFFFF, 0xFFFFFFFF
};
static const BN_UINT RFC3526_PRIME_4096[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0x34063199, 0x4DF435C9, 0x90A6C08F, 0x86FFB7DC, 0x8D8FDDC1, 0x93B4EA98,
0xD5B05AA9, 0xD0069127, 0x2170481C, 0xB81BDD76, 0xCEE2D7AF, 0x1F612970, 0x515BE7ED, 0x233BA186,
0xA090C3A2, 0x99B2964F, 0x4E6BC05D, 0x287C5947, 0x1FBECAA6, 0x2E8EFC14, 0x04DE8EF9, 0xDBBBC2DB,
0x2AD44CE8, 0x2583E9CA, 0xB6150BDA, 0x1A946834, 0x6AF4E23C, 0x99C32718, 0xBDBA5B26, 0x88719A10,
0xA787E6D7, 0x1A723C12, 0xA9210801, 0x4B82D120, 0xE0FD108E, 0x43DB5BFC, 0x74E5AB31, 0x08E24FA0,
0xBAD946E2, 0x770988C0, 0x7A615D6C, 0xBBE11757, 0x177B200C, 0x521F2B18, 0x3EC86A64, 0xD8760273,
0xD98A0864, 0xF12FFA06, 0x1AD2EE6B, 0xCEE3D226, 0x4A25619D, 0x1E8C94E0, 0xDB0933D7, 0xABF5AE8C,
0xA6E1E4C7, 0xB3970F85, 0x5D060C7D, 0x8AEA7157, 0x58DBEF0A, 0xECFB8504, 0xDF1CBA64, 0xA85521AB,
0x04507A33, 0xAD33170D, 0x8AAAC42D, 0x15728E5A, 0x98FA0510, 0x15D22618, 0xEA956AE5, 0x3995497C,
0x95581718, 0xDE2BCBF6, 0x6F4C52C9, 0xB5C55DF0, 0xEC07A28F, 0x9B2783A2, 0x180E8603, 0xE39E772C,
0x2E36CE3B, 0x32905E46, 0xCA18217C, 0xF1746C08, 0x4ABC9804, 0x670C354E, 0x7096966D, 0x9ED52907,
0x208552BB, 0x1C62F356, 0xDCA3AD96, 0x83655D23, 0xFD24CF5F, 0x69163FA8, 0x1C55D39A, 0x98DA4836,
0xA163BF05, 0xC2007CB8, 0xECE45B3D, 0x49286651, 0x7C4B1FE6, 0xAE9F2411, 0x5A899FA5, 0xEE386BFB,
0xF406B7ED, 0x0BFF5CB6, 0xA637ED6B, 0xF44C42E9, 0x625E7EC6, 0xE485B576, 0x6D51C245, 0x4FE1356D,
0xF25F1437, 0x302B0A6D, 0xCD3A431B, 0xEF9519B3, 0x8E3404DD, 0x514A0879, 0x3B139B22, 0x020BBEA6,
0x8A67CC74, 0x29024E08, 0x80DC1CD1, 0xC4C6628B, 0x2168C234, 0xC90FDAA2, 0xFFFFFFFF, 0xFFFFFFFF
};
static const BN_UINT RFC3526_PRIME_6144[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0x6DCC4024, 0xE694F91E, 0x0B7474D6, 0x12BF2D5B, 0x3F4860EE, 0x043E8F66,
0x6E3C0468, 0x387FE8D7, 0x2EF29632, 0xDA56C9EC, 0xA313D55C, 0xEB19CCB1, 0x8A1FBFF0, 0xF550AA3D,
0xB7C5DA76, 0x06A1D58B, 0xF29BE328, 0xA79715EE, 0x0F8037E0, 0x14CC5ED2, 0xBF48E1D8, 0xCC8F6D7E,
0x2B4154AA, 0x4BD407B2, 0xFF585AC5, 0x0F1D45B7, 0x36CC88BE, 0x23A97A7E, 0xBEC7E8F3, 0x59E7C97F,
0x900B1C9E, 0xB5A84031, 0x46980C82, 0xD55E702F, 0x6E74FEF6, 0xF482D7CE, 0xD1721D03, 0xF032EA15,
0xC64B92EC, 0x5983CA01, 0x378CD2BF, 0x6FB8F401, 0x2BD7AF42, 0x33205151, 0xE6CC254B, 0xDB7F1447,
0xCED4BB1B, 0x44CE6CBA, 0xCF9B14ED, 0xDA3EDBEB, 0x865A8918, 0x179727B0, 0x9027D831, 0xB06A53ED,
0x413001AE, 0xE5DB382F, 0xAD9E530E, 0xF8FF9406, 0x3DBA37BD, 0xC9751E76, 0x602646DE, 0xC1D4DCB2,
0xD27C7026, 0x36C3FAB4, 0x34028492, 0x4DF435C9, 0x90A6C08F, 0x86FFB7DC, 0x8D8FDDC1, 0x93B4EA98,
0xD5B05AA9, 0xD0069127, 0x2170481C, 0xB81BDD76, 0xCEE2D7AF, 0x1F612970, 0x515BE7ED, 0x233BA186,
0xA090C3A2, 0x99B2964F, 0x4E6BC05D, 0x287C5947, 0x1FBECAA6, 0x2E8EFC14, 0x04DE8EF9, 0xDBBBC2DB,
0x2AD44CE8, 0x2583E9CA, 0xB6150BDA, 0x1A946834, 0x6AF4E23C, 0x99C32718, 0xBDBA5B26, 0x88719A10,
0xA787E6D7, 0x1A723C12, 0xA9210801, 0x4B82D120, 0xE0FD108E, 0x43DB5BFC, 0x74E5AB31, 0x08E24FA0,
0xBAD946E2, 0x770988C0, 0x7A615D6C, 0xBBE11757, 0x177B200C, 0x521F2B18, 0x3EC86A64, 0xD8760273,
0xD98A0864, 0xF12FFA06, 0x1AD2EE6B, 0xCEE3D226, 0x4A25619D, 0x1E8C94E0, 0xDB0933D7, 0xABF5AE8C,
0xA6E1E4C7, 0xB3970F85, 0x5D060C7D, 0x8AEA7157, 0x58DBEF0A, 0xECFB8504, 0xDF1CBA64, 0xA85521AB,
0x04507A33, 0xAD33170D, 0x8AAAC42D, 0x15728E5A, 0x98FA0510, 0x15D22618, 0xEA956AE5, 0x3995497C,
0x95581718, 0xDE2BCBF6, 0x6F4C52C9, 0xB5C55DF0, 0xEC07A28F, 0x9B2783A2, 0x180E8603, 0xE39E772C,
0x2E36CE3B, 0x32905E46, 0xCA18217C, 0xF1746C08, 0x4ABC9804, 0x670C354E, 0x7096966D, 0x9ED52907,
0x208552BB, 0x1C62F356, 0xDCA3AD96, 0x83655D23, 0xFD24CF5F, 0x69163FA8, 0x1C55D39A, 0x98DA4836,
0xA163BF05, 0xC2007CB8, 0xECE45B3D, 0x49286651, 0x7C4B1FE6, 0xAE9F2411, 0x5A899FA5, 0xEE386BFB,
0xF406B7ED, 0x0BFF5CB6, 0xA637ED6B, 0xF44C42E9, 0x625E7EC6, 0xE485B576, 0x6D51C245, 0x4FE1356D,
0xF25F1437, 0x302B0A6D, 0xCD3A431B, 0xEF9519B3, 0x8E3404DD, 0x514A0879, 0x3B139B22, 0x020BBEA6,
0x8A67CC74, 0x29024E08, 0x80DC1CD1, 0xC4C6628B, 0x2168C234, 0xC90FDAA2, 0xFFFFFFFF, 0xFFFFFFFF
};
static const BN_UINT RFC3526_PRIME_8192[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0x98EDD3DF, 0x60C980DD, 0x80B96E71, 0xC81F56E8, 0x765694DF, 0x9E3050E2,
0x5677E9AA, 0x9558E447, 0xFC026E47, 0xC9190DA6, 0xD5EE382B, 0x889A002E, 0x481C6CD7, 0x4009438B,
0xEB879F92, 0x359046F4, 0x1ECFA268, 0xFAF36BC3, 0x7EE74D73, 0xB1D510BD, 0x5DED7EA1, 0xF9AB4819,
0x0846851D, 0x64F31CC5, 0xA0255DC1, 0x4597E899, 0x74AB6A36, 0xDF310EE0, 0x3F44F82D, 0x6D2A13F8,
0xB3A278A6, 0x062B3CF5, 0xED5BDD3A, 0x79683303, 0xA2C087E8, 0xFA9D4B7F, 0x2F8385DD, 0x4BCBC886,
0x6CEA306B, 0x3473FC64, 0x1A23F0C7, 0x13EB57A8, 0xA4037C07, 0x22222E04, 0xFC848AD9, 0xE3FDB8BE,
0xE39D652D, 0x238F16CB, 0x2BF1C978, 0x3423B474, 0x5AE4F568, 0x3AAB639C, 0x6BA42466, 0x2576F693,
0x8AFC47ED, 0x741FA7BF, 0x8D9DD300, 0x3BC832B6, 0x73B931BA, 0xD8BEC4D0, 0xA932DF8C, 0x38777CB6,
0x12FEE5E4, 0x74A3926F, 0x6DBE1159, 0xE694F91E, 0x0B7474D6, 0x12BF2D5B, 0x3F4860EE, 0x043E8F66,
0x6E3C0468, 0x387FE8D7, 0x2EF29632, 0xDA56C9EC, 0xA313D55C, 0xEB19CCB1, 0x8A1FBFF0, 0xF550AA3D,
0xB7C5DA76, 0x06A1D58B, 0xF29BE328, 0xA79715EE, 0x0F8037E0, 0x14CC5ED2, 0xBF48E1D8, 0xCC8F6D7E,
0x2B4154AA, 0x4BD407B2, 0xFF585AC5, 0x0F1D45B7, 0x36CC88BE, 0x23A97A7E, 0xBEC7E8F3, 0x59E7C97F,
0x900B1C9E, 0xB5A84031, 0x46980C82, 0xD55E702F, 0x6E74FEF6, 0xF482D7CE, 0xD1721D03, 0xF032EA15,
0xC64B92EC, 0x5983CA01, 0x378CD2BF, 0x6FB8F401, 0x2BD7AF42, 0x33205151, 0xE6CC254B, 0xDB7F1447,
0xCED4BB1B, 0x44CE6CBA, 0xCF9B14ED, 0xDA3EDBEB, 0x865A8918, 0x179727B0, 0x9027D831, 0xB06A53ED,
0x413001AE, 0xE5DB382F, 0xAD9E530E, 0xF8FF9406, 0x3DBA37BD, 0xC9751E76, 0x602646DE, 0xC1D4DCB2,
0xD27C7026, 0x36C3FAB4, 0x34028492, 0x4DF435C9, 0x90A6C08F, 0x86FFB7DC, 0x8D8FDDC1, 0x93B4EA98,
0xD5B05AA9, 0xD0069127, 0x2170481C, 0xB81BDD76, 0xCEE2D7AF, 0x1F612970, 0x515BE7ED, 0x233BA186,
0xA090C3A2, 0x99B2964F, 0x4E6BC05D, 0x287C5947, 0x1FBECAA6, 0x2E8EFC14, 0x04DE8EF9, 0xDBBBC2DB,
0x2AD44CE8, 0x2583E9CA, 0xB6150BDA, 0x1A946834, 0x6AF4E23C, 0x99C32718, 0xBDBA5B26, 0x88719A10,
0xA787E6D7, 0x1A723C12, 0xA9210801, 0x4B82D120, 0xE0FD108E, 0x43DB5BFC, 0x74E5AB31, 0x08E24FA0,
0xBAD946E2, 0x770988C0, 0x7A615D6C, 0xBBE11757, 0x177B200C, 0x521F2B18, 0x3EC86A64, 0xD8760273,
0xD98A0864, 0xF12FFA06, 0x1AD2EE6B, 0xCEE3D226, 0x4A25619D, 0x1E8C94E0, 0xDB0933D7, 0xABF5AE8C,
0xA6E1E4C7, 0xB3970F85, 0x5D060C7D, 0x8AEA7157, 0x58DBEF0A, 0xECFB8504, 0xDF1CBA64, 0xA85521AB,
0x04507A33, 0xAD33170D, 0x8AAAC42D, 0x15728E5A, 0x98FA0510, 0x15D22618, 0xEA956AE5, 0x3995497C,
0x95581718, 0xDE2BCBF6, 0x6F4C52C9, 0xB5C55DF0, 0xEC07A28F, 0x9B2783A2, 0x180E8603, 0xE39E772C,
0x2E36CE3B, 0x32905E46, 0xCA18217C, 0xF1746C08, 0x4ABC9804, 0x670C354E, 0x7096966D, 0x9ED52907,
0x208552BB, 0x1C62F356, 0xDCA3AD96, 0x83655D23, 0xFD24CF5F, 0x69163FA8, 0x1C55D39A, 0x98DA4836,
0xA163BF05, 0xC2007CB8, 0xECE45B3D, 0x49286651, 0x7C4B1FE6, 0xAE9F2411, 0x5A899FA5, 0xEE386BFB,
0xF406B7ED, 0x0BFF5CB6, 0xA637ED6B, 0xF44C42E9, 0x625E7EC6, 0xE485B576, 0x6D51C245, 0x4FE1356D,
0xF25F1437, 0x302B0A6D, 0xCD3A431B, 0xEF9519B3, 0x8E3404DD, 0x514A0879, 0x3B139B22, 0x020BBEA6,
0x8A67CC74, 0x29024E08, 0x80DC1CD1, 0xC4C6628B, 0x2168C234, 0xC90FDAA2, 0xFFFFFFFF, 0xFFFFFFFF
};
#endif
static BN_BigNum g_bnRfc2409Prime1024 = {
false,
(uint32_t)sizeof(RFC2409_PRIME_1024) / sizeof(RFC2409_PRIME_1024[0]),
(uint32_t)sizeof(RFC2409_PRIME_1024) / sizeof(RFC2409_PRIME_1024[0]),
CRYPT_BN_FLAG_STATIC,
(BN_UINT *)(uintptr_t)RFC2409_PRIME_1024
};
static BN_BigNum g_bnRfc3526Prime1536 = {
false,
(uint32_t)sizeof(RFC3526_PRIME_1536) / sizeof(RFC3526_PRIME_1536[0]),
(uint32_t)sizeof(RFC3526_PRIME_1536) / sizeof(RFC3526_PRIME_1536[0]),
CRYPT_BN_FLAG_STATIC,
(BN_UINT *)(uintptr_t)RFC3526_PRIME_1536
};
static BN_BigNum g_bnRfc3526Prime2048 = {
false,
(uint32_t)sizeof(RFC3526_PRIME_2048) / sizeof(RFC3526_PRIME_2048[0]),
(uint32_t)sizeof(RFC3526_PRIME_2048) / sizeof(RFC3526_PRIME_2048[0]),
CRYPT_BN_FLAG_STATIC,
(BN_UINT *)(uintptr_t)RFC3526_PRIME_2048
};
static BN_BigNum g_bnRfc3526Prime3072 = {
false,
(uint32_t)sizeof(RFC3526_PRIME_3072) / sizeof(RFC3526_PRIME_3072[0]),
(uint32_t)sizeof(RFC3526_PRIME_3072) / sizeof(RFC3526_PRIME_3072[0]),
CRYPT_BN_FLAG_STATIC,
(BN_UINT *)(uintptr_t)RFC3526_PRIME_3072
};
static BN_BigNum g_bnRfc3526Prime4096 = {
false,
(uint32_t)sizeof(RFC3526_PRIME_4096) / sizeof(RFC3526_PRIME_4096[0]),
(uint32_t)sizeof(RFC3526_PRIME_4096) / sizeof(RFC3526_PRIME_4096[0]),
CRYPT_BN_FLAG_STATIC,
(BN_UINT *)(uintptr_t)RFC3526_PRIME_4096
};
static BN_BigNum g_bnRfc3526Prime6144 = {
false,
(uint32_t)sizeof(RFC3526_PRIME_6144) / sizeof(RFC3526_PRIME_6144[0]),
(uint32_t)sizeof(RFC3526_PRIME_6144) / sizeof(RFC3526_PRIME_6144[0]),
CRYPT_BN_FLAG_STATIC,
(BN_UINT *)(uintptr_t)RFC3526_PRIME_6144
};
static BN_BigNum g_bnRfc3526Prime8192 = {
false,
(uint32_t)sizeof(RFC3526_PRIME_8192) / sizeof(RFC3526_PRIME_8192[0]),
(uint32_t)sizeof(RFC3526_PRIME_8192) / sizeof(RFC3526_PRIME_8192[0]),
CRYPT_BN_FLAG_STATIC,
(BN_UINT *)(uintptr_t)RFC3526_PRIME_8192
};
static BN_BigNum *GetBnConst(BN_BigNum *outConst, BN_BigNum *inConst)
{
if (outConst == NULL) {
return BN_Dup(inConst);
} else {
if (BN_Copy(outConst, inConst) != CRYPT_SUCCESS) {
return NULL;
}
return outConst;
}
}
BN_BigNum *BN_GetRfcConstPrime(BN_BigNum *r, int32_t paraId)
{
switch (paraId) {
case CRYPT_DH_RFC2409_1024:
return GetBnConst(r, &g_bnRfc2409Prime1024);
case CRYPT_DH_RFC3526_1536:
return GetBnConst(r, &g_bnRfc3526Prime1536);
case CRYPT_DH_RFC3526_2048:
return GetBnConst(r, &g_bnRfc3526Prime2048);
case CRYPT_DH_RFC3526_3072:
return GetBnConst(r, &g_bnRfc3526Prime3072);
case CRYPT_DH_RFC3526_4096:
return GetBnConst(r, &g_bnRfc3526Prime4096);
case CRYPT_DH_RFC3526_6144:
return GetBnConst(r, &g_bnRfc3526Prime6144);
case CRYPT_DH_RFC3526_8192:
return GetBnConst(r, &g_bnRfc3526Prime8192);
default:
return NULL;
}
}
#endif