#include <iostream>
#include <string>

#include "files.h"
#include "filters.h"

#include "osrng.h"
#include "oids.h"

#include "eccrypto.h"
#include "ecp.h"
#include "base64.h"

using namespace CryptoPP;
using namespace std;

int main()
{
  AutoSeededRandomPool rng;
  
  ECDSA<ECP>::Signer priv(rng, ASN1::secp112r1());
  priv.AccessKey().AccessGroupParameters().SetEncodeAsOID(true);
 
  string privstring;
  Base64Encoder privsink(new StringSink(privstring));
  priv.AccessKey().DEREncode(privsink);
  privsink.MessageEnd();

  cout << "Private Key = " << privstring;

  ECDSA<ECP>::Verifier pub(priv);
  pub.AccessKey().AccessGroupParameters().SetEncodeAsOID(true);
 
  string pubstring;
  Base64Encoder pubsink(new StringSink(pubstring));
  pub.AccessKey().DEREncode(pubsink);
  pubsink.MessageEnd();

  cout << "Public Key = " << pubstring;

  return 0;
}

