libfilezilla
Toggle main menu visibility
Loading...
Searching...
No Matches
lib
libfilezilla
signature.hpp
Go to the documentation of this file.
1
#ifndef LIBFILEZILLA_SIGNATURE_HEADER
2
#define LIBFILEZILLA_SIGNATURE_HEADER
3
9
10
#include "
libfilezilla.hpp
"
11
12
#include <vector>
13
#include <string>
14
15
namespace
fz
{
16
21
class
FZ_PUBLIC_SYMBOL
public_verification_key
22
{
23
public
:
24
enum
{
25
key_size = 32
26
};
27
28
explicit
operator
bool()
const
{
29
return
key_.size() == key_size;
30
}
31
32
bool
operator==(
public_verification_key
const
& rhs)
const
{
33
return
key_ == rhs.key_;
34
}
35
36
bool
operator!=(
public_verification_key
const
& rhs)
const
{
37
return
!(*
this
== rhs);
38
}
39
40
bool
operator<(
public_verification_key
const
& rhs)
const
{
41
return
key_ < rhs.key_;
42
}
43
44
std::string to_base64()
const
;
45
static
public_verification_key
from_base64(std::string_view
const
& base64);
46
47
std::vector<uint8_t> key_;
48
};
49
54
class
FZ_PUBLIC_SYMBOL
private_signing_key
55
{
56
public
:
57
enum
{
58
key_size = 32
59
};
60
62
static
private_signing_key
generate
();
63
64
explicit
operator
bool()
const
{
65
return
key_.size() == key_size;
66
}
67
69
public_verification_key
pubkey
()
const
;
70
71
std::vector<uint8_t>
const
& data()
const
{
72
return
key_;
73
}
74
75
std::string to_base64()
const
;
// Keep secret!
76
static
private_signing_key
from_base64(std::string_view
const
& base64);
77
78
private
:
79
std::vector<uint8_t> key_;
80
};
81
82
enum
{
83
signature_size = 64
84
};
85
87
std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sign
(std::vector<uint8_t>
const
& message,
private_signing_key
const
& priv,
bool
include_message =
true
);
88
std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sign
(std::string_view
const
& message,
private_signing_key
const
& priv,
bool
include_message =
true
);
89
std::vector<uint8_t> FZ_PUBLIC_SYMBOL
sign
(uint8_t
const
* message,
size_t
const
size,
private_signing_key
const
& priv,
bool
include_message =
true
);
90
92
bool
FZ_PUBLIC_SYMBOL
verify
(std::vector<uint8_t>
const
& message,
public_verification_key
const
& pub);
93
bool
FZ_PUBLIC_SYMBOL
verify
(std::string_view
const
& message,
public_verification_key
const
& pub);
94
bool
FZ_PUBLIC_SYMBOL
verify
(uint8_t
const
* message,
size_t
const
size,
public_verification_key
const
& pub);
95
97
bool
FZ_PUBLIC_SYMBOL
verify
(std::vector<uint8_t>
const
& message, std::vector<uint8_t>
const
& signature,
public_verification_key
const
& pub);
98
bool
FZ_PUBLIC_SYMBOL
verify
(std::string_view
const
& message, std::string_view
const
& signature,
public_verification_key
const
& pub);
99
bool
FZ_PUBLIC_SYMBOL
verify
(uint8_t
const
* message,
size_t
const
message_size, uint8_t
const
* signature,
size_t
const
sig_size,
public_verification_key
const
& pub);
100
101
}
102
103
#endif
fz::private_signing_key
Represents a private key to sign message with using Ed25519.
Definition
signature.hpp:55
fz::private_signing_key::generate
static private_signing_key generate()
Generates a random private key.
fz::private_signing_key::pubkey
public_verification_key pubkey() const
Gets the public key corresponding to the private key.
fz::public_verification_key
Represents a public key to verify messages signed using Ed25519.
Definition
signature.hpp:22
libfilezilla.hpp
Sets some global macros and further includes string.hpp.
fz
The namespace used by libfilezilla.
Definition
apply.hpp:17
fz::verify
bool verify(std::vector< uint8_t > const &message, public_verification_key const &pub)
Verify a message with attached signature. Returns true iff it has been signed by the private key corr...
fz::sign
std::vector< uint8_t > sign(std::vector< uint8_t > const &message, private_signing_key const &priv, bool include_message=true)
Returns the message with the signature appended, created using the passed private key.
Generated by
1.17.0