From 3dab9a5c1fa40cae38afc8e4873e3fbbbbf85956 Mon Sep 17 00:00:00 2001 From: Marek Goc Date: Sat, 22 Oct 2022 12:03:53 +0200 Subject: [PATCH] cleaning --- README.md | 22 ++++----- cms/cms.go | 6 +-- cms/cms_test.go | 4 +- cms/protocol/asn1.go | 2 +- cms/protocol/authenvdata.go | 21 +++++---- cms/protocol/contentinfo.go | 10 ++--- cms/protocol/ecdh.go | 10 ++--- cms/protocol/eci.go | 10 ++--- cms/protocol/enci.go | 8 ++-- cms/protocol/envelopeddata.go | 16 +++---- cms/protocol/pssoaep.go | 12 ++--- cms/protocol/reciepientinfo.go | 82 +++++++++++++++++----------------- cms/protocol/signeddata.go | 48 ++++++++++---------- cms/protocol/signerinfo.go | 26 +++++------ smime/smime.go | 8 ++-- smime/smime_test.go | 10 ++--- timestamp/info.go | 40 ++++++++--------- timestamp/pkistatusinfo.go | 10 ++--- timestamp/request.go | 28 ++++++------ timestamp/response.go | 10 ++--- timestamp/timestamp.go | 6 +-- 21 files changed, 196 insertions(+), 193 deletions(-) diff --git a/README.md b/README.md index de5fca3..8c95c18 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,15 @@ This is a partial implementation of S/MIME 4.0 in golang. It consists of the following packages -- asn1[1] - ASN.1 marshalling and unmarshalling [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/asn1?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/asn1) -- b64 - Pretty base64 encoding for S/MIME (basically just the PEM body) [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/b64?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/b64) -- cms(cms/protocol)[2] - Cryptographic Message Syntax [rfc5652](https://tools.ietf.org/html/rfc5652)[![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/cms?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/cms) [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/cms/protocol?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/cms/protocol) -- mime - Parsing for mime/multipart messages needed for S/MIME [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/mime?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/mime) -- oid[3] - ASN.1 object identifiers and related crypto [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/oid?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/oid) -- openssl - Shelled-out openssl for testing [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/openssl?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/openssl) -- pki[4] - Creates x.509 pki for testing [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/pki?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/pki) -- smime Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 [rfc5751-bis-12](https://tools.ietf.org/html/draft-ietf-lamps-rfc5751-bis-12) [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/smime?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/smime) -- timestamp[5] - Time-Stamp Protocol (TSP) [rfc3161](https://tools.ietf.org/html/rfc3161) [![GoDoc](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/timestamp?status.svg)](https://godoc.org/github.com/InfiniteLoopSpace/go_S-MIME/timestamp) +- asn1[1] - ASN.1 marshalling and unmarshalling +- b64 - Pretty base64 encoding for S/MIME (basically just the PEM body) +- cms(cms/protocol)[2] - Cryptographic Message Syntax [rfc5652](https://tools.ietf.org/html/rfc5652) +- mime - Parsing for mime/multipart messages needed for S/MIME +- oid[3] - ASN.1 object identifiers and related crypto +- openssl - Shelled-out openssl for testing +- pki[4] - Creates x.509 pki for testing +- smime Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 4.0 [rfc5751-bis-12](https://tools.ietf.org/html/draft-ietf-lamps-rfc5751-bis-12) +- timestamp[5] - Time-Stamp Protocol (TSP) [rfc3161](https://tools.ietf.org/html/rfc3161) It supports enveloped data with AES in CBC mode. Decryption also works with (3)DES. Authenticated-Enveloped-Data Content Type is also supported with AES-GCM and ChaCha20-Poly1305. Also RSAES-OAEP and RSASSA-PSS is supported. @@ -27,7 +27,7 @@ This is covered in ### Encryption and decryption ```go -import "github.com/InfiniteLoopSpace/go_S-MIME/smime" +import "git.ma-al.com/goc_marek/go_S-MIME/smime" // Alice mail := "From: Alice\nTo: Bob\n\nHello World!" @@ -41,7 +41,7 @@ plaintext, _ := SMIME.Decrypt(ciphertext) ### Signing and verfication ```go -import "github.com/InfiniteLoopSpace/go_S-MIME/smime" +import "git.ma-al.com/goc_marek/go_S-MIME/smime" // Alice AlicekeyPair, _ := tls.LoadX509KeyPair("AliceCert", "AliceKey") diff --git a/cms/cms.go b/cms/cms.go index 3744d67..a513a38 100644 --- a/cms/cms.go +++ b/cms/cms.go @@ -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 diff --git a/cms/cms_test.go b/cms/cms_test.go index 9b367b1..705f9f0 100644 --- a/cms/cms_test.go +++ b/cms/cms_test.go @@ -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 ( diff --git a/cms/protocol/asn1.go b/cms/protocol/asn1.go index 018d1d7..c7d93e2 100644 --- a/cms/protocol/asn1.go +++ b/cms/protocol/asn1.go @@ -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 diff --git a/cms/protocol/authenvdata.go b/cms/protocol/authenvdata.go index 13549aa..30dda3a 100644 --- a/cms/protocol/authenvdata.go +++ b/cms/protocol/authenvdata.go @@ -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"` diff --git a/cms/protocol/contentinfo.go b/cms/protocol/contentinfo.go index b7c02fc..fcb24d3 100644 --- a/cms/protocol/contentinfo.go +++ b/cms/protocol/contentinfo.go @@ -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 { diff --git a/cms/protocol/ecdh.go b/cms/protocol/ecdh.go index 3d054df..bfce29d 100644 --- a/cms/protocol/ecdh.go +++ b/cms/protocol/ecdh.go @@ -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"` diff --git a/cms/protocol/eci.go b/cms/protocol/eci.go index b2b3d57..3b0809a 100644 --- a/cms/protocol/eci.go +++ b/cms/protocol/eci.go @@ -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 diff --git a/cms/protocol/enci.go b/cms/protocol/enci.go index 7a10a3e..bd07967 100644 --- a/cms/protocol/enci.go +++ b/cms/protocol/enci.go @@ -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"` // diff --git a/cms/protocol/envelopeddata.go b/cms/protocol/envelopeddata.go index 17ee42d..8c180a9 100644 --- a/cms/protocol/envelopeddata.go +++ b/cms/protocol/envelopeddata.go @@ -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"` diff --git a/cms/protocol/pssoaep.go b/cms/protocol/pssoaep.go index 273ccc7..8766e8d 100644 --- a/cms/protocol/pssoaep.go +++ b/cms/protocol/pssoaep.go @@ -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"` diff --git a/cms/protocol/reciepientinfo.go b/cms/protocol/reciepientinfo.go index 50c8e6f..db0a042 100644 --- a/cms/protocol/reciepientinfo.go +++ b/cms/protocol/reciepientinfo.go @@ -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"` diff --git a/cms/protocol/signeddata.go b/cms/protocol/signeddata.go index 4feebc7..f8d12f0 100644 --- a/cms/protocol/signeddata.go +++ b/cms/protocol/signeddata.go @@ -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 diff --git a/cms/protocol/signerinfo.go b/cms/protocol/signerinfo.go index 146c7d4..96cdf59 100644 --- a/cms/protocol/signerinfo.go +++ b/cms/protocol/signerinfo.go @@ -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"` diff --git a/smime/smime.go b/smime/smime.go index 4761cef..7e3a026 100644 --- a/smime/smime.go +++ b/smime/smime.go @@ -13,12 +13,12 @@ import ( "log" "strings" - "github.com/InfiniteLoopSpace/go_S-MIME/oid" + "git.ma-al.com/goc_marek/go_S-MIME/oid" - "github.com/InfiniteLoopSpace/go_S-MIME/b64" + "git.ma-al.com/goc_marek/go_S-MIME/b64" - cms "github.com/InfiniteLoopSpace/go_S-MIME/cms" - mime "github.com/InfiniteLoopSpace/go_S-MIME/mime" + cms "git.ma-al.com/goc_marek/go_S-MIME/cms" + mime "git.ma-al.com/goc_marek/go_S-MIME/mime" ) // SMIME is an instance of cms to en-/decrypt and sign/verfiy SMIME messages diff --git a/smime/smime_test.go b/smime/smime_test.go index f2e4cab..572dee8 100644 --- a/smime/smime_test.go +++ b/smime/smime_test.go @@ -11,9 +11,9 @@ import ( "strings" "testing" - "github.com/InfiniteLoopSpace/go_S-MIME/cms" - "github.com/InfiniteLoopSpace/go_S-MIME/openssl" - "github.com/InfiniteLoopSpace/go_S-MIME/pki" + "git.ma-al.com/goc_marek/go_S-MIME/cms" + "git.ma-al.com/goc_marek/go_S-MIME/openssl" + "git.ma-al.com/goc_marek/go_S-MIME/pki" ) var ( @@ -233,7 +233,7 @@ vCunrnVNqcBU+B1O8BiR4yPWnLMcRSyFRVJQA7HCp8JlDV6abXd8vPFfXuC9WN7rOvTKF8 Y0ZB9qANMAsGA1UdDzEEAwIAEA== -----END PRIVATE KEY-----` -//https://github.com/fullsailor/pkcs7/issues/9 +// https://github.com/fullsailor/pkcs7/issues/9 func TestSampleiTunesReceipt(t *testing.T) { b, err := base64.StdEncoding.DecodeString(strings.TrimSpace(iTunesReceipt)) @@ -359,7 +359,7 @@ VZXl0gKgxSOmDrcp1eQxdlymzrPv9U60wUJ0bkPfrU9qZj3mJrmrkQk61JTe3j6/ QfjfFBG9JG2mUmYQP1KQ3SypGHzDW8vngvsGu//tNU0NFfOqQu4bYU4VpQl0nPtD 4B85NkrgvQsWAQ==` -//https://github.com/fullsailor/pkcs7/issues/11 +// https://github.com/fullsailor/pkcs7/issues/11 func TestSCEP(t *testing.T) { b, err := base64.StdEncoding.DecodeString(SCEP) diff --git a/timestamp/info.go b/timestamp/info.go index 3438d18..4264c9d 100644 --- a/timestamp/info.go +++ b/timestamp/info.go @@ -6,28 +6,28 @@ import ( "math/big" "time" - asn "github.com/InfiniteLoopSpace/go_S-MIME/asn1" - cms "github.com/InfiniteLoopSpace/go_S-MIME/cms/protocol" - oid "github.com/InfiniteLoopSpace/go_S-MIME/oid" + asn "git.ma-al.com/goc_marek/go_S-MIME/asn1" + cms "git.ma-al.com/goc_marek/go_S-MIME/cms/protocol" + oid "git.ma-al.com/goc_marek/go_S-MIME/oid" ) -// TSTInfo ::= SEQUENCE { -// version INTEGER { v1(1) }, -// policy TSAPolicyId, -// messageImprint MessageImprint, -// -- MUST have the same value as the similar field in -// -- TimeStampReq -// serialNumber INTEGER, -// -- Time-Stamping users MUST be ready to accommodate integers -// -- up to 160 bits. -// genTime GeneralizedTime, -// accuracy Accuracy OPTIONAL, -// ordering BOOLEAN DEFAULT FALSE, -// nonce INTEGER OPTIONAL, -// -- MUST be present if the similar field was present -// -- in TimeStampReq. In that case it MUST have the same value. -// tsa [0] GeneralName OPTIONAL, -// extensions [1] IMPLICIT Extensions OPTIONAL } +// TSTInfo ::= SEQUENCE { +// version INTEGER { v1(1) }, +// policy TSAPolicyId, +// messageImprint MessageImprint, +// -- MUST have the same value as the similar field in +// -- TimeStampReq +// serialNumber INTEGER, +// -- Time-Stamping users MUST be ready to accommodate integers +// -- up to 160 bits. +// genTime GeneralizedTime, +// accuracy Accuracy OPTIONAL, +// ordering BOOLEAN DEFAULT FALSE, +// nonce INTEGER OPTIONAL, +// -- MUST be present if the similar field was present +// -- in TimeStampReq. In that case it MUST have the same value. +// tsa [0] GeneralName OPTIONAL, +// extensions [1] IMPLICIT Extensions OPTIONAL } type TSTInfo struct { Version int Policy asn1.ObjectIdentifier diff --git a/timestamp/pkistatusinfo.go b/timestamp/pkistatusinfo.go index 079f57d..51321e9 100644 --- a/timestamp/pkistatusinfo.go +++ b/timestamp/pkistatusinfo.go @@ -5,13 +5,13 @@ import ( "fmt" "strings" - cms "github.com/InfiniteLoopSpace/go_S-MIME/cms/protocol" + cms "git.ma-al.com/goc_marek/go_S-MIME/cms/protocol" ) -// PKIStatusInfo ::= SEQUENCE { -// status PKIStatus, -// statusString PKIFreeText OPTIONAL, -// failInfo PKIFailureInfo OPTIONAL } +// PKIStatusInfo ::= SEQUENCE { +// status PKIStatus, +// statusString PKIFreeText OPTIONAL, +// failInfo PKIFailureInfo OPTIONAL } type PKIStatusInfo struct { Status int StatusString PKIFreeText `asn1:"optional"` diff --git a/timestamp/request.go b/timestamp/request.go index f7f6e1b..f407b38 100644 --- a/timestamp/request.go +++ b/timestamp/request.go @@ -12,19 +12,19 @@ import ( "encoding/asn1" "math/big" - cms "github.com/InfiniteLoopSpace/go_S-MIME/cms/protocol" - oid "github.com/InfiniteLoopSpace/go_S-MIME/oid" + cms "git.ma-al.com/goc_marek/go_S-MIME/cms/protocol" + oid "git.ma-al.com/goc_marek/go_S-MIME/oid" ) -// TimeStampReq ::= SEQUENCE { -// version INTEGER { v1(1) }, -// messageImprint MessageImprint, -// --a hash algorithm OID and the hash value of the data to be -// --time-stamped -// reqPolicy TSAPolicyId OPTIONAL, -// nonce INTEGER OPTIONAL, -// certReq BOOLEAN DEFAULT FALSE, -// extensions [0] IMPLICIT Extensions OPTIONAL } +// TimeStampReq ::= SEQUENCE { +// version INTEGER { v1(1) }, +// messageImprint MessageImprint, +// --a hash algorithm OID and the hash value of the data to be +// --time-stamped +// reqPolicy TSAPolicyId OPTIONAL, +// nonce INTEGER OPTIONAL, +// certReq BOOLEAN DEFAULT FALSE, +// extensions [0] IMPLICIT Extensions OPTIONAL } type TimeStampReq struct { Version int MessageImprint MessageImprint @@ -93,9 +93,9 @@ func (req TimeStampReq) Do(url string) (TimeStampResp, error) { return ParseResponse(buf.Bytes()) } -//MessageImprint ::= SEQUENCE { -// hashAlgorithm AlgorithmIdentifier, -// hashedMessage OCTET STRING } +// MessageImprint ::= SEQUENCE { +// hashAlgorithm AlgorithmIdentifier, +// hashedMessage OCTET STRING } type MessageImprint struct { HashAlgorithm pkix.AlgorithmIdentifier HashedMessage []byte diff --git a/timestamp/response.go b/timestamp/response.go index 6b193cf..76fe885 100644 --- a/timestamp/response.go +++ b/timestamp/response.go @@ -1,13 +1,13 @@ package timestamp import ( - asn "github.com/InfiniteLoopSpace/go_S-MIME/asn1" - cms "github.com/InfiniteLoopSpace/go_S-MIME/cms/protocol" + asn "git.ma-al.com/goc_marek/go_S-MIME/asn1" + cms "git.ma-al.com/goc_marek/go_S-MIME/cms/protocol" ) -//TimeStampResp ::= SEQUENCE { -// status PKIStatusInfo, -// timeStampToken TimeStampToken OPTIONAL } +// TimeStampResp ::= SEQUENCE { +// status PKIStatusInfo, +// timeStampToken TimeStampToken OPTIONAL } type TimeStampResp struct { Status PKIStatusInfo TimeStampToken cms.ContentInfo `asn1:"optional"` diff --git a/timestamp/timestamp.go b/timestamp/timestamp.go index 780c45a..33b5ab4 100644 --- a/timestamp/timestamp.go +++ b/timestamp/timestamp.go @@ -6,9 +6,9 @@ import ( "crypto/x509" "time" - asn1 "github.com/InfiniteLoopSpace/go_S-MIME/asn1" - cms "github.com/InfiniteLoopSpace/go_S-MIME/cms/protocol" - oid "github.com/InfiniteLoopSpace/go_S-MIME/oid" + asn1 "git.ma-al.com/goc_marek/go_S-MIME/asn1" + cms "git.ma-al.com/goc_marek/go_S-MIME/cms/protocol" + oid "git.ma-al.com/goc_marek/go_S-MIME/oid" ) const (