I wanted to put that on the wiki, but registration doesn't quite work
for me there...

Here is code to generate private/public key pair and then sign and
verify a message.

        using namespace CryptoPP;

        AutoSeededRandomPool rng;

        // Generating private key
        ECIES<ECP>::PrivateKey privateKey;
        privateKey.Initialize(rng, ASN1::secp160r1());

        // Generating matching public key
        ECIES<ECP>::PublicKey publicKey;
        privateKey.MakePublicKey(publicKey);

        // Signing a message
        ECDSA<ECP>::Signer signer(privateKey);
        std::string message="message";
        std::string signature;

        StringSource(message, true, new SignerFilter(rng, signer, new
StringSink(signature)));
        // signature contains bytes, not ascii string. Just use base32 or hex
encoder if needed.

        // Verifying message
        ECDSA<ECP>::Verifier verifier(publicKey);
        bool isValid = verifier.VerifyMessage((const byte*)message.data(),
message.size(), (const byte*)signature.data(), signature.size());


Of course for this to be usefull you'll need to load and save keys:

Saving:
        ECIES<ECP>::PrivateKey privateKey;
        // generate key ...

        std::string tmp;
        StringSink sink(tmp);
        privateKey.Save(sink);

        std::string base32encodedKey;
        StringSource(tmp, true, new Base32Encoder(new StringSink
(base32encodedKey)));

Loading:
        ECIES<ECP>::PrivateKey privateKey;
        ByteQueue bq;
        StringSource(base32encodedKey, true, new Base32Decoder(new Redirector
(bq)));
        privateKey.Load(bq);

Same with public keys.

On Jul 18, 2:57 am, bobby <[email protected]> wrote:
> Hello,
>
> I am interested in using ECC or more probably ECDSA to verify a string
> transmitted by a server. The way I'd like it to work is that the
> server will create any arbitrary text string. It'll take the string
> and hash it and then calculate a signature using some private key.
> Then it will transmit the string and the signature and I'd like the
> client to be able to verify that the string and signature match using
> only the public key information. My only other requirement is that I
> need to be able to generate new private/public key pairs from time to
> time. I also need fairly short key sizes (less than 160 bits).
>
> From my limited knowledge, it sounds like ECDSA is what I want.
> Unfortunately, I am not very math savvy and I start to get lost once
> people start bringing up the formulas. I am also having a somewhat
> difficult time understanding how all the Crypto++ code works with
> regards to ECDSA.
>
> So does anyone have any example code that shows this kind of
> functionality?
>
> Thanks!
--~--~---------~--~----~------------~-------~--~----~
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.
-~----------~----~----~----~------~----~------~--~---

Reply via email to