|
| 1 | +--- rspamd-1.3.5/src/libcryptobox/cryptobox.c.omv~ 2016-09-17 14:46:16.722429415 +0200 |
| 2 | ++++ rspamd-1.3.5/src/libcryptobox/cryptobox.c 2016-09-17 15:08:06.784867231 +0200 |
| 3 | +@@ -314,7 +314,7 @@ rspamd_cryptobox_init (void) |
| 4 | + ctx->curve25519_impl = curve25519_load (); |
| 5 | + ctx->blake2_impl = blake2b_load (); |
| 6 | + ctx->ed25519_impl = ed25519_load (); |
| 7 | +-#ifdef HAVE_USABLE_OPENSSL |
| 8 | ++#if defined(HAVE_USABLE_OPENSSL) && OPENSSL_VERSION_NUMBER < 0x10100000L |
| 9 | + ERR_load_ECDSA_strings (); |
| 10 | + ERR_load_EC_strings (); |
| 11 | + ERR_load_RAND_strings (); |
| 12 | +@@ -479,14 +479,15 @@ rspamd_cryptobox_sign (guchar *sig, gsiz |
| 13 | + #else |
| 14 | + EC_KEY *lk; |
| 15 | + BIGNUM *bn_sec, *kinv = NULL, *rp = NULL; |
| 16 | +- EVP_MD_CTX sha_ctx; |
| 17 | ++ EVP_MD_CTX *sha_ctx = EVP_MD_CTX_new(); |
| 18 | + unsigned char h[64]; |
| 19 | + guint diglen = rspamd_cryptobox_signature_bytes (mode); |
| 20 | + |
| 21 | + /* Prehash */ |
| 22 | +- g_assert (EVP_DigestInit (&sha_ctx, EVP_sha512()) == 1); |
| 23 | +- EVP_DigestUpdate (&sha_ctx, m, mlen); |
| 24 | +- EVP_DigestFinal (&sha_ctx, h, NULL); |
| 25 | ++ g_assert (EVP_DigestInit (sha_ctx, EVP_sha512()) == 1); |
| 26 | ++ EVP_DigestUpdate (sha_ctx, m, mlen); |
| 27 | ++ EVP_DigestFinal (sha_ctx, h, NULL); |
| 28 | ++ EVP_MD_CTX_free(sha_ctx); |
| 29 | + |
| 30 | + /* Key setup */ |
| 31 | + lk = EC_KEY_new_by_curve_name (CRYPTOBOX_CURVE_NID); |
| 32 | +@@ -529,13 +530,14 @@ rspamd_cryptobox_verify (const guchar *s |
| 33 | + EC_KEY *lk; |
| 34 | + EC_POINT *ec_pub; |
| 35 | + BIGNUM *bn_pub; |
| 36 | +- EVP_MD_CTX sha_ctx; |
| 37 | ++ EVP_MD_CTX *sha_ctx = EVP_MD_CTX_new(); |
| 38 | + unsigned char h[64]; |
| 39 | + |
| 40 | + /* Prehash */ |
| 41 | +- g_assert (EVP_DigestInit (&sha_ctx, EVP_sha512()) == 1); |
| 42 | +- EVP_DigestUpdate (&sha_ctx, m, mlen); |
| 43 | +- EVP_DigestFinal (&sha_ctx, h, NULL); |
| 44 | ++ g_assert (EVP_DigestInit (sha_ctx, EVP_sha512()) == 1); |
| 45 | ++ EVP_DigestUpdate (sha_ctx, m, mlen); |
| 46 | ++ EVP_DigestFinal (sha_ctx, h, NULL); |
| 47 | ++ EVP_MD_CTX_free(sha_ctx); |
| 48 | + |
| 49 | + /* Key setup */ |
| 50 | + lk = EC_KEY_new_by_curve_name (CRYPTOBOX_CURVE_NID); |
| 51 | +@@ -559,6 +561,7 @@ rspamd_cryptobox_verify (const guchar *s |
| 52 | + return ret; |
| 53 | + } |
| 54 | + |
| 55 | ++#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| 56 | + static gsize |
| 57 | + rspamd_cryptobox_encrypt_ctx_len (enum rspamd_cryptobox_mode mode) |
| 58 | + { |
| 59 | +@@ -575,6 +578,7 @@ rspamd_cryptobox_encrypt_ctx_len (enum r |
| 60 | + |
| 61 | + return 0; |
| 62 | + } |
| 63 | ++#endif |
| 64 | + |
| 65 | + static gsize |
| 66 | + rspamd_cryptobox_auth_ctx_len (enum rspamd_cryptobox_mode mode) |
| 67 | +@@ -616,7 +620,7 @@ rspamd_cryptobox_encrypt_init (void *enc |
| 68 | + EVP_CIPHER_CTX *s; |
| 69 | + |
| 70 | + s = cryptobox_align_ptr (enc_ctx, CRYPTOBOX_ALIGNMENT); |
| 71 | +- memset (s, 0, sizeof (*s)); |
| 72 | ++ EVP_CIPHER_CTX_reset(s); |
| 73 | + g_assert (EVP_EncryptInit_ex (s, EVP_aes_256_gcm (), NULL, NULL, NULL) == 1); |
| 74 | + g_assert (EVP_CIPHER_CTX_ctrl (s, EVP_CTRL_GCM_SET_IVLEN, |
| 75 | + rspamd_cryptobox_nonce_bytes (mode), NULL) == 1); |
| 76 | +@@ -787,7 +791,7 @@ rspamd_cryptobox_decrypt_init (void *enc |
| 77 | + EVP_CIPHER_CTX *s; |
| 78 | + |
| 79 | + s = cryptobox_align_ptr (enc_ctx, CRYPTOBOX_ALIGNMENT); |
| 80 | +- memset (s, 0, sizeof (*s)); |
| 81 | ++ EVP_CIPHER_CTX_reset(s); |
| 82 | + g_assert (EVP_DecryptInit_ex(s, EVP_aes_256_gcm (), NULL, NULL, NULL) == 1); |
| 83 | + g_assert (EVP_CIPHER_CTX_ctrl (s, EVP_CTRL_GCM_SET_IVLEN, |
| 84 | + rspamd_cryptobox_nonce_bytes (mode), NULL) == 1); |
| 85 | +@@ -959,6 +963,9 @@ rspamd_cryptobox_cleanup (void *enc_ctx, |
| 86 | + EVP_CIPHER_CTX *s = enc_ctx; |
| 87 | + |
| 88 | + EVP_CIPHER_CTX_cleanup (s); |
| 89 | ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 90 | ++ EVP_CIPHER_CTX_free (s); |
| 91 | ++#endif |
| 92 | + #endif |
| 93 | + } |
| 94 | + } |
| 95 | +@@ -972,7 +979,11 @@ void rspamd_cryptobox_encrypt_nm_inplace |
| 96 | + gsize r; |
| 97 | + void *enc_ctx, *auth_ctx; |
| 98 | + |
| 99 | ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 100 | ++ enc_ctx = EVP_CIPHER_CTX_new(); |
| 101 | ++#else |
| 102 | + enc_ctx = g_alloca (rspamd_cryptobox_encrypt_ctx_len (mode)); |
| 103 | ++#endif |
| 104 | + auth_ctx = g_alloca (rspamd_cryptobox_auth_ctx_len (mode)); |
| 105 | + |
| 106 | + enc_ctx = rspamd_cryptobox_encrypt_init (enc_ctx, nonce, nm, mode); |
| 107 | +@@ -1016,7 +1027,11 @@ rspamd_cryptobox_encryptv_nm_inplace (st |
| 108 | + guchar *out, *in; |
| 109 | + gsize r, remain, inremain, seg_offset; |
| 110 | + |
| 111 | ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 112 | ++ enc_ctx = EVP_CIPHER_CTX_new(); |
| 113 | ++#else |
| 114 | + enc_ctx = g_alloca (rspamd_cryptobox_encrypt_ctx_len (mode)); |
| 115 | ++#endif |
| 116 | + auth_ctx = g_alloca (rspamd_cryptobox_auth_ctx_len (mode)); |
| 117 | + |
| 118 | + enc_ctx = rspamd_cryptobox_encrypt_init (enc_ctx, nonce, nm, mode); |
| 119 | +@@ -1122,7 +1137,11 @@ rspamd_cryptobox_decrypt_nm_inplace (guc |
| 120 | + gboolean ret = TRUE; |
| 121 | + void *enc_ctx, *auth_ctx; |
| 122 | + |
| 123 | ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| 124 | ++ enc_ctx = EVP_CIPHER_CTX_new(); |
| 125 | ++#else |
| 126 | + enc_ctx = g_alloca (rspamd_cryptobox_encrypt_ctx_len (mode)); |
| 127 | ++#endif |
| 128 | + auth_ctx = g_alloca (rspamd_cryptobox_auth_ctx_len (mode)); |
| 129 | + |
| 130 | + enc_ctx = rspamd_cryptobox_decrypt_init (enc_ctx, nonce, nm, mode); |
| 131 | +--- rspamd-1.3.5/src/libcryptobox/ed25519/ref.c.omv~ 2016-09-17 14:49:51.946533386 +0200 |
| 132 | ++++ rspamd-1.3.5/src/libcryptobox/ed25519/ref.c 2016-09-17 15:07:02.088767884 +0200 |
| 133 | +@@ -28,11 +28,11 @@ ed_seed_keypair_ref (unsigned char *pk, |
| 134 | + const unsigned char *seed) |
| 135 | + { |
| 136 | + ge_p3 A; |
| 137 | +- EVP_MD_CTX sha_ctx; |
| 138 | ++ EVP_MD_CTX *sha_ctx = EVP_MD_CTX_new(); |
| 139 | + |
| 140 | +- g_assert (EVP_DigestInit (&sha_ctx, EVP_sha512()) == 1); |
| 141 | +- EVP_DigestUpdate (&sha_ctx, seed, 32); |
| 142 | +- EVP_DigestFinal (&sha_ctx, sk, NULL); |
| 143 | ++ g_assert (EVP_DigestInit (sha_ctx, EVP_sha512()) == 1); |
| 144 | ++ EVP_DigestUpdate (sha_ctx, seed, 32); |
| 145 | ++ EVP_DigestFinal (sha_ctx, sk, NULL); |
| 146 | + |
| 147 | + sk[0] &= 248; |
| 148 | + sk[31] &= 63; |
| 149 | +@@ -44,6 +44,8 @@ ed_seed_keypair_ref (unsigned char *pk, |
| 150 | + memmove (sk, seed, 32); |
| 151 | + memmove (sk + 32, pk, 32); |
| 152 | + |
| 153 | ++ EVP_MD_CTX_free(sha_ctx); |
| 154 | ++ |
| 155 | + return 0; |
| 156 | + } |
| 157 | + |
| 158 | +@@ -64,7 +66,7 @@ int |
| 159 | + ed_verify_ref(const unsigned char *sig, const unsigned char *m, |
| 160 | + size_t mlen, const unsigned char *pk) |
| 161 | + { |
| 162 | +- EVP_MD_CTX sha_ctx; |
| 163 | ++ EVP_MD_CTX *sha_ctx = EVP_MD_CTX_new(); |
| 164 | + unsigned char h[64]; |
| 165 | + unsigned char rcheck[32]; |
| 166 | + unsigned int i; |
| 167 | +@@ -85,11 +87,12 @@ ed_verify_ref(const unsigned char *sig, |
| 168 | + return -1; |
| 169 | + } |
| 170 | + |
| 171 | +- g_assert (EVP_DigestInit (&sha_ctx, EVP_sha512()) == 1); |
| 172 | +- EVP_DigestUpdate (&sha_ctx, sig, 32); |
| 173 | +- EVP_DigestUpdate (&sha_ctx, pk, 32); |
| 174 | +- EVP_DigestUpdate (&sha_ctx, m, mlen); |
| 175 | +- EVP_DigestFinal (&sha_ctx, h, NULL); |
| 176 | ++ g_assert (EVP_DigestInit (sha_ctx, EVP_sha512()) == 1); |
| 177 | ++ EVP_DigestUpdate (sha_ctx, sig, 32); |
| 178 | ++ EVP_DigestUpdate (sha_ctx, pk, 32); |
| 179 | ++ EVP_DigestUpdate (sha_ctx, m, mlen); |
| 180 | ++ EVP_DigestFinal (sha_ctx, h, NULL); |
| 181 | ++ EVP_MD_CTX_free (sha_ctx); |
| 182 | + sc_reduce (h); |
| 183 | + |
| 184 | + ge_double_scalarmult_vartime (&R, h, &A, sig + 32); |
| 185 | +@@ -103,23 +106,23 @@ ed_sign_ref(unsigned char *sig, size_t * |
| 186 | + const unsigned char *m, size_t mlen, |
| 187 | + const unsigned char *sk) |
| 188 | + { |
| 189 | +- EVP_MD_CTX sha_ctx; |
| 190 | ++ EVP_MD_CTX *sha_ctx = EVP_MD_CTX_new(); |
| 191 | + unsigned char az[64]; |
| 192 | + unsigned char nonce[64]; |
| 193 | + unsigned char hram[64]; |
| 194 | + ge_p3 R; |
| 195 | + |
| 196 | +- g_assert (EVP_DigestInit (&sha_ctx, EVP_sha512()) == 1); |
| 197 | +- EVP_DigestUpdate (&sha_ctx, sk, 32); |
| 198 | +- EVP_DigestFinal (&sha_ctx, az, NULL); |
| 199 | ++ g_assert (EVP_DigestInit (sha_ctx, EVP_sha512()) == 1); |
| 200 | ++ EVP_DigestUpdate (sha_ctx, sk, 32); |
| 201 | ++ EVP_DigestFinal (sha_ctx, az, NULL); |
| 202 | + az[0] &= 248; |
| 203 | + az[31] &= 63; |
| 204 | + az[31] |= 64; |
| 205 | + |
| 206 | +- g_assert (EVP_DigestInit (&sha_ctx, EVP_sha512()) == 1); |
| 207 | +- EVP_DigestUpdate (&sha_ctx, az + 32, 32); |
| 208 | +- EVP_DigestUpdate (&sha_ctx, m, mlen); |
| 209 | +- EVP_DigestFinal (&sha_ctx, nonce, NULL); |
| 210 | ++ g_assert (EVP_DigestInit (sha_ctx, EVP_sha512()) == 1); |
| 211 | ++ EVP_DigestUpdate (sha_ctx, az + 32, 32); |
| 212 | ++ EVP_DigestUpdate (sha_ctx, m, mlen); |
| 213 | ++ EVP_DigestFinal (sha_ctx, nonce, NULL); |
| 214 | + |
| 215 | + memmove (sig + 32, sk + 32, 32); |
| 216 | + |
| 217 | +@@ -127,10 +130,11 @@ ed_sign_ref(unsigned char *sig, size_t * |
| 218 | + ge_scalarmult_base (&R, nonce); |
| 219 | + ge_p3_tobytes (sig, &R); |
| 220 | + |
| 221 | +- g_assert (EVP_DigestInit (&sha_ctx, EVP_sha512()) == 1); |
| 222 | +- EVP_DigestUpdate (&sha_ctx, sig, 64); |
| 223 | +- EVP_DigestUpdate (&sha_ctx, m, mlen); |
| 224 | +- EVP_DigestFinal (&sha_ctx, hram, NULL); |
| 225 | ++ g_assert (EVP_DigestInit (sha_ctx, EVP_sha512()) == 1); |
| 226 | ++ EVP_DigestUpdate (sha_ctx, sig, 64); |
| 227 | ++ EVP_DigestUpdate (sha_ctx, m, mlen); |
| 228 | ++ EVP_DigestFinal (sha_ctx, hram, NULL); |
| 229 | ++ EVP_MD_CTX_free(sha_ctx); |
| 230 | + |
| 231 | + sc_reduce (hram); |
| 232 | + sc_muladd (sig + 32, hram, az, nonce); |
0 commit comments