]> www.wagner.pp.ru Git - oss/ctypescrypto.git/blobdiff - ctypescrypto/cms.py
Check for CMS parsing error and don't pass None to CMS_get0_type. Fixes #3
[oss/ctypescrypto.git] / ctypescrypto / cms.py
index bc27e9e34f8d14cd09e63e6343fc8465610ba755..685d52bd642c1cde132c002f5c1f65b5d87eac2b 100644 (file)
@@ -59,6 +59,8 @@ def CMS(data, format="PEM"):
         ptr = libcrypto.PEM_read_bio_CMS(bio.bio, None, None, None)
     else:
         ptr = libcrypto.d2i_CMS_bio(bio.bio, None)
+    if ptr is None:
+        raise CMSError("Error parsing CMS data")
     typeoid = Oid(libcrypto.OBJ_obj2nid(libcrypto.CMS_get0_type(ptr)))
     if typeoid.shortname() == "pkcs7-signedData":
         return SignedData(ptr)
@@ -140,7 +142,7 @@ class SignedData(CMSBase):
             raise ValueError("Specified keypair has no private part")
         if cert.pubkey != pkey:
             raise ValueError("Certificate doesn't match public key")
-        if libcrypto.CMS_sign_add1_Signer(self.ptr, cert.cert, pkey.ptr,
+        if libcrypto.CMS_add1_signer(self.ptr, cert.cert, pkey.ptr,
                                           digest_type.digest, flags) is None:
             raise CMSError("adding signer")
         if flags & Flags.REUSE_DIGEST == 0:
@@ -325,8 +327,8 @@ libcrypto.CMS_get1_certs.restype = c_void_p
 libcrypto.CMS_get1_certs.argtypes = (c_void_p, )
 libcrypto.CMS_sign.restype = c_void_p
 libcrypto.CMS_sign.argtypes = (c_void_p, c_void_p, c_void_p, c_void_p, c_uint)
-libcrypto.CMS_sign_add1_Signer.restype = c_void_p
-libcrypto.CMS_sign_add1_Signer.argtypes = (c_void_p, c_void_p, c_void_p,
+libcrypto.CMS_add1_signer.restype = c_void_p
+libcrypto.CMS_add1_signer.argtypes = (c_void_p, c_void_p, c_void_p,
                                            c_void_p, c_uint)
 libcrypto.CMS_verify.restype = c_int
 libcrypto.CMS_verify.argtypes = (c_void_p, c_void_p, c_void_p, c_void_p,