summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ecdsa/ecs_lib.c
diff options
context:
space:
mode:
authordjm <>2012-10-13 21:23:50 +0000
committerdjm <>2012-10-13 21:23:50 +0000
commit228cae30b117c2493f69ad3c195341cd6ec8d430 (patch)
tree29ff00b10d52c0978077c4fd83c33b065bade73e /src/lib/libcrypto/ecdsa/ecs_lib.c
parent731838c66b52c0ae5888333005b74115a620aa96 (diff)
downloadopenbsd-228cae30b117c2493f69ad3c195341cd6ec8d430.tar.gz
openbsd-228cae30b117c2493f69ad3c195341cd6ec8d430.tar.bz2
openbsd-228cae30b117c2493f69ad3c195341cd6ec8d430.zip
import OpenSSL-1.0.1c
Diffstat (limited to 'src/lib/libcrypto/ecdsa/ecs_lib.c')
-rw-r--r--src/lib/libcrypto/ecdsa/ecs_lib.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/lib/libcrypto/ecdsa/ecs_lib.c b/src/lib/libcrypto/ecdsa/ecs_lib.c
index 2ebae3aa27..e477da430b 100644
--- a/src/lib/libcrypto/ecdsa/ecs_lib.c
+++ b/src/lib/libcrypto/ecdsa/ecs_lib.c
@@ -60,6 +60,9 @@
60#endif 60#endif
61#include <openssl/err.h> 61#include <openssl/err.h>
62#include <openssl/bn.h> 62#include <openssl/bn.h>
63#ifdef OPENSSL_FIPS
64#include <openssl/fips.h>
65#endif
63 66
64const char ECDSA_version[]="ECDSA" OPENSSL_VERSION_PTEXT; 67const char ECDSA_version[]="ECDSA" OPENSSL_VERSION_PTEXT;
65 68
@@ -77,7 +80,16 @@ void ECDSA_set_default_method(const ECDSA_METHOD *meth)
77const ECDSA_METHOD *ECDSA_get_default_method(void) 80const ECDSA_METHOD *ECDSA_get_default_method(void)
78{ 81{
79 if(!default_ECDSA_method) 82 if(!default_ECDSA_method)
83 {
84#ifdef OPENSSL_FIPS
85 if (FIPS_mode())
86 return FIPS_ecdsa_openssl();
87 else
88 return ECDSA_OpenSSL();
89#else
80 default_ECDSA_method = ECDSA_OpenSSL(); 90 default_ECDSA_method = ECDSA_OpenSSL();
91#endif
92 }
81 return default_ECDSA_method; 93 return default_ECDSA_method;
82} 94}
83 95
@@ -193,7 +205,14 @@ ECDSA_DATA *ecdsa_check(EC_KEY *key)
193 } 205 }
194 else 206 else
195 ecdsa_data = (ECDSA_DATA *)data; 207 ecdsa_data = (ECDSA_DATA *)data;
196 208#ifdef OPENSSL_FIPS
209 if (FIPS_mode() && !(ecdsa_data->flags & ECDSA_FLAG_FIPS_METHOD)
210 && !(EC_KEY_get_flags(key) & EC_FLAG_NON_FIPS_ALLOW))
211 {
212 ECDSAerr(ECDSA_F_ECDSA_CHECK, ECDSA_R_NON_FIPS_METHOD);
213 return NULL;
214 }
215#endif
197 216
198 return ecdsa_data; 217 return ecdsa_data;
199} 218}