#pragma once #include #include #include #include "expiring_signature.h" #include "signing_key.h" #include "time_helpers.h" namespace BareMinimumCrypto { using namespace std; struct Sender { static optional create (SigningKey k, ExpiringSignature c); // Signs data and attaches our cert from the CA optional > sign (const vector & data) const; private: SigningKey sender_key; ExpiringSignature cert; vector try_sign (const vector & data, Instant now) const; optional > sign (const vector & data, Instant now) const; }; }