Initialize bignum constants using BN_bin2bn() instead of BN_hex2bn(). This
[openssl.git] / crypto / bn / bn_const.c
index 295319547458552b6b1da057cd96cc31176f4984..eb60a25b3c7309e1b7bebf47158a84a0182a8552 100755 (executable)
  * RFC2409 specifies a generator of 2.
  * RFC2412 specifies a generator of of 22.
  */
-static const char RFC2409_PRIME_768[] =
-       "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
-       "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
-       "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
-       "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF";
+
+BIGNUM *get_rfc2409_prime_768(BIGNUM *bn)
+       {
+       static const unsigned char RFC2409_PRIME_768[]={
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0x0F,0xDA,0xA2,
+               0x21,0x68,0xC2,0x34,0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
+               0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,0x02,0x0B,0xBE,0xA6,
+               0x3B,0x13,0x9B,0x22,0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
+               0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,0x30,0x2B,0x0A,0x6D,
+               0xF2,0x5F,0x14,0x37,0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
+               0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,0xF4,0x4C,0x42,0xE9,
+               0xA6,0x3A,0x36,0x20,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+               };
+       return BN_bin2bn(RFC2409_PRIME_768,sizeof(RFC2409_PRIME_768),bn);
+       }
 
 /* "Second Oakley Default Group" from RFC2409, section 6.2.
  *
@@ -23,13 +33,24 @@ static const char RFC2409_PRIME_768[] =
  * RFC2409 specifies a generator of 2.
  * RFC2412 specifies a generator of 22.
  */
-static const char RFC2409_PRIME_1024[] =
-       "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
-       "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
-       "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
-        "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
-       "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381"
-       "FFFFFFFFFFFFFFFF";
+
+BIGNUM *get_rfc2409_prime_1024(BIGNUM *bn)
+       {
+       static const unsigned char RFC2409_PRIME_1024[]={
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0x0F,0xDA,0xA2,
+               0x21,0x68,0xC2,0x34,0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
+               0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,0x02,0x0B,0xBE,0xA6,
+               0x3B,0x13,0x9B,0x22,0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
+               0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,0x30,0x2B,0x0A,0x6D,
+               0xF2,0x5F,0x14,0x37,0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
+               0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,0xF4,0x4C,0x42,0xE9,
+               0xA6,0x37,0xED,0x6B,0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
+               0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,0xAE,0x9F,0x24,0x11,
+               0x7C,0x4B,0x1F,0xE6,0x49,0x28,0x66,0x51,0xEC,0xE6,0x53,0x81,
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+               };
+       return BN_bin2bn(RFC2409_PRIME_1024,sizeof(RFC2409_PRIME_1024),bn);
+       }
 
 /* "1536-bit MODP Group" from RFC3526, Section 2.
  *
@@ -38,15 +59,29 @@ static const char RFC2409_PRIME_1024[] =
  * RFC3526 specifies a generator of 2.
  * RFC2312 specifies a generator of 22.
  */
-static const char RFC3526_PRIME_1536[] =
-       "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
-       "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
-       "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
-       "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
-       "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
-       "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
-       "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
-       "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF";
+
+BIGNUM *get_rfc3526_prime_1536(BIGNUM *bn)
+       {
+       static const unsigned char RFC3526_PRIME_1536[]={
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0x0F,0xDA,0xA2,
+               0x21,0x68,0xC2,0x34,0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
+               0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,0x02,0x0B,0xBE,0xA6,
+               0x3B,0x13,0x9B,0x22,0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
+               0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,0x30,0x2B,0x0A,0x6D,
+               0xF2,0x5F,0x14,0x37,0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
+               0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,0xF4,0x4C,0x42,0xE9,
+               0xA6,0x37,0xED,0x6B,0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
+               0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,0xAE,0x9F,0x24,0x11,
+               0x7C,0x4B,0x1F,0xE6,0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
+               0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,0x98,0xDA,0x48,0x36,
+               0x1C,0x55,0xD3,0x9A,0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
+               0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,0x1C,0x62,0xF3,0x56,
+               0x20,0x85,0x52,0xBB,0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
+               0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,0xF1,0x74,0x6C,0x08,
+               0xCA,0x23,0x73,0x27,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+               };
+       return BN_bin2bn(RFC3526_PRIME_1536,sizeof(RFC3526_PRIME_1536),bn);
+       }
 
 /* "2048-bit MODP Group" from RFC3526, Section 3.
  *
@@ -54,18 +89,35 @@ static const char RFC3526_PRIME_1536[] =
  *
  * RFC3526 specifies a generator of 2.
  */
-static const char RFC3526_PRIME_2048[] =
-       "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
-       "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
-       "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
-       "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
-       "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
-       "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
-       "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
-       "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
-       "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
-       "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
-       "15728E5A8AACAA68FFFFFFFFFFFFFFFF";
+
+BIGNUM *get_rfc3526_prime_2048(BIGNUM *bn)
+       {
+       static const unsigned char RFC3526_PRIME_2048[]={
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0x0F,0xDA,0xA2,
+               0x21,0x68,0xC2,0x34,0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
+               0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,0x02,0x0B,0xBE,0xA6,
+               0x3B,0x13,0x9B,0x22,0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
+               0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,0x30,0x2B,0x0A,0x6D,
+               0xF2,0x5F,0x14,0x37,0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
+               0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,0xF4,0x4C,0x42,0xE9,
+               0xA6,0x37,0xED,0x6B,0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
+               0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,0xAE,0x9F,0x24,0x11,
+               0x7C,0x4B,0x1F,0xE6,0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
+               0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,0x98,0xDA,0x48,0x36,
+               0x1C,0x55,0xD3,0x9A,0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
+               0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,0x1C,0x62,0xF3,0x56,
+               0x20,0x85,0x52,0xBB,0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
+               0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,0xF1,0x74,0x6C,0x08,
+               0xCA,0x18,0x21,0x7C,0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
+               0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,0x9B,0x27,0x83,0xA2,
+               0xEC,0x07,0xA2,0x8F,0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
+               0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,0x39,0x95,0x49,0x7C,
+               0xEA,0x95,0x6A,0xE5,0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
+               0x15,0x72,0x8E,0x5A,0x8A,0xAC,0xAA,0x68,0xFF,0xFF,0xFF,0xFF,
+               0xFF,0xFF,0xFF,0xFF,
+               };
+       return BN_bin2bn(RFC3526_PRIME_2048,sizeof(RFC3526_PRIME_2048),bn);
+       }
 
 /* "3072-bit MODP Group" from RFC3526, Section 4.
  *
@@ -73,23 +125,45 @@ static const char RFC3526_PRIME_2048[] =
  *
  * RFC3526 specifies a generator of 2.
  */
-static const char RFC3526_PRIME_3072[] =
-       "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
-       "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
-       "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
-       "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
-       "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
-       "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
-       "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
-       "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
-       "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
-       "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
-       "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
-       "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
-       "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
-       "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
-       "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
-       "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF";
+
+BIGNUM *get_rfc3526_prime_3072(BIGNUM *bn)
+       {
+       static const unsigned char RFC3526_PRIME_3072[]={
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0x0F,0xDA,0xA2,
+               0x21,0x68,0xC2,0x34,0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
+               0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,0x02,0x0B,0xBE,0xA6,
+               0x3B,0x13,0x9B,0x22,0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
+               0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,0x30,0x2B,0x0A,0x6D,
+               0xF2,0x5F,0x14,0x37,0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
+               0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,0xF4,0x4C,0x42,0xE9,
+               0xA6,0x37,0xED,0x6B,0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
+               0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,0xAE,0x9F,0x24,0x11,
+               0x7C,0x4B,0x1F,0xE6,0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
+               0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,0x98,0xDA,0x48,0x36,
+               0x1C,0x55,0xD3,0x9A,0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
+               0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,0x1C,0x62,0xF3,0x56,
+               0x20,0x85,0x52,0xBB,0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
+               0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,0xF1,0x74,0x6C,0x08,
+               0xCA,0x18,0x21,0x7C,0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
+               0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,0x9B,0x27,0x83,0xA2,
+               0xEC,0x07,0xA2,0x8F,0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
+               0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,0x39,0x95,0x49,0x7C,
+               0xEA,0x95,0x6A,0xE5,0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
+               0x15,0x72,0x8E,0x5A,0x8A,0xAA,0xC4,0x2D,0xAD,0x33,0x17,0x0D,
+               0x04,0x50,0x7A,0x33,0xA8,0x55,0x21,0xAB,0xDF,0x1C,0xBA,0x64,
+               0xEC,0xFB,0x85,0x04,0x58,0xDB,0xEF,0x0A,0x8A,0xEA,0x71,0x57,
+               0x5D,0x06,0x0C,0x7D,0xB3,0x97,0x0F,0x85,0xA6,0xE1,0xE4,0xC7,
+               0xAB,0xF5,0xAE,0x8C,0xDB,0x09,0x33,0xD7,0x1E,0x8C,0x94,0xE0,
+               0x4A,0x25,0x61,0x9D,0xCE,0xE3,0xD2,0x26,0x1A,0xD2,0xEE,0x6B,
+               0xF1,0x2F,0xFA,0x06,0xD9,0x8A,0x08,0x64,0xD8,0x76,0x02,0x73,
+               0x3E,0xC8,0x6A,0x64,0x52,0x1F,0x2B,0x18,0x17,0x7B,0x20,0x0C,
+               0xBB,0xE1,0x17,0x57,0x7A,0x61,0x5D,0x6C,0x77,0x09,0x88,0xC0,
+               0xBA,0xD9,0x46,0xE2,0x08,0xE2,0x4F,0xA0,0x74,0xE5,0xAB,0x31,
+               0x43,0xDB,0x5B,0xFC,0xE0,0xFD,0x10,0x8E,0x4B,0x82,0xD1,0x20,
+               0xA9,0x3A,0xD2,0xCA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+               };
+       return BN_bin2bn(RFC3526_PRIME_3072,sizeof(RFC3526_PRIME_3072),bn);
+       }
 
 /* "4096-bit MODP Group" from RFC3526, Section 5.
  *
@@ -97,29 +171,56 @@ static const char RFC3526_PRIME_3072[] =
  *
  * RFC3526 specifies a generator of 2.
  */
-static const char RFC3526_PRIME_4096[] =
-       "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
-       "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
-       "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
-       "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
-       "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
-       "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
-       "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
-       "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
-       "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
-       "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
-       "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
-       "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
-       "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
-       "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
-       "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
-       "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7"
-       "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA"
-       "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6"
-       "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED"
-       "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9"
-       "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199"
-       "FFFFFFFFFFFFFFFF";
+
+BIGNUM *get_rfc3526_prime_4096(BIGNUM *bn)
+       {
+       static const unsigned char RFC3526_PRIME_4096[]={
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0x0F,0xDA,0xA2,
+               0x21,0x68,0xC2,0x34,0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
+               0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,0x02,0x0B,0xBE,0xA6,
+               0x3B,0x13,0x9B,0x22,0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
+               0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,0x30,0x2B,0x0A,0x6D,
+               0xF2,0x5F,0x14,0x37,0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
+               0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,0xF4,0x4C,0x42,0xE9,
+               0xA6,0x37,0xED,0x6B,0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
+               0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,0xAE,0x9F,0x24,0x11,
+               0x7C,0x4B,0x1F,0xE6,0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
+               0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,0x98,0xDA,0x48,0x36,
+               0x1C,0x55,0xD3,0x9A,0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
+               0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,0x1C,0x62,0xF3,0x56,
+               0x20,0x85,0x52,0xBB,0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
+               0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,0xF1,0x74,0x6C,0x08,
+               0xCA,0x18,0x21,0x7C,0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
+               0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,0x9B,0x27,0x83,0xA2,
+               0xEC,0x07,0xA2,0x8F,0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
+               0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,0x39,0x95,0x49,0x7C,
+               0xEA,0x95,0x6A,0xE5,0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
+               0x15,0x72,0x8E,0x5A,0x8A,0xAA,0xC4,0x2D,0xAD,0x33,0x17,0x0D,
+               0x04,0x50,0x7A,0x33,0xA8,0x55,0x21,0xAB,0xDF,0x1C,0xBA,0x64,
+               0xEC,0xFB,0x85,0x04,0x58,0xDB,0xEF,0x0A,0x8A,0xEA,0x71,0x57,
+               0x5D,0x06,0x0C,0x7D,0xB3,0x97,0x0F,0x85,0xA6,0xE1,0xE4,0xC7,
+               0xAB,0xF5,0xAE,0x8C,0xDB,0x09,0x33,0xD7,0x1E,0x8C,0x94,0xE0,
+               0x4A,0x25,0x61,0x9D,0xCE,0xE3,0xD2,0x26,0x1A,0xD2,0xEE,0x6B,
+               0xF1,0x2F,0xFA,0x06,0xD9,0x8A,0x08,0x64,0xD8,0x76,0x02,0x73,
+               0x3E,0xC8,0x6A,0x64,0x52,0x1F,0x2B,0x18,0x17,0x7B,0x20,0x0C,
+               0xBB,0xE1,0x17,0x57,0x7A,0x61,0x5D,0x6C,0x77,0x09,0x88,0xC0,
+               0xBA,0xD9,0x46,0xE2,0x08,0xE2,0x4F,0xA0,0x74,0xE5,0xAB,0x31,
+               0x43,0xDB,0x5B,0xFC,0xE0,0xFD,0x10,0x8E,0x4B,0x82,0xD1,0x20,
+               0xA9,0x21,0x08,0x01,0x1A,0x72,0x3C,0x12,0xA7,0x87,0xE6,0xD7,
+               0x88,0x71,0x9A,0x10,0xBD,0xBA,0x5B,0x26,0x99,0xC3,0x27,0x18,
+               0x6A,0xF4,0xE2,0x3C,0x1A,0x94,0x68,0x34,0xB6,0x15,0x0B,0xDA,
+               0x25,0x83,0xE9,0xCA,0x2A,0xD4,0x4C,0xE8,0xDB,0xBB,0xC2,0xDB,
+               0x04,0xDE,0x8E,0xF9,0x2E,0x8E,0xFC,0x14,0x1F,0xBE,0xCA,0xA6,
+               0x28,0x7C,0x59,0x47,0x4E,0x6B,0xC0,0x5D,0x99,0xB2,0x96,0x4F,
+               0xA0,0x90,0xC3,0xA2,0x23,0x3B,0xA1,0x86,0x51,0x5B,0xE7,0xED,
+               0x1F,0x61,0x29,0x70,0xCE,0xE2,0xD7,0xAF,0xB8,0x1B,0xDD,0x76,
+               0x21,0x70,0x48,0x1C,0xD0,0x06,0x91,0x27,0xD5,0xB0,0x5A,0xA9,
+               0x93,0xB4,0xEA,0x98,0x8D,0x8F,0xDD,0xC1,0x86,0xFF,0xB7,0xDC,
+               0x90,0xA6,0xC0,0x8F,0x4D,0xF4,0x35,0xC9,0x34,0x06,0x31,0x99,
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+               };
+       return BN_bin2bn(RFC3526_PRIME_4096,sizeof(RFC3526_PRIME_4096),bn);
+       }
 
 /* "6144-bit MODP Group" from RFC3526, Section 6.
  *
@@ -127,35 +228,77 @@ static const char RFC3526_PRIME_4096[] =
  *
  * RFC3526 specifies a generator of 2.
  */
-static const char RFC3526_PRIME_6144[] =
-       "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E08"
-       "8A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B"
-       "302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9"
-       "A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE6"
-       "49286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8"
-       "FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D"
-       "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C"
-       "180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718"
-       "3995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D"
-       "04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7D"
-       "B3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D226"
-       "1AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
-       "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFC"
-       "E0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B26"
-       "99C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB"
-       "04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2"
-       "233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127"
-       "D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492"
-       "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BDF8FF9406"
-       "AD9E530EE5DB382F413001AEB06A53ED9027D831179727B0865A8918"
-       "DA3EDBEBCF9B14ED44CE6CBACED4BB1BDB7F1447E6CC254B33205151"
-       "2BD7AF426FB8F401378CD2BF5983CA01C64B92ECF032EA15D1721D03"
-       "F482D7CE6E74FEF6D55E702F46980C82B5A84031900B1C9E59E7C97F"
-       "BEC7E8F323A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA"
-       "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE32806A1D58B"
-       "B7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55CDA56C9EC2EF29632"
-       "387FE8D76E3C0468043E8F663F4860EE12BF2D5B0B7474D6E694F91E"
-       "6DCC4024FFFFFFFFFFFFFFFF";
+
+BIGNUM *get_rfc3526_prime_6144(BIGNUM *bn)
+       {
+       static const unsigned char RFC3526_PRIME_6144[]={
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0x0F,0xDA,0xA2,
+               0x21,0x68,0xC2,0x34,0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
+               0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,0x02,0x0B,0xBE,0xA6,
+               0x3B,0x13,0x9B,0x22,0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
+               0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,0x30,0x2B,0x0A,0x6D,
+               0xF2,0x5F,0x14,0x37,0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
+               0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,0xF4,0x4C,0x42,0xE9,
+               0xA6,0x37,0xED,0x6B,0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
+               0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,0xAE,0x9F,0x24,0x11,
+               0x7C,0x4B,0x1F,0xE6,0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
+               0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,0x98,0xDA,0x48,0x36,
+               0x1C,0x55,0xD3,0x9A,0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
+               0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,0x1C,0x62,0xF3,0x56,
+               0x20,0x85,0x52,0xBB,0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
+               0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,0xF1,0x74,0x6C,0x08,
+               0xCA,0x18,0x21,0x7C,0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
+               0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,0x9B,0x27,0x83,0xA2,
+               0xEC,0x07,0xA2,0x8F,0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
+               0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,0x39,0x95,0x49,0x7C,
+               0xEA,0x95,0x6A,0xE5,0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
+               0x15,0x72,0x8E,0x5A,0x8A,0xAA,0xC4,0x2D,0xAD,0x33,0x17,0x0D,
+               0x04,0x50,0x7A,0x33,0xA8,0x55,0x21,0xAB,0xDF,0x1C,0xBA,0x64,
+               0xEC,0xFB,0x85,0x04,0x58,0xDB,0xEF,0x0A,0x8A,0xEA,0x71,0x57,
+               0x5D,0x06,0x0C,0x7D,0xB3,0x97,0x0F,0x85,0xA6,0xE1,0xE4,0xC7,
+               0xAB,0xF5,0xAE,0x8C,0xDB,0x09,0x33,0xD7,0x1E,0x8C,0x94,0xE0,
+               0x4A,0x25,0x61,0x9D,0xCE,0xE3,0xD2,0x26,0x1A,0xD2,0xEE,0x6B,
+               0xF1,0x2F,0xFA,0x06,0xD9,0x8A,0x08,0x64,0xD8,0x76,0x02,0x73,
+               0x3E,0xC8,0x6A,0x64,0x52,0x1F,0x2B,0x18,0x17,0x7B,0x20,0x0C,
+               0xBB,0xE1,0x17,0x57,0x7A,0x61,0x5D,0x6C,0x77,0x09,0x88,0xC0,
+               0xBA,0xD9,0x46,0xE2,0x08,0xE2,0x4F,0xA0,0x74,0xE5,0xAB,0x31,
+               0x43,0xDB,0x5B,0xFC,0xE0,0xFD,0x10,0x8E,0x4B,0x82,0xD1,0x20,
+               0xA9,0x21,0x08,0x01,0x1A,0x72,0x3C,0x12,0xA7,0x87,0xE6,0xD7,
+               0x88,0x71,0x9A,0x10,0xBD,0xBA,0x5B,0x26,0x99,0xC3,0x27,0x18,
+               0x6A,0xF4,0xE2,0x3C,0x1A,0x94,0x68,0x34,0xB6,0x15,0x0B,0xDA,
+               0x25,0x83,0xE9,0xCA,0x2A,0xD4,0x4C,0xE8,0xDB,0xBB,0xC2,0xDB,
+               0x04,0xDE,0x8E,0xF9,0x2E,0x8E,0xFC,0x14,0x1F,0xBE,0xCA,0xA6,
+               0x28,0x7C,0x59,0x47,0x4E,0x6B,0xC0,0x5D,0x99,0xB2,0x96,0x4F,
+               0xA0,0x90,0xC3,0xA2,0x23,0x3B,0xA1,0x86,0x51,0x5B,0xE7,0xED,
+               0x1F,0x61,0x29,0x70,0xCE,0xE2,0xD7,0xAF,0xB8,0x1B,0xDD,0x76,
+               0x21,0x70,0x48,0x1C,0xD0,0x06,0x91,0x27,0xD5,0xB0,0x5A,0xA9,
+               0x93,0xB4,0xEA,0x98,0x8D,0x8F,0xDD,0xC1,0x86,0xFF,0xB7,0xDC,
+               0x90,0xA6,0xC0,0x8F,0x4D,0xF4,0x35,0xC9,0x34,0x02,0x84,0x92,
+               0x36,0xC3,0xFA,0xB4,0xD2,0x7C,0x70,0x26,0xC1,0xD4,0xDC,0xB2,
+               0x60,0x26,0x46,0xDE,0xC9,0x75,0x1E,0x76,0x3D,0xBA,0x37,0xBD,
+               0xF8,0xFF,0x94,0x06,0xAD,0x9E,0x53,0x0E,0xE5,0xDB,0x38,0x2F,
+               0x41,0x30,0x01,0xAE,0xB0,0x6A,0x53,0xED,0x90,0x27,0xD8,0x31,
+               0x17,0x97,0x27,0xB0,0x86,0x5A,0x89,0x18,0xDA,0x3E,0xDB,0xEB,
+               0xCF,0x9B,0x14,0xED,0x44,0xCE,0x6C,0xBA,0xCE,0xD4,0xBB,0x1B,
+               0xDB,0x7F,0x14,0x47,0xE6,0xCC,0x25,0x4B,0x33,0x20,0x51,0x51,
+               0x2B,0xD7,0xAF,0x42,0x6F,0xB8,0xF4,0x01,0x37,0x8C,0xD2,0xBF,
+               0x59,0x83,0xCA,0x01,0xC6,0x4B,0x92,0xEC,0xF0,0x32,0xEA,0x15,
+               0xD1,0x72,0x1D,0x03,0xF4,0x82,0xD7,0xCE,0x6E,0x74,0xFE,0xF6,
+               0xD5,0x5E,0x70,0x2F,0x46,0x98,0x0C,0x82,0xB5,0xA8,0x40,0x31,
+               0x90,0x0B,0x1C,0x9E,0x59,0xE7,0xC9,0x7F,0xBE,0xC7,0xE8,0xF3,
+               0x23,0xA9,0x7A,0x7E,0x36,0xCC,0x88,0xBE,0x0F,0x1D,0x45,0xB7,
+               0xFF,0x58,0x5A,0xC5,0x4B,0xD4,0x07,0xB2,0x2B,0x41,0x54,0xAA,
+               0xCC,0x8F,0x6D,0x7E,0xBF,0x48,0xE1,0xD8,0x14,0xCC,0x5E,0xD2,
+               0x0F,0x80,0x37,0xE0,0xA7,0x97,0x15,0xEE,0xF2,0x9B,0xE3,0x28,
+               0x06,0xA1,0xD5,0x8B,0xB7,0xC5,0xDA,0x76,0xF5,0x50,0xAA,0x3D,
+               0x8A,0x1F,0xBF,0xF0,0xEB,0x19,0xCC,0xB1,0xA3,0x13,0xD5,0x5C,
+               0xDA,0x56,0xC9,0xEC,0x2E,0xF2,0x96,0x32,0x38,0x7F,0xE8,0xD7,
+               0x6E,0x3C,0x04,0x68,0x04,0x3E,0x8F,0x66,0x3F,0x48,0x60,0xEE,
+               0x12,0xBF,0x2D,0x5B,0x0B,0x74,0x74,0xD6,0xE6,0x94,0xF9,0x1E,
+               0x6D,0xCC,0x40,0x24,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+               };
+       return BN_bin2bn(RFC3526_PRIME_6144,sizeof(RFC3526_PRIME_6144),bn);
+       }
 
 /* "8192-bit MODP Group" from RFC3526, Section 7.
  *
@@ -163,87 +306,97 @@ static const char RFC3526_PRIME_6144[] =
  *
  * RFC3526 specifies a generator of 2.
  */
-static const char RFC3526_PRIME_8192[] =
-       "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
-       "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
-       "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245"
-       "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED"
-       "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D"
-       "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F"
-       "83655D23DCA3AD961C62F356208552BB9ED529077096966D"
-       "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B"
-       "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9"
-       "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
-       "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64"
-       "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7"
-       "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B"
-       "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C"
-       "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31"
-       "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7"
-       "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA"
-       "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6"
-       "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED"
-       "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9"
-       "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492"
-       "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD"
-       "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831"
-       "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B"
-       "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF"
-       "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6"
-       "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3"
-       "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA"
-       "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328"
-       "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C"
-       "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE"
-       "12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E4"
-       "38777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300"
-       "741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F568"
-       "3423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9"
-       "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B"
-       "4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A"
-       "062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A36"
-       "4597E899A0255DC164F31CC50846851DF9AB48195DED7EA1"
-       "B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F92"
-       "4009438B481C6CD7889A002ED5EE382BC9190DA6FC026E47"
-       "9558E4475677E9AA9E3050E2765694DFC81F56E880B96E71"
-       "60C980DD98EDD3DFFFFFFFFFFFFFFFFF";
-
-int get_rfc2409_prime_768(BIGNUM **bn)
-       {
-       return BN_hex2bn(bn,RFC2409_PRIME_768);
-       }
-
-int get_rfc2409_prime_1024(BIGNUM **bn)
-       {
-       return BN_hex2bn(bn,RFC2409_PRIME_1024);
-       }
-
-int get_rfc3526_prime_1536(BIGNUM **bn)
-       {
-       return BN_hex2bn(bn,RFC3526_PRIME_1536);
-       }
-
-int get_rfc3526_prime_2048(BIGNUM **bn)
-       {
-       return BN_hex2bn(bn,RFC3526_PRIME_2048);
-       }
-
-int get_rfc3526_prime_3072(BIGNUM **bn)
-       {
-       return BN_hex2bn(bn,RFC3526_PRIME_3072);
-       }
 
-int get_rfc3526_prime_4096(BIGNUM **bn)
+BIGNUM *get_rfc3526_prime_8192(BIGNUM *bn)
        {
-       return BN_hex2bn(bn,RFC3526_PRIME_4096);
+       static const unsigned char RFC3526_PRIME_8192[]={
+               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0x0F,0xDA,0xA2,
+               0x21,0x68,0xC2,0x34,0xC4,0xC6,0x62,0x8B,0x80,0xDC,0x1C,0xD1,
+               0x29,0x02,0x4E,0x08,0x8A,0x67,0xCC,0x74,0x02,0x0B,0xBE,0xA6,
+               0x3B,0x13,0x9B,0x22,0x51,0x4A,0x08,0x79,0x8E,0x34,0x04,0xDD,
+               0xEF,0x95,0x19,0xB3,0xCD,0x3A,0x43,0x1B,0x30,0x2B,0x0A,0x6D,
+               0xF2,0x5F,0x14,0x37,0x4F,0xE1,0x35,0x6D,0x6D,0x51,0xC2,0x45,
+               0xE4,0x85,0xB5,0x76,0x62,0x5E,0x7E,0xC6,0xF4,0x4C,0x42,0xE9,
+               0xA6,0x37,0xED,0x6B,0x0B,0xFF,0x5C,0xB6,0xF4,0x06,0xB7,0xED,
+               0xEE,0x38,0x6B,0xFB,0x5A,0x89,0x9F,0xA5,0xAE,0x9F,0x24,0x11,
+               0x7C,0x4B,0x1F,0xE6,0x49,0x28,0x66,0x51,0xEC,0xE4,0x5B,0x3D,
+               0xC2,0x00,0x7C,0xB8,0xA1,0x63,0xBF,0x05,0x98,0xDA,0x48,0x36,
+               0x1C,0x55,0xD3,0x9A,0x69,0x16,0x3F,0xA8,0xFD,0x24,0xCF,0x5F,
+               0x83,0x65,0x5D,0x23,0xDC,0xA3,0xAD,0x96,0x1C,0x62,0xF3,0x56,
+               0x20,0x85,0x52,0xBB,0x9E,0xD5,0x29,0x07,0x70,0x96,0x96,0x6D,
+               0x67,0x0C,0x35,0x4E,0x4A,0xBC,0x98,0x04,0xF1,0x74,0x6C,0x08,
+               0xCA,0x18,0x21,0x7C,0x32,0x90,0x5E,0x46,0x2E,0x36,0xCE,0x3B,
+               0xE3,0x9E,0x77,0x2C,0x18,0x0E,0x86,0x03,0x9B,0x27,0x83,0xA2,
+               0xEC,0x07,0xA2,0x8F,0xB5,0xC5,0x5D,0xF0,0x6F,0x4C,0x52,0xC9,
+               0xDE,0x2B,0xCB,0xF6,0x95,0x58,0x17,0x18,0x39,0x95,0x49,0x7C,
+               0xEA,0x95,0x6A,0xE5,0x15,0xD2,0x26,0x18,0x98,0xFA,0x05,0x10,
+               0x15,0x72,0x8E,0x5A,0x8A,0xAA,0xC4,0x2D,0xAD,0x33,0x17,0x0D,
+               0x04,0x50,0x7A,0x33,0xA8,0x55,0x21,0xAB,0xDF,0x1C,0xBA,0x64,
+               0xEC,0xFB,0x85,0x04,0x58,0xDB,0xEF,0x0A,0x8A,0xEA,0x71,0x57,
+               0x5D,0x06,0x0C,0x7D,0xB3,0x97,0x0F,0x85,0xA6,0xE1,0xE4,0xC7,
+               0xAB,0xF5,0xAE,0x8C,0xDB,0x09,0x33,0xD7,0x1E,0x8C,0x94,0xE0,
+               0x4A,0x25,0x61,0x9D,0xCE,0xE3,0xD2,0x26,0x1A,0xD2,0xEE,0x6B,
+               0xF1,0x2F,0xFA,0x06,0xD9,0x8A,0x08,0x64,0xD8,0x76,0x02,0x73,
+               0x3E,0xC8,0x6A,0x64,0x52,0x1F,0x2B,0x18,0x17,0x7B,0x20,0x0C,
+               0xBB,0xE1,0x17,0x57,0x7A,0x61,0x5D,0x6C,0x77,0x09,0x88,0xC0,
+               0xBA,0xD9,0x46,0xE2,0x08,0xE2,0x4F,0xA0,0x74,0xE5,0xAB,0x31,
+               0x43,0xDB,0x5B,0xFC,0xE0,0xFD,0x10,0x8E,0x4B,0x82,0xD1,0x20,
+               0xA9,0x21,0x08,0x01,0x1A,0x72,0x3C,0x12,0xA7,0x87,0xE6,0xD7,
+               0x88,0x71,0x9A,0x10,0xBD,0xBA,0x5B,0x26,0x99,0xC3,0x27,0x18,
+               0x6A,0xF4,0xE2,0x3C,0x1A,0x94,0x68,0x34,0xB6,0x15,0x0B,0xDA,
+               0x25,0x83,0xE9,0xCA,0x2A,0xD4,0x4C,0xE8,0xDB,0xBB,0xC2,0xDB,
+               0x04,0xDE,0x8E,0xF9,0x2E,0x8E,0xFC,0x14,0x1F,0xBE,0xCA,0xA6,
+               0x28,0x7C,0x59,0x47,0x4E,0x6B,0xC0,0x5D,0x99,0xB2,0x96,0x4F,
+               0xA0,0x90,0xC3,0xA2,0x23,0x3B,0xA1,0x86,0x51,0x5B,0xE7,0xED,
+               0x1F,0x61,0x29,0x70,0xCE,0xE2,0xD7,0xAF,0xB8,0x1B,0xDD,0x76,
+               0x21,0x70,0x48,0x1C,0xD0,0x06,0x91,0x27,0xD5,0xB0,0x5A,0xA9,
+               0x93,0xB4,0xEA,0x98,0x8D,0x8F,0xDD,0xC1,0x86,0xFF,0xB7,0xDC,
+               0x90,0xA6,0xC0,0x8F,0x4D,0xF4,0x35,0xC9,0x34,0x02,0x84,0x92,
+               0x36,0xC3,0xFA,0xB4,0xD2,0x7C,0x70,0x26,0xC1,0xD4,0xDC,0xB2,
+               0x60,0x26,0x46,0xDE,0xC9,0x75,0x1E,0x76,0x3D,0xBA,0x37,0xBD,
+               0xF8,0xFF,0x94,0x06,0xAD,0x9E,0x53,0x0E,0xE5,0xDB,0x38,0x2F,
+               0x41,0x30,0x01,0xAE,0xB0,0x6A,0x53,0xED,0x90,0x27,0xD8,0x31,
+               0x17,0x97,0x27,0xB0,0x86,0x5A,0x89,0x18,0xDA,0x3E,0xDB,0xEB,
+               0xCF,0x9B,0x14,0xED,0x44,0xCE,0x6C,0xBA,0xCE,0xD4,0xBB,0x1B,
+               0xDB,0x7F,0x14,0x47,0xE6,0xCC,0x25,0x4B,0x33,0x20,0x51,0x51,
+               0x2B,0xD7,0xAF,0x42,0x6F,0xB8,0xF4,0x01,0x37,0x8C,0xD2,0xBF,
+               0x59,0x83,0xCA,0x01,0xC6,0x4B,0x92,0xEC,0xF0,0x32,0xEA,0x15,
+               0xD1,0x72,0x1D,0x03,0xF4,0x82,0xD7,0xCE,0x6E,0x74,0xFE,0xF6,
+               0xD5,0x5E,0x70,0x2F,0x46,0x98,0x0C,0x82,0xB5,0xA8,0x40,0x31,
+               0x90,0x0B,0x1C,0x9E,0x59,0xE7,0xC9,0x7F,0xBE,0xC7,0xE8,0xF3,
+               0x23,0xA9,0x7A,0x7E,0x36,0xCC,0x88,0xBE,0x0F,0x1D,0x45,0xB7,
+               0xFF,0x58,0x5A,0xC5,0x4B,0xD4,0x07,0xB2,0x2B,0x41,0x54,0xAA,
+               0xCC,0x8F,0x6D,0x7E,0xBF,0x48,0xE1,0xD8,0x14,0xCC,0x5E,0xD2,
+               0x0F,0x80,0x37,0xE0,0xA7,0x97,0x15,0xEE,0xF2,0x9B,0xE3,0x28,
+               0x06,0xA1,0xD5,0x8B,0xB7,0xC5,0xDA,0x76,0xF5,0x50,0xAA,0x3D,
+               0x8A,0x1F,0xBF,0xF0,0xEB,0x19,0xCC,0xB1,0xA3,0x13,0xD5,0x5C,
+               0xDA,0x56,0xC9,0xEC,0x2E,0xF2,0x96,0x32,0x38,0x7F,0xE8,0xD7,
+               0x6E,0x3C,0x04,0x68,0x04,0x3E,0x8F,0x66,0x3F,0x48,0x60,0xEE,
+               0x12,0xBF,0x2D,0x5B,0x0B,0x74,0x74,0xD6,0xE6,0x94,0xF9,0x1E,
+               0x6D,0xBE,0x11,0x59,0x74,0xA3,0x92,0x6F,0x12,0xFE,0xE5,0xE4,
+               0x38,0x77,0x7C,0xB6,0xA9,0x32,0xDF,0x8C,0xD8,0xBE,0xC4,0xD0,
+               0x73,0xB9,0x31,0xBA,0x3B,0xC8,0x32,0xB6,0x8D,0x9D,0xD3,0x00,
+               0x74,0x1F,0xA7,0xBF,0x8A,0xFC,0x47,0xED,0x25,0x76,0xF6,0x93,
+               0x6B,0xA4,0x24,0x66,0x3A,0xAB,0x63,0x9C,0x5A,0xE4,0xF5,0x68,
+               0x34,0x23,0xB4,0x74,0x2B,0xF1,0xC9,0x78,0x23,0x8F,0x16,0xCB,
+               0xE3,0x9D,0x65,0x2D,0xE3,0xFD,0xB8,0xBE,0xFC,0x84,0x8A,0xD9,
+               0x22,0x22,0x2E,0x04,0xA4,0x03,0x7C,0x07,0x13,0xEB,0x57,0xA8,
+               0x1A,0x23,0xF0,0xC7,0x34,0x73,0xFC,0x64,0x6C,0xEA,0x30,0x6B,
+               0x4B,0xCB,0xC8,0x86,0x2F,0x83,0x85,0xDD,0xFA,0x9D,0x4B,0x7F,
+               0xA2,0xC0,0x87,0xE8,0x79,0x68,0x33,0x03,0xED,0x5B,0xDD,0x3A,
+               0x06,0x2B,0x3C,0xF5,0xB3,0xA2,0x78,0xA6,0x6D,0x2A,0x13,0xF8,
+               0x3F,0x44,0xF8,0x2D,0xDF,0x31,0x0E,0xE0,0x74,0xAB,0x6A,0x36,
+               0x45,0x97,0xE8,0x99,0xA0,0x25,0x5D,0xC1,0x64,0xF3,0x1C,0xC5,
+               0x08,0x46,0x85,0x1D,0xF9,0xAB,0x48,0x19,0x5D,0xED,0x7E,0xA1,
+               0xB1,0xD5,0x10,0xBD,0x7E,0xE7,0x4D,0x73,0xFA,0xF3,0x6B,0xC3,
+               0x1E,0xCF,0xA2,0x68,0x35,0x90,0x46,0xF4,0xEB,0x87,0x9F,0x92,
+               0x40,0x09,0x43,0x8B,0x48,0x1C,0x6C,0xD7,0x88,0x9A,0x00,0x2E,
+               0xD5,0xEE,0x38,0x2B,0xC9,0x19,0x0D,0xA6,0xFC,0x02,0x6E,0x47,
+               0x95,0x58,0xE4,0x47,0x56,0x77,0xE9,0xAA,0x9E,0x30,0x50,0xE2,
+               0x76,0x56,0x94,0xDF,0xC8,0x1F,0x56,0xE8,0x80,0xB9,0x6E,0x71,
+               0x60,0xC9,0x80,0xDD,0x98,0xED,0xD3,0xDF,0xFF,0xFF,0xFF,0xFF,
+               0xFF,0xFF,0xFF,0xFF,
+               };
+       return BN_bin2bn(RFC3526_PRIME_8192,sizeof(RFC3526_PRIME_8192),bn);
        }
 
-int get_rfc3526_prime_6144(BIGNUM **bn)
-       {
-       return BN_hex2bn(bn,RFC3526_PRIME_6144);
-       }
-
-int get_rfc3526_prime_8192(BIGNUM **bn)
-       {
-       return BN_hex2bn(bn,RFC3526_PRIME_8192);
-       }