diff options
-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) { |