Re: [commits] Horde branch master updated. 900790ecbb506e850e5e6f03823ad293dc2d370d
Jan Schneider <[email protected]> Thu, 27 Apr 2017 22:29:27 +0000
| Newsgroups | gmane.comp.horde.devel |
|---|---|
| Message-ID | <[email protected]> |
Zitat von Michael J. Rubinsky <[email protected]>: > The branch "master" has been updated. > The following is a summary of the commits. > > from: 076b00cfe4db6a0fa44b8b1b7d07e96996ab1b33 > > 76c0d9d Set the micalg header parameter correctly when using SHA-256. > fa2dca3 Pass the openssl path too. > 900790e BFN > > Summary: > http://github.com/horde/horde/compare/076b00cfe4db6a0fa44b8b1b7d07e96996ab1b33...900790ecbb506e850e5e6f03823ad293dc2d370d > > ----------------------------------------------------------------------- > > commit 76c0d9d3f2af854e8b34e3536af68100332a203c > Author: Michael J Rubinsky <[email protected]> > Date: Thu Apr 27 00:42:20 2017 -0400 > > Set the micalg header parameter correctly when using SHA-256. > > This took me the better part of a day to research and figure out, > so would appreciate a second pair of eyes and/or some testing. > > New-ish versions of openssl use SHA-256 as the message digest alg. > when smime signing while other versions use SHA-1. This causes some > clients to reject the signature, which I believe to be the correct > behavior. > > PHP's openssl_pkcs7_* methods don't allow setting or reading the md > method so we are left with either parsing the entire DER binary > stream using something like phpseclib and pulling out the digest > method, forgoing the openssl_* methods and call the openssl executable's > smime tool to directly to do the signature, or we can use > openssl executable's > asn1parse command and search for a known string indicating > SHA-256 is being used. > > The first option is overkill, the second option would defeat the > purpose of having the more efficient openssl_* methods and would > require writing out a copy of the private key to temporary storage, so > I went with the third option. > > framework/Crypt/lib/Horde/Crypt/Smime.php | 18 +++++++++++++++++- > 1 file changed, 17 insertions(+), 1 deletion(-) > > http://github.com/horde/horde/commit/76c0d9d3f2af854e8b34e3536af68100332a203c > > ----------------------------------------------------------------------- According to the OpenSSL documentation at the latest stable version (https://www.openssl.org/docs/man1.1.0/crypto/PKCS7_sign.html) but also at the current master version (https://www.openssl.org/docs/manmaster/man3/PKCS7_sign.html) is says: "If a signer is specified it will use the default digest for the signing algorithm. This is SHA1 for both RSA and DSA keys." The source tells a different story though: https://github.com/openssl/openssl/blob/6f0ac0e2f27d9240516edb9a23b7863e7ad02898/crypto/dsa/dsa_ameth.c#L499 And this is the commit that changed the behavior: https://github.com/openssl/openssl/commit/44e0c2bae4bfd87d770480902618dbccde84fd81 If we could find out what the default digest method for the used public keys is, we can use that. I would prefer a solution without using the openssl binary, because we are actually trying to get rid of it: https://github.com/horde/horde/pull/218 -- Jan Schneider The Horde Project https://www.horde.org/ -- dev mailing list Frequently Asked Questions: http://wiki.horde.org/FAQ To unsubscribe, mail: [email protected]