#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 Bytes & data) const; private: SigningKey sender_key; ExpiringSignature cert; Bytes try_sign (const Bytes & data, Instant now) const; optional sign (const Bytes & data, Instant now) const; }; }