aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/epee/include/gzip_encoding.h227
-rw-r--r--contrib/epee/include/hmac-md5.h93
-rw-r--r--contrib/epee/include/md5_l.h1
-rw-r--r--contrib/epee/include/md5_l.inl208
-rw-r--r--contrib/epee/include/net/http_client.h11
-rw-r--r--contrib/epee/include/storages/portable_storage_base.h2
-rw-r--r--contrib/epee/include/storages/portable_storage_from_bin.h4
-rw-r--r--contrib/epee/include/storages/portable_storage_to_bin.h4
8 files changed, 6 insertions, 544 deletions
diff --git a/contrib/epee/include/gzip_encoding.h b/contrib/epee/include/gzip_encoding.h
deleted file mode 100644
index 2be51e77d..000000000
--- a/contrib/epee/include/gzip_encoding.h
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// * Neither the name of the Andrey N. Sabelnikov nor the
-// names of its contributors may be used to endorse or promote products
-// derived from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-
-
-
-
-#ifndef _GZIP_ENCODING_H_
-#define _GZIP_ENCODING_H_
-#include "net/http_client_base.h"
-#include "zlib/zlib.h"
-//#include "http.h"
-
-
-namespace epee
-{
-namespace net_utils
-{
-
-
-
- class content_encoding_gzip: public i_sub_handler
- {
- public:
- /*! \brief
- * Function content_encoding_gzip : Constructor
- *
- */
- inline
- content_encoding_gzip(i_target_handler* powner_filter, bool is_deflate_mode = false):m_powner_filter(powner_filter),
- m_is_stream_ended(false),
- m_is_deflate_mode(is_deflate_mode),
- m_is_first_update_in(true)
- {
- memset(&m_zstream_in, 0, sizeof(m_zstream_in));
- memset(&m_zstream_out, 0, sizeof(m_zstream_out));
- int ret = 0;
- if(is_deflate_mode)
- {
- ret = inflateInit(&m_zstream_in);
- ret = deflateInit(&m_zstream_out, Z_DEFAULT_COMPRESSION);
- }else
- {
- ret = inflateInit2(&m_zstream_in, 0x1F);
- ret = deflateInit2(&m_zstream_out, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 0x1F, 8, Z_DEFAULT_STRATEGY);
- }
- }
- /*! \brief
- * Function content_encoding_gzip : Destructor
- *
- */
- inline
- ~content_encoding_gzip()
- {
- inflateEnd(& m_zstream_in );
- deflateEnd(& m_zstream_out );
- }
- /*! \brief
- * Function update_in : Entry point for income data
- *
- */
- inline
- virtual bool update_in( std::string& piece_of_transfer)
- {
-
- bool is_first_time_here = m_is_first_update_in;
- m_is_first_update_in = false;
-
- if(m_pre_decode.size())
- m_pre_decode += piece_of_transfer;
- else
- m_pre_decode.swap(piece_of_transfer);
- piece_of_transfer.clear();
-
- std::string decode_summary_buff;
-
- size_t ungzip_size = m_pre_decode.size() * 0x30;
- std::string current_decode_buff(ungzip_size, 'X');
-
- //Here the cycle is introduced where we unpack the buffer, the cycle is required
- //because of the case where if after unpacking the data will exceed the awaited size, we will not halt with error
- bool continue_unpacking = true;
- bool first_step = true;
- while(m_pre_decode.size() && continue_unpacking)
- {
-
- //fill buffers
- m_zstream_in.next_in = (Bytef*)m_pre_decode.data();
- m_zstream_in.avail_in = (uInt)m_pre_decode.size();
- m_zstream_in.next_out = (Bytef*)current_decode_buff.data();
- m_zstream_in.avail_out = (uInt)ungzip_size;
-
- int flag = Z_SYNC_FLUSH;
- int ret = inflate(&m_zstream_in, flag);
- CHECK_AND_ASSERT_MES(ret>=0 || m_zstream_in.avail_out ||m_is_deflate_mode, false, "content_encoding_gzip::update_in() Failed to inflate. err = " << ret);
-
- if(Z_STREAM_END == ret)
- m_is_stream_ended = true;
- else if(Z_DATA_ERROR == ret && is_first_time_here && m_is_deflate_mode&& first_step)
- {
- // some servers (notably Apache with mod_deflate) don't generate zlib headers
- // insert a dummy header and try again
- static char dummy_head[2] =
- {
- 0x8 + 0x7 * 0x10,
- (((0x8 + 0x7 * 0x10) * 0x100 + 30) / 31 * 31) & 0xFF,
- };
- inflateReset(&m_zstream_in);
- m_zstream_in.next_in = (Bytef*) dummy_head;
- m_zstream_in.avail_in = sizeof(dummy_head);
-
- ret = inflate(&m_zstream_in, Z_NO_FLUSH);
- if (ret != Z_OK)
- {
- LOCAL_ASSERT(0);
- m_pre_decode.swap(piece_of_transfer);
- return false;
- }
- m_zstream_in.next_in = (Bytef*)m_pre_decode.data();
- m_zstream_in.avail_in = (uInt)m_pre_decode.size();
-
- ret = inflate(&m_zstream_in, Z_NO_FLUSH);
- if (ret != Z_OK)
- {
- LOCAL_ASSERT(0);
- m_pre_decode.swap(piece_of_transfer);
- return false;
- }
- }
-
-
- //leave only unpacked part in the output buffer to start with it the next time
- m_pre_decode.erase(0, m_pre_decode.size()-m_zstream_in.avail_in);
- //if decoder gave nothing to return, then everything is ahead, now simply break
- if(ungzip_size == m_zstream_in.avail_out)
- break;
-
- //decode_buff currently stores data parts that were unpacked, fix this size
- current_decode_buff.resize(ungzip_size - m_zstream_in.avail_out);
- if(decode_summary_buff.size())
- decode_summary_buff += current_decode_buff;
- else
- current_decode_buff.swap(decode_summary_buff);
-
- current_decode_buff.resize(ungzip_size);
- first_step = false;
- }
-
- //Process these data if required
- bool res = true;
-
- res = m_powner_filter->handle_target_data(decode_summary_buff);
-
- return true;
-
- }
- /*! \brief
- * Function stop : Entry point for stop signal and flushing cached data buffer.
- *
- */
- inline
- virtual void stop(std::string& OUT collect_remains)
- {
- }
- protected:
- private:
- /*! \brief
- * Pointer to parent HTTP-parser
- */
- i_target_handler* m_powner_filter;
- /*! \brief
- * ZLIB object for income stream
- */
- z_stream m_zstream_in;
- /*! \brief
- * ZLIB object for outcome stream
- */
- z_stream m_zstream_out;
- /*! \brief
- * Data that could not be unpacked immediately, left to wait for the next packet of data
- */
- std::string m_pre_decode;
- /*! \brief
- * The data are accumulated for a package in the buffer to send the web client
- */
- std::string m_pre_encode;
- /*! \brief
- * Signals that stream looks like ended
- */
- bool m_is_stream_ended;
- /*! \brief
- * If this flag is set, income data is in HTTP-deflate mode
- */
- bool m_is_deflate_mode;
- /*! \brief
- * Marks that it is a first data packet
- */
- bool m_is_first_update_in;
- };
-}
-}
-
-
-
-#endif //_GZIP_ENCODING_H_
diff --git a/contrib/epee/include/hmac-md5.h b/contrib/epee/include/hmac-md5.h
deleted file mode 100644
index 2a4e0d401..000000000
--- a/contrib/epee/include/hmac-md5.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * libEtPan! -- a mail stuff library
- *
- * Copyright (C) 2001, 2005 - DINH Viet Hoa
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the libEtPan! project nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/* hmac-md5.h -- HMAC_MD5 functions
- */
-
-/*
- * $Id: hmac-md5.h,v 1.1.1.1 2005/03/18 20:17:28 zautrix Exp $
- */
-
-#ifndef HMAC_MD5_H
-#define HMAC_MD5_H 1
-
-namespace md5
-{
-
-
-
-#define HMAC_MD5_SIZE 16
-
- /* intermediate MD5 context */
- typedef struct HMAC_MD5_CTX_s {
- MD5_CTX ictx, octx;
- } HMAC_MD5_CTX;
-
- /* intermediate HMAC state
- * values stored in network byte order (Big Endian)
- */
- typedef struct HMAC_MD5_STATE_s {
- UINT4 istate[4];
- UINT4 ostate[4];
- } HMAC_MD5_STATE;
-
- /* One step hmac computation
- *
- * digest may be same as text or key
- */
- void hmac_md5(const unsigned char *text, int text_len,
- const unsigned char *key, int key_len,
- unsigned char digest[HMAC_MD5_SIZE]);
-
- /* create context from key
- */
- void hmac_md5_init(HMAC_MD5_CTX *hmac,
- const unsigned char *key, int key_len);
-
- /* precalculate intermediate state from key
- */
- void hmac_md5_precalc(HMAC_MD5_STATE *hmac,
- const unsigned char *key, int key_len);
-
- /* initialize context from intermediate state
- */
- void hmac_md5_import(HMAC_MD5_CTX *hmac, HMAC_MD5_STATE *state);
-
-#define hmac_md5_update(hmac, text, text_len) MD5Update(&(hmac)->ictx, (text), (text_len))
-
- /* finish hmac from intermediate result. Intermediate result is zeroed.
- */
- void hmac_md5_final(unsigned char digest[HMAC_MD5_SIZE],
- HMAC_MD5_CTX *hmac);
-
-}
-
-#endif /* HMAC_MD5_H */
diff --git a/contrib/epee/include/md5_l.h b/contrib/epee/include/md5_l.h
index bc7122650..ffb8c5944 100644
--- a/contrib/epee/include/md5_l.h
+++ b/contrib/epee/include/md5_l.h
@@ -74,7 +74,6 @@ namespace md5
static void MD5Init(MD5_CTX * context);
static void MD5Update( MD5_CTX *context, const unsigned char *input, unsigned int inputLen );
static void MD5Final ( unsigned char digest[16], MD5_CTX *context );
- static inline void hmac_md5(const unsigned char* text, int text_len, const unsigned char* key, int key_len, unsigned char *digest);
inline bool md5( unsigned char *input, int ilen, unsigned char output[16] )
diff --git a/contrib/epee/include/md5_l.inl b/contrib/epee/include/md5_l.inl
index cb2bd54f9..28d52c23c 100644
--- a/contrib/epee/include/md5_l.inl
+++ b/contrib/epee/include/md5_l.inl
@@ -65,7 +65,6 @@ documentation and/or software.
#endif
#include "md5global.h"
#include "md5_l.h"
-#include "hmac-md5.h"
namespace md5
{
@@ -89,16 +88,6 @@ namespace md5
#define S43 15
#define S44 21
- /*
- static void MD5Transform PROTO_LIST ((UINT4 [4], unsigned char [64]));
- static void Encode PROTO_LIST
- ((unsigned char *, UINT4 *, unsigned int));
- static void Decode PROTO_LIST
- ((UINT4 *, unsigned char *, unsigned int));
- static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
- static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int));
- */
-
static void MD5_memcpy (POINTER output, POINTER input, unsigned int len)
{
unsigned int i;
@@ -107,17 +96,6 @@ namespace md5
output[i] = input[i];
}
- /* Note: Replace "for loop" with standard memset if possible.
- */
-
- static void MD5_memset (POINTER output, int value, unsigned int len)
- {
- unsigned int i;
-
- for (i = 0; i < len; i++)
- ((char *)output)[i] = (char)value;
- }
-
static void MD5Transform (UINT4 state[4], unsigned char block[64]);
static unsigned char* PADDING()
@@ -371,190 +349,4 @@ namespace md5
*/
memwipe ((POINTER)x, sizeof (x));
}
-
- /* Note: Replace "for loop" with standard memcpy if possible.
-
- */
- inline
- void hmac_md5_init(HMAC_MD5_CTX *hmac,
- const unsigned char *key,
- int key_len)
- {
- unsigned char k_ipad[65]; /* inner padding -
- * key XORd with ipad
- */
- unsigned char k_opad[65]; /* outer padding -
- * key XORd with opad
- */
- unsigned char tk[16];
- int i;
- /* if key is longer than 64 bytes reset it to key=MD5(key) */
- if (key_len > 64) {
-
- MD5_CTX tctx;
-
- MD5Init(&tctx);
- MD5Update(&tctx, key, key_len);
- MD5Final(tk, &tctx);
-
- key = tk;
- key_len = 16;
- }
-
- /*
- * the HMAC_MD5 transform looks like:
- *
- * MD5(K XOR opad, MD5(K XOR ipad, text))
- *
- * where K is an n byte key
- * ipad is the byte 0x36 repeated 64 times
- * opad is the byte 0x5c repeated 64 times
- * and text is the data being protected
- */
-
- /* start out by storing key in pads */
- MD5_memset(k_ipad, '\0', sizeof k_ipad);
- MD5_memset(k_opad, '\0', sizeof k_opad);
- MD5_memcpy( k_ipad, (POINTER)key, key_len);
- MD5_memcpy( k_opad, (POINTER)key, key_len);
-
- /* XOR key with ipad and opad values */
- for (i=0; i<64; i++) {
- k_ipad[i] ^= 0x36;
- k_opad[i] ^= 0x5c;
- }
-
- MD5Init(&hmac->ictx); /* init inner context */
- MD5Update(&hmac->ictx, k_ipad, 64); /* apply inner pad */
-
- MD5Init(&hmac->octx); /* init outer context */
- MD5Update(&hmac->octx, k_opad, 64); /* apply outer pad */
-
- /* scrub the pads and key context (if used) */
- memwipe( (POINTER)&k_ipad, sizeof(k_ipad));
- memwipe( (POINTER)&k_opad, sizeof(k_opad));
- memwipe( (POINTER)&tk, sizeof(tk));
-
- /* and we're done. */
- }
-
- /* The precalc and import routines here rely on the fact that we pad
- * the key out to 64 bytes and use that to initialize the md5
- * contexts, and that updating an md5 context with 64 bytes of data
- * leaves nothing left over; all of the interesting state is contained
- * in the state field, and none of it is left over in the count and
- * buffer fields. So all we have to do is save the state field; we
- * can zero the others when we reload it. Which is why the decision
- * was made to pad the key out to 64 bytes in the first place. */
- inline
- void hmac_md5_precalc(HMAC_MD5_STATE *state,
- const unsigned char *key,
- int key_len)
- {
- HMAC_MD5_CTX hmac;
- unsigned lupe;
-
- hmac_md5_init(&hmac, key, key_len);
- for (lupe = 0; lupe < 4; lupe++) {
- state->istate[lupe] = htonl(hmac.ictx.state[lupe]);
- state->ostate[lupe] = htonl(hmac.octx.state[lupe]);
- }
- memwipe( (POINTER)&hmac, sizeof(hmac));
- }
-
-
- inline
- void hmac_md5_import(HMAC_MD5_CTX *hmac,
- HMAC_MD5_STATE *state)
- {
- unsigned lupe;
- MD5_memset( (POINTER)hmac, 0, sizeof(HMAC_MD5_CTX));
- for (lupe = 0; lupe < 4; lupe++) {
- hmac->ictx.state[lupe] = ntohl(state->istate[lupe]);
- hmac->octx.state[lupe] = ntohl(state->ostate[lupe]);
- }
- /* Init the counts to account for our having applied
- * 64 bytes of key; this works out to 0x200 (64 << 3; see
- * MD5Update above...) */
- hmac->ictx.count[0] = hmac->octx.count[0] = 0x200;
- }
-
- inline
- void hmac_md5_final(unsigned char digest[HMAC_MD5_SIZE],
- HMAC_MD5_CTX *hmac)
- {
- MD5Final(digest, &hmac->ictx); /* Finalize inner md5 */
- MD5Update(&hmac->octx, digest, 16); /* Update outer ctx */
- MD5Final(digest, &hmac->octx); /* Finalize outer md5 */
- }
-
-
- void hmac_md5(const unsigned char* text, int text_len, const unsigned char* key, int key_len, unsigned char *digest)
- {
- MD5_CTX context;
-
- unsigned char k_ipad[65]; /* inner padding -
- * key XORd with ipad
- */
- unsigned char k_opad[65]; /* outer padding -
- * key XORd with opad
- */
- unsigned char tk[16];
- int i;
- /* if key is longer than 64 bytes reset it to key=MD5(key) */
- if (key_len > 64) {
-
- MD5_CTX tctx;
-
- MD5Init(&tctx);
- MD5Update(&tctx, key, key_len);
- MD5Final(tk, &tctx);
-
- key = tk;
- key_len = 16;
- }
-
- /*
- * the HMAC_MD5 transform looks like:
- *
- * MD5(K XOR opad, MD5(K XOR ipad, text))
- *
- * where K is an n byte key
- * ipad is the byte 0x36 repeated 64 times
- * opad is the byte 0x5c repeated 64 times
- * and text is the data being protected
- */
-
- /* start out by storing key in pads */
- MD5_memset(k_ipad, '\0', sizeof k_ipad);
- MD5_memset(k_opad, '\0', sizeof k_opad);
- MD5_memcpy( k_ipad, (POINTER)key, key_len);
- MD5_memcpy( k_opad, (POINTER)key, key_len);
-
- /* XOR key with ipad and opad values */
- for (i=0; i<64; i++) {
- k_ipad[i] ^= 0x36;
- k_opad[i] ^= 0x5c;
- }
- /*
- * perform inner MD5
- */
-
- MD5Init(&context); /* init context for 1st
- * pass */
- MD5Update(&context, k_ipad, 64); /* start with inner pad */
- MD5Update(&context, text, text_len); /* then text of datagram */
- MD5Final(digest, &context); /* finish up 1st pass */
-
- /*
- * perform outer MD5
- */
- MD5Init(&context); /* init context for 2nd
- * pass */
- MD5Update(&context, k_opad, 64); /* start with outer pad */
- MD5Update(&context, digest, 16); /* then results of 1st
- * hash */
- MD5Final(digest, &context); /* finish up 2nd pass */
-
- }
}
diff --git a/contrib/epee/include/net/http_client.h b/contrib/epee/include/net/http_client.h
index 056b50fe6..9ce30b620 100644
--- a/contrib/epee/include/net/http_client.h
+++ b/contrib/epee/include/net/http_client.h
@@ -39,11 +39,6 @@
#include "net_helper.h"
#include "http_client_base.h"
-
-#ifdef HTTP_ENABLE_GZIP
-#include "gzip_encoding.h"
-#endif
-
#include "string_tools.h"
#include "string_tools_lexical.h"
#include "reg_exp_definer.h"
@@ -757,13 +752,9 @@ namespace net_utils
boost::smatch result; // 12 3
if(boost::regex_search( m_response_info.m_header_info.m_content_encoding, result, rexp_match_gzip, boost::match_default) && result[0].matched)
{
-#ifdef HTTP_ENABLE_GZIP
- m_pcontent_encoding_handler.reset(new content_encoding_gzip(this, result[3].matched));
-#else
m_pcontent_encoding_handler.reset(new do_nothing_sub_handler(this));
- LOG_ERROR("GZIP encoding not supported in this build, please add zlib to your project and define HTTP_ENABLE_GZIP");
+ LOG_ERROR("GZIP encoding not supported");
return false;
-#endif
}
else
{
diff --git a/contrib/epee/include/storages/portable_storage_base.h b/contrib/epee/include/storages/portable_storage_base.h
index ae0be6a34..c15c9b826 100644
--- a/contrib/epee/include/storages/portable_storage_base.h
+++ b/contrib/epee/include/storages/portable_storage_base.h
@@ -57,7 +57,7 @@
#define SERIALIZE_TYPE_UINT32 6
#define SERIALIZE_TYPE_UINT16 7
#define SERIALIZE_TYPE_UINT8 8
-#define SERIALIZE_TYPE_DUOBLE 9
+#define SERIALIZE_TYPE_DOUBLE 9
#define SERIALIZE_TYPE_STRING 10
#define SERIALIZE_TYPE_BOOL 11
#define SERIALIZE_TYPE_OBJECT 12
diff --git a/contrib/epee/include/storages/portable_storage_from_bin.h b/contrib/epee/include/storages/portable_storage_from_bin.h
index 6f081dbc7..d8a8a4a49 100644
--- a/contrib/epee/include/storages/portable_storage_from_bin.h
+++ b/contrib/epee/include/storages/portable_storage_from_bin.h
@@ -220,7 +220,7 @@ namespace epee
case SERIALIZE_TYPE_UINT32: return read_ae<uint32_t>();
case SERIALIZE_TYPE_UINT16: return read_ae<uint16_t>();
case SERIALIZE_TYPE_UINT8: return read_ae<uint8_t>();
- case SERIALIZE_TYPE_DUOBLE: return read_ae<double>();
+ case SERIALIZE_TYPE_DOUBLE: return read_ae<double>();
case SERIALIZE_TYPE_BOOL: return read_ae<bool>();
case SERIALIZE_TYPE_STRING: return read_ae<std::string>();
case SERIALIZE_TYPE_OBJECT: return read_ae<section>();
@@ -311,7 +311,7 @@ namespace epee
case SERIALIZE_TYPE_UINT32: return read_se<uint32_t>();
case SERIALIZE_TYPE_UINT16: return read_se<uint16_t>();
case SERIALIZE_TYPE_UINT8: return read_se<uint8_t>();
- case SERIALIZE_TYPE_DUOBLE: return read_se<double>();
+ case SERIALIZE_TYPE_DOUBLE: return read_se<double>();
case SERIALIZE_TYPE_BOOL: return read_se<bool>();
case SERIALIZE_TYPE_STRING: return read_se<std::string>();
case SERIALIZE_TYPE_OBJECT: return read_se<section>();
diff --git a/contrib/epee/include/storages/portable_storage_to_bin.h b/contrib/epee/include/storages/portable_storage_to_bin.h
index be4033dd8..70757607e 100644
--- a/contrib/epee/include/storages/portable_storage_to_bin.h
+++ b/contrib/epee/include/storages/portable_storage_to_bin.h
@@ -107,7 +107,7 @@ namespace epee
bool operator()(const array_entry_t<int32_t>& v) { return pack_pod_array_type(SERIALIZE_TYPE_INT32, v);}
bool operator()(const array_entry_t<int16_t>& v) { return pack_pod_array_type(SERIALIZE_TYPE_INT16, v);}
bool operator()(const array_entry_t<int8_t>& v) { return pack_pod_array_type(SERIALIZE_TYPE_INT8, v);}
- bool operator()(const array_entry_t<double>& v) { return pack_pod_array_type(SERIALIZE_TYPE_DUOBLE, v);}
+ bool operator()(const array_entry_t<double>& v) { return pack_pod_array_type(SERIALIZE_TYPE_DOUBLE, v);}
bool operator()(const array_entry_t<bool>& v) { return pack_pod_array_type(SERIALIZE_TYPE_BOOL, v);}
bool operator()(const array_entry_t<std::string>& arr_str)
{
@@ -160,7 +160,7 @@ namespace epee
bool operator()(const int32_t& v) { return pack_pod_type(SERIALIZE_TYPE_INT32, v);}
bool operator()(const int16_t& v) { return pack_pod_type(SERIALIZE_TYPE_INT16, v);}
bool operator()(const int8_t& v) { return pack_pod_type(SERIALIZE_TYPE_INT8, v);}
- bool operator()(const double& v) { return pack_pod_type(SERIALIZE_TYPE_DUOBLE, v);}
+ bool operator()(const double& v) { return pack_pod_type(SERIALIZE_TYPE_DOUBLE, v);}
bool operator()(const bool& v) { return pack_pod_type(SERIALIZE_TYPE_BOOL, v);}
bool operator()(const std::string& v)
{