I've added the use case to the issue as requested. I tried the code snippet, but the contents of signers is missing. What should that be?
NameError: name 'signers' is not defined On Fri, Dec 21, 2018 at 11:21 AM Paul Kehrer <paul.l.keh...@gmail.com> wrote: > Out of curiosity, does the following code load the cert you expect? der > should be the bytes of extracted.der: > > from cryptography.hazmat.backends.openssl.backend import backend > from cryptography.hazmat.backends.openssl import x509 > > bio = backend._bytes_to_bio(der) > pkcs7 = backend._lib.d2i_PKCS7_bio(bio.bio, backend._ffi.NULL) > certs = [] > for i in range(backend._lib.sk_X509_num(signers)): > x509_ptr = backend._lib.sk_X509_value(signers, i) > certs.append(x509._Certificate(backend, x509_ptr)) > > Certs will be a list of signer certificates -- in this case, just one cert > in the list. Please note that this code does not manage memory correctly so > it should strictly be used to test if the cert you need is being properly > extracted :) > > -Paul (reaperhulk) > > > On December 21, 2018 at 8:02:13 AM, Paul Kehrer (paul.l.keh...@gmail.com) > wrote: > > Thanks, that's perfect. Looking at this data it's actually a PKCS7 > envelope holding multiple certificates and at the moment cryptography > unfortunately has no interface for parsing PKCS7. If you wouldn't mind > sharing your use case directly on > https://github.com/pyca/cryptography/issues/3983 then it will help me > when I'm prioritizing features for upcoming releases. > > -Paul > > > On December 20, 2018 at 2:23:11 PM, Robert Simmons (rsimmo...@gmail.com) > wrote: > > Definitely. I've attached the DER data as extracted from the PE file using > the following code: > > pe = pefile.PE(fname) > > pe.parse_data_directories(directories=[pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_SECURITY']]) > sigoff = 0 > siglen = 0 > for s in pe.__structures__: > if s.name == 'IMAGE_DIRECTORY_ENTRY_SECURITY': > sigoff = s.VirtualAddress > siglen = s.Size > pe.close() > with open(fname, 'rb') as fh: > fh.seek(sigoff) > thesig = fh.read(siglen) > with open('extracted.der', 'wb') as fh: > fh.write(thesig[8:]) > > I've attached extracted.der as a zip file to maintain integrity as an > attachment. > > Thanks! > > On Thu, Dec 20, 2018 at 11:12 AM Paul Kehrer <paul.l.keh...@gmail.com> > wrote: > >> Could you give us an example (in hex or b64 or something) so we can >> easily reproduce? Make sure any certs you're giving us don't contain >> sensitive data of course. >> >> -Paul >> >> >> On December 19, 2018 at 11:55:04 PM, Robert Simmons (rsimmo...@gmail.com) >> wrote: >> >> I've asked this question on Stack Overflow here: >> https://stackoverflow.com/q/53862702/1033217 >> >> I have compared my code to Dider Stevens's disitool here (examine the >> function ExtractDigitalSignature): >> >> https://github.com/DidierStevens/DidierStevensSuite/blob/master/disitool.py >> >> When I load that extracted file into a variable and try to parse it with >> cryptography, it fails. If I pipe the same file to openssl on the command >> line, it works. >> >> I am thinking this has to do with the number of certificates in the >> directory in the PE file. There can be three (cert, intermediate CA, and >> CA, etc). >> >> Any idea what's going on? >> _______________________________________________ >> Cryptography-dev mailing list >> Cryptography-dev@python.org >> https://mail.python.org/mailman/listinfo/cryptography-dev >> >> _______________________________________________ >> Cryptography-dev mailing list >> Cryptography-dev@python.org >> https://mail.python.org/mailman/listinfo/cryptography-dev >> > _______________________________________________ > Cryptography-dev mailing list > Cryptography-dev@python.org > https://mail.python.org/mailman/listinfo/cryptography-dev > > _______________________________________________ > Cryptography-dev mailing list > Cryptography-dev@python.org > https://mail.python.org/mailman/listinfo/cryptography-dev >
_______________________________________________ Cryptography-dev mailing list Cryptography-dev@python.org https://mail.python.org/mailman/listinfo/cryptography-dev