cleaning
This commit is contained in:
		@@ -3,7 +3,7 @@ package protocol
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
 | 
			
		||||
	asn "github.com/InfiniteLoopSpace/go_S-MIME/asn1"
 | 
			
		||||
	asn "git.ma-al.com/goc_marek/go_S-MIME/asn1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// RawValue marshals val and returns the asn1.RawValue
 | 
			
		||||
 
 | 
			
		||||
@@ -5,19 +5,22 @@ import (
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
	"log"
 | 
			
		||||
 | 
			
		||||
	asn "github.com/InfiniteLoopSpace/go_S-MIME/asn1"
 | 
			
		||||
	oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	asn "git.ma-al.com/goc_marek/go_S-MIME/asn1"
 | 
			
		||||
	oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//AuthEnvelopedData ::= SEQUENCE {
 | 
			
		||||
//	version CMSVersion,
 | 
			
		||||
//	originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
 | 
			
		||||
//	recipientInfos RecipientInfos,
 | 
			
		||||
//	authEncryptedContentInfo EncryptedContentInfo,
 | 
			
		||||
///	authAttrs [1] IMPLICIT AuthAttributes OPTIONAL,
 | 
			
		||||
//	AuthEnvelopedData ::= SEQUENCE {
 | 
			
		||||
//		version CMSVersion,
 | 
			
		||||
//		originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
 | 
			
		||||
//		recipientInfos RecipientInfos,
 | 
			
		||||
//		authEncryptedContentInfo EncryptedContentInfo,
 | 
			
		||||
//
 | 
			
		||||
// /	authAttrs [1] IMPLICIT AuthAttributes OPTIONAL,
 | 
			
		||||
//
 | 
			
		||||
//	mac MessageAuthenticationCode,
 | 
			
		||||
//	unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }
 | 
			
		||||
//https://tools.ietf.org/html/rfc5083##section-2.1
 | 
			
		||||
//
 | 
			
		||||
// https://tools.ietf.org/html/rfc5083##section-2.1
 | 
			
		||||
type AuthEnvelopedData struct {
 | 
			
		||||
	Version        int
 | 
			
		||||
	OriginatorInfo asn1.RawValue   `asn1:"optional,tag:0"`
 | 
			
		||||
 
 | 
			
		||||
@@ -7,13 +7,13 @@ import (
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	asn "github.com/InfiniteLoopSpace/go_S-MIME/asn1"
 | 
			
		||||
	"github.com/InfiniteLoopSpace/go_S-MIME/b64"
 | 
			
		||||
	asn "git.ma-al.com/goc_marek/go_S-MIME/asn1"
 | 
			
		||||
	"git.ma-al.com/goc_marek/go_S-MIME/b64"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ContentInfo ::= SEQUENCE {
 | 
			
		||||
//   contentType ContentType,
 | 
			
		||||
//   content [0] EXPLICIT ANY DEFINED BY contentType }
 | 
			
		||||
//	ContentInfo ::= SEQUENCE {
 | 
			
		||||
//	  contentType ContentType,
 | 
			
		||||
//	  content [0] EXPLICIT ANY DEFINED BY contentType }
 | 
			
		||||
//
 | 
			
		||||
// ContentType ::= OBJECT IDENTIFIER
 | 
			
		||||
type ContentInfo struct {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"math/big"
 | 
			
		||||
 | 
			
		||||
	"github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	"git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var errUnsupported = errors.New("Unsupported hash function")
 | 
			
		||||
@@ -129,10 +129,10 @@ func encryptKeyECDH(key []byte, recipient *x509.Certificate) (kari KeyAgreeRecip
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ECCCMSSharedInfo ECC-CMS-SharedInfo ::= SEQUENCE {
 | 
			
		||||
//	keyInfo         AlgorithmIdentifier,
 | 
			
		||||
//	entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL,
 | 
			
		||||
//	suppPubInfo [2] EXPLICIT OCTET STRING  }
 | 
			
		||||
//	ECCCMSSharedInfo ECC-CMS-SharedInfo ::= SEQUENCE {
 | 
			
		||||
//		keyInfo         AlgorithmIdentifier,
 | 
			
		||||
//		entityUInfo [0] EXPLICIT OCTET STRING OPTIONAL,
 | 
			
		||||
//		suppPubInfo [2] EXPLICIT OCTET STRING  }
 | 
			
		||||
type ECCCMSSharedInfo struct {
 | 
			
		||||
	KeyInfo     pkix.AlgorithmIdentifier
 | 
			
		||||
	EntityUInfo []byte `asn1:"optional,explicit,tag:0"`
 | 
			
		||||
 
 | 
			
		||||
@@ -4,13 +4,13 @@ import (
 | 
			
		||||
	"crypto/x509/pkix"
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
 | 
			
		||||
	oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//EncryptedContentInfo ::= SEQUENCE {
 | 
			
		||||
//	contentType ContentType,
 | 
			
		||||
//	contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
 | 
			
		||||
//	encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL }
 | 
			
		||||
//	EncryptedContentInfo ::= SEQUENCE {
 | 
			
		||||
//		contentType ContentType,
 | 
			
		||||
//		contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
 | 
			
		||||
//		encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL }
 | 
			
		||||
type EncryptedContentInfo struct {
 | 
			
		||||
	EContentType               asn1.ObjectIdentifier
 | 
			
		||||
	ContentEncryptionAlgorithm pkix.AlgorithmIdentifier
 | 
			
		||||
 
 | 
			
		||||
@@ -3,12 +3,12 @@ package protocol
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
 | 
			
		||||
	oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// EncapsulatedContentInfo ::= SEQUENCE {
 | 
			
		||||
//   eContentType ContentType,
 | 
			
		||||
//   eContent [0] EXPLICIT OCTET STRING OPTIONAL }
 | 
			
		||||
//	EncapsulatedContentInfo ::= SEQUENCE {
 | 
			
		||||
//	  eContentType ContentType,
 | 
			
		||||
//	  eContent [0] EXPLICIT OCTET STRING OPTIONAL }
 | 
			
		||||
type EncapsulatedContentInfo struct {
 | 
			
		||||
	EContentType asn1.ObjectIdentifier ``                               // ContentType ::= OBJECT IDENTIFIER
 | 
			
		||||
	EContent     []byte                `asn1:"optional,explicit,tag:0"` //
 | 
			
		||||
 
 | 
			
		||||
@@ -5,16 +5,16 @@ import (
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
	"log"
 | 
			
		||||
 | 
			
		||||
	asn "github.com/InfiniteLoopSpace/go_S-MIME/asn1"
 | 
			
		||||
	oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	asn "git.ma-al.com/goc_marek/go_S-MIME/asn1"
 | 
			
		||||
	oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//EnvelopedData ::= SEQUENCE {
 | 
			
		||||
//	version CMSVersion,
 | 
			
		||||
//	originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
 | 
			
		||||
//	recipientInfos RecipientInfos,
 | 
			
		||||
//	encryptedContentInfo EncryptedContentInfo,
 | 
			
		||||
//	unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL }
 | 
			
		||||
//	EnvelopedData ::= SEQUENCE {
 | 
			
		||||
//		version CMSVersion,
 | 
			
		||||
//		originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
 | 
			
		||||
//		recipientInfos RecipientInfos,
 | 
			
		||||
//		encryptedContentInfo EncryptedContentInfo,
 | 
			
		||||
//		unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL }
 | 
			
		||||
type EnvelopedData struct {
 | 
			
		||||
	Version          int
 | 
			
		||||
	OriginatorInfo   asn1.RawValue        `asn1:"optional,tag:0"`
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import (
 | 
			
		||||
	"encoding/asn1"
 | 
			
		||||
	"errors"
 | 
			
		||||
 | 
			
		||||
	oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type pssParameters struct {
 | 
			
		||||
@@ -103,11 +103,11 @@ func newPSS(hash crypto.Hash, pub *rsa.PublicKey) (signatureAlgorithm pkix.Algor
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RSAESOAEPparams  ::=  SEQUENCE  {
 | 
			
		||||
//	hashFunc    [0] AlgorithmIdentifier DEFAULT sha1Identifier,
 | 
			
		||||
//	maskGenFunc [1] AlgorithmIdentifier DEFAULT mgf1SHA1Identifier,
 | 
			
		||||
//	pSourceFunc [2] AlgorithmIdentifier DEFAULT
 | 
			
		||||
//						pSpecifiedEmptyIdentifier  }
 | 
			
		||||
//	RSAESOAEPparams  ::=  SEQUENCE  {
 | 
			
		||||
//		hashFunc    [0] AlgorithmIdentifier DEFAULT sha1Identifier,
 | 
			
		||||
//		maskGenFunc [1] AlgorithmIdentifier DEFAULT mgf1SHA1Identifier,
 | 
			
		||||
//		pSourceFunc [2] AlgorithmIdentifier DEFAULT
 | 
			
		||||
//							pSpecifiedEmptyIdentifier  }
 | 
			
		||||
type RSAESOAEPparams struct {
 | 
			
		||||
	HashFunc    pkix.AlgorithmIdentifier `asn1:"optional,explicit,tag:0"`
 | 
			
		||||
	MaskGenFunc pkix.AlgorithmIdentifier `asn1:"optional,explicit,tag:1"`
 | 
			
		||||
 
 | 
			
		||||
@@ -13,15 +13,15 @@ import (
 | 
			
		||||
	"log"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//RecipientInfo ::= CHOICE {
 | 
			
		||||
//	ktri KeyTransRecipientInfo,
 | 
			
		||||
//	kari [1] KeyAgreeRecipientInfo,
 | 
			
		||||
//	kekri [2] KEKRecipientInfo,
 | 
			
		||||
//	pwri [3] PasswordRecipientInfo,
 | 
			
		||||
//	ori [4] OtherRecipientInfo }
 | 
			
		||||
//	RecipientInfo ::= CHOICE {
 | 
			
		||||
//		ktri KeyTransRecipientInfo,
 | 
			
		||||
//		kari [1] KeyAgreeRecipientInfo,
 | 
			
		||||
//		kekri [2] KEKRecipientInfo,
 | 
			
		||||
//		pwri [3] PasswordRecipientInfo,
 | 
			
		||||
//		ori [4] OtherRecipientInfo }
 | 
			
		||||
type RecipientInfo struct {
 | 
			
		||||
	KTRI  KeyTransRecipientInfo `asn1:"optional"`
 | 
			
		||||
	KARI  KeyAgreeRecipientInfo `asn1:"optional,tag:1"` //KeyAgreeRecipientInfo
 | 
			
		||||
@@ -42,11 +42,11 @@ func (recInfo *RecipientInfo) decryptKey(keyPair tls.Certificate) (key []byte, e
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//KeyTransRecipientInfo ::= SEQUENCE {
 | 
			
		||||
//	version CMSVersion,  -- always set to 0 or 2
 | 
			
		||||
//	rid RecipientIdentifier,
 | 
			
		||||
//	keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
 | 
			
		||||
//	encryptedKey EncryptedKey }
 | 
			
		||||
//	KeyTransRecipientInfo ::= SEQUENCE {
 | 
			
		||||
//		version CMSVersion,  -- always set to 0 or 2
 | 
			
		||||
//		rid RecipientIdentifier,
 | 
			
		||||
//		keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
 | 
			
		||||
//		encryptedKey EncryptedKey }
 | 
			
		||||
type KeyTransRecipientInfo struct {
 | 
			
		||||
	Version                int
 | 
			
		||||
	Rid                    RecipientIdentifier `asn1:"choice"`
 | 
			
		||||
@@ -112,9 +112,9 @@ func (ktri *KeyTransRecipientInfo) decryptKey(keyPair tls.Certificate) (key []by
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//RecipientIdentifier ::= CHOICE {
 | 
			
		||||
//	issuerAndSerialNumber IssuerAndSerialNumber,
 | 
			
		||||
//	subjectKeyIdentifier [0] SubjectKeyIdentifier }
 | 
			
		||||
//	RecipientIdentifier ::= CHOICE {
 | 
			
		||||
//		issuerAndSerialNumber IssuerAndSerialNumber,
 | 
			
		||||
//		subjectKeyIdentifier [0] SubjectKeyIdentifier }
 | 
			
		||||
type RecipientIdentifier struct {
 | 
			
		||||
	IAS IssuerAndSerialNumber `asn1:"optional"`
 | 
			
		||||
	SKI []byte                `asn1:"optional,tag:0"`
 | 
			
		||||
@@ -191,12 +191,12 @@ func encryptKeyRSA(key []byte, recipient *x509.Certificate) (ktri KeyTransRecipi
 | 
			
		||||
// ErrUnsupportedAlgorithm is returned if the algorithm is unsupported.
 | 
			
		||||
var ErrUnsupportedAlgorithm = errors.New("cms: cannot decrypt data: unsupported algorithm")
 | 
			
		||||
 | 
			
		||||
//KeyAgreeRecipientInfo ::= SEQUENCE {
 | 
			
		||||
//	version CMSVersion,  -- always set to 3
 | 
			
		||||
//	originator [0] EXPLICIT OriginatorIdentifierOrKey,
 | 
			
		||||
//	ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
 | 
			
		||||
//	keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
 | 
			
		||||
//	recipientEncryptedKeys RecipientEncryptedKeys }
 | 
			
		||||
//	KeyAgreeRecipientInfo ::= SEQUENCE {
 | 
			
		||||
//		version CMSVersion,  -- always set to 3
 | 
			
		||||
//		originator [0] EXPLICIT OriginatorIdentifierOrKey,
 | 
			
		||||
//		ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
 | 
			
		||||
//		keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
 | 
			
		||||
//		recipientEncryptedKeys RecipientEncryptedKeys }
 | 
			
		||||
type KeyAgreeRecipientInfo struct {
 | 
			
		||||
	Version                int
 | 
			
		||||
	Originator             OriginatorIdentifierOrKey `asn1:"explicit,choice,tag:0"`
 | 
			
		||||
@@ -205,53 +205,53 @@ type KeyAgreeRecipientInfo struct {
 | 
			
		||||
	RecipientEncryptedKeys []RecipientEncryptedKey   `asn1:"sequence"` //RecipientEncryptedKeys ::= SEQUENCE OF RecipientEncryptedKey
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//OriginatorIdentifierOrKey ::= CHOICE {
 | 
			
		||||
//	issuerAndSerialNumber IssuerAndSerialNumber,
 | 
			
		||||
//	subjectKeyIdentifier [0] SubjectKeyIdentifier,
 | 
			
		||||
//	originatorKey [1] OriginatorPublicKey }
 | 
			
		||||
//	OriginatorIdentifierOrKey ::= CHOICE {
 | 
			
		||||
//		issuerAndSerialNumber IssuerAndSerialNumber,
 | 
			
		||||
//		subjectKeyIdentifier [0] SubjectKeyIdentifier,
 | 
			
		||||
//		originatorKey [1] OriginatorPublicKey }
 | 
			
		||||
type OriginatorIdentifierOrKey struct {
 | 
			
		||||
	IAS           IssuerAndSerialNumber `asn1:"optional"`
 | 
			
		||||
	SKI           []byte                `asn1:"optional,tag:0"`
 | 
			
		||||
	OriginatorKey OriginatorPublicKey   `asn1:"optional,tag:1"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//OriginatorPublicKey ::= SEQUENCE {
 | 
			
		||||
//	algorithm AlgorithmIdentifier,
 | 
			
		||||
//	publicKey BIT STRING
 | 
			
		||||
//	OriginatorPublicKey ::= SEQUENCE {
 | 
			
		||||
//		algorithm AlgorithmIdentifier,
 | 
			
		||||
//		publicKey BIT STRING
 | 
			
		||||
type OriginatorPublicKey struct {
 | 
			
		||||
	Algorithm pkix.AlgorithmIdentifier
 | 
			
		||||
	PublicKey asn1.BitString
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//RecipientEncryptedKey ::= SEQUENCE {
 | 
			
		||||
//	rid KeyAgreeRecipientIdentifier,
 | 
			
		||||
//	encryptedKey EncryptedKey }
 | 
			
		||||
//	RecipientEncryptedKey ::= SEQUENCE {
 | 
			
		||||
//		rid KeyAgreeRecipientIdentifier,
 | 
			
		||||
//		encryptedKey EncryptedKey }
 | 
			
		||||
type RecipientEncryptedKey struct {
 | 
			
		||||
	RID          KeyAgreeRecipientIdentifier `asn1:"choice"`
 | 
			
		||||
	EncryptedKey []byte
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//KeyAgreeRecipientIdentifier ::= CHOICE {
 | 
			
		||||
//	issuerAndSerialNumber IssuerAndSerialNumber,
 | 
			
		||||
//	rKeyId [0] IMPLICIT RecipientKeyIdentifier }
 | 
			
		||||
//	KeyAgreeRecipientIdentifier ::= CHOICE {
 | 
			
		||||
//		issuerAndSerialNumber IssuerAndSerialNumber,
 | 
			
		||||
//		rKeyId [0] IMPLICIT RecipientKeyIdentifier }
 | 
			
		||||
type KeyAgreeRecipientIdentifier struct {
 | 
			
		||||
	IAS    IssuerAndSerialNumber  `asn1:"optional"`
 | 
			
		||||
	RKeyID RecipientKeyIdentifier `asn1:"optional,tag:0"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//RecipientKeyIdentifier ::= SEQUENCE {
 | 
			
		||||
//	subjectKeyIdentifier SubjectKeyIdentifier,
 | 
			
		||||
//	date GeneralizedTime OPTIONAL,
 | 
			
		||||
//	other OtherKeyAttribute OPTIONAL }
 | 
			
		||||
//	RecipientKeyIdentifier ::= SEQUENCE {
 | 
			
		||||
//		subjectKeyIdentifier SubjectKeyIdentifier,
 | 
			
		||||
//		date GeneralizedTime OPTIONAL,
 | 
			
		||||
//		other OtherKeyAttribute OPTIONAL }
 | 
			
		||||
type RecipientKeyIdentifier struct {
 | 
			
		||||
	SubjectKeyIdentifier []byte            //SubjectKeyIdentifier ::= OCTET STRING
 | 
			
		||||
	Date                 time.Time         `asn1:"optional"`
 | 
			
		||||
	Other                OtherKeyAttribute `asn1:"optional"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//OtherKeyAttribute ::= SEQUENCE {
 | 
			
		||||
//	keyAttrId OBJECT IDENTIFIER,
 | 
			
		||||
//	keyAttr ANY DEFINED BY keyAttrId OPTIONAL }
 | 
			
		||||
//	OtherKeyAttribute ::= SEQUENCE {
 | 
			
		||||
//		keyAttrId OBJECT IDENTIFIER,
 | 
			
		||||
//		keyAttr ANY DEFINED BY keyAttrId OPTIONAL }
 | 
			
		||||
type OtherKeyAttribute struct {
 | 
			
		||||
	KeyAttrID asn1.ObjectIdentifier
 | 
			
		||||
	KeyAttr   asn1.RawValue `asn1:"optional"`
 | 
			
		||||
 
 | 
			
		||||
@@ -17,8 +17,8 @@ import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	asn "github.com/InfiniteLoopSpace/go_S-MIME/asn1"
 | 
			
		||||
	oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	asn "git.ma-al.com/goc_marek/go_S-MIME/asn1"
 | 
			
		||||
	oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// SignedDataContent returns SignedData if ContentType is SignedData.
 | 
			
		||||
@@ -37,13 +37,13 @@ func (ci ContentInfo) SignedDataContent() (*SignedData, error) {
 | 
			
		||||
	return sd, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SignedData ::= SEQUENCE {
 | 
			
		||||
//   version CMSVersion,
 | 
			
		||||
//   digestAlgorithms DigestAlgorithmIdentifiers,
 | 
			
		||||
//   encapContentInfo EncapsulatedContentInfo,
 | 
			
		||||
//   certificates [0] IMPLICIT CertificateSet OPTIONAL,
 | 
			
		||||
//   crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
 | 
			
		||||
//   signerInfos SignerInfos }
 | 
			
		||||
//	SignedData ::= SEQUENCE {
 | 
			
		||||
//	  version CMSVersion,
 | 
			
		||||
//	  digestAlgorithms DigestAlgorithmIdentifiers,
 | 
			
		||||
//	  encapContentInfo EncapsulatedContentInfo,
 | 
			
		||||
//	  certificates [0] IMPLICIT CertificateSet OPTIONAL,
 | 
			
		||||
//	  crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
 | 
			
		||||
//	  signerInfos SignerInfos }
 | 
			
		||||
type SignedData struct {
 | 
			
		||||
	Version          int                        ``                          // CMSVersion ::= INTEGER { v0(0), v1(1), v2(2), v3(3), v4(4), v5(5) }
 | 
			
		||||
	DigestAlgorithms []pkix.AlgorithmIdentifier `asn1:"set"`                //DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier //DigestAlgorithmIdentifier ::= AlgorithmIdentifier
 | 
			
		||||
@@ -53,37 +53,37 @@ type SignedData struct {
 | 
			
		||||
	SignerInfos      []SignerInfo               `asn1:"set"`                // SignerInfos ::= SET OF SignerInfo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CertificateChoices ::= CHOICE {
 | 
			
		||||
//   certificate Certificate,
 | 
			
		||||
//   extendedCertificate [0] IMPLICIT ExtendedCertificate, -- Obsolete
 | 
			
		||||
//   v1AttrCert [1] IMPLICIT AttributeCertificateV1,       -- Obsolete
 | 
			
		||||
//   v2AttrCert [2] IMPLICIT AttributeCertificateV2,
 | 
			
		||||
//   other [3] IMPLICIT OtherCertificateFormat }
 | 
			
		||||
//	CertificateChoices ::= CHOICE {
 | 
			
		||||
//	  certificate Certificate,
 | 
			
		||||
//	  extendedCertificate [0] IMPLICIT ExtendedCertificate, -- Obsolete
 | 
			
		||||
//	  v1AttrCert [1] IMPLICIT AttributeCertificateV1,       -- Obsolete
 | 
			
		||||
//	  v2AttrCert [2] IMPLICIT AttributeCertificateV2,
 | 
			
		||||
//	  other [3] IMPLICIT OtherCertificateFormat }
 | 
			
		||||
type CertificateChoices struct {
 | 
			
		||||
	Cert       x509.Certificate       `asn1:"optional"`
 | 
			
		||||
	V2AttrCert asn1.RawValue          `asn1:"optional,tag:2"`
 | 
			
		||||
	Other      OtherCertificateFormat `asn1:"optional,tag:3"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OtherCertificateFormat ::= SEQUENCE {
 | 
			
		||||
//   otherCertFormat OBJECT IDENTIFIER,
 | 
			
		||||
//   otherCert ANY DEFINED BY otherCertFormat }
 | 
			
		||||
//	OtherCertificateFormat ::= SEQUENCE {
 | 
			
		||||
//	  otherCertFormat OBJECT IDENTIFIER,
 | 
			
		||||
//	  otherCert ANY DEFINED BY otherCertFormat }
 | 
			
		||||
type OtherCertificateFormat struct {
 | 
			
		||||
	OtherCertFormat asn1.ObjectIdentifier
 | 
			
		||||
	OtherCert       asn1.RawValue
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RevocationInfoChoice ::= CHOICE {
 | 
			
		||||
//   crl CertificateList,
 | 
			
		||||
//   other [1] IMPLICIT OtherRevocationInfoFormat }
 | 
			
		||||
//	RevocationInfoChoice ::= CHOICE {
 | 
			
		||||
//	  crl CertificateList,
 | 
			
		||||
//	  other [1] IMPLICIT OtherRevocationInfoFormat }
 | 
			
		||||
type RevocationInfoChoice struct {
 | 
			
		||||
	Crl   pkix.CertificateList      `asn1:"optional"`
 | 
			
		||||
	Other OtherRevocationInfoFormat `asn1:"optional,tag:1"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OtherRevocationInfoFormat ::= SEQUENCE {
 | 
			
		||||
//   otherRevInfoFormat OBJECT IDENTIFIER,
 | 
			
		||||
//   otherRevInfo ANY DEFINED BY otherRevInfoFormat }
 | 
			
		||||
//	OtherRevocationInfoFormat ::= SEQUENCE {
 | 
			
		||||
//	  otherRevInfoFormat OBJECT IDENTIFIER,
 | 
			
		||||
//	  otherRevInfo ANY DEFINED BY otherRevInfoFormat }
 | 
			
		||||
type OtherRevocationInfoFormat struct {
 | 
			
		||||
	OtherRevInfoFormat asn1.ObjectIdentifier
 | 
			
		||||
	OtherRevInfo       asn1.RawValue
 | 
			
		||||
 
 | 
			
		||||
@@ -9,18 +9,18 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	asn "github.com/InfiniteLoopSpace/go_S-MIME/asn1"
 | 
			
		||||
	oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
 | 
			
		||||
	asn "git.ma-al.com/goc_marek/go_S-MIME/asn1"
 | 
			
		||||
	oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// SignerInfo ::= SEQUENCE {
 | 
			
		||||
//   version CMSVersion,
 | 
			
		||||
//   sid SignerIdentifier,
 | 
			
		||||
//   digestAlgorithm DigestAlgorithmIdentifier,
 | 
			
		||||
//   signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,
 | 
			
		||||
//   signatureAlgorithm SignatureAlgorithmIdentifier,
 | 
			
		||||
//   signature SignatureValue,
 | 
			
		||||
//   unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL }
 | 
			
		||||
//	SignerInfo ::= SEQUENCE {
 | 
			
		||||
//	  version CMSVersion,
 | 
			
		||||
//	  sid SignerIdentifier,
 | 
			
		||||
//	  digestAlgorithm DigestAlgorithmIdentifier,
 | 
			
		||||
//	  signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,
 | 
			
		||||
//	  signatureAlgorithm SignatureAlgorithmIdentifier,
 | 
			
		||||
//	  signature SignatureValue,
 | 
			
		||||
//	  unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL }
 | 
			
		||||
type SignerInfo struct {
 | 
			
		||||
	Version            int                      ``                          // CMSVersion ::= INTEGER    { v0(0), v1(1), v2(2), v3(3), v4(4), v5(5) }
 | 
			
		||||
	SID                SignerIdentifier         `asn1:"choice"`             //
 | 
			
		||||
@@ -31,9 +31,9 @@ type SignerInfo struct {
 | 
			
		||||
	UnsignedAttrs      []Attribute              `asn1:"set,optional,tag:1"` // UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//SignerIdentifier ::= CHOICE {
 | 
			
		||||
//	issuerAndSerialNumber IssuerAndSerialNumber,
 | 
			
		||||
//	subjectKeyIdentifier [0] SubjectKeyIdentifier }
 | 
			
		||||
//	SignerIdentifier ::= CHOICE {
 | 
			
		||||
//		issuerAndSerialNumber IssuerAndSerialNumber,
 | 
			
		||||
//		subjectKeyIdentifier [0] SubjectKeyIdentifier }
 | 
			
		||||
type SignerIdentifier struct {
 | 
			
		||||
	IAS IssuerAndSerialNumber `asn1:"optional"`
 | 
			
		||||
	SKI []byte                `asn1:"optional,tag:0"`
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user