Internet Engineering Task Force (IETF)                         J. Schaad
Request for Comments: 6268                       Soaring Hawk Consulting
Updates: 5911                                                  S. Turner
Category: Informational                                       IECA, Inc.
ISSN: 2070-1721                                                July 2011
        
Internet Engineering Task Force (IETF)                         J. Schaad
Request for Comments: 6268                       Soaring Hawk Consulting
Updates: 5911                                                  S. Turner
Category: Informational                                       IECA, Inc.
ISSN: 2070-1721                                                July 2011
        

Additional New ASN.1 Modules for the Cryptographic Message Syntax (CMS) and the Public Key Infrastructure Using X.509 (PKIX)

用于加密消息语法(CMS)和使用X.509(PKIX)的公钥基础设施的新增ASN.1模块

Abstract

摘要

The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates some auxiliary ASN.1 modules to conform to the 2008 version of ASN.1; the 1988 ASN.1 modules remain the normative version. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax.

加密消息语法(CMS)格式和许多相关格式使用ASN.1表示。当前ASN.1模块符合1988年版ASN.1。本文档更新了一些辅助ASN.1模块,以符合ASN.1的2008版本;1988年ASN.1模块仍然是标准版本。导线上没有对任何格式进行更改的位;这只是对语法的一个更改。

Status of This Memo

关于下段备忘

This document is not an Internet Standards Track specification; it is published for informational purposes.

本文件不是互联网标准跟踪规范;它是为了提供信息而发布的。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Not all documents approved by the IESG are a candidate for any level of Internet Standard; see Section 2 of RFC 5741.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。并非IESG批准的所有文件都适用于任何级别的互联网标准;见RFC 5741第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6268.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc6268.

Copyright Notice

版权公告

Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2011 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从该文档中提取的代码组件必须

include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

包括信托法律条款第4.e节中所述的简化BSD许可证文本,且不提供简化BSD许可证中所述的担保。

This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English.

本文件可能包含2008年11月10日之前发布或公开的IETF文件或IETF贡献中的材料。控制某些材料版权的人员可能未授予IETF信托允许在IETF标准流程之外修改此类材料的权利。在未从控制此类材料版权的人员处获得充分许可的情况下,不得在IETF标准流程之外修改本文件,也不得在IETF标准流程之外创建其衍生作品,除了将其格式化以RFC形式发布或将其翻译成英语以外的其他语言。

Table of Contents

目录

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1.  ASN.1 Updates (2002 to 2008) . . . . . . . . . . . . . . .  4
     1.2.  Requirements Terminology . . . . . . . . . . . . . . . . .  4
   2.  ASN.1 Module RFC 3274  . . . . . . . . . . . . . . . . . . . .  5
   3.  ASN.1 Module RFC 3779  . . . . . . . . . . . . . . . . . . . .  7
   4.  ASN.1 Module RFC 6019  . . . . . . . . . . . . . . . . . . . . 10
   5.  ASN.1 Module RFC 4073  . . . . . . . . . . . . . . . . . . . . 11
   6.  ASN.1 Module RFC 4231  . . . . . . . . . . . . . . . . . . . . 12
   7.  ASN.1 Module RFC 4334  . . . . . . . . . . . . . . . . . . . . 15
   8.  ASN.1 Module RFC 5083  . . . . . . . . . . . . . . . . . . . . 16
   9.  ASN.1 Module RFC 5652  . . . . . . . . . . . . . . . . . . . . 18
   10. ASN.1 Module RFC 5752  . . . . . . . . . . . . . . . . . . . . 29
   11. Module Identifiers in ASN.1  . . . . . . . . . . . . . . . . . 30
   12. Security Considerations  . . . . . . . . . . . . . . . . . . . 32
   13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 32
     13.1. Normative References . . . . . . . . . . . . . . . . . . . 32
     13.2. Informative References . . . . . . . . . . . . . . . . . . 33
        
   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1.  ASN.1 Updates (2002 to 2008) . . . . . . . . . . . . . . .  4
     1.2.  Requirements Terminology . . . . . . . . . . . . . . . . .  4
   2.  ASN.1 Module RFC 3274  . . . . . . . . . . . . . . . . . . . .  5
   3.  ASN.1 Module RFC 3779  . . . . . . . . . . . . . . . . . . . .  7
   4.  ASN.1 Module RFC 6019  . . . . . . . . . . . . . . . . . . . . 10
   5.  ASN.1 Module RFC 4073  . . . . . . . . . . . . . . . . . . . . 11
   6.  ASN.1 Module RFC 4231  . . . . . . . . . . . . . . . . . . . . 12
   7.  ASN.1 Module RFC 4334  . . . . . . . . . . . . . . . . . . . . 15
   8.  ASN.1 Module RFC 5083  . . . . . . . . . . . . . . . . . . . . 16
   9.  ASN.1 Module RFC 5652  . . . . . . . . . . . . . . . . . . . . 18
   10. ASN.1 Module RFC 5752  . . . . . . . . . . . . . . . . . . . . 29
   11. Module Identifiers in ASN.1  . . . . . . . . . . . . . . . . . 30
   12. Security Considerations  . . . . . . . . . . . . . . . . . . . 32
   13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 32
     13.1. Normative References . . . . . . . . . . . . . . . . . . . 32
     13.2. Informative References . . . . . . . . . . . . . . . . . . 33
        
1. Introduction
1. 介绍

Some developers would like the IETF to use the latest version of ASN.1 in its standards. Most of the RFCs that relate to security protocols still use ASN.1 from the 1988 standard, which has been deprecated. This is particularly true for the standards that relate to PKIX, CMS, and Secure/Multipurpose Internet Mail Extensions (S/MIME).

一些开发人员希望IETF在其标准中使用最新版本的ASN.1。大多数与安全协议相关的RFC仍然使用1988年标准中的ASN.1,该标准已被弃用。这对于与PKIX、CMS和安全/多用途Internet邮件扩展(S/MIME)相关的标准尤其如此。

In this document we have either changed the syntax to use the 2008 ASN.1 standard, or done some updates from previous conversions. The ASN.1 modules updated came from the following RFCs:

在本文档中,我们更改了语法以使用2008 ASN.1标准,或者对以前的转换进行了一些更新。更新的ASN.1模块来自以下RFC:

o RFC 3274, Compressed Data Content Type for Cryptographic Message Syntax (CMS) [RFC3274].

o RFC 3274,加密消息语法(CMS)的压缩数据内容类型[RFC3274]。

o RFC 3779, X.509 Extensions for IP Addresses and AS Identifiers [RFC3779].

o RFC 3779,用于IP地址和AS标识符的X.509扩展[RFC3779]。

o RFC 6019, BinaryTime: An Alternate Format for Representing Date and Time in ASN.1 [RFC6019].

o RFC6019,BinaryTime:在ASN.1[RFC6019]中表示日期和时间的另一种格式。

o RFC 4073, Protecting Multiple Contents with the Cryptographic Message Syntax (CMS) [RFC4073].

o RFC 4073,使用加密消息语法(CMS)保护多个内容[RFC4073]。

o RFC 4231, Identifiers and Test Vectors for HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 [RFC4231].

o RFC 4231,HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384和HMAC-SHA-512的标识符和测试向量[RFC4231]。

o RFC 4334, Certificate Extensions and Attributes Supporting Authentication in Point-to-Point Protocol (PPP) and Wireless Local Area Networks (WLAN) [RFC4334].

o RFC 4334,支持点对点协议(PPP)和无线局域网(WLAN)认证的证书扩展和属性[RFC4334]。

o RFC 5083, Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type [RFC5083].

o RFC 5083,加密消息语法(CMS)认证的信封数据内容类型[RFC5083]。

o RFC 5652, Cryptographic Message Syntax (CMS) [RFC5652].

o RFC 5652,加密消息语法(CMS)[RFC5652]。

o RFC 5752, Multiple Signatures in Cryptographic Message Syntax (CMS) [RFC5752].

o RFC 5752,加密消息语法(CMS)中的多个签名[RFC5752]。

Note that some of the modules in this document get some of their definitions from places different than the modules in the original RFCs. The idea is that these modules, when combined with the modules in [RFC5911] and [RFC5912], can stand on their own and do not need to import definitions from anywhere else.

请注意,本文档中的一些模块从与原始RFC中的模块不同的地方获得了一些定义。其思想是,当这些模块与[RFC5911]和[RFC5912]中的模块组合时,它们可以独立存在,不需要从任何其他地方导入定义。

This document does not explicitly update the RFCs from which the ASN.1 modules have been extracted. This is because the original 1988 ASN.1 syntax remains the normative version and the modules in this document as well as in [RFC5911] and [RFC5912] are informative (but hopefully useful) annexes.

本文档没有明确更新从中提取ASN.1模块的RFC。这是因为原始的1988 ASN.1语法仍然是规范性版本,本文件以及[RFC5911]和[RFC5912]中的模块是信息性附录(但希望有用)。

1.1. ASN.1 Updates (2002 to 2008)
1.1. ASN.1更新(2002年至2008年)

The modules defined in this document are compatible with the most current ASN.1 specification published in 2008 (see [ASN1-2008]). The changes between the 2002 specification and the 2008 specification include the creation of additional pre-defined types (DATE, DATE-TIME, DURATION, NOT-A-NUMBER, OID-IRI, RELATIVE-OID-IRI, TIME, TIME-OF-DAY) and the ability to define different encoding rules (ENCODING-CONTROL, INSTRUCTIONS). None of the newly defined tokens are currently used in any of the ASN.1 specifications published here.

本文件中定义的模块与2008年发布的最新ASN.1规范兼容(见[ASN1-2008])。2002年规范和2008年规范之间的变化包括创建额外的预定义类型(日期、日期时间、持续时间、非数字、OID-IRI、相对OID-IRI、时间、每日时间)以及定义不同编码规则(编码控制、指令)的能力。这里发布的任何ASN.1规范中目前都没有使用新定义的令牌。

Information on the changes to ASN.1 between the 1988 and 2002 versions can be found in [RFC6025].

关于1988年和2002年版本之间ASN.1变更的信息,请参见[RFC6025]。

1.2. Requirements Terminology
1.2. 需求术语

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。

2. ASN.1 Module RFC 3274
2. ASN.1模块RFC 3274

We have updated the ASN.1 module associated with this document to be 2008 compliant and to use the set of classes previously defined in [RFC5911].

我们已经更新了与本文档相关的ASN.1模块,使其符合2008年的要求,并使用了[RFC5911]中先前定义的一组类。

   CompressedDataContent-2010
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
        smime(16) modules(0) id-mod-compressedDataContent(54) }
        
   CompressedDataContent-2010
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
        smime(16) modules(0) id-mod-compressedDataContent(54) }
        
   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN
        
   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN
        
   IMPORTS
     CMSVersion, ContentSet,
     CONTENT-TYPE
     FROM CryptographicMessageSyntax-2010
       { iso(1) member-body(2) us(840) rsadsi(113549)
          pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
        
   IMPORTS
     CMSVersion, ContentSet,
     CONTENT-TYPE
     FROM CryptographicMessageSyntax-2010
       { iso(1) member-body(2) us(840) rsadsi(113549)
          pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
        
     AlgorithmIdentifier{}, SMIME-CAPS, ParamOptions
     FROM AlgorithmInformation-2009
       {iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0)
       id-mod-algorithmInformation-02(58)}
     ;
        
     AlgorithmIdentifier{}, SMIME-CAPS, ParamOptions
     FROM AlgorithmInformation-2009
       {iso(1) identified-organization(3) dod(6) internet(1) security(5)
       mechanisms(5) pkix(7) id-mod(0)
       id-mod-algorithmInformation-02(58)}
     ;
        
     --
     --  ContentTypes contains the set of content types that are
     --    defined in this module.
     --
     --  The contents of ContentTypes should be added to
     --    ContentSet defined in [RFC5652]
     --
        
     --
     --  ContentTypes contains the set of content types that are
     --    defined in this module.
     --
     --  The contents of ContentTypes should be added to
     --    ContentSet defined in [RFC5652]
     --
        
     ContentTypes CONTENT-TYPE ::= {ct-compressedData}
        
     ContentTypes CONTENT-TYPE ::= {ct-compressedData}
        
     --
     --  SMimeCaps contains the set of S/MIME capabilities that
     --    are associated with the algorithms defined in this
     --    document.
     --
     --  SMimeCaps are added to the SMimeCapsSet defined in
     --  [RFC5751] as updated by [RFC5911].
        
     --
     --  SMimeCaps contains the set of S/MIME capabilities that
     --    are associated with the algorithms defined in this
     --    document.
     --
     --  SMimeCaps are added to the SMimeCapsSet defined in
     --  [RFC5751] as updated by [RFC5911].
        
     SMimeCaps SMIME-CAPS ::= {cpa-zlibCompress.&smimeCaps, ...}
        
     SMimeCaps SMIME-CAPS ::= {cpa-zlibCompress.&smimeCaps, ...}
        

-- -- Define the compressed data content type --

----定义压缩数据内容类型--

     ct-compressedData CONTENT-TYPE ::= {
       TYPE CompressedData IDENTIFIED BY id-ct-compressedData
     }
        
     ct-compressedData CONTENT-TYPE ::= {
       TYPE CompressedData IDENTIFIED BY id-ct-compressedData
     }
        
     CompressedData ::= SEQUENCE {
        version CMSVersion (v0),  -- Always set to 0
        compressionAlgorithm CompressionAlgorithmIdentifier,
        encapContentInfo EncapsulatedContentInfo
     }
        
     CompressedData ::= SEQUENCE {
        version CMSVersion (v0),  -- Always set to 0
        compressionAlgorithm CompressionAlgorithmIdentifier,
        encapContentInfo EncapsulatedContentInfo
     }
        
     EncapsulatedContentInfo ::= SEQUENCE {
        eContentType       CONTENT-TYPE.&id({ContentSet}),
        eContent           [0] EXPLICIT OCTET STRING OPTIONAL }
        
     EncapsulatedContentInfo ::= SEQUENCE {
        eContentType       CONTENT-TYPE.&id({ContentSet}),
        eContent           [0] EXPLICIT OCTET STRING OPTIONAL }
        
     CompressionAlgorithmIdentifier ::=
        AlgorithmIdentifier{COMPRESS-ALGORITHM, {CompressAlgorithmSet}}
        
     CompressionAlgorithmIdentifier ::=
        AlgorithmIdentifier{COMPRESS-ALGORITHM, {CompressAlgorithmSet}}
        
     CompressAlgorithmSet COMPRESS-ALGORITHM ::= {
       cpa-zlibCompress, ...
     }
        
     CompressAlgorithmSet COMPRESS-ALGORITHM ::= {
       cpa-zlibCompress, ...
     }
        

-- Algorithm Identifiers

--算法标识符

     id-alg-zlibCompress OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 8 }
        
     id-alg-zlibCompress OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 8 }
        
     cpa-zlibCompress COMPRESS-ALGORITHM ::= {
       IDENTIFIER id-alg-zlibCompress
       PARAMS TYPE NULL ARE preferredAbsent
       SMIME-CAPS {IDENTIFIED BY id-alg-zlibCompress}
     }
        
     cpa-zlibCompress COMPRESS-ALGORITHM ::= {
       IDENTIFIER id-alg-zlibCompress
       PARAMS TYPE NULL ARE preferredAbsent
       SMIME-CAPS {IDENTIFIED BY id-alg-zlibCompress}
     }
        

-- Content Type Object Identifiers

--内容类型对象标识符

     id-ct-compressedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 9 }
        
     id-ct-compressedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
          us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 9 }
        

-- -- Class defined for compression algorithms --

----为压缩算法定义的类--

     COMPRESS-ALGORITHM ::= CLASS {
       &id                OBJECT IDENTIFIER UNIQUE,
       &Params            OPTIONAL,
       &paramPresence     ParamOptions DEFAULT absent,
       &smimeCaps         SMIME-CAPS OPTIONAL
     }
     WITH SYNTAX {
       IDENTIFIER &id
       [PARAMS [TYPE &Params] ARE &paramPresence]
       [SMIME-CAPS &smimeCaps]
     }
        
     COMPRESS-ALGORITHM ::= CLASS {
       &id                OBJECT IDENTIFIER UNIQUE,
       &Params            OPTIONAL,
       &paramPresence     ParamOptions DEFAULT absent,
       &smimeCaps         SMIME-CAPS OPTIONAL
     }
     WITH SYNTAX {
       IDENTIFIER &id
       [PARAMS [TYPE &Params] ARE &paramPresence]
       [SMIME-CAPS &smimeCaps]
     }
        

END

终止

3. ASN.1 Module RFC 3779
3. ASN.1模块RFC 3779

We have updated the ASN.1 module associated with RFC 3779 to be ASN.1 2008 compliant and to use the set of classes previously defined in [RFC5912].

我们已将与RFC 3779相关的ASN.1模块更新为ASN.1 2008兼容,并使用[RFC5912]中先前定义的类集。

   IPAddrAndASCertExtn-2010 { iso(1) identified-organization(3) dod(6)
            internet(1) security(5) mechanisms(5) pkix(7) mod(0)
            id-mod-ip-addr-and-as-ident-2(72) }
   DEFINITIONS EXPLICIT TAGS ::=
   BEGIN
      EXPORTS ALL;
        
   IPAddrAndASCertExtn-2010 { iso(1) identified-organization(3) dod(6)
            internet(1) security(5) mechanisms(5) pkix(7) mod(0)
            id-mod-ip-addr-and-as-ident-2(72) }
   DEFINITIONS EXPLICIT TAGS ::=
   BEGIN
      EXPORTS ALL;
        

IMPORTS

进口

      -- PKIX specific OIDs and arcs --
      id-pe
      FROM PKIX1Explicit-2009
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-pkix1-explicit-02(51)}
        
      -- PKIX specific OIDs and arcs --
      id-pe
      FROM PKIX1Explicit-2009
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-pkix1-explicit-02(51)}
        
      EXTENSION
      FROM PKIX-CommonTypes-2009
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-pkixCommon-02(57)}
      ;
        
      EXTENSION
      FROM PKIX-CommonTypes-2009
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-pkixCommon-02(57)}
      ;
        
      --
      --  Extensions contains the set of extensions defined in this
      --      module
      --
      --  These are intended to be placed in public key certificates
      --     and thus should be added to the CertExtensions extension
      --     set in PKIXImplicit-2009 defined for [RFC5280]
      --
        
      --
      --  Extensions contains the set of extensions defined in this
      --      module
      --
      --  These are intended to be placed in public key certificates
      --     and thus should be added to the CertExtensions extension
      --     set in PKIXImplicit-2009 defined for [RFC5280]
      --
        
      Extensions EXTENSION ::= {
         ext-pe-ipAddrBlocks | ext-pe-autonomousSysIds
      }
        
      Extensions EXTENSION ::= {
         ext-pe-ipAddrBlocks | ext-pe-autonomousSysIds
      }
        

-- IP Address Delegation Extension OID --

--IP地址委派扩展OID--

      ext-pe-ipAddrBlocks EXTENSION ::= {
        SYNTAX IPAddrBlocks
        IDENTIFIED BY id-pe-ipAddrBlocks
      }
        
      ext-pe-ipAddrBlocks EXTENSION ::= {
        SYNTAX IPAddrBlocks
        IDENTIFIED BY id-pe-ipAddrBlocks
      }
        
      id-pe-ipAddrBlocks  OBJECT IDENTIFIER ::= { id-pe 7 }
        
      id-pe-ipAddrBlocks  OBJECT IDENTIFIER ::= { id-pe 7 }
        

-- IP Address Delegation Extension Syntax --

--IP地址委派扩展语法--

      IPAddrBlocks        ::= SEQUENCE OF IPAddressFamily
        
      IPAddrBlocks        ::= SEQUENCE OF IPAddressFamily
        
      IPAddressFamily     ::= SEQUENCE { -- AFI & opt SAFI --
         addressFamily        OCTET STRING (SIZE (2..3)),
         ipAddressChoice      IPAddressChoice }
        
      IPAddressFamily     ::= SEQUENCE { -- AFI & opt SAFI --
         addressFamily        OCTET STRING (SIZE (2..3)),
         ipAddressChoice      IPAddressChoice }
        
      IPAddressChoice     ::= CHOICE {
         inherit              NULL, -- inherit from issuer --
         addressesOrRanges    SEQUENCE OF IPAddressOrRange }
        
      IPAddressChoice     ::= CHOICE {
         inherit              NULL, -- inherit from issuer --
         addressesOrRanges    SEQUENCE OF IPAddressOrRange }
        
      IPAddressOrRange    ::= CHOICE {
         addressPrefix        IPAddress,
         addressRange         IPAddressRange }
        
      IPAddressOrRange    ::= CHOICE {
         addressPrefix        IPAddress,
         addressRange         IPAddressRange }
        
      IPAddressRange      ::= SEQUENCE {
         min                  IPAddress,
         max                  IPAddress }
        
      IPAddressRange      ::= SEQUENCE {
         min                  IPAddress,
         max                  IPAddress }
        
      IPAddress           ::= BIT STRING
        
      IPAddress           ::= BIT STRING
        

-- Autonomous System Identifier Delegation Extension OID --

--自治系统标识符委派扩展OID--

      ext-pe-autonomousSysIds EXTENSION ::= {
        SYNTAX ASIdentifiers
        IDENTIFIED BY id-pe-autonomousSysIds
      }
        
      ext-pe-autonomousSysIds EXTENSION ::= {
        SYNTAX ASIdentifiers
        IDENTIFIED BY id-pe-autonomousSysIds
      }
        
      id-pe-autonomousSysIds  OBJECT IDENTIFIER ::= { id-pe 8 }
        
      id-pe-autonomousSysIds  OBJECT IDENTIFIER ::= { id-pe 8 }
        

-- Autonomous System Identifier Delegation Extension Syntax --

--自治系统标识符委派扩展语法--

      ASIdentifiers       ::= SEQUENCE {
          asnum               [0] ASIdentifierChoice OPTIONAL,
          rdi                 [1] ASIdentifierChoice OPTIONAL }
          (WITH COMPONENTS {..., asnum PRESENT} |
           WITH COMPONENTS {..., rdi PRESENT})
        
      ASIdentifiers       ::= SEQUENCE {
          asnum               [0] ASIdentifierChoice OPTIONAL,
          rdi                 [1] ASIdentifierChoice OPTIONAL }
          (WITH COMPONENTS {..., asnum PRESENT} |
           WITH COMPONENTS {..., rdi PRESENT})
        
      ASIdentifierChoice  ::= CHOICE {
         inherit              NULL, -- inherit from issuer --
         asIdsOrRanges        SEQUENCE OF ASIdOrRange }
        
      ASIdentifierChoice  ::= CHOICE {
         inherit              NULL, -- inherit from issuer --
         asIdsOrRanges        SEQUENCE OF ASIdOrRange }
        
      ASIdOrRange         ::= CHOICE {
          id                  ASId,
          range               ASRange }
        
      ASIdOrRange         ::= CHOICE {
          id                  ASId,
          range               ASRange }
        
      ASRange             ::= SEQUENCE {
          min                 ASId,
          max                 ASId }
        
      ASRange             ::= SEQUENCE {
          min                 ASId,
          max                 ASId }
        
      ASId                ::= INTEGER
        
      ASId                ::= INTEGER
        

END

终止

4. ASN.1 Module RFC 6019
4. ASN.1模块RFC 6019

We have updated the ASN.1 module associated with this document to be 2008 compliant and to use the set of classes previously defined in [RFC5911].

我们已经更新了与本文档相关的ASN.1模块,使其符合2008年的要求,并使用了[RFC5911]中先前定义的一组类。

   BinarySigningTimeModule-2010
         { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
           pkcs-9(9) smime(16) modules(0)
           id-mod-binSigningTime-2009(55) }
   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN
     IMPORTS
        
   BinarySigningTimeModule-2010
         { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
           pkcs-9(9) smime(16) modules(0)
           id-mod-binSigningTime-2009(55) }
   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN
     IMPORTS
        

-- From PKIX-CommonTypes-2009 [RFC5912]

--摘自PKIX-CommonTypes-2009[RFC5912]

     ATTRIBUTE
       FROM PKIX-CommonTypes-2009
         { iso(1) identified-organization(3) dod(6) internet(1)
           security(5) mechanisms(5) pkix(7) id-mod(0)
           id-mod-pkixCommon-02(57) }
    ;
        
     ATTRIBUTE
       FROM PKIX-CommonTypes-2009
         { iso(1) identified-organization(3) dod(6) internet(1)
           security(5) mechanisms(5) pkix(7) id-mod(0)
           id-mod-pkixCommon-02(57) }
    ;
        
     --
     -- BinaryTime Definition
     --
     --  BinaryTime contains the number seconds since
     --  midnight Jan 1, 1970 UTC.
     --  Leap seconds are EXCLUDED from the computation.
     --
        
     --
     -- BinaryTime Definition
     --
     --  BinaryTime contains the number seconds since
     --  midnight Jan 1, 1970 UTC.
     --  Leap seconds are EXCLUDED from the computation.
     --
        
     BinaryTime ::= INTEGER (0..MAX)
        
     BinaryTime ::= INTEGER (0..MAX)
        
     --
     -- Signing Binary Time Attribute
     --
     --   The binary signing time should be added to
     --   SignedAttributeSet and AuthAttributeSet in CMS [RFC5652]
     --   and to AuthEnvDataAttributeSet in [RFC5083] with the
     --   new modules in this document, RFC 6268.
     --
        
     --
     -- Signing Binary Time Attribute
     --
     --   The binary signing time should be added to
     --   SignedAttributeSet and AuthAttributeSet in CMS [RFC5652]
     --   and to AuthEnvDataAttributeSet in [RFC5083] with the
     --   new modules in this document, RFC 6268.
     --
        
     aa-binarySigningTime ATTRIBUTE ::= {
       TYPE BinarySigningTime
       IDENTIFIED BY id-aa-binarySigningTime }
        
     aa-binarySigningTime ATTRIBUTE ::= {
       TYPE BinarySigningTime
       IDENTIFIED BY id-aa-binarySigningTime }
        
     id-aa-binarySigningTime OBJECT IDENTIFIER ::= { iso(1)
       member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
       smime(16) aa(2) 46 }
        
     id-aa-binarySigningTime OBJECT IDENTIFIER ::= { iso(1)
       member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
       smime(16) aa(2) 46 }
        
     BinarySigningTime ::= BinaryTime
        
     BinarySigningTime ::= BinaryTime
        

END

终止

5. ASN.1 Module RFC 4073
5. ASN.1模块RFC 4073

We have updated the ASN.1 module associated with this document to be 2008 compliant and to use the set of classes previously defined in [RFC5911].

我们已经更新了与本文档相关的ASN.1模块,使其符合2008年的要求,并使用了[RFC5911]中先前定义的一组类。

  ContentCollectionModule-2010
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
        pkcs-9(9) smime(16) modules(0) id-mod-context-Collect-2009(56) }
  DEFINITIONS IMPLICIT TAGS ::=
  BEGIN
    IMPORTS
        
  ContentCollectionModule-2010
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
        pkcs-9(9) smime(16) modules(0) id-mod-context-Collect-2009(56) }
  DEFINITIONS IMPLICIT TAGS ::=
  BEGIN
    IMPORTS
        

-- From CryptographicMessageSyntax-2010 [RFC6268]

--来自CryptographicMessageSyntax-2010[RFC6268]

    CONTENT-TYPE, ContentInfo
      FROM CryptographicMessageSyntax-2010
      { iso(1) member-body(2) us(840) rsadsi(113549)
         pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
        
    CONTENT-TYPE, ContentInfo
      FROM CryptographicMessageSyntax-2010
      { iso(1) member-body(2) us(840) rsadsi(113549)
         pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
        
    AttributeSet{}, ATTRIBUTE
      FROM PKIX-CommonTypes-2009
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-pkixCommon-02(57) }
    ;
        
    AttributeSet{}, ATTRIBUTE
      FROM PKIX-CommonTypes-2009
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-pkixCommon-02(57) }
    ;
        
    --
    --  An object set of all content types defined by this module.
    --    This is to be added to ContentSet in the CMS module
    --
        
    --
    --  An object set of all content types defined by this module.
    --    This is to be added to ContentSet in the CMS module
    --
        
    ContentSet CONTENT-TYPE ::= {
        ct-ContentCollection | ct-ContentWithAttributes, ...
    }
        
    ContentSet CONTENT-TYPE ::= {
        ct-ContentCollection | ct-ContentWithAttributes, ...
    }
        

-- -- Content Collection Content Type and Object Identifier --

----内容集合内容类型和对象标识符--

    ct-ContentCollection CONTENT-TYPE ::= {
      TYPE ContentCollection IDENTIFIED BY id-ct-contentCollection }
        
    ct-ContentCollection CONTENT-TYPE ::= {
      TYPE ContentCollection IDENTIFIED BY id-ct-contentCollection }
        
    id-ct-contentCollection OBJECT IDENTIFIER ::= {
      iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
      smime(16) ct(1) 19 }
        
    id-ct-contentCollection OBJECT IDENTIFIER ::= {
      iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
      smime(16) ct(1) 19 }
        
    ContentCollection ::= SEQUENCE SIZE (1..MAX) OF ContentInfo
        
    ContentCollection ::= SEQUENCE SIZE (1..MAX) OF ContentInfo
        

-- -- Content With Attributes Content Type and Object Identifier --

----具有属性内容类型和对象标识符的内容--

    ct-ContentWithAttributes CONTENT-TYPE ::= {
      TYPE ContentWithAttributes IDENTIFIED BY id-ct-contentWithAttrs }
        
    ct-ContentWithAttributes CONTENT-TYPE ::= {
      TYPE ContentWithAttributes IDENTIFIED BY id-ct-contentWithAttrs }
        
    id-ct-contentWithAttrs OBJECT IDENTIFIER ::= {
      iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
      smime(16) ct(1) 20 }
        
    id-ct-contentWithAttrs OBJECT IDENTIFIER ::= {
      iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
      smime(16) ct(1) 20 }
        
    ContentWithAttributes ::= SEQUENCE {
       content  ContentInfo,
       attrs    SEQUENCE SIZE (1..MAX) OF AttributeSet
                                               {{ ContentAttributeSet }}
    }
        
    ContentWithAttributes ::= SEQUENCE {
       content  ContentInfo,
       attrs    SEQUENCE SIZE (1..MAX) OF AttributeSet
                                               {{ ContentAttributeSet }}
    }
        
     ContentAttributeSet ATTRIBUTE ::= { ... }
  END
        
     ContentAttributeSet ATTRIBUTE ::= { ... }
  END
        
6. ASN.1 Module RFC 4231
6. ASN.1模块RFC 4231

RFC 4231 does not contain an ASN.1 module to be updated. We have therefore created an ASN.1 module to represent the ASN.1 that is present in the document. Note that the parameters are defined as expecting a parameter for the algorithm identifiers in this module; this is different from most of the algorithms used in PKIX and S/MIME. There is no concept of being able to truncate the MAC (Message Authentication Code) value in the ASN.1 unlike the XML definitions. This is reflected by not having a minimum MAC length defined in the ASN.1.

RFC 4231不包含要更新的ASN.1模块。因此,我们创建了一个ASN.1模块来表示文档中的ASN.1。注意,参数被定义为期望该模块中的算法标识符的参数;这与PKIX和S/MIME中使用的大多数算法不同。与XML定义不同,ASN.1中没有能够截断MAC(消息身份验证代码)值的概念。这反映在ASN.1中没有定义最小MAC长度。

  HMAC-2010  { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) mod(0) id-mod-hmac(74) }
  DEFINITIONS EXPLICIT TAGS ::=
  BEGIN
    EXPORTS ALL;
        
  HMAC-2010  { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) mod(0) id-mod-hmac(74) }
  DEFINITIONS EXPLICIT TAGS ::=
  BEGIN
    EXPORTS ALL;
        

IMPORTS

进口

    MAC-ALGORITHM, SMIME-CAPS
    FROM AlgorithmInformation-2009
      { iso(1) identified-organization(3) dod(6) internet(1) security(5)
        mechanisms(5) pkix(7) id-mod(0)
        id-mod-algorithmInformation-02(58)};
        
    MAC-ALGORITHM, SMIME-CAPS
    FROM AlgorithmInformation-2009
      { iso(1) identified-organization(3) dod(6) internet(1) security(5)
        mechanisms(5) pkix(7) id-mod(0)
        id-mod-algorithmInformation-02(58)};
        
    --
    --  This object set contains all of the MAC algorithms that are
    --    defined in this module.
    --  One would add it to a constraining set of objects such as the
    --    MessageAuthenticationCodeAlgorithmSet in [RFC5652]
    --
        
    --
    --  This object set contains all of the MAC algorithms that are
    --    defined in this module.
    --  One would add it to a constraining set of objects such as the
    --    MessageAuthenticationCodeAlgorithmSet in [RFC5652]
    --
        
    MessageAuthAlgs MAC-ALGORITHM ::= {
      maca-hMAC-SHA224 |
      maca-hMAC-SHA256 |
      maca-hMAC-SHA384 |
      maca-hMAC-SHA512
    }
        
    MessageAuthAlgs MAC-ALGORITHM ::= {
      maca-hMAC-SHA224 |
      maca-hMAC-SHA256 |
      maca-hMAC-SHA384 |
      maca-hMAC-SHA512
    }
        
    --
    --  This object set contains all of the S/MIME capabilities that
    --     have been defined for all the MAC algorithms in this module.
    --  One would add this to an object set that is used to restrict
    --    S/MIME capabilities such as the SMimeCapsSet variable in
    --    RFC 3851 (obsoleted by RFC 5751) as modified in RFC 5911.
    --
        
    --
    --  This object set contains all of the S/MIME capabilities that
    --     have been defined for all the MAC algorithms in this module.
    --  One would add this to an object set that is used to restrict
    --    S/MIME capabilities such as the SMimeCapsSet variable in
    --    RFC 3851 (obsoleted by RFC 5751) as modified in RFC 5911.
    --
        
    SMimeCaps SMIME-CAPS ::= {
      maca-hMAC-SHA224.&smimeCaps     |
      maca-hMAC-SHA256.&smimeCaps     |
      maca-hMAC-SHA384.&smimeCaps     |
      maca-hMAC-SHA512.&smimeCaps
    }
        
    SMimeCaps SMIME-CAPS ::= {
      maca-hMAC-SHA224.&smimeCaps     |
      maca-hMAC-SHA256.&smimeCaps     |
      maca-hMAC-SHA384.&smimeCaps     |
      maca-hMAC-SHA512.&smimeCaps
    }
        

-- -- Define the base OID for the algorithm identifiers --

----定义算法标识符的基本OID--

    rsadsi OBJECT IDENTIFIER ::=
         {iso(1) member-body(2) us(840) rsadsi(113549)}
        
    rsadsi OBJECT IDENTIFIER ::=
         {iso(1) member-body(2) us(840) rsadsi(113549)}
        
    digestAlgorithm   OBJECT IDENTIFIER ::= {rsadsi 2}
        
    digestAlgorithm   OBJECT IDENTIFIER ::= {rsadsi 2}
        

-- -- Define the necessary algorithm identifiers --

----定义必要的算法标识符--

    id-hmacWithSHA224 OBJECT IDENTIFIER ::= {digestAlgorithm 8}
    id-hmacWithSHA256 OBJECT IDENTIFIER ::= {digestAlgorithm 9}
    id-hmacWithSHA384 OBJECT IDENTIFIER ::= {digestAlgorithm 10}
    id-hmacWithSHA512 OBJECT IDENTIFIER ::= {digestAlgorithm 11}
        
    id-hmacWithSHA224 OBJECT IDENTIFIER ::= {digestAlgorithm 8}
    id-hmacWithSHA256 OBJECT IDENTIFIER ::= {digestAlgorithm 9}
    id-hmacWithSHA384 OBJECT IDENTIFIER ::= {digestAlgorithm 10}
    id-hmacWithSHA512 OBJECT IDENTIFIER ::= {digestAlgorithm 11}
        
    --
    --  Define each of the MAC-ALGORITHM objects to describe the
    --    algorithms defined
    --
        
    --
    --  Define each of the MAC-ALGORITHM objects to describe the
    --    algorithms defined
    --
        
    maca-hMAC-SHA224 MAC-ALGORITHM ::= {
      IDENTIFIER id-hmacWithSHA224
      PARAMS TYPE NULL ARE preferredPresent
      IS-KEYED-MAC TRUE
      SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA224}
    }
        
    maca-hMAC-SHA224 MAC-ALGORITHM ::= {
      IDENTIFIER id-hmacWithSHA224
      PARAMS TYPE NULL ARE preferredPresent
      IS-KEYED-MAC TRUE
      SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA224}
    }
        
    maca-hMAC-SHA256 MAC-ALGORITHM ::= {
      IDENTIFIER id-hmacWithSHA256
      PARAMS TYPE NULL ARE preferredPresent
      IS-KEYED-MAC TRUE
      SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA256}
    }
        
    maca-hMAC-SHA256 MAC-ALGORITHM ::= {
      IDENTIFIER id-hmacWithSHA256
      PARAMS TYPE NULL ARE preferredPresent
      IS-KEYED-MAC TRUE
      SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA256}
    }
        
    maca-hMAC-SHA384 MAC-ALGORITHM ::= {
      IDENTIFIER id-hmacWithSHA384
      PARAMS TYPE NULL ARE preferredPresent
      IS-KEYED-MAC TRUE
      SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA384}
    }
        
    maca-hMAC-SHA384 MAC-ALGORITHM ::= {
      IDENTIFIER id-hmacWithSHA384
      PARAMS TYPE NULL ARE preferredPresent
      IS-KEYED-MAC TRUE
      SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA384}
    }
        
    maca-hMAC-SHA512 MAC-ALGORITHM ::= {
      IDENTIFIER id-hmacWithSHA512
      PARAMS TYPE NULL ARE preferredPresent
      IS-KEYED-MAC TRUE
      SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA512}
    }
        
    maca-hMAC-SHA512 MAC-ALGORITHM ::= {
      IDENTIFIER id-hmacWithSHA512
      PARAMS TYPE NULL ARE preferredPresent
      IS-KEYED-MAC TRUE
      SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA512}
    }
        

END

终止

7. ASN.1 Module RFC 4334
7. ASN.1模块RFC 4334

We have updated the ASN.1 module associated with RFC 4334 to be ASN.1 2008 compliant and to use the set of classes previously defined in [RFC5912].

我们已将与RFC 4334相关的ASN.1模块更新为ASN.1 2008兼容,并使用[RFC5912]中先前定义的类集。

  WLANCertExtn-2010
     { iso(1) identified-organization(3) dod(6) internet(1)
       security(5) mechanisms(5) pkix(7) id-mod(0)
       id-mod-wlan-extns-2(73) }
        
  WLANCertExtn-2010
     { iso(1) identified-organization(3) dod(6) internet(1)
       security(5) mechanisms(5) pkix(7) id-mod(0)
       id-mod-wlan-extns-2(73) }
        
  DEFINITIONS IMPLICIT TAGS ::=
  BEGIN
    EXPORTS ALL;
        
  DEFINITIONS IMPLICIT TAGS ::=
  BEGIN
    EXPORTS ALL;
        

IMPORTS

进口

    EXTENSION, ATTRIBUTE
    FROM PKIX-CommonTypes-2009
      {iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)}
        
    EXTENSION, ATTRIBUTE
    FROM PKIX-CommonTypes-2009
      {iso(1) identified-organization(3) dod(6) internet(1) security(5)
      mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)}
        
    id-pe, id-kp
    FROM PKIX1Explicit-2009
      { iso(1) identified-organization(3) dod(6) internet(1) security(5)
        mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51)}
        
    id-pe, id-kp
    FROM PKIX1Explicit-2009
      { iso(1) identified-organization(3) dod(6) internet(1) security(5)
        mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51)}
        
    id-aca
    FROM PKIXAttributeCertificate-2009
      { iso(1) identified-organization(3) dod(6) internet(1) security(5)
        mechanisms(5) pkix(7) id-mod(0) id-mod-attribute-cert-02(47)}
        
    id-aca
    FROM PKIXAttributeCertificate-2009
      { iso(1) identified-organization(3) dod(6) internet(1) security(5)
        mechanisms(5) pkix(7) id-mod(0) id-mod-attribute-cert-02(47)}
        

;

;

-- Extended Key Usage Values

--扩展密钥使用值

    KeyUsageValues OBJECT IDENTIFIER ::= {
        id-kp-eapOverPPP | id-kp-eapOverLAN
    }
        
    KeyUsageValues OBJECT IDENTIFIER ::= {
        id-kp-eapOverPPP | id-kp-eapOverLAN
    }
        
    id-kp-eapOverPPP  OBJECT IDENTIFIER  ::=  { id-kp 13 }
        
    id-kp-eapOverPPP  OBJECT IDENTIFIER  ::=  { id-kp 13 }
        
    id-kp-eapOverLAN  OBJECT IDENTIFIER  ::=  { id-kp 14 }
        
    id-kp-eapOverLAN  OBJECT IDENTIFIER  ::=  { id-kp 14 }
        

-- Wireless LAN SSID Extension

--无线局域网SSID扩展

    ext-pe-wlanSSID EXTENSION ::= {
      SYNTAX SSIDList
      IDENTIFIED BY id-pe-wlanSSID
      CRITICALITY {FALSE}
    }
        
    ext-pe-wlanSSID EXTENSION ::= {
      SYNTAX SSIDList
      IDENTIFIED BY id-pe-wlanSSID
      CRITICALITY {FALSE}
    }
        
    id-pe-wlanSSID  OBJECT IDENTIFIER  ::=  { id-pe 13 }
        
    id-pe-wlanSSID  OBJECT IDENTIFIER  ::=  { id-pe 13 }
        
    SSIDList  ::=  SEQUENCE SIZE (1..MAX) OF SSID
        
    SSIDList  ::=  SEQUENCE SIZE (1..MAX) OF SSID
        
    SSID  ::=  OCTET STRING (SIZE (1..32))
        
    SSID  ::=  OCTET STRING (SIZE (1..32))
        
    -- Wireless LAN SSID Attribute Certificate Attribute
    -- Uses same syntax as the certificate extension: SSIDList
        
    -- Wireless LAN SSID Attribute Certificate Attribute
    -- Uses same syntax as the certificate extension: SSIDList
        
     at-aca-wlanSSID ATTRIBUTE ::= {
       TYPE SSIDList
       IDENTIFIED BY id-aca-wlanSSID
     }
        
     at-aca-wlanSSID ATTRIBUTE ::= {
       TYPE SSIDList
       IDENTIFIED BY id-aca-wlanSSID
     }
        
     id-aca-wlanSSID  OBJECT IDENTIFIER ::= { id-aca 7 }
        
     id-aca-wlanSSID  OBJECT IDENTIFIER ::= { id-aca 7 }
        

END

终止

8. ASN.1 Module RFC 5083
8. ASN.1模块RFC 5083

This module is updated from RFC 5911 [RFC5911] by the following changes:

此模块通过以下更改从RFC 5911[RFC5911]更新:

1. Define separate attribute sets for the unprotected attributes used in EnvelopedData, EncryptedData, and AuthenticatedEnvelopedData (RFC 5083).

1. 为EnvelopedData、EncryptedData和AuthenticatedEnvelopedData(RFC 5083)中使用的未受保护的属性定义单独的属性集。

2. Define a parameterized type EncryptedContentInfoType so that the basic type can be used with different algorithm sets (used for EnvelopedData, EncryptedData, and AuthenticatedEnvelopedData (RFC

2. 定义参数化类型EncryptedContentInfoType,以便基本类型可用于不同的算法集(用于EnvelopedData、EncryptedData和AuthenticatedEnvelopedData(RFC

5083)). The parameterized type is assigned to an unparameterized type of EncryptedContentInfo to minimize the output changes from previous versions.

5083)). 参数化类型被分配给EncryptedContentInfo的非参数化类型,以最大限度地减少以前版本的输出更改。

Protocol designers can make use of the '08 ASN.1 constraints to define different sets of attributes for EncryptedData and EnvelopedData and for AuthenticatedData and AuthEnvelopedData. Previously, attributes could only be constrained based on whether they were in the clear or unauthenticated not on the encapsulating content type.

协议设计者可以利用'08 ASN.1约束为EncryptedData和EnvelopedData以及AuthenticatedData和AuthEnvelopedData定义不同的属性集。以前,只能根据属性是否处于清除或未验证状态来约束属性,而不能基于封装内容类型。

 CMS-AuthEnvelopedData-2010
     {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
     smime(16) modules(0) id-mod-cmsAuthEnvData-2009(57) }
 DEFINITIONS IMPLICIT TAGS ::=
 BEGIN
 IMPORTS
        
 CMS-AuthEnvelopedData-2010
     {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
     smime(16) modules(0) id-mod-cmsAuthEnvData-2009(57) }
 DEFINITIONS IMPLICIT TAGS ::=
 BEGIN
 IMPORTS
        
 CMSVersion, EncryptedContentInfoType{},
   MessageAuthenticationCode, OriginatorInfo, RecipientInfos,
   CONTENT-TYPE, Attributes{}, ATTRIBUTE, CONTENT-ENCRYPTION,
   AlgorithmIdentifier{},
   aa-signingTime, aa-messageDigest, aa-contentType
 FROM CryptographicMessageSyntax-2010
   { iso(1) member-body(2) us(840) rsadsi(113549)
      pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
        
 CMSVersion, EncryptedContentInfoType{},
   MessageAuthenticationCode, OriginatorInfo, RecipientInfos,
   CONTENT-TYPE, Attributes{}, ATTRIBUTE, CONTENT-ENCRYPTION,
   AlgorithmIdentifier{},
   aa-signingTime, aa-messageDigest, aa-contentType
 FROM CryptographicMessageSyntax-2010
   { iso(1) member-body(2) us(840) rsadsi(113549)
      pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
        
 ContentEncryptionAlgs
 FROM CMS-AES-CCM-and-AES-GCM-2009
   { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
     pkcs-9(9) smime(16) modules(0) id-mod-cms-aes-ccm-gcm-02(44) }
 ;
        
 ContentEncryptionAlgs
 FROM CMS-AES-CCM-and-AES-GCM-2009
   { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
     pkcs-9(9) smime(16) modules(0) id-mod-cms-aes-ccm-gcm-02(44) }
 ;
        
 ContentTypes CONTENT-TYPE ::= {ct-authEnvelopedData, ... }
        
 ContentTypes CONTENT-TYPE ::= {ct-authEnvelopedData, ... }
        
 ct-authEnvelopedData CONTENT-TYPE ::= {
   TYPE AuthEnvelopedData IDENTIFIED BY id-ct-authEnvelopedData
 }
        
 ct-authEnvelopedData CONTENT-TYPE ::= {
   TYPE AuthEnvelopedData IDENTIFIED BY id-ct-authEnvelopedData
 }
        
 id-ct-authEnvelopedData OBJECT IDENTIFIER ::=
   {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
   smime(16) ct(1) 23}
        
 id-ct-authEnvelopedData OBJECT IDENTIFIER ::=
   {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
   smime(16) ct(1) 23}
        
 AuthEnvelopedData ::= SEQUENCE {
   version CMSVersion,
   originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
   recipientInfos RecipientInfos,
   authEncryptedContentInfo EncryptedContentInfo,
        
 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 }

authAttrs[1]隐式AuthAttributes可选,mac MessageAuthenticationCode,unauthAttrs[2]隐式UnauthAttributes可选}

 EncryptedContentInfo ::=
   EncryptedContentInfoType { AuthContentEncryptionAlgorithmIdentifier }
        
 EncryptedContentInfo ::=
   EncryptedContentInfoType { AuthContentEncryptionAlgorithmIdentifier }
        
 AuthContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
   {CONTENT-ENCRYPTION, {AuthContentEncryptionAlgorithmSet}}
        
 AuthContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
   {CONTENT-ENCRYPTION, {AuthContentEncryptionAlgorithmSet}}
        
 AuthContentEncryptionAlgorithmSet CONTENT-ENCRYPTION ::= {
   ContentEncryptionAlgs, ...}
        
 AuthContentEncryptionAlgorithmSet CONTENT-ENCRYPTION ::= {
   ContentEncryptionAlgs, ...}
        
 AuthAttributes ::= Attributes{{AuthEnvDataAttributeSet}}
        
 AuthAttributes ::= Attributes{{AuthEnvDataAttributeSet}}
        
 UnauthAttributes ::= Attributes{{UnauthEnvDataAttributeSet}}
        
 UnauthAttributes ::= Attributes{{UnauthEnvDataAttributeSet}}
        
 AuthEnvDataAttributeSet ATTRIBUTE ::= {
   aa-contentType | aa-messageDigest | aa-signingTime, ... }
        
 AuthEnvDataAttributeSet ATTRIBUTE ::= {
   aa-contentType | aa-messageDigest | aa-signingTime, ... }
        
 UnauthEnvDataAttributeSet ATTRIBUTE ::= {...}
        
 UnauthEnvDataAttributeSet ATTRIBUTE ::= {...}
        

END

终止

9. ASN.1 Module RFC 5652
9. ASN.1模块RFC 5652

This module is updated from RFC 5911 [RFC5911] by the following changes:

此模块通过以下更改从RFC 5911[RFC5911]更新:

1. Define separate attribute sets for the unprotected attributes used in EnvelopedData, EncryptedData, and AuthenticatedEnvelopedData (RFC 5083).

1. 为EnvelopedData、EncryptedData和AuthenticatedEnvelopedData(RFC 5083)中使用的未受保护的属性定义单独的属性集。

2. Define a parameterized type EncryptedContentInfoType so that the basic type can be used with algorithm sets (used for EnvelopedData, EncryptedData, and AuthenticatedEnvelopedData (RFC 5083)). The parameterized type is assigned to an unparameterized type of EncryptedContentInfo to minimize the output changes from previous versions.

2. 定义参数化类型EncryptedContentInfoType,以便基本类型可以与算法集一起使用(用于EnvelopedData、EncryptedData和AuthenticatedEnvelopedData(RFC 5083))。参数化类型被分配给EncryptedContentInfo的非参数化类型,以最大限度地减少以前版本的输出更改。

We are anticipating the definition of attributes that are going to be restricted to the use of only EnvelopedData. We are therefore separating the different attribute sets so that protocol designers that need to do this will be able to define attributes that are used for EnvelopedData, but not for EncryptedData. The same separation is also being applied to AuthenticatedData and AuthEnvelopedData.

我们预计属性的定义将仅限于使用EnvelopedData。因此,我们将分离不同的属性集,以便需要这样做的协议设计人员能够定义用于EnvelopedData而非EncryptedData的属性。同样的分离也适用于AuthenticatedData和AuthEnvelopedData。

   CryptographicMessageSyntax-2010
       { iso(1) member-body(2) us(840) rsadsi(113549)
          pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN
   IMPORTS
        
   CryptographicMessageSyntax-2010
       { iso(1) member-body(2) us(840) rsadsi(113549)
          pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN
   IMPORTS
        
   ParamOptions, DIGEST-ALGORITHM, SIGNATURE-ALGORITHM,
     PUBLIC-KEY, KEY-DERIVATION, KEY-WRAP, MAC-ALGORITHM,
     KEY-AGREE, KEY-TRANSPORT, CONTENT-ENCRYPTION, ALGORITHM,
     AlgorithmIdentifier{}
   FROM AlgorithmInformation-2009
     {iso(1) identified-organization(3) dod(6) internet(1) security(5)
     mechanisms(5) pkix(7) id-mod(0)
     id-mod-algorithmInformation-02(58)}
        
   ParamOptions, DIGEST-ALGORITHM, SIGNATURE-ALGORITHM,
     PUBLIC-KEY, KEY-DERIVATION, KEY-WRAP, MAC-ALGORITHM,
     KEY-AGREE, KEY-TRANSPORT, CONTENT-ENCRYPTION, ALGORITHM,
     AlgorithmIdentifier{}
   FROM AlgorithmInformation-2009
     {iso(1) identified-organization(3) dod(6) internet(1) security(5)
     mechanisms(5) pkix(7) id-mod(0)
     id-mod-algorithmInformation-02(58)}
        
   SignatureAlgs, MessageDigestAlgs, KeyAgreementAlgs,
     MessageAuthAlgs, KeyWrapAlgs, ContentEncryptionAlgs,
     KeyTransportAlgs, KeyDerivationAlgs, KeyAgreePublicKeys
   FROM CryptographicMessageSyntaxAlgorithms-2009
     { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
     smime(16) modules(0) id-mod-cmsalg-2001-02(37) }
        
   SignatureAlgs, MessageDigestAlgs, KeyAgreementAlgs,
     MessageAuthAlgs, KeyWrapAlgs, ContentEncryptionAlgs,
     KeyTransportAlgs, KeyDerivationAlgs, KeyAgreePublicKeys
   FROM CryptographicMessageSyntaxAlgorithms-2009
     { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
     smime(16) modules(0) id-mod-cmsalg-2001-02(37) }
        
   Certificate, CertificateList, CertificateSerialNumber,
     Name, ATTRIBUTE
   FROM PKIX1Explicit-2009
     { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-pkix1-explicit-02(51) }
        
   Certificate, CertificateList, CertificateSerialNumber,
     Name, ATTRIBUTE
   FROM PKIX1Explicit-2009
     { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-pkix1-explicit-02(51) }
        
   AttributeCertificate
   FROM PKIXAttributeCertificate-2009
     { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-attribute-cert-02(47) }
        
   AttributeCertificate
   FROM PKIXAttributeCertificate-2009
     { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-attribute-cert-02(47) }
        
   AttributeCertificateV1
   FROM AttributeCertificateVersion1-2009
     { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-v1AttrCert-02(49) } ;
        
   AttributeCertificateV1
   FROM AttributeCertificateVersion1-2009
     { iso(1) identified-organization(3) dod(6) internet(1)
     security(5) mechanisms(5) pkix(7) id-mod(0)
     id-mod-v1AttrCert-02(49) } ;
        

-- Cryptographic Message Syntax

--加密消息语法

   -- The following are used for version numbers using the ASN.1
   -- NOTE: The document reference represents where the versioned
   --   feature was introduced to the module.
   --
   --   idiom "[[n:"
   --   Version 1 = PKCS #7
   --   Version 2 = S/MIME V2
   --   Version 3 = RFC 2630
   --   Version 4 = RFC 3369
   --   Version 5 = RFC 3852
        
   -- The following are used for version numbers using the ASN.1
   -- NOTE: The document reference represents where the versioned
   --   feature was introduced to the module.
   --
   --   idiom "[[n:"
   --   Version 1 = PKCS #7
   --   Version 2 = S/MIME V2
   --   Version 3 = RFC 2630
   --   Version 4 = RFC 3369
   --   Version 5 = RFC 3852
        
   CONTENT-TYPE ::= CLASS {
     &id        OBJECT IDENTIFIER UNIQUE,
     &Type      OPTIONAL
   } WITH SYNTAX {
       [TYPE &Type] IDENTIFIED BY &id
   }
        
   CONTENT-TYPE ::= CLASS {
     &id        OBJECT IDENTIFIER UNIQUE,
     &Type      OPTIONAL
   } WITH SYNTAX {
       [TYPE &Type] IDENTIFIED BY &id
   }
        
   ContentType ::= CONTENT-TYPE.&id
        
   ContentType ::= CONTENT-TYPE.&id
        
   ContentInfo ::= SEQUENCE {
     contentType        CONTENT-TYPE.
                     &id({ContentSet}),
     content            [0] EXPLICIT CONTENT-TYPE.
                     &Type({ContentSet}{@contentType})}
        
   ContentInfo ::= SEQUENCE {
     contentType        CONTENT-TYPE.
                     &id({ContentSet}),
     content            [0] EXPLICIT CONTENT-TYPE.
                     &Type({ContentSet}{@contentType})}
        
   ContentSet CONTENT-TYPE ::= {
     --  Define the set of content types to be recognized.
     ct-Data | ct-SignedData | ct-EncryptedData | ct-EnvelopedData |
     ct-AuthenticatedData | ct-DigestedData, ... }
        
   ContentSet CONTENT-TYPE ::= {
     --  Define the set of content types to be recognized.
     ct-Data | ct-SignedData | ct-EncryptedData | ct-EnvelopedData |
     ct-AuthenticatedData | ct-DigestedData, ... }
        
   SignedData ::= SEQUENCE {
     version CMSVersion,
     digestAlgorithms SET OF DigestAlgorithmIdentifier,
     encapContentInfo EncapsulatedContentInfo,
     certificates [0] IMPLICIT CertificateSet OPTIONAL,
     crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
     signerInfos SignerInfos }
        
   SignedData ::= SEQUENCE {
     version CMSVersion,
     digestAlgorithms SET OF DigestAlgorithmIdentifier,
     encapContentInfo EncapsulatedContentInfo,
     certificates [0] IMPLICIT CertificateSet OPTIONAL,
     crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
     signerInfos SignerInfos }
        
   SignerInfos ::= SET OF SignerInfo
        
   SignerInfos ::= SET OF SignerInfo
        
   EncapsulatedContentInfo ::= SEQUENCE {
     eContentType       CONTENT-TYPE.&id({ContentSet}),
     eContent           [0] EXPLICIT OCTET STRING
             ( CONTAINING CONTENT-TYPE.
                 &Type({ContentSet}{@eContentType})) OPTIONAL }
        
   EncapsulatedContentInfo ::= SEQUENCE {
     eContentType       CONTENT-TYPE.&id({ContentSet}),
     eContent           [0] EXPLICIT OCTET STRING
             ( CONTAINING CONTENT-TYPE.
                 &Type({ContentSet}{@eContentType})) OPTIONAL }
        
   SignerInfo ::= SEQUENCE {
     version CMSVersion,
     sid SignerIdentifier,
     digestAlgorithm DigestAlgorithmIdentifier,
     signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,
     signatureAlgorithm SignatureAlgorithmIdentifier,
     signature SignatureValue,
     unsignedAttrs [1] IMPLICIT Attributes
         {{UnsignedAttributes}} OPTIONAL }
        
   SignerInfo ::= SEQUENCE {
     version CMSVersion,
     sid SignerIdentifier,
     digestAlgorithm DigestAlgorithmIdentifier,
     signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,
     signatureAlgorithm SignatureAlgorithmIdentifier,
     signature SignatureValue,
     unsignedAttrs [1] IMPLICIT Attributes
         {{UnsignedAttributes}} OPTIONAL }
        
   SignedAttributes ::= Attributes {{ SignedAttributesSet }}
        
   SignedAttributes ::= Attributes {{ SignedAttributesSet }}
        
   SignerIdentifier ::= CHOICE {
     issuerAndSerialNumber IssuerAndSerialNumber,
     ...,
     [[3: subjectKeyIdentifier [0] SubjectKeyIdentifier ]] }
        
   SignerIdentifier ::= CHOICE {
     issuerAndSerialNumber IssuerAndSerialNumber,
     ...,
     [[3: subjectKeyIdentifier [0] SubjectKeyIdentifier ]] }
        
   SignedAttributesSet ATTRIBUTE ::=
     { aa-signingTime | aa-messageDigest | aa-contentType, ... }
        
   SignedAttributesSet ATTRIBUTE ::=
     { aa-signingTime | aa-messageDigest | aa-contentType, ... }
        
   UnsignedAttributes ATTRIBUTE ::= { aa-countersignature, ... }
        
   UnsignedAttributes ATTRIBUTE ::= { aa-countersignature, ... }
        
   SignatureValue ::= OCTET STRING
        
   SignatureValue ::= OCTET STRING
        
   EnvelopedData ::= SEQUENCE {
     version CMSVersion,
     originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
     recipientInfos RecipientInfos,
     encryptedContentInfo EncryptedContentInfo,
     ...,
     [[2: unprotectedAttrs [1] IMPLICIT Attributes
         {{ UnprotectedEnvAttributes }} OPTIONAL ]] }
        
   EnvelopedData ::= SEQUENCE {
     version CMSVersion,
     originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
     recipientInfos RecipientInfos,
     encryptedContentInfo EncryptedContentInfo,
     ...,
     [[2: unprotectedAttrs [1] IMPLICIT Attributes
         {{ UnprotectedEnvAttributes }} OPTIONAL ]] }
        
   OriginatorInfo ::= SEQUENCE {
     certs [0] IMPLICIT CertificateSet OPTIONAL,
     crls [1] IMPLICIT RevocationInfoChoices OPTIONAL }
        
   OriginatorInfo ::= SEQUENCE {
     certs [0] IMPLICIT CertificateSet OPTIONAL,
     crls [1] IMPLICIT RevocationInfoChoices OPTIONAL }
        
   RecipientInfos ::= SET SIZE (1..MAX) OF RecipientInfo
        
   RecipientInfos ::= SET SIZE (1..MAX) OF RecipientInfo
        
   EncryptedContentInfo ::=
     EncryptedContentInfoType { ContentEncryptionAlgorithmIdentifier }
        
   EncryptedContentInfo ::=
     EncryptedContentInfoType { ContentEncryptionAlgorithmIdentifier }
        
   EncryptedContentInfoType { AlgorithmIdentifierType } ::= SEQUENCE {
     contentType        CONTENT-TYPE.&id({ContentSet}),
     contentEncryptionAlgorithm AlgorithmIdentifierType,
     encryptedContent   [0] IMPLICIT OCTET STRING OPTIONAL }
        
   EncryptedContentInfoType { AlgorithmIdentifierType } ::= SEQUENCE {
     contentType        CONTENT-TYPE.&id({ContentSet}),
     contentEncryptionAlgorithm AlgorithmIdentifierType,
     encryptedContent   [0] IMPLICIT OCTET STRING OPTIONAL }
        
   -- If you want to do constraints, you might use:
   -- EncryptedContentInfo ::= SEQUENCE {
   --  contentType        CONTENT-TYPE.&id({ContentSet}),
   --  contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
   --  encryptedContent   [0] IMPLICIT ENCRYPTED {CONTENT-TYPE.
   --      &Type({ContentSet}{@contentType}) OPTIONAL }
   -- ENCRYPTED {ToBeEncrypted} ::= OCTET STRING ( CONSTRAINED BY
   --        { ToBeEncrypted } )
        
   -- If you want to do constraints, you might use:
   -- EncryptedContentInfo ::= SEQUENCE {
   --  contentType        CONTENT-TYPE.&id({ContentSet}),
   --  contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
   --  encryptedContent   [0] IMPLICIT ENCRYPTED {CONTENT-TYPE.
   --      &Type({ContentSet}{@contentType}) OPTIONAL }
   -- ENCRYPTED {ToBeEncrypted} ::= OCTET STRING ( CONSTRAINED BY
   --        { ToBeEncrypted } )
        
   UnprotectedEnvAttributes ATTRIBUTE ::=  { ... }
   UnprotectedEncAttributes ATTRIBUTE ::=  { ... }
        
   UnprotectedEnvAttributes ATTRIBUTE ::=  { ... }
   UnprotectedEncAttributes ATTRIBUTE ::=  { ... }
        
   RecipientInfo ::= CHOICE {
     ktri           KeyTransRecipientInfo,
     ...,
     [[3: kari  [1] KeyAgreeRecipientInfo ]],
     [[4: kekri [2] KEKRecipientInfo]],
     [[5: pwri  [3] PasswordRecipientInfo,
          ori   [4] OtherRecipientInfo ]] }
        
   RecipientInfo ::= CHOICE {
     ktri           KeyTransRecipientInfo,
     ...,
     [[3: kari  [1] KeyAgreeRecipientInfo ]],
     [[4: kekri [2] KEKRecipientInfo]],
     [[5: pwri  [3] PasswordRecipientInfo,
          ori   [4] OtherRecipientInfo ]] }
        
   EncryptedKey ::= OCTET STRING
        
   EncryptedKey ::= OCTET STRING
        
   KeyTransRecipientInfo ::= SEQUENCE {
     version CMSVersion,  -- always set to 0 or 2
     rid RecipientIdentifier,
     keyEncryptionAlgorithm AlgorithmIdentifier
         {KEY-TRANSPORT, {KeyTransportAlgorithmSet}},
     encryptedKey EncryptedKey }
        
   KeyTransRecipientInfo ::= SEQUENCE {
     version CMSVersion,  -- always set to 0 or 2
     rid RecipientIdentifier,
     keyEncryptionAlgorithm AlgorithmIdentifier
         {KEY-TRANSPORT, {KeyTransportAlgorithmSet}},
     encryptedKey EncryptedKey }
        
   KeyTransportAlgorithmSet KEY-TRANSPORT ::= { KeyTransportAlgs, ... }
        
   KeyTransportAlgorithmSet KEY-TRANSPORT ::= { KeyTransportAlgs, ... }
        
   RecipientIdentifier ::= CHOICE {
     issuerAndSerialNumber IssuerAndSerialNumber,
     ...,
     [[2: subjectKeyIdentifier [0] SubjectKeyIdentifier ]] }
   KeyAgreeRecipientInfo ::= SEQUENCE {
     version CMSVersion,  -- always set to 3
     originator [0] EXPLICIT OriginatorIdentifierOrKey,
     ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
     keyEncryptionAlgorithm AlgorithmIdentifier
         {KEY-AGREE, {KeyAgreementAlgorithmSet}},
     recipientEncryptedKeys RecipientEncryptedKeys }
        
   RecipientIdentifier ::= CHOICE {
     issuerAndSerialNumber IssuerAndSerialNumber,
     ...,
     [[2: subjectKeyIdentifier [0] SubjectKeyIdentifier ]] }
   KeyAgreeRecipientInfo ::= SEQUENCE {
     version CMSVersion,  -- always set to 3
     originator [0] EXPLICIT OriginatorIdentifierOrKey,
     ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
     keyEncryptionAlgorithm AlgorithmIdentifier
         {KEY-AGREE, {KeyAgreementAlgorithmSet}},
     recipientEncryptedKeys RecipientEncryptedKeys }
        
   KeyAgreementAlgorithmSet KEY-AGREE ::= { KeyAgreementAlgs, ... }
        
   KeyAgreementAlgorithmSet KEY-AGREE ::= { KeyAgreementAlgs, ... }
        
   OriginatorIdentifierOrKey ::= CHOICE {
     issuerAndSerialNumber IssuerAndSerialNumber,
     subjectKeyIdentifier [0] SubjectKeyIdentifier,
     originatorKey [1] OriginatorPublicKey }
        
   OriginatorIdentifierOrKey ::= CHOICE {
     issuerAndSerialNumber IssuerAndSerialNumber,
     subjectKeyIdentifier [0] SubjectKeyIdentifier,
     originatorKey [1] OriginatorPublicKey }
        
   OriginatorPublicKey ::= SEQUENCE {
     algorithm AlgorithmIdentifier {PUBLIC-KEY, {OriginatorKeySet}},
     publicKey BIT STRING }
        
   OriginatorPublicKey ::= SEQUENCE {
     algorithm AlgorithmIdentifier {PUBLIC-KEY, {OriginatorKeySet}},
     publicKey BIT STRING }
        
   OriginatorKeySet PUBLIC-KEY ::= { KeyAgreePublicKeys, ... }
        
   OriginatorKeySet PUBLIC-KEY ::= { KeyAgreePublicKeys, ... }
        
   RecipientEncryptedKeys ::= SEQUENCE OF RecipientEncryptedKey
        
   RecipientEncryptedKeys ::= SEQUENCE OF RecipientEncryptedKey
        
   RecipientEncryptedKey ::= SEQUENCE {
     rid KeyAgreeRecipientIdentifier,
     encryptedKey EncryptedKey }
        
   RecipientEncryptedKey ::= SEQUENCE {
     rid KeyAgreeRecipientIdentifier,
     encryptedKey EncryptedKey }
        
   KeyAgreeRecipientIdentifier ::= CHOICE {
     issuerAndSerialNumber IssuerAndSerialNumber,
     rKeyId [0] IMPLICIT RecipientKeyIdentifier }
        
   KeyAgreeRecipientIdentifier ::= CHOICE {
     issuerAndSerialNumber IssuerAndSerialNumber,
     rKeyId [0] IMPLICIT RecipientKeyIdentifier }
        
   RecipientKeyIdentifier ::= SEQUENCE {
     subjectKeyIdentifier SubjectKeyIdentifier,
     date GeneralizedTime OPTIONAL,
     other OtherKeyAttribute OPTIONAL }
        
   RecipientKeyIdentifier ::= SEQUENCE {
     subjectKeyIdentifier SubjectKeyIdentifier,
     date GeneralizedTime OPTIONAL,
     other OtherKeyAttribute OPTIONAL }
        
   SubjectKeyIdentifier ::= OCTET STRING
        
   SubjectKeyIdentifier ::= OCTET STRING
        
   KEKRecipientInfo ::= SEQUENCE {
     version CMSVersion,  -- always set to 4
     kekid KEKIdentifier,
     keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
     encryptedKey EncryptedKey }
        
   KEKRecipientInfo ::= SEQUENCE {
     version CMSVersion,  -- always set to 4
     kekid KEKIdentifier,
     keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
     encryptedKey EncryptedKey }
        
   KEKIdentifier ::= SEQUENCE {
     keyIdentifier OCTET STRING,
     date GeneralizedTime OPTIONAL,
     other OtherKeyAttribute OPTIONAL }
   PasswordRecipientInfo ::= SEQUENCE {
     version CMSVersion,   -- always set to 0
     keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier
                             OPTIONAL,
     keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
     encryptedKey EncryptedKey }
        
   KEKIdentifier ::= SEQUENCE {
     keyIdentifier OCTET STRING,
     date GeneralizedTime OPTIONAL,
     other OtherKeyAttribute OPTIONAL }
   PasswordRecipientInfo ::= SEQUENCE {
     version CMSVersion,   -- always set to 0
     keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier
                             OPTIONAL,
     keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
     encryptedKey EncryptedKey }
        
   OTHER-RECIPIENT ::= TYPE-IDENTIFIER
        
   OTHER-RECIPIENT ::= TYPE-IDENTIFIER
        
   OtherRecipientInfo ::= SEQUENCE {
     oriType    OTHER-RECIPIENT.
             &id({SupportedOtherRecipInfo}),
     oriValue   OTHER-RECIPIENT.
             &Type({SupportedOtherRecipInfo}{@oriType})}
        
   OtherRecipientInfo ::= SEQUENCE {
     oriType    OTHER-RECIPIENT.
             &id({SupportedOtherRecipInfo}),
     oriValue   OTHER-RECIPIENT.
             &Type({SupportedOtherRecipInfo}{@oriType})}
        
   SupportedOtherRecipInfo OTHER-RECIPIENT ::= { ... }
        
   SupportedOtherRecipInfo OTHER-RECIPIENT ::= { ... }
        
   DigestedData ::= SEQUENCE {
     version CMSVersion,
     digestAlgorithm DigestAlgorithmIdentifier,
     encapContentInfo EncapsulatedContentInfo,
     digest Digest, ... }
        
   DigestedData ::= SEQUENCE {
     version CMSVersion,
     digestAlgorithm DigestAlgorithmIdentifier,
     encapContentInfo EncapsulatedContentInfo,
     digest Digest, ... }
        
   Digest ::= OCTET STRING
        
   Digest ::= OCTET STRING
        
   EncryptedData ::= SEQUENCE {
     version CMSVersion,
     encryptedContentInfo EncryptedContentInfo,
     ...,
     [[2: unprotectedAttrs [1] IMPLICIT Attributes
         {{UnprotectedEncAttributes}} OPTIONAL ]] }
        
   EncryptedData ::= SEQUENCE {
     version CMSVersion,
     encryptedContentInfo EncryptedContentInfo,
     ...,
     [[2: unprotectedAttrs [1] IMPLICIT Attributes
         {{UnprotectedEncAttributes}} OPTIONAL ]] }
        
   AuthenticatedData ::= SEQUENCE {
     version CMSVersion,
     originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
     recipientInfos RecipientInfos,
     macAlgorithm MessageAuthenticationCodeAlgorithm,
     digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
     encapContentInfo EncapsulatedContentInfo,
     authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
     mac MessageAuthenticationCode,
     unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
        
   AuthenticatedData ::= SEQUENCE {
     version CMSVersion,
     originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
     recipientInfos RecipientInfos,
     macAlgorithm MessageAuthenticationCodeAlgorithm,
     digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
     encapContentInfo EncapsulatedContentInfo,
     authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
     mac MessageAuthenticationCode,
     unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
        
   AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
     {{AuthAttributeSet}}
        
   AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
     {{AuthAttributeSet}}
        
   AuthAttributeSet ATTRIBUTE ::= { aa-contentType | aa-messageDigest
                                        | aa-signingTime, ...}
        
   AuthAttributeSet ATTRIBUTE ::= { aa-contentType | aa-messageDigest
                                        | aa-signingTime, ...}
        
   MessageAuthenticationCode ::= OCTET STRING
        
   MessageAuthenticationCode ::= OCTET STRING
        
   UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
       {{UnauthAttributeSet}}
        
   UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
       {{UnauthAttributeSet}}
        
   UnauthAttributeSet ATTRIBUTE ::= {...}
        
   UnauthAttributeSet ATTRIBUTE ::= {...}
        

-- -- General algorithm definitions --

----通用算法定义--

   DigestAlgorithmIdentifier ::= AlgorithmIdentifier
     {DIGEST-ALGORITHM, {DigestAlgorithmSet}}
        
   DigestAlgorithmIdentifier ::= AlgorithmIdentifier
     {DIGEST-ALGORITHM, {DigestAlgorithmSet}}
        
   DigestAlgorithmSet DIGEST-ALGORITHM ::= {
     CryptographicMessageSyntaxAlgorithms-2009.MessageDigestAlgs, ... }
        
   DigestAlgorithmSet DIGEST-ALGORITHM ::= {
     CryptographicMessageSyntaxAlgorithms-2009.MessageDigestAlgs, ... }
        
   SignatureAlgorithmIdentifier ::= AlgorithmIdentifier
     {SIGNATURE-ALGORITHM, {SignatureAlgorithmSet}}
        
   SignatureAlgorithmIdentifier ::= AlgorithmIdentifier
     {SIGNATURE-ALGORITHM, {SignatureAlgorithmSet}}
        
   SignatureAlgorithmSet SIGNATURE-ALGORITHM ::=
     { SignatureAlgs, ... }
        
   SignatureAlgorithmSet SIGNATURE-ALGORITHM ::=
     { SignatureAlgs, ... }
        
   KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
     {KEY-WRAP, {KeyEncryptionAlgorithmSet}}
        
   KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
     {KEY-WRAP, {KeyEncryptionAlgorithmSet}}
        
   KeyEncryptionAlgorithmSet KEY-WRAP ::= { KeyWrapAlgs, ... }
        
   KeyEncryptionAlgorithmSet KEY-WRAP ::= { KeyWrapAlgs, ... }
        
   ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
     {CONTENT-ENCRYPTION, {ContentEncryptionAlgorithmSet}}
        
   ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
     {CONTENT-ENCRYPTION, {ContentEncryptionAlgorithmSet}}
        
   ContentEncryptionAlgorithmSet CONTENT-ENCRYPTION ::=
     { ContentEncryptionAlgs, ... }
        
   ContentEncryptionAlgorithmSet CONTENT-ENCRYPTION ::=
     { ContentEncryptionAlgs, ... }
        
   MessageAuthenticationCodeAlgorithm ::= AlgorithmIdentifier
     {MAC-ALGORITHM, {MessageAuthenticationCodeAlgorithmSet}}
        
   MessageAuthenticationCodeAlgorithm ::= AlgorithmIdentifier
     {MAC-ALGORITHM, {MessageAuthenticationCodeAlgorithmSet}}
        
   MessageAuthenticationCodeAlgorithmSet MAC-ALGORITHM ::=
     { MessageAuthAlgs, ... }
        
   MessageAuthenticationCodeAlgorithmSet MAC-ALGORITHM ::=
     { MessageAuthAlgs, ... }
        
   KeyDerivationAlgorithmIdentifier ::= AlgorithmIdentifier
     {KEY-DERIVATION, {KeyDerivationAlgs, ...}}
        
   KeyDerivationAlgorithmIdentifier ::= AlgorithmIdentifier
     {KEY-DERIVATION, {KeyDerivationAlgs, ...}}
        
   RevocationInfoChoices ::= SET OF RevocationInfoChoice
        
   RevocationInfoChoices ::= SET OF RevocationInfoChoice
        
   RevocationInfoChoice ::= CHOICE {
     crl CertificateList,
     ...,
     [[5: other [1] IMPLICIT OtherRevocationInfoFormat ]] }
        
   RevocationInfoChoice ::= CHOICE {
     crl CertificateList,
     ...,
     [[5: other [1] IMPLICIT OtherRevocationInfoFormat ]] }
        
   OTHER-REVOK-INFO ::= TYPE-IDENTIFIER
        
   OTHER-REVOK-INFO ::= TYPE-IDENTIFIER
        
   OtherRevocationInfoFormat ::= SEQUENCE {
     otherRevInfoFormat    OTHER-REVOK-INFO.
             &id({SupportedOtherRevokInfo}),
     otherRevInfo          OTHER-REVOK-INFO.
             &Type({SupportedOtherRevokInfo}{@otherRevInfoFormat})}
        
   OtherRevocationInfoFormat ::= SEQUENCE {
     otherRevInfoFormat    OTHER-REVOK-INFO.
             &id({SupportedOtherRevokInfo}),
     otherRevInfo          OTHER-REVOK-INFO.
             &Type({SupportedOtherRevokInfo}{@otherRevInfoFormat})}
        
   SupportedOtherRevokInfo OTHER-REVOK-INFO ::= { ... }
        
   SupportedOtherRevokInfo OTHER-REVOK-INFO ::= { ... }
        
   CertificateChoices ::= CHOICE {
     certificate Certificate,
     extendedCertificate [0] IMPLICIT ExtendedCertificate,
          -- Obsolete
     ...,
     [[3: v1AttrCert [1] IMPLICIT AttributeCertificateV1]],
          -- Obsolete
     [[4: v2AttrCert [2] IMPLICIT AttributeCertificateV2]],
     [[5: other      [3] IMPLICIT OtherCertificateFormat]] }
        
   CertificateChoices ::= CHOICE {
     certificate Certificate,
     extendedCertificate [0] IMPLICIT ExtendedCertificate,
          -- Obsolete
     ...,
     [[3: v1AttrCert [1] IMPLICIT AttributeCertificateV1]],
          -- Obsolete
     [[4: v2AttrCert [2] IMPLICIT AttributeCertificateV2]],
     [[5: other      [3] IMPLICIT OtherCertificateFormat]] }
        
   AttributeCertificateV2 ::= AttributeCertificate
        
   AttributeCertificateV2 ::= AttributeCertificate
        
   OTHER-CERT-FMT ::= TYPE-IDENTIFIER
        
   OTHER-CERT-FMT ::= TYPE-IDENTIFIER
        
   OtherCertificateFormat ::= SEQUENCE {
     otherCertFormat OTHER-CERT-FMT.
             &id({SupportedCertFormats}),
     otherCert       OTHER-CERT-FMT.
             &Type({SupportedCertFormats}{@otherCertFormat})}
        
   OtherCertificateFormat ::= SEQUENCE {
     otherCertFormat OTHER-CERT-FMT.
             &id({SupportedCertFormats}),
     otherCert       OTHER-CERT-FMT.
             &Type({SupportedCertFormats}{@otherCertFormat})}
        
   SupportedCertFormats OTHER-CERT-FMT ::= { ... }
        
   SupportedCertFormats OTHER-CERT-FMT ::= { ... }
        
   CertificateSet ::= SET OF CertificateChoices
        
   CertificateSet ::= SET OF CertificateChoices
        
   IssuerAndSerialNumber ::= SEQUENCE {
     issuer Name,
     serialNumber CertificateSerialNumber }
        
   IssuerAndSerialNumber ::= SEQUENCE {
     issuer Name,
     serialNumber CertificateSerialNumber }
        
   CMSVersion ::= INTEGER  { v0(0), v1(1), v2(2), v3(3), v4(4), v5(5) }
        
   CMSVersion ::= INTEGER  { v0(0), v1(1), v2(2), v3(3), v4(4), v5(5) }
        
   UserKeyingMaterial ::= OCTET STRING
        
   UserKeyingMaterial ::= OCTET STRING
        
   KEY-ATTRIBUTE ::= TYPE-IDENTIFIER
        
   KEY-ATTRIBUTE ::= TYPE-IDENTIFIER
        
   OtherKeyAttribute ::= SEQUENCE {
     keyAttrId  KEY-ATTRIBUTE.
             &id({SupportedKeyAttributes}),
     keyAttr    KEY-ATTRIBUTE.
             &Type({SupportedKeyAttributes}{@keyAttrId})}
        
   OtherKeyAttribute ::= SEQUENCE {
     keyAttrId  KEY-ATTRIBUTE.
             &id({SupportedKeyAttributes}),
     keyAttr    KEY-ATTRIBUTE.
             &Type({SupportedKeyAttributes}{@keyAttrId})}
        
   SupportedKeyAttributes KEY-ATTRIBUTE ::= { ... }
        
   SupportedKeyAttributes KEY-ATTRIBUTE ::= { ... }
        

-- Content Type Object Identifiers

--内容类型对象标识符

   id-ct-contentInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) ct(1) 6 }
        
   id-ct-contentInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) ct(1) 6 }
        
   ct-Data CONTENT-TYPE ::= { IDENTIFIED BY id-data }
        
   ct-Data CONTENT-TYPE ::= { IDENTIFIED BY id-data }
        
   id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 }
        
   id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 }
        
   ct-SignedData CONTENT-TYPE ::=
     { TYPE SignedData IDENTIFIED BY id-signedData}
        
   ct-SignedData CONTENT-TYPE ::=
     { TYPE SignedData IDENTIFIED BY id-signedData}
        
   id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }
        
   id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }
        
   ct-EnvelopedData CONTENT-TYPE ::=
     { TYPE EnvelopedData IDENTIFIED BY id-envelopedData}
        
   ct-EnvelopedData CONTENT-TYPE ::=
     { TYPE EnvelopedData IDENTIFIED BY id-envelopedData}
        
   id-envelopedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 3 }
        
   id-envelopedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 3 }
        
   ct-DigestedData CONTENT-TYPE ::=
     { TYPE DigestedData IDENTIFIED BY id-digestedData}
        
   ct-DigestedData CONTENT-TYPE ::=
     { TYPE DigestedData IDENTIFIED BY id-digestedData}
        
   id-digestedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 5 }
        
   id-digestedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 5 }
        
   ct-EncryptedData CONTENT-TYPE ::=
     { TYPE EncryptedData IDENTIFIED BY id-encryptedData}
        
   ct-EncryptedData CONTENT-TYPE ::=
     { TYPE EncryptedData IDENTIFIED BY id-encryptedData}
        
   id-encryptedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 6 }
        
   id-encryptedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs7(7) 6 }
        
   ct-AuthenticatedData CONTENT-TYPE ::=
     { TYPE AuthenticatedData IDENTIFIED BY id-ct-authData}
        
   ct-AuthenticatedData CONTENT-TYPE ::=
     { TYPE AuthenticatedData IDENTIFIED BY id-ct-authData}
        
   id-ct-authData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 2 }
        
   id-ct-authData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 2 }
        

-- -- The CMS Attributes --

--——CMS属性--

   MessageDigest ::= OCTET STRING
        
   MessageDigest ::= OCTET STRING
        
   SigningTime  ::= Time
        
   SigningTime  ::= Time
        
   Time ::= CHOICE {
     utcTime UTCTime,
     generalTime GeneralizedTime }
        
   Time ::= CHOICE {
     utcTime UTCTime,
     generalTime GeneralizedTime }
        
   Countersignature ::= SignerInfo
        
   Countersignature ::= SignerInfo
        

-- Attribute Object Identifiers

--属性对象标识符

   aa-contentType ATTRIBUTE ::=
     { TYPE ContentType IDENTIFIED BY id-contentType }
   id-contentType OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) 3 }
        
   aa-contentType ATTRIBUTE ::=
     { TYPE ContentType IDENTIFIED BY id-contentType }
   id-contentType OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) 3 }
        
   aa-messageDigest ATTRIBUTE ::=
     { TYPE MessageDigest IDENTIFIED BY id-messageDigest}
   id-messageDigest OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) 4 }
        
   aa-messageDigest ATTRIBUTE ::=
     { TYPE MessageDigest IDENTIFIED BY id-messageDigest}
   id-messageDigest OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) 4 }
        
   aa-signingTime ATTRIBUTE ::=
     { TYPE SigningTime IDENTIFIED BY id-signingTime }
   id-signingTime OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) 5 }
        
   aa-signingTime ATTRIBUTE ::=
     { TYPE SigningTime IDENTIFIED BY id-signingTime }
   id-signingTime OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) 5 }
        
   aa-countersignature ATTRIBUTE ::=
     { TYPE Countersignature IDENTIFIED BY id-countersignature }
   id-countersignature OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) 6 }
        
   aa-countersignature ATTRIBUTE ::=
     { TYPE Countersignature IDENTIFIED BY id-countersignature }
   id-countersignature OBJECT IDENTIFIER ::= { iso(1) member-body(2)
     us(840) rsadsi(113549) pkcs(1) pkcs9(9) 6 }
        

-- -- Obsolete Extended Certificate syntax from PKCS#6 --

----PKCS#6中过时的扩展证书语法--

   ExtendedCertificateOrCertificate ::= CHOICE {
     certificate Certificate,
     extendedCertificate [0] IMPLICIT ExtendedCertificate }
        
   ExtendedCertificateOrCertificate ::= CHOICE {
     certificate Certificate,
     extendedCertificate [0] IMPLICIT ExtendedCertificate }
        
   ExtendedCertificate ::= SEQUENCE {
     extendedCertificateInfo ExtendedCertificateInfo,
     signatureAlgorithm SignatureAlgorithmIdentifier,
     signature Signature }
        
   ExtendedCertificate ::= SEQUENCE {
     extendedCertificateInfo ExtendedCertificateInfo,
     signatureAlgorithm SignatureAlgorithmIdentifier,
     signature Signature }
        
   ExtendedCertificateInfo ::= SEQUENCE {
     version CMSVersion,
     certificate Certificate,
     attributes UnauthAttributes }
        
   ExtendedCertificateInfo ::= SEQUENCE {
     version CMSVersion,
     certificate Certificate,
     attributes UnauthAttributes }
        
   Signature ::= BIT STRING
        
   Signature ::= BIT STRING
        
   Attribute{ ATTRIBUTE:AttrList } ::= SEQUENCE {
     attrType           ATTRIBUTE.
             &id({AttrList}),
     attrValues         SET OF ATTRIBUTE.
             &Type({AttrList}{@attrType})  }
        
   Attribute{ ATTRIBUTE:AttrList } ::= SEQUENCE {
     attrType           ATTRIBUTE.
             &id({AttrList}),
     attrValues         SET OF ATTRIBUTE.
             &Type({AttrList}{@attrType})  }
        
   Attributes { ATTRIBUTE:AttrList } ::=
     SET SIZE (1..MAX) OF Attribute {{ AttrList }}
        
   Attributes { ATTRIBUTE:AttrList } ::=
     SET SIZE (1..MAX) OF Attribute {{ AttrList }}
        

END

终止

10. ASN.1 Module RFC 5752
10. ASN.1模块RFC 5752

We have updated the ASN.1 module associated with this document to be 2008 compliant and to use the set of classes previously defined in [RFC5911].

我们已经更新了与本文档相关的ASN.1模块,使其符合2008年的要求,并使用了[RFC5911]中先前定义的一组类。

   MultipleSignatures-2010
     { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
       smime(16) modules(0) id-mod-multipleSign-2009(59) }
   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN
     -- EXPORTS All
     -- The types and values defined in this module are exported for use
     -- in the other ASN.1 modules.  Other applications may use them for
     -- their own purposes.
        
   MultipleSignatures-2010
     { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
       smime(16) modules(0) id-mod-multipleSign-2009(59) }
   DEFINITIONS IMPLICIT TAGS ::=
   BEGIN
     -- EXPORTS All
     -- The types and values defined in this module are exported for use
     -- in the other ASN.1 modules.  Other applications may use them for
     -- their own purposes.
        

IMPORTS

进口

-- Imports from PKIX-Common-Types-2009 [RFC5912]

--从PKIX-Common-Types-2009导入[RFC5912]

     ATTRIBUTE
       FROM PKIX-CommonTypes-2009
           { iso(1) identified-organization(3) dod(6) internet(1)
             security(5) mechanisms(5) pkix(7) id-mod(0)
             id-mod-pkixCommon-02(57)}
        
     ATTRIBUTE
       FROM PKIX-CommonTypes-2009
           { iso(1) identified-organization(3) dod(6) internet(1)
             security(5) mechanisms(5) pkix(7) id-mod(0)
             id-mod-pkixCommon-02(57)}
        

-- Imports from CryptographicMessageSyntax-2010 [RFC6268]

--从CryptographicMessageSyntax-2010[RFC6268]导入

     DigestAlgorithmIdentifier, SignatureAlgorithmIdentifier
       FROM CryptographicMessageSyntax-2010
       { iso(1) member-body(2) us(840) rsadsi(113549)
          pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
        
     DigestAlgorithmIdentifier, SignatureAlgorithmIdentifier
       FROM CryptographicMessageSyntax-2010
       { iso(1) member-body(2) us(840) rsadsi(113549)
          pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) }
        

-- Imports from ExtendedSecurityServices-2009 [RFC5911]

--从ExtendedSecurityServices-2009导入[RFC5911]

     ESSCertIDv2
       FROM ExtendedSecurityServices-2009
       { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
         smime(16) modules(0) id-mod-ess-2006-02(42) }
     ;
        
     ESSCertIDv2
       FROM ExtendedSecurityServices-2009
       { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
         smime(16) modules(0) id-mod-ess-2006-02(42) }
     ;
        
     --
     -- Section 3.0
     --
     --  at-multipleSignatures should be added ONLY to the
     --    SignedAttributesSet defined in [RFC5652]
     --
        
     --
     -- Section 3.0
     --
     --  at-multipleSignatures should be added ONLY to the
     --    SignedAttributesSet defined in [RFC5652]
     --
        
     at-multipleSignatures ATTRIBUTE ::= {
       TYPE MultipleSignatures
       IDENTIFIED BY id-aa-multipleSignatures
     }
        
     at-multipleSignatures ATTRIBUTE ::= {
       TYPE MultipleSignatures
       IDENTIFIED BY id-aa-multipleSignatures
     }
        
     id-aa-multipleSignatures OBJECT IDENTIFIER ::= {
       iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
       id-aa(2) 51 }
        
     id-aa-multipleSignatures OBJECT IDENTIFIER ::= {
       iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
       id-aa(2) 51 }
        
     MultipleSignatures ::= SEQUENCE {
       bodyHashAlg     DigestAlgorithmIdentifier,
       signAlg         SignatureAlgorithmIdentifier,
       signAttrsHash   SignAttrsHash,
       cert            ESSCertIDv2 OPTIONAL
     }
        
     MultipleSignatures ::= SEQUENCE {
       bodyHashAlg     DigestAlgorithmIdentifier,
       signAlg         SignatureAlgorithmIdentifier,
       signAttrsHash   SignAttrsHash,
       cert            ESSCertIDv2 OPTIONAL
     }
        
     SignAttrsHash ::= SEQUENCE {
       algID            DigestAlgorithmIdentifier,
       hash             OCTET STRING
     }
        
     SignAttrsHash ::= SEQUENCE {
       algID            DigestAlgorithmIdentifier,
       hash             OCTET STRING
     }
        

END

终止

11. Module Identifiers in ASN.1
11. ASN.1中的模块标识符

One potential issue that can occur when updating modules is the fact that a large number of modules may need to be updated if they import from a newly updated module. This section addresses one method that can be used to deal with this problem, but the modules in this document don't currently implement the solution discussed here.

更新模块时可能出现的一个潜在问题是,如果从新更新的模块导入大量模块,则可能需要更新这些模块。本节介绍了一种可用于处理此问题的方法,但本文档中的模块目前未实现此处讨论的解决方案。

When looking at an import statement, there are three portions: The list of items imported, a textual name for the module, and an object identifier for the module. Full implementations of ASN.1 do module matching using first the object identifier, and if that is not present, the textual name of the module. Note however that some older implementations used the textual name of the module for the purposes of matching. In a full implementation, the name assigned to the module is scoped to the ASN.1 module that it appears in (and thus the need to match the module it is importing from).

查看import语句时,有三个部分:导入的项列表、模块的文本名称和模块的对象标识符。ASN.1的完整实现首先使用对象标识符进行模块匹配,如果对象标识符不存在,则使用模块的文本名称。但是请注意,一些较旧的实现使用模块的文本名称进行匹配。在完整的实现中,分配给模块的名称的作用域是它出现在其中的ASN.1模块(因此需要匹配它从中导入的模块)。

One can create a module that contains only the module number assignments and import the module assignments from the new module. This means that when a module is replaced, one can replace the previous module, update the module number assignment module, and recompile without having to modify any other modules.

可以创建仅包含模块编号分配的模块,并从新模块导入模块分配。这意味着在替换模块时,可以替换以前的模块、更新模块编号分配模块并重新编译,而无需修改任何其他模块。

A sample module assignment module would be:

模块分配模块示例如下:

   ModuleNumbers
   DEFINITIONS TAGS ::=
   BEGIN
      id-mod-CMS ::= { iso(1) member-body(2) us(840) rsadsi(113549)
         pkcs(1) pkcs-9(9) smime(16) modules(0) 58 }
        
   ModuleNumbers
   DEFINITIONS TAGS ::=
   BEGIN
      id-mod-CMS ::= { iso(1) member-body(2) us(840) rsadsi(113549)
         pkcs(1) pkcs-9(9) smime(16) modules(0) 58 }
        
      id-mod-AlgInfo ::=
         {iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-algorithmInformation-02(58)}
   END
        
      id-mod-AlgInfo ::=
         {iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) id-mod(0)
          id-mod-algorithmInformation-02(58)}
   END
        

This would be used in the following import statement:

这将在以下导入语句中使用:

IMPORTS id-mod-CMS, id-mod-AlgInfo FROM ModuleNumbers -- Note it will match on the name since no -- OID is provided

从ModuleNumbers导入id mod CMS、id mod AlgInfo——注意,它将在名称上匹配,因为没有提供--OID

CMSVersion, EncapsulatedContentInfo, CONTENT-TYPE FROM CryptographicMessageSyntax-2010 id-mod-CMS

CMS版本,封装的ContentInfo,来自CryptographicMessageSyntax-2010 id mod CMS的内容类型

AlgorithmIdentifier{}, SMIME-CAPS, ParamOptions FROM AlgorithmInformation-2009 id-mod-AlgInfo ;

算法标识符{},SMIME-CAPS,来自算法信息-2009 id mod AlgInfo的参数选项;

12. Security Considerations
12. 安全考虑

This document itself does not have any security considerations. The ASN.1 modules keep the same bits-on-the-wire as the modules that they replace.

本文档本身没有任何安全考虑。ASN.1模块在导线上保留与其替换的模块相同的位。

13. References
13. 工具书类
13.1. Normative References
13.1. 规范性引用文件

[ASN1-2008] ITU-T, "ITU-T Recommendations X.680, X.681, X.682, and X.683", 2008.

[ASN1-2008]ITU-T,“ITU-T建议X.680、X.681、X.682和X.683”,2008年。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC3274] Gutmann, P., "Compressed Data Content Type for Cryptographic Message Syntax (CMS)", RFC 3274, June 2002.

[RFC3274]Gutmann,P.,“加密消息语法(CMS)的压缩数据内容类型”,RFC 3274,2002年6月。

[RFC3779] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP Addresses and AS Identifiers", RFC 3779, June 2004.

[RFC3779]Lynn,C.,Kent,S.,和K.Seo,“IP地址和AS标识符的X.509扩展”,RFC 3779,2004年6月。

[RFC4073] Housley, R., "Protecting Multiple Contents with the Cryptographic Message Syntax (CMS)", RFC 4073, May 2005.

[RFC4073]Housley,R.,“使用加密消息语法(CMS)保护多个内容”,RFC 4073,2005年5月。

[RFC4231] Nystrom, M., "Identifiers and Test Vectors for HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512", RFC 4231, December 2005.

[RFC4231]Nystrom,M.“HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384和HMAC-SHA-512的标识符和测试向量”,RFC 42312005年12月。

[RFC4334] Housley, R. and T. Moore, "Certificate Extensions and Attributes Supporting Authentication in Point-to-Point Protocol (PPP) and Wireless Local Area Networks (WLAN)", RFC 4334, February 2006.

[RFC4334]Housley,R.和T.Moore,“支持点对点协议(PPP)和无线局域网(WLAN)认证的证书扩展和属性”,RFC 4334,2006年2月。

[RFC5083] Housley, R., "Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type", RFC 5083, November 2007.

[RFC5083]Housley,R.,“加密消息语法(CMS)认证的信封数据内容类型”,RFC 5083,2007年11月。

[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, May 2008.

[RFC5280]Cooper,D.,Santesson,S.,Farrell,S.,Boeyen,S.,Housley,R.,和W.Polk,“Internet X.509公钥基础设施证书和证书撤销列表(CRL)配置文件”,RFC 52802008年5月。

[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, RFC 5652, September 2009.

[RFC5652]Housley,R.,“加密消息语法(CMS)”,STD 70,RFC 56522009年9月。

[RFC5752] Turner, S. and J. Schaad, "Multiple Signatures in Cryptographic Message Syntax (CMS)", RFC 5752, January 2010.

[RFC5752]Turner,S.和J.Schaad,“加密消息语法(CMS)中的多重签名”,RFC 5752,2010年1月。

[RFC5911] Hoffman, P. and J. Schaad, "New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME", RFC 5911, June 2010.

[RFC5911]Hoffman,P.和J.Schaad,“用于加密消息语法(CMS)和S/MIME的新ASN.1模块”,RFC 59112010年6月。

[RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, June 2010.

[RFC5912]Hoffman,P.和J.Schaad,“使用X.509(PKIX)的公钥基础设施的新ASN.1模块”,RFC 5912,2010年6月。

[RFC6019] Housley, R., "BinaryTime: An Alternate Format for Representing Date and Time in ASN.1", RFC 6019, September 2010.

[RFC6019]Housley,R.,“二进制时间:在ASN.1中表示日期和时间的替代格式”,RFC 6019,2010年9月。

13.2. Informative References
13.2. 资料性引用

[RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.2 Message Specification", RFC 5751, January 2010.

[RFC5751]Ramsdell,B.和S.Turner,“安全/多用途Internet邮件扩展(S/MIME)版本3.2消息规范”,RFC 57512010年1月。

[RFC6025] Wallace, C. and C. Gardiner, "ASN.1 Translation", RFC 6025, October 2010.

[RFC6025]华莱士,C.和C.加德纳,“ASN.1翻译”,RFC6025,2010年10月。

Authors' Addresses

作者地址

Jim Schaad Soaring Hawk Consulting

吉姆·沙德·霍克咨询公司

   EMail: ietf@augustcellars.com
        
   EMail: ietf@augustcellars.com
        

Sean Turner IECA, Inc. 3057 Nutley Street, Suite 106 Fairfax, VA 22031

Sean Turner IECA,Inc.弗吉尼亚州费尔法克斯市努特利街3057号106室,邮编22031

   EMail: turners@ieca.com
        
   EMail: turners@ieca.com