Blame crypto/bn/bn_const.c

Packit c4476c
/*
Packit c4476c
 * Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
 *
Packit c4476c
 * Licensed under the Apache License 2.0 (the "License").  You may not use
Packit c4476c
 * this file except in compliance with the License.  You can obtain a copy
Packit c4476c
 * in the file LICENSE in the source distribution or at
Packit c4476c
 * https://www.openssl.org/source/license.html
Packit c4476c
 */
Packit c4476c
Packit c4476c
#include <openssl/bn.h>
Packit c4476c
#include "crypto/bn_dh.h"
Packit c4476c
Packit c4476c
#define COPY_BN(dst, src) (dst != NULL) ? BN_copy(dst, &src) : BN_dup(&src)
Packit c4476c
Packit c4476c
Packit c4476c
/*-
Packit c4476c
 * "First Oakley Default Group" from RFC2409, section 6.1.
Packit c4476c
 *
Packit c4476c
 * The prime is: 2^768 - 2 ^704 - 1 + 2^64 * { [2^638 pi] + 149686 }
Packit c4476c
 *
Packit c4476c
 * RFC2409 specifies a generator of 2.
Packit c4476c
 * RFC2412 specifies a generator of of 22.
Packit c4476c
 */
Packit c4476c
Packit c4476c
BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn)
Packit c4476c
{
Packit c4476c
    static const unsigned char RFC2409_PRIME_768[] = {
Packit c4476c
        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
Packit c4476c
        0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
Packit c4476c
        0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
Packit c4476c
        0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
Packit c4476c
        0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
Packit c4476c
        0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
Packit c4476c
        0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
Packit c4476c
        0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
Packit c4476c
        0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
Packit c4476c
        0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
Packit c4476c
        0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x3A, 0x36, 0x20,
Packit c4476c
        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
Packit c4476c
    };
Packit c4476c
    return BN_bin2bn(RFC2409_PRIME_768, sizeof(RFC2409_PRIME_768), bn);
Packit c4476c
}
Packit c4476c
Packit c4476c
/*-
Packit c4476c
 * "Second Oakley Default Group" from RFC2409, section 6.2.
Packit c4476c
 *
Packit c4476c
 * The prime is: 2^1024 - 2^960 - 1 + 2^64 * { [2^894 pi] + 129093 }.
Packit c4476c
 *
Packit c4476c
 * RFC2409 specifies a generator of 2.
Packit c4476c
 * RFC2412 specifies a generator of 22.
Packit c4476c
 */
Packit c4476c
Packit c4476c
BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn)
Packit c4476c
{
Packit c4476c
    static const unsigned char RFC2409_PRIME_1024[] = {
Packit c4476c
        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
Packit c4476c
        0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34,
Packit c4476c
        0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1,
Packit c4476c
        0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74,
Packit c4476c
        0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22,
Packit c4476c
        0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD,
Packit c4476c
        0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B,
Packit c4476c
        0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37,
Packit c4476c
        0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45,
Packit c4476c
        0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6,
Packit c4476c
        0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B,
Packit c4476c
        0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED,
Packit c4476c
        0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5,
Packit c4476c
        0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6,
Packit c4476c
        0x49, 0x28, 0x66, 0x51, 0xEC, 0xE6, 0x53, 0x81,
Packit c4476c
        0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
Packit c4476c
    };
Packit c4476c
    return BN_bin2bn(RFC2409_PRIME_1024, sizeof(RFC2409_PRIME_1024), bn);
Packit c4476c
}
Packit c4476c
Packit c4476c
/*-
Packit c4476c
 * "1536-bit MODP Group" from RFC3526, Section 2.
Packit c4476c
 *
Packit c4476c
 * The prime is: 2^1536 - 2^1472 - 1 + 2^64 * { [2^1406 pi] + 741804 }
Packit c4476c
 *
Packit c4476c
 * RFC3526 specifies a generator of 2.
Packit c4476c
 * RFC2312 specifies a generator of 22.
Packit c4476c
 */
Packit c4476c
Packit c4476c
BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn)
Packit c4476c
{
Packit c4476c
    return COPY_BN(bn, _bignum_modp_1536_p);
Packit c4476c
}
Packit c4476c
Packit c4476c
/*-
Packit c4476c
 * "2048-bit MODP Group" from RFC3526, Section 3.
Packit c4476c
 *
Packit c4476c
 * The prime is: 2^2048 - 2^1984 - 1 + 2^64 * { [2^1918 pi] + 124476 }
Packit c4476c
 *
Packit c4476c
 * RFC3526 specifies a generator of 2.
Packit c4476c
 */
Packit c4476c
Packit c4476c
BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn)
Packit c4476c
{
Packit c4476c
    return COPY_BN(bn, _bignum_modp_2048_p);
Packit c4476c
}
Packit c4476c
Packit c4476c
/*-
Packit c4476c
 * "3072-bit MODP Group" from RFC3526, Section 4.
Packit c4476c
 *
Packit c4476c
 * The prime is: 2^3072 - 2^3008 - 1 + 2^64 * { [2^2942 pi] + 1690314 }
Packit c4476c
 *
Packit c4476c
 * RFC3526 specifies a generator of 2.
Packit c4476c
 */
Packit c4476c
Packit c4476c
BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn)
Packit c4476c
{
Packit c4476c
    return COPY_BN(bn, _bignum_modp_3072_p);
Packit c4476c
}
Packit c4476c
Packit c4476c
/*-
Packit c4476c
 * "4096-bit MODP Group" from RFC3526, Section 5.
Packit c4476c
 *
Packit c4476c
 * The prime is: 2^4096 - 2^4032 - 1 + 2^64 * { [2^3966 pi] + 240904 }
Packit c4476c
 *
Packit c4476c
 * RFC3526 specifies a generator of 2.
Packit c4476c
 */
Packit c4476c
Packit c4476c
BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn)
Packit c4476c
{
Packit c4476c
    return COPY_BN(bn, _bignum_modp_4096_p);
Packit c4476c
}
Packit c4476c
Packit c4476c
/*-
Packit c4476c
 * "6144-bit MODP Group" from RFC3526, Section 6.
Packit c4476c
 *
Packit c4476c
 * The prime is: 2^6144 - 2^6080 - 1 + 2^64 * { [2^6014 pi] + 929484 }
Packit c4476c
 *
Packit c4476c
 * RFC3526 specifies a generator of 2.
Packit c4476c
 */
Packit c4476c
Packit c4476c
BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn)
Packit c4476c
{
Packit c4476c
    return COPY_BN(bn, _bignum_modp_6144_p);
Packit c4476c
}
Packit c4476c
Packit c4476c
/*-
Packit c4476c
 * "8192-bit MODP Group" from RFC3526, Section 7.
Packit c4476c
 *
Packit c4476c
 * The prime is: 2^8192 - 2^8128 - 1 + 2^64 * { [2^8062 pi] + 4743158 }
Packit c4476c
 *
Packit c4476c
 * RFC3526 specifies a generator of 2.
Packit c4476c
 */
Packit c4476c
Packit c4476c
BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn)
Packit c4476c
{
Packit c4476c
    return COPY_BN(bn, _bignum_modp_8192_p);
Packit c4476c
}