summaryrefslogtreecommitdiffstats
path: root/crypto_polarssl.c
diff options
context:
space:
mode:
authorAdriaan de Jong <adriaan@adriaan-VirtualBox.(none)>2011-07-02 14:28:17 +0200
committerDavid Sommerseth <davids@redhat.com>2011-10-22 14:35:16 +0200
commitbe0a08d452f7fafde507361c76d8724f047cfb3f (patch)
treebbc51bcccbfdb8437d5225e57b0e305bc28be43f /crypto_polarssl.c
parent7ce40d9931ab9f16c83b282eb0f2ba1ebefd7079 (diff)
downloadopenvpn-be0a08d452f7fafde507361c76d8724f047cfb3f.tar.gz
openvpn-be0a08d452f7fafde507361c76d8724f047cfb3f.tar.xz
openvpn-be0a08d452f7fafde507361c76d8724f047cfb3f.zip
Changed PolarSSL crypto backend to support v0.99-pre5
Signed-off-by: Adriaan de Jong <dejong@fox-it.com> Acked-by: James Yonan <james@openvpn.net> Acked-by: Gert Doering <gert@greenie.muc.de> Signed-off-by: David Sommerseth <davids@redhat.com>
Diffstat (limited to 'crypto_polarssl.c')
-rw-r--r--crypto_polarssl.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/crypto_polarssl.c b/crypto_polarssl.c
index 59aade8..9c36478 100644
--- a/crypto_polarssl.c
+++ b/crypto_polarssl.c
@@ -216,7 +216,7 @@ key_des_check (uint8_t *key, int key_len, int ndc)
msg (D_CRYPT_ERRORS, "CRYPTO INFO: check_key_DES: insufficient key material");
goto err;
}
- if (0 != des_key_check_weak(key))
+ if (0 == des_key_check_weak(key))
{
msg (D_CRYPT_ERRORS, "CRYPTO INFO: check_key_DES: weak key detected");
goto err;
@@ -391,12 +391,25 @@ int cipher_ctx_reset (cipher_context_t *ctx, uint8_t *iv_buf)
int cipher_ctx_update (cipher_context_t *ctx, uint8_t *dst, int *dst_len,
uint8_t *src, int src_len)
{
- return 0 == cipher_update(ctx, src, src_len, dst, dst_len);
+ int retval = 0;
+ size_t s_dst_len = *dst_len;
+
+ retval = cipher_update(ctx, src, (size_t)src_len, dst, &s_dst_len);
+
+ *dst_len = s_dst_len;
+
+ return 0 == retval;
}
int cipher_ctx_final (cipher_context_t *ctx, uint8_t *dst, int *dst_len)
{
- return 0 == cipher_finish(ctx, dst, dst_len);
+ int retval = 0;
+ size_t s_dst_len = *dst_len;
+
+ retval = cipher_finish(ctx, dst, &s_dst_len);
+ *dst_len = s_dst_len;
+
+ return 0 == retval;
}
void
@@ -472,13 +485,13 @@ md_ctx_init (md_context_t *ctx, const md_info_t *kt)
CLEAR(*ctx);
- ASSERT(0 == md_starts(kt, ctx));
+ ASSERT(0 == md_init_ctx(ctx, kt));
+ ASSERT(0 == md_starts(ctx));
}
void
md_ctx_cleanup(md_context_t *ctx)
{
- ASSERT(0 == md_free_ctx(ctx));
}
int
@@ -499,6 +512,7 @@ void
md_ctx_final (md_context_t *ctx, uint8_t *dst)
{
ASSERT(0 == md_finish(ctx, dst));
+ ASSERT(0 == md_free_ctx(ctx));
}
@@ -522,7 +536,8 @@ hmac_ctx_init (md_context_t *ctx, const uint8_t *key, int key_len, const md_info
CLEAR(*ctx);
- ASSERT(0 == md_hmac_starts(kt, ctx, key, key_len));
+ ASSERT(0 == md_init_ctx(ctx, kt));
+ ASSERT(0 == md_hmac_starts(ctx, key, key_len));
if (prefix)
msg (D_HANDSHAKE,