DiceKeys Seeded Cryptography Library
signing-key.hpp
1 #pragma once
2 
3 #include "sodium-buffer.hpp"
4 #include "signature-verification-key.hpp"
5 
21 class SigningKey {
22 public:
30  const std::string recipe;
31 
35  SigningKey(
36  const SigningKey& other
37  );
38 
46  SigningKey(
48  const std::string& recipe
49  );
50 
60  SigningKey(
61  const std::string& seedString,
62  const std::string& recipe
63  );
64 
75  const std::string& seedString,
76  const std::string& recipe
77  );
78 
89  static SigningKey fromJson(
90  const std::string& signingKeyAsJson
91  );
92 
98  const SodiumBuffer getSeedBytes() const;
99 
105  const std::vector<unsigned char> getSignatureVerificationKeyBytes() const;
106 
112 
124  const std::vector<unsigned char> generateSignature(
125  const unsigned char* message,
126  const size_t messageLength
127  ) const;
128 
139  const std::vector<unsigned char> generateSignature(
140  const std::vector<unsigned char> &message
141  ) const;
142 
159  const std::string toJson(
160  int indent = -1,
161  const char indent_char = ' '
162  ) const;
163 
177  const SodiumBuffer toSerializedBinaryForm() const;
178 
186  static SigningKey fromSerializedBinaryForm(const SodiumBuffer &serializedBinaryForm);
187 
191  const std::string SigningKey::toOpenSshPemPrivateKey(const std::string &comment) const;
192 
196  const std::string toOpenSshPublicKey() const;
197 
209  const std::string SigningKey::toOpenPgpPemFormatSecretKey(
210  const std::string& UserIdPacketContent,
211  uint32_t timestamp
212  ) const;
213 };
SigningKey::fromSerializedBinaryForm
static SigningKey fromSerializedBinaryForm(const SodiumBuffer &serializedBinaryForm)
Deserialize from a byte array stored as a list of: (keyBytes, signatureVerificationKeyBytes,...
Definition: signing-key.cpp:136
SigningKey::recipe
const std::string recipe
A JSON Format for Recipes string used to specify how this key is derived.
Definition: signing-key.hpp:30
SodiumBuffer
A byte array containing a length and a pointer to memory (the data field), which ensures data is eras...
Definition: sodium-buffer.hpp:27
SigningKey::getSignatureVerificationKey
const SignatureVerificationKey getSignatureVerificationKey() const
Get a SignatureVerificationKey which is used to verify signatures generated with this SigningKey.
Definition: signing-key.cpp:91
SigningKey::SigningKey
SigningKey(const SigningKey &other)
Construct a copy of another SigningKey.
Definition: signing-key.cpp:32
SigningKey::toOpenSshPemPrivateKey
const std::string toOpenSshPemPrivateKey(const std::string &comment) const
Convert to an OpenSSH-format private key binary writiable to a key file.
Definition: signing-key.cpp:145
SigningKey::signingKeyBytes
const SodiumBuffer signingKeyBytes
The raw binary representation of the cryptographic signing key.
Definition: signing-key.hpp:26
SigningKey
SigningKeys generate signatures of messages which can then be used by the corresponding SignatureVeri...
Definition: signing-key.hpp:21
SigningKey::getSeedBytes
const SodiumBuffer getSeedBytes() const
Extract the 32-byte private seed (the compact representation of the private key) from the 64-byte sod...
Definition: signing-key.cpp:95
SigningKey::toSerializedBinaryForm
const SodiumBuffer toSerializedBinaryForm() const
Serialize to byte array as a list of: (keyBytes, signatureVerificationKeyBytes, recipe)
Definition: signing-key.cpp:128
SigningKey::toOpenPgpPemFormatSecretKey
const std::string toOpenPgpPemFormatSecretKey(const std::string &UserIdPacketContent, uint32_t timestamp) const
Convert to an OpenPGP PEM formatted (string) private key.
Definition: signing-key.cpp:153
SigningKey::toJson
const std::string toJson(int indent=-1, const char indent_char=' ') const
Serialize this object to a JSON-formatted string.
Definition: signing-key.cpp:118
SigningKey::toOpenSshPublicKey
const std::string toOpenSshPublicKey() const
Convert the signature-verification key to an OpenSSH public key string.
Definition: signing-key.cpp:149
SignatureVerificationKey
A SignatureVerificationKey is used to verify that messages were signed by its corresponding SigningKe...
Definition: signature-verification-key.hpp:25
SigningKey::fromJson
static SigningKey fromJson(const std::string &signingKeyAsJson)
Construct (reconsitute) the SigningKey from JSON format. The JSON object may or may not contain the s...
Definition: signing-key.cpp:44
SigningKey::getSignatureVerificationKeyBytes
const std::vector< unsigned char > getSignatureVerificationKeyBytes() const
Get the raw binary representation of the signature-verification key, re-deriving them from the signin...
Definition: signing-key.cpp:85
SigningKey::deriveFromSeed
static SigningKey deriveFromSeed(const std::string &seedString, const std::string &recipe)
Construct a new SigningKey by deriving a signing key pair from a seed string and a set of recipe in J...
Definition: signing-key.cpp:65
SigningKey::generateSignature
const std::vector< unsigned char > generateSignature(const unsigned char *message, const size_t messageLength) const
Generate a signature for a message which can be used by the corresponding public SignatureVerificatio...
Definition: signing-key.cpp:102