Okay...I finally found the answer. It WAS in the wiki, though not very well highlighted. The example I got working I was using the example code from the samples to kick off my first DH algorithm (which inits the algorithm via a file), then I was extracting the prime/generator and passing those values to the other end of the algorithm. This ended up bypassing the first few lines in the wiki example which did the prime/generator generation I was missing.
AutoSeededRandomPool arngA; RandomNumberGenerator& rngA = *dynamic_cast<RandomNumberGenerator *> (&arngA); DH dhA(rngA, 128); Having some comments on the DH constructors would help a lot, especially since the parameters aren't very meaningful (v1, v2, v3...) On May 28, 4:17 pm, SpaceCowboy850 <[email protected]> wrote: > Really this comes down to three issues: > > 1) How do I generate a DH prime and generator (primitive root modulo > the prime)? I see how to generate a prime with the Integer class, but > that has no way of setting a generator or getting the generator for > the generated prime. I'm beginning to think that the dat file has the > prime and generator and is not just a seed value for the PRNG. (Also, > I'm not talking about how to simply access the modulus that is there, > as that is easy. I want to be able to set my own and not use the > example). > > 2) How do I save this prime/generator pair out? I'm guessing once I > have step 1, it is as simple as calling SetModulusAndSubgroupGenerator > on my GroupParameters, then saying groupParameters->Save( FileSink ); > From what I can tell, I need to write out a prime, a q (??) and a > generator. Not sure what the second integer being read in during the > BERDecode is though (I think maybe the subgroup order? I guess I'll > need to set that as well). > > 3) Ideally, it would be nice to be able to create the prime/generator > pair and save them without going through the GroupParameters. I'm > somewhat confused that it looks like there is a BERDecoder, but you > can only encode with DEREncode...I would think there would be > corrolary functions (BEREncode, for instance). > > The search continues... > > On May 28, 11:19 am, SpaceCowboy850 <[email protected]> wrote: > > > I've taken a look at both of those thoroughly, > > (http://www.cryptopp.com/wiki/Diffie-Hellmanandthe source code in the > > examples), and they were very instrumental in getting me a working > > version. I got DH working before I posted the first time using those > > two resources. Now, what I want to do is make my own dat file, but > > I'm having trouble locating what generates a dat file and the > > requisites for generating this dat file. From what I can tell, the > > dat files are part of the download and not generated by the code. > > > On May 27, 7:14 pm, Jeffrey Walton <[email protected]> wrote: > > > > > It appears the first byte is not the asnTag. I know this is simple, > > > > but what am I doing wrong? > > > > You're writing random data, and then trying to read it as an ASN.1 > > > encoded object. Take a look at the wiki's DH example, or Crypto++'s > > > examples in validate1.cpp, validate2.cpp, etc. > > > > Jeff > > > > On 5/27/09, SpaceCowboy850 <[email protected]> wrote: > > > > > I'm using the Deffie-Hellman algorithm in Crypto 5.60 under Visual > > > > Studio 2005. I'm trying to create my own seed file instead of using > > > > the ones provided in the example. > > > > > This is the way I create my file: > > > > > const size_t seedBufSize = 1024; > > > > unsigned char seedBuf[seedBufSize]; > > > > g_autoRNG.GenerateBlock( reinterpret_cast<byte*>(seedBuf), > > > > seedBufSize ); > > > > CryptoPP::FileSink fileSink( "seed.dat" ); > > > > fileSink.GetStream()->write( (const char*)seedBuf, seedBufSize ); > > > > fileSink.IsolatedFlush( true, true ); > > > > > I then try to load it like this: > > > > > CryptoPP::FileSource fileSource( "seed.dat", true ); > > > > g_pKeyAgreementAlg = new CryptoPP::DH(fileSource); > > > > > I keep getting a BERDecodeError. I've tried using a HexDecoder like > > > > this: > > > > > CryptoPP::FileSource fileSource( "seed.dat", true, new > > > > CryptoPP::HexDecoder() ); > > > > > It appears the first byte is not the asnTag. I know this is simple, > > > > but what am I doing wrong? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com. -~----------~----~----~----~------~----~------~--~---
