From 6378c18eabf9e41b6ea2d114c397ed139456c039 Mon Sep 17 00:00:00 2001 From: lloyd Date: Sat, 11 Oct 2008 19:08:21 +0000 Subject: Generate and check ECDSA signature in example --- doc/examples/ecdsa.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'doc') 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 #include +#include +#include #include #include @@ -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 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 sig = signer->signature(*rng); + + std::cout << sig.size() << "\n"; + + std::auto_ptr 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) { -- cgit v1.2.3