]> git.saurik.com Git - ldid.git/commitdiff
Port hash agility support to use OpenSSL 0.9.x :D.
authorJay Freeman (saurik) <saurik@saurik.com>
Tue, 19 Feb 2019 04:59:10 +0000 (20:59 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Tue, 19 Feb 2019 04:59:10 +0000 (20:59 -0800)
ldid.cpp

index 7d933b6218e73b0a7bc61b54e32ae3c5229d9564..6d03d1b131301b03111aa1ffedf0848fd15e3f0a 100644 (file)
--- a/ldid.cpp
+++ b/ldid.cpp
@@ -1583,8 +1583,12 @@ class Signature {
         for (unsigned i(0), e(sk_X509_num(certs)); i != e; i++)
             _assert(PKCS7_add_certificate(value_, sk_X509_value(certs, e - i - 1)));
 
-        auto info(PKCS7_sign_add_signer(value_, stuff, stuff, NULL, PKCS7_NOSMIMECAP));
+        // XXX: this is the same as PKCS7_sign_add_signer(value_, stuff, stuff, NULL, PKCS7_NOSMIMECAP)
+        _assert(X509_check_private_key(stuff, stuff));
+        auto info(PKCS7_add_signature(value_, stuff, stuff, EVP_sha1()));
         _assert(info != NULL);
+        _assert(PKCS7_add_certificate(value_, stuff));
+        _assert(PKCS7_add_signed_attribute(info, NID_pkcs9_contentType, V_ASN1_OBJECT, OBJ_nid2obj(NID_pkcs7_data)));
 
         PKCS7_set_detached(value_, 1);
 
@@ -1600,7 +1604,13 @@ class Signature {
             throw;
         }
 
-        _assert(PKCS7_final(value_, data, PKCS7_BINARY));
+        // XXX: this is the same as PKCS7_final(value_, data, PKCS7_BINARY)
+        BIO *bio(PKCS7_dataInit(value_, NULL));
+        _assert(bio != NULL);
+        _scope({ BIO_free_all(bio); });
+        SMIME_crlf_copy(data, bio, PKCS7_BINARY);
+        BIO_flush(bio);
+        _assert(PKCS7_dataFinal(value_, bio));
     }
 
     ~Signature() {