summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ecdh
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/ecdh')
-rw-r--r--src/lib/libcrypto/ecdh/ech_err.c6
-rw-r--r--src/lib/libcrypto/ecdh/ech_key.c27
-rw-r--r--src/lib/libcrypto/ecdh/ech_lib.c6
3 files changed, 17 insertions, 22 deletions
diff --git a/src/lib/libcrypto/ecdh/ech_err.c b/src/lib/libcrypto/ecdh/ech_err.c
index afe5ff3af8..149c2a8505 100644
--- a/src/lib/libcrypto/ecdh/ech_err.c
+++ b/src/lib/libcrypto/ecdh/ech_err.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ech_err.c,v 1.5 2015/09/13 11:49:44 jsing Exp $ */ 1/* $OpenBSD: ech_err.c,v 1.6 2017/01/29 17:49:23 beck Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -72,9 +72,7 @@
72#define ERR_REASON(reason) ERR_PACK(ERR_LIB_ECDH,0,reason) 72#define ERR_REASON(reason) ERR_PACK(ERR_LIB_ECDH,0,reason)
73 73
74static ERR_STRING_DATA ECDH_str_functs[]= { 74static ERR_STRING_DATA ECDH_str_functs[]= {
75 {ERR_FUNC(ECDH_F_ECDH_CHECK), "ECDH_CHECK"}, 75 {ERR_FUNC(0xfff), "CRYPTO_internal"},
76 {ERR_FUNC(ECDH_F_ECDH_COMPUTE_KEY), "ECDH_compute_key"},
77 {ERR_FUNC(ECDH_F_ECDH_DATA_NEW_METHOD), "ECDH_DATA_new_method"},
78 {0, NULL} 76 {0, NULL}
79}; 77};
80 78
diff --git a/src/lib/libcrypto/ecdh/ech_key.c b/src/lib/libcrypto/ecdh/ech_key.c
index 33ee244499..5c2dc70b63 100644
--- a/src/lib/libcrypto/ecdh/ech_key.c
+++ b/src/lib/libcrypto/ecdh/ech_key.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ech_key.c,v 1.6 2015/09/18 13:04:41 bcook Exp $ */ 1/* $OpenBSD: ech_key.c,v 1.7 2017/01/29 17:49:23 beck Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 3 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
4 * 4 *
@@ -106,7 +106,7 @@ ecdh_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
106 106
107 if (outlen > INT_MAX) { 107 if (outlen > INT_MAX) {
108 /* Sort of, anyway. */ 108 /* Sort of, anyway. */
109 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, ERR_R_MALLOC_FAILURE); 109 ECDHerror(ERR_R_MALLOC_FAILURE);
110 return -1; 110 return -1;
111 } 111 }
112 112
@@ -120,19 +120,18 @@ ecdh_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
120 120
121 priv_key = EC_KEY_get0_private_key(ecdh); 121 priv_key = EC_KEY_get0_private_key(ecdh);
122 if (priv_key == NULL) { 122 if (priv_key == NULL) {
123 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, ECDH_R_NO_PRIVATE_VALUE); 123 ECDHerror(ECDH_R_NO_PRIVATE_VALUE);
124 goto err; 124 goto err;
125 } 125 }
126 126
127 group = EC_KEY_get0_group(ecdh); 127 group = EC_KEY_get0_group(ecdh);
128 if ((tmp = EC_POINT_new(group)) == NULL) { 128 if ((tmp = EC_POINT_new(group)) == NULL) {
129 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, ERR_R_MALLOC_FAILURE); 129 ECDHerror(ERR_R_MALLOC_FAILURE);
130 goto err; 130 goto err;
131 } 131 }
132 132
133 if (!EC_POINT_mul(group, tmp, NULL, pub_key, priv_key, ctx)) { 133 if (!EC_POINT_mul(group, tmp, NULL, pub_key, priv_key, ctx)) {
134 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, 134 ECDHerror(ECDH_R_POINT_ARITHMETIC_FAILURE);
135 ECDH_R_POINT_ARITHMETIC_FAILURE);
136 goto err; 135 goto err;
137 } 136 }
138 137
@@ -140,8 +139,7 @@ ecdh_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
140 NID_X9_62_prime_field) { 139 NID_X9_62_prime_field) {
141 if (!EC_POINT_get_affine_coordinates_GFp(group, tmp, x, y, 140 if (!EC_POINT_get_affine_coordinates_GFp(group, tmp, x, y,
142 ctx)) { 141 ctx)) {
143 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, 142 ECDHerror(ECDH_R_POINT_ARITHMETIC_FAILURE);
144 ECDH_R_POINT_ARITHMETIC_FAILURE);
145 goto err; 143 goto err;
146 } 144 }
147 } 145 }
@@ -149,8 +147,7 @@ ecdh_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
149 else { 147 else {
150 if (!EC_POINT_get_affine_coordinates_GF2m(group, tmp, x, y, 148 if (!EC_POINT_get_affine_coordinates_GF2m(group, tmp, x, y,
151 ctx)) { 149 ctx)) {
152 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, 150 ECDHerror(ECDH_R_POINT_ARITHMETIC_FAILURE);
153 ECDH_R_POINT_ARITHMETIC_FAILURE);
154 goto err; 151 goto err;
155 } 152 }
156 } 153 }
@@ -159,28 +156,28 @@ ecdh_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
159 buflen = ECDH_size(ecdh); 156 buflen = ECDH_size(ecdh);
160 len = BN_num_bytes(x); 157 len = BN_num_bytes(x);
161 if (len > buflen) { 158 if (len > buflen) {
162 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, ERR_R_INTERNAL_ERROR); 159 ECDHerror(ERR_R_INTERNAL_ERROR);
163 goto err; 160 goto err;
164 } 161 }
165 if (KDF == NULL && outlen < buflen) { 162 if (KDF == NULL && outlen < buflen) {
166 /* The resulting key would be truncated. */ 163 /* The resulting key would be truncated. */
167 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, ECDH_R_KEY_TRUNCATION); 164 ECDHerror(ECDH_R_KEY_TRUNCATION);
168 goto err; 165 goto err;
169 } 166 }
170 if ((buf = malloc(buflen)) == NULL) { 167 if ((buf = malloc(buflen)) == NULL) {
171 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, ERR_R_MALLOC_FAILURE); 168 ECDHerror(ERR_R_MALLOC_FAILURE);
172 goto err; 169 goto err;
173 } 170 }
174 171
175 memset(buf, 0, buflen - len); 172 memset(buf, 0, buflen - len);
176 if (len != (size_t)BN_bn2bin(x, buf + buflen - len)) { 173 if (len != (size_t)BN_bn2bin(x, buf + buflen - len)) {
177 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, ERR_R_BN_LIB); 174 ECDHerror(ERR_R_BN_LIB);
178 goto err; 175 goto err;
179 } 176 }
180 177
181 if (KDF != NULL) { 178 if (KDF != NULL) {
182 if (KDF(buf, buflen, out, &outlen) == NULL) { 179 if (KDF(buf, buflen, out, &outlen) == NULL) {
183 ECDHerr(ECDH_F_ECDH_COMPUTE_KEY, ECDH_R_KDF_FAILED); 180 ECDHerror(ECDH_R_KDF_FAILED);
184 goto err; 181 goto err;
185 } 182 }
186 ret = outlen; 183 ret = outlen;
diff --git a/src/lib/libcrypto/ecdh/ech_lib.c b/src/lib/libcrypto/ecdh/ech_lib.c
index bb70d2d95f..06e6a1ee22 100644
--- a/src/lib/libcrypto/ecdh/ech_lib.c
+++ b/src/lib/libcrypto/ecdh/ech_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ech_lib.c,v 1.11 2015/09/13 12:03:07 jsing Exp $ */ 1/* $OpenBSD: ech_lib.c,v 1.12 2017/01/29 17:49:23 beck Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 3 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
4 * 4 *
@@ -125,7 +125,7 @@ ECDH_DATA_new_method(ENGINE *engine)
125 125
126 ret = malloc(sizeof(ECDH_DATA)); 126 ret = malloc(sizeof(ECDH_DATA));
127 if (ret == NULL) { 127 if (ret == NULL) {
128 ECDHerr(ECDH_F_ECDH_DATA_NEW_METHOD, ERR_R_MALLOC_FAILURE); 128 ECDHerror(ERR_R_MALLOC_FAILURE);
129 return (NULL); 129 return (NULL);
130 } 130 }
131 131
@@ -139,7 +139,7 @@ ECDH_DATA_new_method(ENGINE *engine)
139 if (ret->engine) { 139 if (ret->engine) {
140 ret->meth = ENGINE_get_ECDH(ret->engine); 140 ret->meth = ENGINE_get_ECDH(ret->engine);
141 if (!ret->meth) { 141 if (!ret->meth) {
142 ECDHerr(ECDH_F_ECDH_DATA_NEW_METHOD, ERR_R_ENGINE_LIB); 142 ECDHerror(ERR_R_ENGINE_LIB);
143 ENGINE_finish(ret->engine); 143 ENGINE_finish(ret->engine);
144 free(ret); 144 free(ret);
145 return NULL; 145 return NULL;