diff options
author | lloyd <[email protected]> | 2008-10-11 19:08:21 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2008-10-11 19:08:21 +0000 |
commit | 6378c18eabf9e41b6ea2d114c397ed139456c039 (patch) | |
tree | ad6b83842f7d9eddaeffb4f23774aab12fbf0389 /doc/examples | |
parent | 76189f3ca7a0a91fde8241881942baa031c9ef49 (diff) |
Generate and check ECDSA signature in example
Diffstat (limited to 'doc/examples')
-rw-r--r-- | doc/examples/ecdsa.cpp | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/doc/examples/ecdsa.cpp b/doc/examples/ecdsa.cpp index bd40e897b..db4a94f3f 100644 --- a/doc/examples/ecdsa.cpp +++ b/doc/examples/ecdsa.cpp @@ -1,5 +1,7 @@ #include <botan/botan.h> #include <botan/ecdsa.h> +#include <botan/pubkey.h> +#include <botan/look_pk.h> #include <memory> #include <iostream> @@ -15,12 +17,37 @@ int main() EC_Domain_Params params = get_EC_Dom_Pars_by_oid("1.3.132.0.8"); + ECDSA_PrivateKey ecdsa(*rng, params); + + ECDSA_PublicKey ecdsa_pub = ecdsa; + + /* std::cout << params.get_curve().get_p() << "\n"; std::cout << params.get_order() << "\n"; + std::cout << X509::PEM_encode(ecdsa); + std::cout << PKCS8::PEM_encode(ecdsa); + */ - ECDSA_PrivateKey ecdsa(*rng, params); + std::auto_ptr<PK_Signer> signer(get_pk_signer(ecdsa, "EMSA1(SHA-256)")); - std::cout << X509::PEM_encode(ecdsa); + const char* message = "Hello World"; + + signer->update((const byte*)message, strlen(message)); + + SecureVector<byte> sig = signer->signature(*rng); + + std::cout << sig.size() << "\n"; + + std::auto_ptr<PK_Verifier> verifier( + get_pk_verifier(ecdsa_pub, "EMSA1(SHA-256)")); + + verifier->update((const byte*)message, strlen(message)); + + bool ok = verifier->check_signature(sig); + if(ok) + std::cout << "Signature valid\n"; + else + std::cout << "Bad signature\n"; } catch(std::exception& e) { |