[Botan-devel] need sample code for El Gamal Algorithm operations
run zhang
zhang4run at yahoo.com
Tue Mar 20 21:43:44 EDT 2007
Thanks very much. It works!
According to the API reference, ElGamal can use
DSA-512 group. Which magic should I play to make it
run with this?
--- Jack Lloyd <lloyd at randombit.net> wrote:
>
> Some sample code is attached. It does basic key
> generation, encryption
> and decryption. Currently you cannot export ElGamal
> keys in any sort
> of PKCS #8 structure as no OIDs have been defined
> for it that I know
> of (I'll rectify this in 1.7.0, I've been assigned
> an OID arc by the
> IANA and will be allocating nodes for RW, NR, and
> ElGamal key
> formats). Until then, if you want to do import
> export you'll have to
> do it manually with the accessors in
> DL_Scheme_{PublicKey,PrivateKey}
>
> -Jack
>
> On Mon, Mar 19, 2007 at 08:42:38PM -0700, run zhang
> wrote:
> > Would someone post some sample code for El Gamal
> key generation and enc/dec? Thanks a lot.
> >
> >
> >
> > ---------------------------------
> > Food fight? Enjoy some healthy debate
> > in the Yahoo! Answers Food & Drink Q&A.
> > _______________________________________________
> > botan-devel mailing list
> > botan-devel at randombit.net
> >
>
http://www.randombit.net/mailman/listinfo/botan-devel
>
> > #include <botan/botan.h> // for libraryinitalizer,
> etc
> #include <botan/elgamal.h> // for the key info
> #include <botan/look_pk.h> // for get_pk_*
> using namespace Botan;
>
> #include <iostream>
> #include <memory>
>
> SecureVector<byte> do_encrypt(const SymmetricKey&
> key,
> const
> ElGamal_PublicKey& elg_key)
> {
> std::auto_ptr<PK_Encryptor>
> enc(get_pk_encryptor(elg_key, "PKCS1v15"));
> return enc->encrypt(key.bits_of());
> }
>
> SecureVector<byte> do_decrypt(const
> SecureVector<byte>& ciphertext,
> const
> ElGamal_PrivateKey& elg_key)
> {
> std::auto_ptr<PK_Decryptor>
> dec(get_pk_decryptor(elg_key, "PKCS1v15"));
> return dec->decrypt(ciphertext);
> }
>
> int main()
> {
> LibraryInitializer init;
>
> // generate a 2048 bit ElGamal key
> ElGamal_PrivateKey
> priv_key(DL_Group("modp/ietf/1024"));
> ElGamal_PrivateKey pub_key = priv_key;
>
> SymmetricKey sym_key(16); // 128 bits, for, eg
> AES-128
>
> SecureVector<byte> enc_key = do_encrypt(sym_key,
> pub_key);
> SecureVector<byte> dec_key = do_decrypt(enc_key,
> priv_key);
>
> if(dec_key == sym_key.bits_of()) // check that it
> worked
> std::cout << "Decrypted plaintext matches
> original\n";
> else
> std::cout << "Something went wrong, not
> identical\n";
> return 0;
> }
> > _______________________________________________
> botan-devel mailing list
> botan-devel at randombit.net
>
http://www.randombit.net/mailman/listinfo/botan-devel
>
____________________________________________________________________________________
Food fight? Enjoy some healthy debate
in the Yahoo! Answers Food & Drink Q&A.
http://answers.yahoo.com/dir/?link=list&sid=396545367
More information about the botan-devel
mailing list