You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

220 lines
8.5 KiB

diff -up M2Crypto-0.20.2/SWIG/_evp.i.fips M2Crypto-0.20.2/SWIG/_evp.i
--- M2Crypto-0.20.2/SWIG/_evp.i.fips 2010-05-19 07:06:44.029090567 +0200
+++ M2Crypto-0.20.2/SWIG/_evp.i 2010-05-19 07:06:44.049115516 +0200
@@ -250,7 +250,10 @@ PyObject *hmac_init(HMAC_CTX *ctx, PyObj
if (m2_PyObject_AsReadBufferInt(key, &kbuf, &klen) == -1)
return NULL;
- HMAC_Init(ctx, kbuf, klen, md);
+ if (!HMAC_Init(ctx, kbuf, klen, md)) {
+ PyErr_SetString(_evp_err, "HMAC_Init failed");
+ return NULL;
+ }
Py_INCREF(Py_None);
return Py_None;
}
@@ -262,7 +265,10 @@ PyObject *hmac_update(HMAC_CTX *ctx, PyO
if (PyObject_AsReadBuffer(blob, &buf, &len) == -1)
return NULL;
- HMAC_Update(ctx, buf, len);
+ if (!HMAC_Update(ctx, buf, len)) {
+ PyErr_SetString(_evp_err, "HMAC_Update failed");
+ return NULL;
+ }
Py_INCREF(Py_None);
return Py_None;
}
@@ -276,7 +282,10 @@ PyObject *hmac_final(HMAC_CTX *ctx) {
PyErr_SetString(PyExc_MemoryError, "hmac_final");
return NULL;
}
- HMAC_Final(ctx, blob, (unsigned int *)&blen);
+ if (!HMAC_Final(ctx, blob, (unsigned int *)&blen)) {
+ PyErr_SetString(_evp_err, "HMAC_Final failed");
+ return NULL;
+ }
ret = PyString_FromStringAndSize(blob, blen);
PyMem_Free(blob);
return ret;
diff -up M2Crypto-0.20.2/SWIG/_rsa.i.fips M2Crypto-0.20.2/SWIG/_rsa.i
--- M2Crypto-0.20.2/SWIG/_rsa.i.fips 2010-05-19 07:06:44.030090773 +0200
+++ M2Crypto-0.20.2/SWIG/_rsa.i 2010-05-19 07:06:44.038095292 +0200
@@ -423,15 +423,17 @@ void genrsa_callback(int p, int n, void
Py_XDECREF(ret);
}
-RSA *rsa_generate_key(int bits, unsigned long e, PyObject *pyfunc) {
+PyObject *rsa_generate_key(int bits, unsigned long e, PyObject *pyfunc) {
RSA *rsa;
Py_INCREF(pyfunc);
rsa = RSA_generate_key(bits, e, genrsa_callback, (void *)pyfunc);
Py_DECREF(pyfunc);
- if (!rsa)
+ if (!rsa) {
PyErr_SetString(_rsa_err, ERR_reason_error_string(ERR_get_error()));
- return rsa;
+ return NULL;
+ }
+ return SWIG_NewPointerObj((void *)rsa, SWIGTYPE_p_RSA, 0);
}
int rsa_type_check(RSA *rsa) {
diff -up M2Crypto-0.20.2/tests/test_evp.py.fips M2Crypto-0.20.2/tests/test_evp.py
--- M2Crypto-0.20.2/tests/test_evp.py.fips 2009-10-07 06:24:44.000000000 +0200
+++ M2Crypto-0.20.2/tests/test_evp.py 2010-05-19 07:06:44.039121270 +0200
@@ -97,7 +97,7 @@ class EVPTestCase(unittest.TestCase):
"""
Testing retrieving the RSA key from the PKey instance.
"""
- rsa = RSA.gen_key(512, 3, callback=self._gen_callback)
+ rsa = RSA.gen_key(1024, 3, callback=self._gen_callback)
assert isinstance(rsa, RSA.RSA)
pkey = EVP.PKey()
pkey.assign_rsa(rsa)
@@ -130,7 +130,7 @@ class EVPTestCase(unittest.TestCase):
pkey = EVP.PKey()
self.assertRaises(ValueError, pkey.get_modulus)
- rsa = RSA.gen_key(512, 3, callback=self._gen_callback)
+ rsa = RSA.gen_key(1024, 3, callback=self._gen_callback)
pkey.assign_rsa(rsa)
mod = pkey.get_modulus()
assert len(mod) > 0, mod
@@ -373,21 +373,21 @@ class PBKDF2TestCase(unittest.TestCase):
class HMACTestCase(unittest.TestCase):
data1=['', 'More text test vectors to stuff up EBCDIC machines :-)', \
- h2b("e9139d1e6ee064ef8cf514fc7dc83e86")]
+ h2b("b760e92d6662d351eb3801057695ac0346295356")]
data2=[h2b('0b'*16), "Hi There", \
- h2b("9294727a3638bb1c13f48ef8158bfc9d")]
+ h2b("675b0b3a1b4ddf4e124872da6c2f632bfed957e9")]
data3=['Jefe', "what do ya want for nothing?", \
- h2b("750c783e6ab0b503eaa86e310a5db738")]
+ h2b("effcdf6ae5eb2fa2d27416d5f184df9c259a7c79")]
data4=[h2b('aa'*16), h2b('dd'*50), \
- h2b("0x56be34521d144c88dbb8c733f0e8b3f6")]
+ h2b("d730594d167e35d5956fd8003d0db3d3f46dc7bb")]
data=[data1, data2, data3, data4]
def test_simple(self):
- algo = 'md5'
+ algo = 'sha1'
for d in self.data:
h = EVP.HMAC(d[0], algo)
h.update(d[1])
diff -up M2Crypto-0.20.2/tests/test_rc4.py.fips M2Crypto-0.20.2/tests/test_rc4.py
--- M2Crypto-0.20.2/tests/test_rc4.py.fips 2009-10-07 06:24:39.000000000 +0200
+++ M2Crypto-0.20.2/tests/test_rc4.py 2010-05-19 07:08:10.754839354 +0200
@@ -8,12 +8,16 @@ import unittest
from binascii import hexlify
from M2Crypto import RC4
+from fips import fips_mode
+
class RC4TestCase(unittest.TestCase):
def test_vectors(self):
"""
Test with test vectors from Wikipedia: http://en.wikipedia.org/wiki/Rc4
"""
+ if fips_mode:
+ return
vectors = (('Key', 'Plaintext', 'BBF316E8D940AF0AD3'),
('Wiki', 'pedia', '1021BF0420'),
('Secret', 'Attack at dawn', '45A01F645FC35B383552544B9BF5'))
@@ -26,6 +30,8 @@ class RC4TestCase(unittest.TestCase):
self.assertEqual(rc4.final(), '')
def test_bad(self):
+ if fips_mode:
+ return
rc4 = RC4.RC4('foo')
self.assertNotEqual(hexlify(rc4.update('bar')).upper(), '45678')
diff -up M2Crypto-0.20.2/tests/test_rsa.py.fips M2Crypto-0.20.2/tests/test_rsa.py
--- M2Crypto-0.20.2/tests/test_rsa.py.fips 2009-10-07 06:26:42.000000000 +0200
+++ M2Crypto-0.20.2/tests/test_rsa.py 2010-05-19 07:06:44.039121270 +0200
@@ -8,6 +8,8 @@ import unittest
import sha, md5, os, sys
from M2Crypto import RSA, BIO, Rand, m2, EVP, X509
+from fips import fips_mode
+
class RSATestCase(unittest.TestCase):
errkey = 'tests/dsa.priv.pem'
@@ -187,9 +189,10 @@ class RSATestCase(unittest.TestCase):
else:
import hashlib
- algos = {'sha1': 43,
- 'ripemd160': 43,
- 'md5': 47}
+ algos = {'sha1': 43}
+ if not fips_mode:
+ algos['md5'] = 47
+ algos['ripemd160'] = 43
if m2.OPENSSL_VERSION_NUMBER >= 0x90800F:
algos['sha224'] = 35
@@ -217,7 +220,7 @@ class RSATestCase(unittest.TestCase):
"""
rsa = RSA.load_key(self.privkey)
message = "This is the message string"
- digest = md5.md5(message).digest()
+ digest = 'a' * 16
self.assertRaises(ValueError, rsa.sign,
digest, 'bad_digest_method')
@@ -227,7 +230,7 @@ class RSATestCase(unittest.TestCase):
"""
rsa = RSA.load_key(self.privkey)
message = "This is the message string"
- digest = md5.md5(message).digest()
+ digest = 'a' * 16
signature = rsa.sign(digest, 'sha1')
self.assertRaises(ValueError, rsa.verify,
digest, signature, 'bad_digest_method')
diff -up M2Crypto-0.20.2/tests/test_smime.py.fips M2Crypto-0.20.2/tests/test_smime.py
--- M2Crypto-0.20.2/tests/test_smime.py.fips 2010-05-19 07:06:44.035105357 +0200
+++ M2Crypto-0.20.2/tests/test_smime.py 2010-05-19 07:06:44.040120779 +0200
@@ -219,7 +219,7 @@ class WriteLoadTestCase(unittest.TestCas
buf = BIO.MemoryBuffer()
assert SMIME.load_pkcs7(self.filename).write_der(buf) == 1
s = buf.read()
- assert len(s) in (1204, 1243), len(s)
+ assert len(s) in (1188, 1204, 1243), len(s)
def test_load_pkcs7(self):
assert SMIME.load_pkcs7(self.filename).type() == SMIME.PKCS7_SIGNED
diff -up M2Crypto-0.20.2/tests/test_ssl.py.fips M2Crypto-0.20.2/tests/test_ssl.py
--- M2Crypto-0.20.2/tests/test_ssl.py.fips 2010-05-19 07:06:44.019113781 +0200
+++ M2Crypto-0.20.2/tests/test_ssl.py 2010-05-19 07:06:44.040120779 +0200
@@ -51,7 +51,7 @@ class VerifyCB:
def __call__(self, ok, store):
return verify_cb_new_function(ok, store)
-sleepTime = float(os.getenv('M2CRYPTO_TEST_SSL_SLEEP', 0.5))
+sleepTime = float(os.getenv('M2CRYPTO_TEST_SSL_SLEEP', 1.5))
def find_openssl():
if os.name == 'nt' or sys.platform == 'cygwin':
diff -up M2Crypto-0.20.2/tests/test_x509.py.fips M2Crypto-0.20.2/tests/test_x509.py
--- M2Crypto-0.20.2/tests/test_x509.py.fips 2010-05-19 07:06:44.019113781 +0200
+++ M2Crypto-0.20.2/tests/test_x509.py 2010-05-19 07:06:44.040120779 +0200
@@ -394,7 +394,7 @@ class X509TestCase(unittest.TestCase):
return
def test_load_request_bio(self):
- (req, _) = self.mkreq(512)
+ (req, _) = self.mkreq(1024)
r1 = X509.load_request_der_string(req.as_der())
r2 = X509.load_request_string(req.as_der(), X509.FORMAT_DER)