diff options
author | Antonio Juarez <antonio.maria.juarez@live.com> | 2014-03-03 22:07:58 +0000 |
---|---|---|
committer | Antonio Juarez <antonio.maria.juarez@live.com> | 2014-03-03 22:07:58 +0000 |
commit | 296ae46ed8f8f6e5f986f978febad302e3df231a (patch) | |
tree | 1629164454a239308f33c9e12afb22e7f3cd8eeb /src/serialization/crypto.h | |
parent | changed name (diff) | |
download | monero-296ae46ed8f8f6e5f986f978febad302e3df231a.tar.xz |
moved all stuff to github
Diffstat (limited to 'src/serialization/crypto.h')
-rw-r--r-- | src/serialization/crypto.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/serialization/crypto.h b/src/serialization/crypto.h new file mode 100644 index 000000000..89d3c9885 --- /dev/null +++ b/src/serialization/crypto.h @@ -0,0 +1,62 @@ +// Copyright (c) 2012-2013 The Cryptonote developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include "serialization.h" +#include "debug_archive.h" +#include "crypto/chacha8.h" +#include "crypto/crypto.h" +#include "crypto/hash.h" + +// read +template <template <bool> class Archive> +bool do_serialize(Archive<false> &ar, std::vector<crypto::signature> &v) +{ + size_t cnt = v.size(); + v.clear(); + + // very basic sanity check + if (ar.remaining_bytes() < cnt*sizeof(crypto::signature)) { + ar.stream().setstate(std::ios::failbit); + return false; + } + + v.reserve(cnt); + for (size_t i = 0; i < cnt; i++) { + v.resize(i+1); + ar.serialize_blob(&(v[i]), sizeof(crypto::signature), ""); + if (!ar.stream().good()) + return false; + } + return true; +} + +// write +template <template <bool> class Archive> +bool do_serialize(Archive<true> &ar, std::vector<crypto::signature> &v) +{ + if (0 == v.size()) return true; + ar.begin_string(); + size_t cnt = v.size(); + for (size_t i = 0; i < cnt; i++) { + ar.serialize_blob(&(v[i]), sizeof(crypto::signature), ""); + if (!ar.stream().good()) + return false; + } + ar.end_string(); + return true; +} + +BLOB_SERIALIZER(crypto::chacha8_iv); +BLOB_SERIALIZER(crypto::hash); +BLOB_SERIALIZER(crypto::public_key); +BLOB_SERIALIZER(crypto::secret_key); +BLOB_SERIALIZER(crypto::key_derivation); +BLOB_SERIALIZER(crypto::key_image); +BLOB_SERIALIZER(crypto::signature); +VARIANT_TAG(debug_archive, crypto::hash, "hash"); +VARIANT_TAG(debug_archive, crypto::public_key, "public_key"); +VARIANT_TAG(debug_archive, crypto::secret_key, "secret_key"); +VARIANT_TAG(debug_archive, crypto::key_derivation, "key_derivation"); +VARIANT_TAG(debug_archive, crypto::key_image, "key_image"); +VARIANT_TAG(debug_archive, crypto::signature, "signature"); |