Hello, > >> Hi, can anyone tell me how to fix the leading zero in BIGNUM. I have > >> the following code: > >> > >> unsigned char pkinit_1024_dhprime[128] = { > >> 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, > >> }; > >> > >> BIGNUM *p; > >> p = BN_bin2bn(pkinit_1024_dhprime, sizeof(pkinit_1024_dhprime), NULL); > >> > >> When I print the big number is comes out with a leading zero: > >> 00:ff:ff:ff:ff:ff:ff:ff:ff:c9:0f:da:a2:21:68: > >> c2:34:c4:c6:62:8b:80:dc:1c:d1:29:02:4e:08:8a: > >> 67:cc:74:02:0b:be:a6:3b:13:9b:22:51:4a:08:79: > >> 8e:34:04:dd:ef:95:19:b3:cd:3a:43:1b:30:2b:0a: > >> 6d:f2:5f:14:37:4f:e1:35:6d:6d:51:c2:45:e4:85: > >> b5:76:62:5e:7e:c6:f4:4c:42:e9:a6:37:ed:6b:0b: > >> ff:5c:b6:f4:06:b7:ed:ee:38:6b:fb:5a:89:9f:a5: > >> ae:9f:24:11:7c:4b:1f:e6:49:28:66:51:ec:e6:53: > >> 81:ff:ff:ff:ff:ff:ff:ff:ff > >> > >> In crypto/bn/bn.h, I read comments about "Bignum consistency macros" > >> and I tried to add bn_fix_top(p) after calling BN_bin2bn() but it > >> didn't fix the leading zero problem. > >> > >> Any suggestions would be appreciated. > > > > the bignum library doesn't add a leading zero byte. The leading zero byte > > is normally added when you DER encode an integer to indicate that the > > number is positive. > > > Ok. Thanks. I was hoping that a leading zero was the answer to my real > problem which is. I'm using the above "p" and a generator "g" = 2 (both > are well-known group 2 DH parameters described in the RFC 2412). I > initialize the DH structure with them and the then call DH_check() which > returns with an error code of 8 which is "the g value is not a > generator". I'm puzzled as to why the library doesn't like the > well-known DH parameters. In OpenSSL, DH_check() requires that prime number p must satisfy "p mod 24 = 11" for generator g=2. In example p above "p mod 24 = 23" and this is why DH_check() returns error.
Best regards, -- Marek Marcola <[EMAIL PROTECTED]> ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager [EMAIL PROTECTED]