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]

Reply via email to