Added support for RSASSA-PSS and RSAES-OAEP.

This commit is contained in:
InfiniteLoopSpace
2018-12-21 14:43:59 +01:00
parent 5f34d82562
commit 3f58f9a4b2
10 changed files with 510 additions and 181 deletions

View File

@ -6,11 +6,15 @@ package smime
import (
"crypto/tls"
"crypto/x509"
"crypto/x509/pkix"
"encoding/asn1"
"encoding/base64"
"errors"
"log"
"strings"
"github.com/InfiniteLoopSpace/go_S-MIME/oid"
"github.com/InfiniteLoopSpace/go_S-MIME/b64"
cms "github.com/InfiniteLoopSpace/go_S-MIME/cms"
@ -23,6 +27,26 @@ type SMIME struct {
CMS *cms.CMS
}
var oidsmimeCapabilities = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 9, 15}
//SMIMECapability ::= SEQUENCE {
//capabilityID OBJECT IDENTIFIER,
//parameters ANY DEFINED BY capabilityID OPTIONAL }
//SMIMECapabilities ::= SEQUENCE OF SMIMECapability
func (smime *SMIME) addSMIMECapabilitesAttr() (err error) {
var smimeCapabilities []pkix.AlgorithmIdentifier
smimeCapabilities = append(smimeCapabilities, pkix.AlgorithmIdentifier{Algorithm: oid.EncryptionAlgorithmAES128CBC})
smimeCapabilities = append(smimeCapabilities, pkix.AlgorithmIdentifier{Algorithm: oid.AEADChaCha20Poly1305})
err = smime.CMS.AddAttribute(oidsmimeCapabilities, smimeCapabilities)
return
}
// New create a new instance of SMIME with given keyPairs.
func New(keyPair ...tls.Certificate) (smime *SMIME, err error) {
CMS, err := cms.New(keyPair...)
@ -31,6 +55,10 @@ func New(keyPair ...tls.Certificate) (smime *SMIME, err error) {
}
smime = &SMIME{CMS}
err = smime.addSMIMECapabilitesAttr()
if err != nil {
return
}
return
}