Electroneum
Loading...
Searching...
No Matches
crypto.h
Go to the documentation of this file.
1
// Copyrights(c) 2017-2021, The Electroneum Project
2
// Copyrights(c) 2014-2019, The Monero Project
3
//
4
// All rights reserved.
5
//
6
// Redistribution and use in source and binary forms, with or without modification, are
7
// permitted provided that the following conditions are met:
8
//
9
// 1. Redistributions of source code must retain the above copyright notice, this list of
10
// conditions and the following disclaimer.
11
//
12
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
13
// of conditions and the following disclaimer in the documentation and/or other
14
// materials provided with the distribution.
15
//
16
// 3. Neither the name of the copyright holder nor the names of its contributors may be
17
// used to endorse or promote products derived from this software without specific
18
// prior written permission.
19
//
20
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
21
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
23
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
28
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
//
30
// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
31
32
#pragma once
33
34
#include <vector>
35
36
#include "
serialization.h
"
37
#include "
debug_archive.h
"
38
#include "
crypto/chacha.h
"
39
#include "
crypto/crypto.h
"
40
#include "
crypto/hash.h
"
41
42
// read
43
template
<
template
<
bool
>
class
Archive>
44
bool
do_serialize
(Archive<false> &ar, std::vector<crypto::signature> &v)
45
{
46
size_t
cnt = v.size();
47
v.clear();
48
49
// very basic sanity check
50
if
(ar.remaining_bytes() < cnt*
sizeof
(
crypto::signature
)) {
51
ar.stream().setstate(std::ios::failbit);
52
return
false
;
53
}
54
55
v.reserve(cnt);
56
for
(
size_t
i = 0; i < cnt; i++) {
57
v.resize(i+1);
58
ar.serialize_blob(&(v[i]),
sizeof
(
crypto::signature
),
""
);
59
if
(!ar.stream().good())
60
return
false
;
61
}
62
return
true
;
63
}
64
65
// write
66
template
<
template
<
bool
>
class
Archive>
67
bool
do_serialize
(Archive<true> &ar, std::vector<crypto::signature> &v)
68
{
69
if
(0 == v.size())
return
true
;
70
ar.begin_string();
71
size_t
cnt = v.size();
72
for
(
size_t
i = 0; i < cnt; i++) {
73
ar.serialize_blob(&(v[i]),
sizeof
(
crypto::signature
),
""
);
74
if
(!ar.stream().good())
75
return
false
;
76
}
77
ar.end_string();
78
return
true
;
79
}
80
81
BLOB_SERIALIZER
(crypto::chacha_iv);
82
BLOB_SERIALIZER
(
crypto::hash
);
83
BLOB_SERIALIZER
(
crypto::hash8
);
84
BLOB_SERIALIZER
(
crypto::public_key
);
85
BLOB_SERIALIZER
(
crypto::secret_key
);
86
BLOB_SERIALIZER
(
crypto::key_derivation
);
87
BLOB_SERIALIZER
(
crypto::key_image
);
88
BLOB_SERIALIZER
(
crypto::signature
);
89
VARIANT_TAG
(
debug_archive
,
crypto::hash
,
"hash"
);
90
VARIANT_TAG
(
debug_archive
,
crypto::hash8
,
"hash8"
);
91
VARIANT_TAG
(
debug_archive
,
crypto::public_key
,
"public_key"
);
92
VARIANT_TAG
(
debug_archive
,
crypto::secret_key
,
"secret_key"
);
93
VARIANT_TAG
(
debug_archive
,
crypto::key_derivation
,
"key_derivation"
);
94
VARIANT_TAG
(
debug_archive
,
crypto::key_image
,
"key_image"
);
95
VARIANT_TAG
(
debug_archive
,
crypto::signature
,
"signature"
);
96
chacha.h
crypto.h
debug_archive.h
crypto::signature
POD_CLASS signature
Definition
crypto.h:108
crypto::secret_key
epee::mlocked< tools::scrubbed< ec_scalar > > secret_key
Definition
crypto.h:82
crypto::hash8
POD_CLASS hash8
Definition
hash.h:53
crypto::key_derivation
POD_CLASS key_derivation
Definition
crypto.h:101
crypto::public_key
POD_CLASS public_key
Definition
crypto.h:79
crypto::key_image
POD_CLASS key_image
Definition
crypto.h:105
crypto::hash
POD_CLASS hash
Definition
hash.h:50
do_serialize
bool do_serialize(Archive< false > &ar, std::vector< crypto::signature > &v)
Definition
crypto.h:44
serialization.h
Simple DSL AAPI based on.
hash.h
BLOB_SERIALIZER
#define BLOB_SERIALIZER(T)
VARIANT_TAG
#define VARIANT_TAG(Archive, Type, Tag)
debug_archive
Definition
debug_archive.h:38
src
serialization
crypto.h
Generated on
for Electroneum by
1.16.1