-
Notifications
You must be signed in to change notification settings - Fork 214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sha256 support #19
base: master
Are you sure you want to change the base?
Sha256 support #19
Conversation
copies a few private methods from the stdlib x509 package.
Uses the x509util package to get a wider range of supported hash functions.
Travis fails with 1.6/1.7 but passes with 1.8+
I can put those behind a build flag |
pkcs7.go
Outdated
@@ -864,13 +934,19 @@ func encryptDESCBC(content []byte) ([]byte, *encryptedContentInfo, error) { | |||
// ContentEncryptionAlgorithm = EncryptionAlgorithmAES128GCM | |||
// | |||
// TODO(fullsailor): Add support for encrypting content with other algorithms | |||
func Encrypt(content []byte, recipients []*x509.Certificate) ([]byte, error) { | |||
func Encrypt(content []byte, recipients []*x509.Certificate, opts ...Option) ([]byte, error) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This changes the function signature, but is still backwards compatible depending on how Encrypt is called.
pkcs7.Encrypt(content, recipients)
would still compile, but if someone created a callback, or interface their code would break.
Possible solutions:
- break compatibility and create a release with a new git tag
- create a new EncryptWithOptions function
- use global variables (personally I would avoid but I can work with that option if required)
Any hopes of this seeing a merge? |
@groob This breaks the |
The algorithm could be composed, because:
|
Go 1.10 is more strict about Asn.1 annotations. This removes the incorrect “explicit” annotation from encryptedContentInfo.EncryptedContent. I’m also using openssl to generate the fixture now so that we aren’t testing with our own output for `Decrypt()` Fixes fullsailor#31
Fix failure to parse enveloped data in Go 1.10
Fix signer digest algorithm
Previously the encrypt method was grouping together multiple algorithms and handling them the same. In the decryption code this somewhat makes sense because the crypto.Cipher will take care of figuring out which algorithm it needs to use. When encrypting though if AES-128-CBC is requested we were encrypting as AES-128-GCM which didn't make sense.
Add AES-128-CBC support
Support setting the encalg when signing without attr
…content EncryptedContent needs to be implicitly tagged and not explicit (updated)
Hi @fullsailor,
I use the pkcs7 package in my SCEP implementation. Although SCEP supports SHA1 and 3DES the recommended defaults are AES with SHA256.
I began working on implementing support for SHA256 and possibly SHA512 as well in this branch.
Most of the code in this pull request is actually coming from a new package,
github.com/fullsailor/pkcs7/internal/x509util
which is just some exported helpers fromcrypto/x509
. I use the helpers to determine the hash function/signature algorithm when needed.I would love your input on the direction on this pull request, and what requirements you would have for getting a change like this into the pkcs7 package.
Thanks!