cleaning
This commit is contained in:
@ -9,9 +9,9 @@ import (
|
||||
"log"
|
||||
"time"
|
||||
|
||||
protocol "github.com/InfiniteLoopSpace/go_S-MIME/cms/protocol"
|
||||
oid "github.com/InfiniteLoopSpace/go_S-MIME/oid"
|
||||
timestamp "github.com/InfiniteLoopSpace/go_S-MIME/timestamp"
|
||||
protocol "git.ma-al.com/goc_marek/go_S-MIME/cms/protocol"
|
||||
oid "git.ma-al.com/goc_marek/go_S-MIME/oid"
|
||||
timestamp "git.ma-al.com/goc_marek/go_S-MIME/timestamp"
|
||||
)
|
||||
|
||||
// CMS is an instance of cms to en-/decrypt and sign/verfiy CMS data
|
||||
|
@ -12,8 +12,8 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
openssl "github.com/InfiniteLoopSpace/go_S-MIME/openssl"
|
||||
pki "github.com/InfiniteLoopSpace/go_S-MIME/pki"
|
||||
openssl "git.ma-al.com/goc_marek/go_S-MIME/openssl"
|
||||
pki "git.ma-al.com/goc_marek/go_S-MIME/pki"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -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