ooxml_crypt 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ooxml_crypt/version.rb +1 -1
- data/vendor/cybozulib/common.mk +3 -3
- data/vendor/cybozulib/common.props +1 -1
- data/vendor/cybozulib/debug.props +1 -1
- data/vendor/cybozulib/include/cybozu/atomic.hpp +15 -5
- data/vendor/cybozulib/include/cybozu/bfd.hpp +1 -1
- data/vendor/cybozulib/include/cybozu/bit_operation.hpp +8 -10
- data/vendor/cybozulib/include/cybozu/crypto.hpp +59 -5
- data/vendor/cybozulib/include/cybozu/endian.hpp +0 -2
- data/vendor/cybozulib/include/cybozu/inttype.hpp +17 -3
- data/vendor/cybozulib/include/cybozu/link_libeay32.hpp +1 -1
- data/vendor/cybozulib/include/cybozu/link_mpir.hpp +1 -1
- data/vendor/cybozulib/include/cybozu/link_ssleay32.hpp +1 -1
- data/vendor/cybozulib/include/cybozu/random_generator.hpp +1 -0
- data/vendor/cybozulib/include/cybozu/sha2.hpp +102 -0
- data/vendor/cybozulib/sample/proj/ssl_smpl/ssl_smpl.vcxproj +1 -1
- data/vendor/cybozulib/sample/proj/stacktrace_smpl/stacktrace_smpl.vcxproj +1 -1
- data/vendor/cybozulib/test/Makefile +3 -3
- data/vendor/cybozulib/test/base/proj/array_test/array_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/atoi_test/atoi_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/atomic_test/atomic_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/base64_test/base64_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/condition_variable_cs_test/condition_variable_cs_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/condition_variable_test/condition_variable_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/config_test/config_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/csv_test/csv_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/endian_test/endian_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/env_test/env_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/event_test/event_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/file_test/file_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/itoa_test/itoa_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/mecab_test/mecab_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/minixml_test/minixml_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/mmap_test/mmap_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/serializer_test/serializer_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/sha1_test/sha1_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/stream_test/stream_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/string_operation_test/string_operation_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/string_test/string_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/thread_test/thread_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/time_test/time_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/tls_test/tls_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/proj/zlib_test/zlib_test.vcxproj +1 -1
- data/vendor/cybozulib/test/base/sha2_test.cpp +1 -1
- data/vendor/cybozulib/test/base/zlib_test.cpp +2 -0
- data/vendor/msoffice/Makefile +2 -2
- data/vendor/msoffice/bin/msoffice-crypt.exe +0 -0
- data/vendor/msoffice/common.mk +11 -6
- data/vendor/msoffice/common.props +25 -25
- data/vendor/msoffice/debug.props +13 -13
- data/vendor/msoffice/include/crypto_util.hpp +454 -450
- data/vendor/msoffice/readme.md +2 -0
- data/vendor/msoffice/release.props +27 -27
- data/vendor/msoffice/test/Makefile +4 -1
- data/vendor/msoffice/test/proj/cfb/cfb_test.vcxproj +89 -89
- data/vendor/msoffice/test/proj/hash/hash_test.vcxproj +89 -89
- data/vendor/msoffice/test_all.py +4 -4
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fb0f8f97c5ec68a5de68c8dbc7f7053cf4b9a05be3a40e566a0b55869011be8f
|
|
4
|
+
data.tar.gz: 8b83471bde9d88fdbc97fb4caa9bf6fa3e83a705f0f9ca7cbe43e09d69a6b978
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 57d7880b74d24ca8d1471416f45b3deca40b2b513b0dc0ca7891064daddbbb1fe1d48dac7837d22af4c27c00bc956f7d4c2d5ea7d533f73a1f083d7d11c0eac4
|
|
7
|
+
data.tar.gz: 61618d149390ce0c83e8d3b65adb45e88644733e9e6eb2bee6e168a2b2a5fccf608d917b48b0dedc839f7e29ab2f95ebe739c1de8025c9e9774930bce6bb228c
|
data/lib/ooxml_crypt/version.rb
CHANGED
data/vendor/cybozulib/common.mk
CHANGED
|
@@ -65,9 +65,9 @@ EXTDIR:=$(TOPDIR)../cybozulib_ext/
|
|
|
65
65
|
|
|
66
66
|
CFLAGS+= -I$(TOPDIR)include
|
|
67
67
|
LDFLAGS += -lz -lpthread -lssl -lcrypto
|
|
68
|
-
HAS_BOOST
|
|
69
|
-
HAS_MECAB
|
|
70
|
-
HAS_EIGEN
|
|
68
|
+
HAS_BOOST=0#$(shell echo "\#include <boost/version.hpp>" | ($(CXX) -E - 2>/dev/null) | grep "boost/version.hpp" >/dev/null && echo "1")
|
|
69
|
+
HAS_MECAB=0#$(shell echo "\#include <mecab.h>" | ($(CXX) -E - 2>/dev/null) | grep "mecab.h" >/dev/null && echo "1")
|
|
70
|
+
HAS_EIGEN=0#$(shell echo "\#include <eigen3/Eigen/Sparse>" | ($(CXX) -E - 2>/dev/null) | grep "eigen3/Eigen/Sparse" >/dev/null && echo "1")
|
|
71
71
|
ifeq ($(HAS_BOOST),1)
|
|
72
72
|
LDFLAGS += -lboost_regex
|
|
73
73
|
endif
|
|
@@ -8,13 +8,17 @@
|
|
|
8
8
|
*/
|
|
9
9
|
#include <cybozu/inttype.hpp>
|
|
10
10
|
#ifdef _WIN32
|
|
11
|
+
#include <intrin.h>
|
|
12
|
+
#if CYBOZU_HOST == CYBOZU_HOST_INTEL
|
|
11
13
|
#ifndef WIN32_LEAN_AND_MEAN
|
|
12
14
|
#define WIN32_LEAN_AND_MEAN
|
|
13
15
|
#endif
|
|
14
|
-
#include <windows.h>
|
|
15
|
-
#
|
|
16
|
+
#include <windows.h> // _mm_mfence
|
|
17
|
+
#endif
|
|
16
18
|
#else
|
|
17
|
-
#
|
|
19
|
+
#if CYBOZU_HOST == CYBOZU_HOST_INTEL
|
|
20
|
+
#include <x86intrin.h>
|
|
21
|
+
#endif
|
|
18
22
|
#endif
|
|
19
23
|
|
|
20
24
|
namespace cybozu {
|
|
@@ -136,10 +140,16 @@ T AtomicExchange(T *p, T newValue)
|
|
|
136
140
|
|
|
137
141
|
inline void mfence()
|
|
138
142
|
{
|
|
139
|
-
#
|
|
143
|
+
#if defined(_WIN32) && CYBOZU_HOST == CYBOZU_HOST_INTEL
|
|
140
144
|
MemoryBarrier();
|
|
141
|
-
#
|
|
145
|
+
#elif defined(_WIN32) && CYBOZU_HOST == CYBOZU_HOST_ARM
|
|
146
|
+
__dsb(0xf);
|
|
147
|
+
#elif CYBOZU_HOST == CYBOZU_HOST_INTEL
|
|
142
148
|
_mm_mfence();
|
|
149
|
+
#elif CYBOZU_HOST == CYBOZU_HOST_ARM
|
|
150
|
+
__sync_synchronize();
|
|
151
|
+
#else
|
|
152
|
+
#error "not supported"
|
|
143
153
|
#endif
|
|
144
154
|
}
|
|
145
155
|
|
|
@@ -89,7 +89,7 @@ private:
|
|
|
89
89
|
Data *data = (Data*)self;
|
|
90
90
|
if (data->found) return;
|
|
91
91
|
if (section == 0) return;
|
|
92
|
-
bfd_vma vma = bfd_section_vma(
|
|
92
|
+
bfd_vma vma = bfd_section_vma(section);
|
|
93
93
|
if (data->pc < vma) return;
|
|
94
94
|
bfd_size_type size = bfd_section_size(section);
|
|
95
95
|
if (data->pc >= vma + size) return;
|
|
@@ -6,14 +6,8 @@
|
|
|
6
6
|
#include <assert.h>
|
|
7
7
|
#include <cybozu/inttype.hpp>
|
|
8
8
|
|
|
9
|
-
#if (
|
|
10
|
-
#
|
|
11
|
-
#include <intrin.h>
|
|
12
|
-
#elif defined(__linux__) || defined(__CYGWIN__) || defined(__clang__)
|
|
13
|
-
#include <x86intrin.h>
|
|
14
|
-
#elif defined(__GNUC__)
|
|
15
|
-
#include <emmintrin.h>
|
|
16
|
-
#endif
|
|
9
|
+
#if defined(_WIN32)
|
|
10
|
+
#include <intrin.h>
|
|
17
11
|
#endif
|
|
18
12
|
|
|
19
13
|
namespace cybozu {
|
|
@@ -117,7 +111,9 @@ uint32_t popcnt(T x);
|
|
|
117
111
|
template<>
|
|
118
112
|
inline uint32_t popcnt<uint32_t>(uint32_t x)
|
|
119
113
|
{
|
|
120
|
-
#if defined(
|
|
114
|
+
#if defined(_M_ARM64)
|
|
115
|
+
return static_cast<uint32_t>(_CountOneBits(x));
|
|
116
|
+
#elif defined(_MSC_VER) && !defined(__clang__)
|
|
121
117
|
return static_cast<uint32_t>(_mm_popcnt_u32(x));
|
|
122
118
|
#else
|
|
123
119
|
return static_cast<uint32_t>(__builtin_popcount(x));
|
|
@@ -127,7 +123,9 @@ inline uint32_t popcnt<uint32_t>(uint32_t x)
|
|
|
127
123
|
template<>
|
|
128
124
|
inline uint32_t popcnt<uint64_t>(uint64_t x)
|
|
129
125
|
{
|
|
130
|
-
#if defined(
|
|
126
|
+
#if defined(_M_ARM64)
|
|
127
|
+
return static_cast<uint32_t>(_CountOneBits64(x));
|
|
128
|
+
#elif defined(__x86_64__)
|
|
131
129
|
return static_cast<uint32_t>(__builtin_popcountll(x));
|
|
132
130
|
#elif defined(_WIN64)
|
|
133
131
|
return static_cast<uint32_t>(_mm_popcnt_u64(x));
|
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
#include <cybozu/exception.hpp>
|
|
9
|
+
|
|
10
|
+
#ifndef CYBOZU_USE_OPENSSL_NEW_HASH
|
|
11
|
+
#ifndef _MSC_VER
|
|
12
|
+
#define CYBOZU_USE_OPENSSL_NEW_HASH 1
|
|
13
|
+
#endif
|
|
14
|
+
#endif
|
|
15
|
+
|
|
9
16
|
#ifdef __APPLE__
|
|
10
17
|
#pragma GCC diagnostic push
|
|
11
18
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
@@ -22,8 +29,10 @@
|
|
|
22
29
|
#else
|
|
23
30
|
#include <openssl/hmac.h>
|
|
24
31
|
#include <openssl/evp.h>
|
|
32
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH != 1
|
|
25
33
|
#include <openssl/sha.h>
|
|
26
34
|
#endif
|
|
35
|
+
#endif
|
|
27
36
|
#ifdef _MSC_VER
|
|
28
37
|
#include <cybozu/link_libeay32.hpp>
|
|
29
38
|
#endif
|
|
@@ -44,20 +53,33 @@ public:
|
|
|
44
53
|
private:
|
|
45
54
|
Name name_;
|
|
46
55
|
size_t hashSize_;
|
|
56
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
57
|
+
EVP_MD_CTX *ctx_;
|
|
58
|
+
void setCTX(const char *name)
|
|
59
|
+
{
|
|
60
|
+
const EVP_MD *md = EVP_get_digestbyname(name);
|
|
61
|
+
if (md == 0) {
|
|
62
|
+
throw cybozu::Exception("EVP_get_digestbyname") << name;
|
|
63
|
+
}
|
|
64
|
+
EVP_MD_CTX_reset(ctx_);
|
|
65
|
+
EVP_DigestInit_ex(ctx_, md, NULL);
|
|
66
|
+
}
|
|
67
|
+
#else
|
|
47
68
|
union {
|
|
48
69
|
SHA_CTX sha1;
|
|
49
70
|
SHA256_CTX sha256;
|
|
50
71
|
SHA512_CTX sha512;
|
|
51
72
|
} ctx_;
|
|
73
|
+
#endif
|
|
52
74
|
public:
|
|
53
75
|
static inline size_t getSize(Name name)
|
|
54
76
|
{
|
|
55
77
|
switch (name) {
|
|
56
|
-
case N_SHA1: return
|
|
57
|
-
case N_SHA224: return
|
|
58
|
-
case N_SHA256: return
|
|
59
|
-
case N_SHA384: return
|
|
60
|
-
case N_SHA512: return
|
|
78
|
+
case N_SHA1: return 160 / 8;
|
|
79
|
+
case N_SHA224: return 224 / 8;
|
|
80
|
+
case N_SHA256: return 256 / 8;
|
|
81
|
+
case N_SHA384: return 384 / 8;
|
|
82
|
+
case N_SHA512: return 512 / 8;
|
|
61
83
|
default:
|
|
62
84
|
throw cybozu::Exception("crypto:Hash:getSize") << name;
|
|
63
85
|
}
|
|
@@ -94,11 +116,23 @@ public:
|
|
|
94
116
|
explicit Hash(Name name = N_SHA1)
|
|
95
117
|
: name_(name)
|
|
96
118
|
, hashSize_(getSize(name))
|
|
119
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
120
|
+
, ctx_(EVP_MD_CTX_new())
|
|
121
|
+
#endif
|
|
97
122
|
{
|
|
98
123
|
reset();
|
|
99
124
|
}
|
|
125
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
126
|
+
~Hash()
|
|
127
|
+
{
|
|
128
|
+
EVP_MD_CTX_free(ctx_);
|
|
129
|
+
}
|
|
130
|
+
#endif
|
|
100
131
|
void update(const void *buf, size_t bufSize)
|
|
101
132
|
{
|
|
133
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
134
|
+
EVP_DigestUpdate(ctx_, buf, bufSize);
|
|
135
|
+
#else
|
|
102
136
|
switch (name_) {
|
|
103
137
|
case N_SHA1: SHA1_Update(&ctx_.sha1, buf, bufSize); break;
|
|
104
138
|
case N_SHA224: SHA224_Update(&ctx_.sha256, buf, bufSize); break;
|
|
@@ -106,6 +140,7 @@ public:
|
|
|
106
140
|
case N_SHA384: SHA384_Update(&ctx_.sha512, buf, bufSize); break;
|
|
107
141
|
case N_SHA512: SHA512_Update(&ctx_.sha512, buf, bufSize); break;
|
|
108
142
|
}
|
|
143
|
+
#endif
|
|
109
144
|
}
|
|
110
145
|
void update(const std::string& buf)
|
|
111
146
|
{
|
|
@@ -114,11 +149,19 @@ public:
|
|
|
114
149
|
void reset()
|
|
115
150
|
{
|
|
116
151
|
switch (name_) {
|
|
152
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
153
|
+
case N_SHA1: setCTX("sha1"); break;
|
|
154
|
+
case N_SHA224: setCTX("sha224"); break;
|
|
155
|
+
case N_SHA256: setCTX("sha256"); break;
|
|
156
|
+
case N_SHA384: setCTX("sha384"); break;
|
|
157
|
+
case N_SHA512: setCTX("sha512"); break;
|
|
158
|
+
#else
|
|
117
159
|
case N_SHA1: SHA1_Init(&ctx_.sha1); break;
|
|
118
160
|
case N_SHA224: SHA224_Init(&ctx_.sha256); break;
|
|
119
161
|
case N_SHA256: SHA256_Init(&ctx_.sha256); break;
|
|
120
162
|
case N_SHA384: SHA384_Init(&ctx_.sha512); break;
|
|
121
163
|
case N_SHA512: SHA512_Init(&ctx_.sha512); break;
|
|
164
|
+
#endif
|
|
122
165
|
default:
|
|
123
166
|
throw cybozu::Exception("crypto:Hash:rset") << name_;
|
|
124
167
|
}
|
|
@@ -131,6 +174,10 @@ public:
|
|
|
131
174
|
{
|
|
132
175
|
update(buf, bufSize);
|
|
133
176
|
unsigned char *md = reinterpret_cast<unsigned char*>(out);
|
|
177
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
178
|
+
unsigned int len;
|
|
179
|
+
EVP_DigestFinal_ex(ctx_, md, &len);
|
|
180
|
+
#else
|
|
134
181
|
switch (name_) {
|
|
135
182
|
case N_SHA1: SHA1_Final(md, &ctx_.sha1); break;
|
|
136
183
|
case N_SHA224: SHA224_Final(md, &ctx_.sha256); break;
|
|
@@ -140,6 +187,7 @@ public:
|
|
|
140
187
|
default:
|
|
141
188
|
throw cybozu::Exception("crypto:Hash:digest") << name_;
|
|
142
189
|
}
|
|
190
|
+
#endif
|
|
143
191
|
reset();
|
|
144
192
|
}
|
|
145
193
|
std::string digest(const void *buf, size_t bufSize)
|
|
@@ -159,6 +207,11 @@ public:
|
|
|
159
207
|
*/
|
|
160
208
|
static inline size_t digest(void *out, Name name, const void *buf, size_t bufSize)
|
|
161
209
|
{
|
|
210
|
+
#if 1
|
|
211
|
+
Hash h(name);
|
|
212
|
+
h.digest(out, buf, bufSize);
|
|
213
|
+
return getSize(name);
|
|
214
|
+
#else
|
|
162
215
|
unsigned char *md = (unsigned char*)out;
|
|
163
216
|
const unsigned char *src = cybozu::cast<const unsigned char *>(buf);
|
|
164
217
|
switch (name) {
|
|
@@ -170,6 +223,7 @@ public:
|
|
|
170
223
|
default:
|
|
171
224
|
return 0;
|
|
172
225
|
}
|
|
226
|
+
#endif
|
|
173
227
|
}
|
|
174
228
|
static inline std::string digest(Name name, const void *buf, size_t bufSize)
|
|
175
229
|
{
|
|
@@ -71,6 +71,20 @@
|
|
|
71
71
|
#define CYBOZU_SNPRINTF(x, len, ...) (void)snprintf(x, len, __VA_ARGS__)
|
|
72
72
|
#endif
|
|
73
73
|
#endif
|
|
74
|
+
#ifndef CYBOZU_ASSUME
|
|
75
|
+
#ifdef NDEBUG
|
|
76
|
+
#if defined(__clang__)
|
|
77
|
+
#define CYBOZU_ASSUME(x) __builtin_assume(x)
|
|
78
|
+
#elif defined(_MSC_VER) || defined(__ICC)
|
|
79
|
+
#define CYBOZU_ASSUME(x) __assume(x)
|
|
80
|
+
#else
|
|
81
|
+
#define CYBOZU_ASSUME(x) if (!(x)) { __builtin_unreachable(); }
|
|
82
|
+
#endif
|
|
83
|
+
#else
|
|
84
|
+
#define CYBOZU_ASSUME(x) assert(x)
|
|
85
|
+
#endif
|
|
86
|
+
#endif
|
|
87
|
+
|
|
74
88
|
|
|
75
89
|
// LLONG_MIN in limits.h is not defined in some env.
|
|
76
90
|
#define CYBOZU_LLONG_MIN (-9223372036854775807ll-1)
|
|
@@ -118,7 +132,7 @@
|
|
|
118
132
|
#endif
|
|
119
133
|
|
|
120
134
|
#ifndef CYBOZU_OS_BIT
|
|
121
|
-
#if defined(_WIN64) || defined(__x86_64__) || defined(__AARCH64EL__) || defined(__EMSCRIPTEN__) || defined(__LP64__)
|
|
135
|
+
#if defined(_WIN64) || defined(__x86_64__) || defined(__AARCH64EL__) || defined(__EMSCRIPTEN__) || defined(__LP64__) || defined(_M_ARM64)
|
|
122
136
|
#define CYBOZU_OS_BIT 64
|
|
123
137
|
#else
|
|
124
138
|
#define CYBOZU_OS_BIT 32
|
|
@@ -131,7 +145,7 @@
|
|
|
131
145
|
#define CYBOZU_HOST_ARM 2
|
|
132
146
|
#if defined(_M_IX86) || defined(_M_AMD64) || defined(__x86_64__) || defined(__i386__)
|
|
133
147
|
#define CYBOZU_HOST CYBOZU_HOST_INTEL
|
|
134
|
-
#elif defined(__arm__) || defined(__AARCH64EL__)
|
|
148
|
+
#elif defined(__arm__) || defined(__AARCH64EL__) || defined(_M_ARM64)
|
|
135
149
|
#define CYBOZU_HOST CYBOZU_HOST_ARM
|
|
136
150
|
#else
|
|
137
151
|
#define CYBOZU_HOST CYBOZU_HOST_UNKNOWN
|
|
@@ -144,7 +158,7 @@
|
|
|
144
158
|
#define CYBOZU_ENDIAN_BIG 2
|
|
145
159
|
#if (CYBOZU_HOST == CYBOZU_HOST_INTEL)
|
|
146
160
|
#define CYBOZU_ENDIAN CYBOZU_ENDIAN_LITTLE
|
|
147
|
-
#elif (CYBOZU_HOST == CYBOZU_HOST_ARM) && (defined(__ARM_EABI__) || defined(__AARCH64EL__))
|
|
161
|
+
#elif (CYBOZU_HOST == CYBOZU_HOST_ARM) && (defined(__ARM_EABI__) || defined(__AARCH64EL__) || defined(_M_ARM64))
|
|
148
162
|
#define CYBOZU_ENDIAN CYBOZU_ENDIAN_LITTLE
|
|
149
163
|
#elif defined(__s390x__)
|
|
150
164
|
#define CYBOZU_ENDIAN CYBOZU_ENDIAN_BIG
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
@brief link mpir/mpirxx of mpir
|
|
5
5
|
@author MITSUNARI Shigeo(@herumi)
|
|
6
6
|
*/
|
|
7
|
-
#if defined(
|
|
7
|
+
#if defined(_MSC_VER) && defined(_MT)
|
|
8
8
|
#if _MSC_VER >= 1900 // VC2015, VC2017(1910)
|
|
9
9
|
#pragma comment(lib, "mt/14/mpir.lib")
|
|
10
10
|
#pragma comment(lib, "mt/14/mpirxx.lib")
|
|
@@ -16,11 +16,23 @@
|
|
|
16
16
|
#include <memory.h>
|
|
17
17
|
|
|
18
18
|
#ifdef CYBOZU_USE_OPENSSL_SHA
|
|
19
|
+
|
|
20
|
+
#ifndef CYBOZU_USE_OPENSSL_NEW_HASH
|
|
21
|
+
#ifndef _MSC_VER
|
|
22
|
+
#define CYBOZU_USE_OPENSSL_NEW_HASH 1
|
|
23
|
+
#endif
|
|
24
|
+
#endif
|
|
25
|
+
|
|
19
26
|
#ifdef __APPLE__
|
|
20
27
|
#pragma GCC diagnostic push
|
|
21
28
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
22
29
|
#endif
|
|
30
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
31
|
+
#include <openssl/evp.h>
|
|
32
|
+
#include <assert.h>
|
|
33
|
+
#else
|
|
23
34
|
#include <openssl/sha.h>
|
|
35
|
+
#endif
|
|
24
36
|
#ifdef _MSC_VER
|
|
25
37
|
#include <cybozu/link_libeay32.hpp>
|
|
26
38
|
#endif
|
|
@@ -31,27 +43,90 @@
|
|
|
31
43
|
|
|
32
44
|
namespace cybozu {
|
|
33
45
|
|
|
46
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
47
|
+
namespace local {
|
|
48
|
+
|
|
49
|
+
template<size_t MD_SIZE_>
|
|
50
|
+
struct NewHash {
|
|
51
|
+
static const size_t MD_SIZE = MD_SIZE_;
|
|
52
|
+
EVP_MD_CTX *mdctx_;
|
|
53
|
+
const EVP_MD *md_;
|
|
54
|
+
explicit NewHash(const char *name)
|
|
55
|
+
: mdctx_(EVP_MD_CTX_new())
|
|
56
|
+
, md_(EVP_get_digestbyname(name))
|
|
57
|
+
{
|
|
58
|
+
if (md_ == 0) {
|
|
59
|
+
fprintf(stderr, "fatail error NewHash %s\n", name);
|
|
60
|
+
}
|
|
61
|
+
assert(md_);
|
|
62
|
+
}
|
|
63
|
+
~NewHash()
|
|
64
|
+
{
|
|
65
|
+
EVP_MD_CTX_free(mdctx_);
|
|
66
|
+
}
|
|
67
|
+
void clear()
|
|
68
|
+
{
|
|
69
|
+
EVP_MD_CTX_reset(mdctx_);
|
|
70
|
+
EVP_DigestInit_ex(mdctx_, md_, NULL);
|
|
71
|
+
}
|
|
72
|
+
void update(const void *buf, size_t bufSize)
|
|
73
|
+
{
|
|
74
|
+
EVP_DigestUpdate(mdctx_, buf, bufSize);
|
|
75
|
+
}
|
|
76
|
+
size_t digest(void *md, size_t mdSize, const void *buf, size_t bufSize)
|
|
77
|
+
{
|
|
78
|
+
if (mdSize < MD_SIZE) return 0;
|
|
79
|
+
update(buf, bufSize);
|
|
80
|
+
unsigned int len;
|
|
81
|
+
EVP_DigestFinal_ex(mdctx_, (unsigned char*)md, &len);
|
|
82
|
+
assert(len == MD_SIZE);
|
|
83
|
+
return MD_SIZE;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
} // local
|
|
88
|
+
#endif
|
|
89
|
+
|
|
34
90
|
class Sha256 {
|
|
91
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
92
|
+
local::NewHash<32> ctx_;
|
|
93
|
+
#else
|
|
35
94
|
SHA256_CTX ctx_;
|
|
95
|
+
#endif
|
|
36
96
|
public:
|
|
37
97
|
Sha256()
|
|
98
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
99
|
+
: ctx_("sha256")
|
|
100
|
+
#endif
|
|
38
101
|
{
|
|
39
102
|
clear();
|
|
40
103
|
}
|
|
41
104
|
void clear()
|
|
42
105
|
{
|
|
106
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
107
|
+
ctx_.clear();
|
|
108
|
+
#else
|
|
43
109
|
SHA256_Init(&ctx_);
|
|
110
|
+
#endif
|
|
44
111
|
}
|
|
45
112
|
void update(const void *buf, size_t bufSize)
|
|
46
113
|
{
|
|
114
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
115
|
+
ctx_.update(buf, bufSize);
|
|
116
|
+
#else
|
|
47
117
|
SHA256_Update(&ctx_, buf, bufSize);
|
|
118
|
+
#endif
|
|
48
119
|
}
|
|
49
120
|
size_t digest(void *md, size_t mdSize, const void *buf, size_t bufSize)
|
|
50
121
|
{
|
|
122
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
123
|
+
return ctx_.digest(md, mdSize, buf, bufSize);
|
|
124
|
+
#else
|
|
51
125
|
if (mdSize < SHA256_DIGEST_LENGTH) return 0;
|
|
52
126
|
update(buf, bufSize);
|
|
53
127
|
SHA256_Final(reinterpret_cast<uint8_t*>(md), &ctx_);
|
|
54
128
|
return SHA256_DIGEST_LENGTH;
|
|
129
|
+
#endif
|
|
55
130
|
}
|
|
56
131
|
#ifndef CYBOZU_DONT_USE_STRING
|
|
57
132
|
void update(const std::string& buf)
|
|
@@ -64,7 +139,11 @@ public:
|
|
|
64
139
|
}
|
|
65
140
|
std::string digest(const void *buf, size_t bufSize)
|
|
66
141
|
{
|
|
142
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
143
|
+
std::string md(ctx_.MD_SIZE, 0);
|
|
144
|
+
#else
|
|
67
145
|
std::string md(SHA256_DIGEST_LENGTH, 0);
|
|
146
|
+
#endif
|
|
68
147
|
digest(&md[0], md.size(), buf, bufSize);
|
|
69
148
|
return md;
|
|
70
149
|
}
|
|
@@ -72,26 +151,45 @@ public:
|
|
|
72
151
|
};
|
|
73
152
|
|
|
74
153
|
class Sha512 {
|
|
154
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
155
|
+
local::NewHash<64> ctx_;
|
|
156
|
+
#else
|
|
75
157
|
SHA512_CTX ctx_;
|
|
158
|
+
#endif
|
|
76
159
|
public:
|
|
77
160
|
Sha512()
|
|
161
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
162
|
+
: ctx_("sha512")
|
|
163
|
+
#endif
|
|
78
164
|
{
|
|
79
165
|
clear();
|
|
80
166
|
}
|
|
81
167
|
void clear()
|
|
82
168
|
{
|
|
169
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
170
|
+
ctx_.clear();
|
|
171
|
+
#else
|
|
83
172
|
SHA512_Init(&ctx_);
|
|
173
|
+
#endif
|
|
84
174
|
}
|
|
85
175
|
void update(const void *buf, size_t bufSize)
|
|
86
176
|
{
|
|
177
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
178
|
+
ctx_.update(buf, bufSize);
|
|
179
|
+
#else
|
|
87
180
|
SHA512_Update(&ctx_, buf, bufSize);
|
|
181
|
+
#endif
|
|
88
182
|
}
|
|
89
183
|
size_t digest(void *md, size_t mdSize, const void *buf, size_t bufSize)
|
|
90
184
|
{
|
|
185
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
186
|
+
return ctx_.digest(md, mdSize, buf, bufSize);
|
|
187
|
+
#else
|
|
91
188
|
if (mdSize < SHA512_DIGEST_LENGTH) return 0;
|
|
92
189
|
update(buf, bufSize);
|
|
93
190
|
SHA512_Final(reinterpret_cast<uint8_t*>(md), &ctx_);
|
|
94
191
|
return SHA512_DIGEST_LENGTH;
|
|
192
|
+
#endif
|
|
95
193
|
}
|
|
96
194
|
#ifndef CYBOZU_DONT_USE_STRING
|
|
97
195
|
void update(const std::string& buf)
|
|
@@ -104,7 +202,11 @@ public:
|
|
|
104
202
|
}
|
|
105
203
|
std::string digest(const void *buf, size_t bufSize)
|
|
106
204
|
{
|
|
205
|
+
#if CYBOZU_USE_OPENSSL_NEW_HASH == 1
|
|
206
|
+
std::string md(ctx_.MD_SIZE, 0);
|
|
207
|
+
#else
|
|
107
208
|
std::string md(SHA512_DIGEST_LENGTH, 0);
|
|
209
|
+
#endif
|
|
108
210
|
digest(&md[0], md.size(), buf, bufSize);
|
|
109
211
|
return md;
|
|
110
212
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
data/vendor/cybozulib/test/base/proj/condition_variable_cs_test/condition_variable_cs_test.vcxproj
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
data/vendor/cybozulib/test/base/proj/condition_variable_test/condition_variable_test.vcxproj
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
2
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
3
|
<ItemGroup Label="ProjectConfigurations">
|
|
4
4
|
<ProjectConfiguration Include="Debug|x64">
|