rfc2927.MIME Directory Profile for LDAP Schema
- 格式:pdf
- 大小:11.19 KB
- 文档页数:10
ldif 例子-回复什么是ldif?LDIF(Lightweight Directory Access Protocol Data Interchange Format)是一种用于在不同的LDAP(Lightweight Directory Access Protocol)目录服务器之间传输数据的格式。
LDAP是一种用于访问和维护分层数据库的协议,它提供了对目录数据的读取、搜索和修改功能。
而LDIF则是一种文本文件格式,用于描述LDAP目录中的数据和操作。
LDIF文件由一系列的记录组成,每个记录包含一个标识符和一系列属性值。
标识符用于唯一地标识记录,而属性值则是记录中存储的数据。
每个属性值由一个属性类型和一个或多个属性值组成,属性类型描述了属性的含义,而属性值则是实际的数据。
LDIF文件可以用于导入和导出LDAP目录的数据和操作。
对于导入操作,可以使用LDIF文件将数据从其他格式转换为LDAP目录中的数据。
而对于导出操作,可以使用LDIF文件将LDAP目录中的数据导出到其他格式。
这使得在不同的LDAP目录服务器之间传输数据变得更加简单和高效。
那么,如何使用LDIF文件进行数据导入和导出呢?对于数据导入,首先需要创建一个包含要导入的数据的LDIF文件。
LDIF文件可以使用文本编辑器创建,每个记录用一个文本块表示。
每个属性值由“属性类型:属性值”格式表示。
示例如下:dn: cn=user1,ou=users,dc=example,dc=comobjectClass: inetOrgPersoncn: user1sn: Smithmail: user1@exampledn: cn=user2,ou=users,dc=example,dc=comobjectClass: inetOrgPersoncn: user2sn: Johnsonmail: user2@example上述LDIF文件包含了两个记录,分别表示了两个用户的属性。
Network Working Group R. Housley Request for Comments: 5652 Vigil Security Obsoletes: 3852 September 2009 Category: Standards TrackCryptographic Message Syntax (CMS)AbstractThis document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encryptarbitrary message content.Status of This MemoThis document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions forimprovements. Please refer to the current edition of the "InternetOfficial Protocol Standards" (STD 1) for the standardization stateand status of this protocol. Distribution of this memo is unlimited. Copyright and License NoticeCopyright (c) 2009 IETF Trust and the persons identified as thedocument authors. All rights reserved.This document is subject to BCP 78 and the IETF Trust’s LegalProvisions Relating to IETF Documents(/license-info) in effect on the date ofpublication of this document. Please review these documentscarefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e ofthe Trust Legal Provisions and are provided without warranty asdescribed in the BSD License.This document may contain material from IETF Documents or IETFContributions published or made publicly available before November10, 2008. The person(s) controlling the copyright in some of thismaterial may not have granted the IETF Trust the right to allowmodifications 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 modifiedoutside the IETF Standards Process, and derivative works of it maynot be created outside the IETF Standards Process, except to formatit for publication as an RFC or to translate it into languages other than English.Housley Standards Track [Page 1]Table of Contents1. Introduction (3)1.1. Evolution of the CMS (4)1.1.1. Changes Since PKCS #7 Version 1.5 (4)1.1.2. Changes Since RFC 2630 (4)1.1.3. Changes Since RFC 3369 (5)1.1.4. Changes Since RFC 3852 (5)1.2. Terminology (5)1.3. Version Numbers (6)2. General Overview (6)3. General Syntax (7)4. Data Content Type (7)5. Signed-data Content Type (8)5.1. SignedData Type (9)5.2. EncapsulatedContentInfo Type (11)5.2.1. Compatibility with PKCS #7 (12)5.3. SignerInfo Type (13)5.4. Message Digest Calculation Process (16)5.5. Signature Generation Process (16)5.6. Signature Verification Process (17)6. Enveloped-Data Content Type (17)6.1. EnvelopedData Type (18)6.2. RecipientInfo Type (21)6.2.1. KeyTransRecipientInfo Type (22)6.2.2. KeyAgreeRecipientInfo Type (23)6.2.3. KEKRecipientInfo Type (25)6.2.4. PasswordRecipientInfo Type (26)6.2.5. OtherRecipientInfo Type (27)6.3. Content-encryption Process (27)6.4. Key-Encryption Process (28)7. Digested-Data Content Type (28)8. Encrypted-Data Content Type (29)9. Authenticated-Data Content Type (30)9.1. AuthenticatedData Type (31)9.2. MAC Generation (33)9.3. MAC Verification (34)10. Useful Types (34)10.1. Algorithm Identifier Types (35)10.1.1. DigestAlgorithmIdentifier (35)10.1.2. SignatureAlgorithmIdentifier (35)10.1.3. KeyEncryptionAlgorithmIdentifier (35)10.1.4. ContentEncryptionAlgorithmIdentifier (36)10.1.5. MessageAuthenticationCodeAlgorithm (36)10.1.6. KeyDerivationAlgorithmIdentifier (36)10.2. Other Useful Types (36)10.2.1. RevocationInfoChoices (36)10.2.2. CertificateChoices (37)Housley Standards Track [Page 2]10.2.3. CertificateSet (38)10.2.4. IssuerAndSerialNumber (38)10.2.5. CMSVersion (39)10.2.6. UserKeyingMaterial (39)10.2.7. OtherKeyAttribute (39)11. Useful Attributes (39)11.1. Content Type (40)11.2. Message Digest (40)11.3. Signing Time (41)11.4. Countersignature (42)12. ASN.1 Modules (43)12.1. CMS ASN.1 Module (44)12.2. Version 1 Attribute Certificate ASN.1 Module (51)13. References (52)13.1. Normative References (52)13.2. Informative References (53)14. Security Considerations (54)15. Acknowledgments (56)1. IntroductionThis document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encryptarbitrary message content.The CMS describes an encapsulation syntax for data protection. Itsupports digital signatures and encryption. The syntax allowsmultiple encapsulations; one encapsulation envelope can be nestedinside another. Likewise, one party can digitally sign somepreviously encapsulated data. It also allows arbitrary attributes,such as signing time, to be signed along with the message content,and it provides for other attributes such as countersignatures to be associated with a signature.The CMS can support a variety of architectures for certificate-based key management, such as the one defined by the PKIX (Public KeyInfrastructure using X.509) working group [PROFILE].The CMS values are generated using ASN.1 [X.208-88], using BER-encoding (Basic Encoding Rules) [X.209-88]. Values are typicallyrepresented as octet strings. While many systems are capable oftransmitting arbitrary octet strings reliably, it is well known that many electronic mail systems are not. This document does not address mechanisms for encoding octet strings for reliable transmission insuch environments.Housley Standards Track [Page 3]1.1. Evolution of the CMSThe CMS is derived from PKCS #7 version 1.5, which is documented inRFC 2315 [PKCS#7]. PKCS #7 version 1.5 was developed outside of the IETF; it was originally published as an RSA Laboratories TechnicalNote in November 1993. Since that time, the IETF has takenresponsibility for the development and maintenance of the CMS.Today, several important IETF Standards-Track protocols make use ofthe CMS.This section describes that changes that the IETF has made to the CMS in each of the published versions.1.1.1. Changes Since PKCS #7 Version 1.5RFC 2630 [CMS1] was the first version of the CMS on the IETFStandards Track. Wherever possible, backward compatibility with PKCS #7 version 1.5 is preserved; however, changes were made toaccommodate version 1 attribute certificate transfer and to supportalgorithm-independent key management. PKCS #7 version 1.5 includedsupport only for key transport. RFC 2630 adds support for keyagreement and previously distributed symmetric key-encryption keytechniques.1.1.2. Changes Since RFC 2630RFC 3369 [CMS2] obsoletes RFC 2630 [CMS1] and RFC 3211 [PWRI].Password-based key management is included in the CMS specification,and an extension mechanism to support new key management schemeswithout further changes to the CMS is specified. Backwardcompatibility with RFC 2630 and RFC 3211 is preserved; however,version 2 attribute certificate transfer is added, and the use ofversion 1 attribute certificates is deprecated.Secure/Multipurpose Internet Mail Extensions (S/MIME) v2 signatures[MSG2], which are based on PKCS #7 version 1.5, are compatible withS/MIME v3 signatures [MSG3]and S/MIME v3.1 signatures [MSG3.1].However, there are some subtle compatibility issues with signaturesbased on PKCS #7 version 1.5. These issues are discussed in Section 5.2.1. These issues remain with the current version of the CMS.Specific cryptographic algorithms are not discussed in this document, but they were discussed in RFC 2630. The discussion of specificcryptographic algorithms has been moved to a separate document[CMSALG]. Separation of the protocol and algorithm specificationsallows the IETF to update each document independently. Thisspecification does not require the implementation of any particular Housley Standards Track [Page 4]algorithms. Rather, protocols that rely on the CMS are expected tochoose appropriate algorithms for their environment. The algorithms may be selected from [CMSALG] or elsewhere.1.1.3. Changes Since RFC 3369RFC 3852 [CMS3] obsoletes RFC 3369 [CMS2]. As discussed in theprevious section, RFC 3369 introduced an extension mechanism tosupport new key management schemes without further changes to theCMS. RFC 3852 introduces a similar extension mechanism to supportadditional certificate formats and revocation status informationformats without further changes to the CMS. These extensions areprimarily documented in Sections 10.2.1 and 10.2.2. Backwardcompatibility with earlier versions of the CMS is preserved.The use of version numbers is described in Section 1.3.Since the publication of RFC 3369, a few errata have been noted.These errata are posted on the RFC Editor web site. These errorshave been corrected in this document.The text in Section 11.4 that describes the counter signatureunsigned attribute is clarified. Hopefully, the revised text isclearer about the portion of the SignerInfo signature that is covered by a countersignature.1.1.4. Changes Since RFC 3852This document obsoletes RFC 3852 [CMS3]. The primary reason for the publication of this document is to advance the CMS along thestandards maturity ladder.This document includes the clarifications that were originallypublished in RFC 4853 [CMSMSIG] regarding the proper handling of the SignedData protected content type when more than one digitalsignature is present.Since the publication of RFC 3852, a few errata have been noted.These errata are posted on the RFC Editor web site. These errorshave been corrected in this document.1.2. TerminologyIn this document, the key words MUST, MUST NOT, REQUIRED, SHOULD,SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL are to be interpreted asdescribed in [STDWORDS].Housley Standards Track [Page 5]1.3. Version NumbersEach of the major data structures includes a version number as thefirst item in the data structure. The version numbers are intendedto avoid ASN.1 decode errors. Some implementations do not check the version number prior to attempting a decode, and if a decode erroroccurs, then the version number is checked as part of the errorhandling routine. This is a reasonable approach; it places errorprocessing outside of the fast path. This approach is also forgiving when an incorrect version number is used by the sender.Most of the initial version numbers were assigned in PKCS #7 version 1.5. Others were assigned when the structure was initially created. Whenever a structure is updated, a higher version number is assigned. However, to ensure maximum interoperability, the higher versionnumber is only used when the new syntax feature is employed. Thatis, the lowest version number that supports the generated syntax isused.2. General OverviewThe CMS is general enough to support many different content types.This document defines one protection content, ContentInfo.ContentInfo encapsulates a single identified content type, and theidentified type may provide further encapsulation. This documentdefines six content types: data, signed-data, enveloped-data,digested-data, encrypted-data, and authenticated-data. Additionalcontent types can be defined outside this document.An implementation that conforms to this specification MUST implement the protection content, ContentInfo, and MUST implement the data,signed-data, and enveloped-data content types. The other contenttypes MAY be implemented.As a general design philosophy, each content type permits single pass processing using indefinite-length Basic Encoding Rules (BER)encoding. Single-pass operation is especially helpful if content is large, stored on tapes, or is "piped" from another process. Single- pass operation has one significant drawback: it is difficult toperform encode operations using the Distinguished Encoding Rules(DER) [X.509-88] encoding in a single pass since the lengths of thevarious components may not be known in advance. However, signedattributes within the signed-data content type and authenticatedattributes within the authenticated-data content type need to betransmitted in DER form to ensure that recipients can verify acontent that contains one or more unrecognized attributes. Signedattributes and authenticated attributes are the only data types used in the CMS that require DER encoding.Housley Standards Track [Page 6]3. General SyntaxThe following object identifier identifies the content informationtype:id-ct-contentInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) ct(1) 6 }The CMS associates a content type identifier with a content. Thesyntax MUST have ASN.1 type ContentInfo:ContentInfo ::= SEQUENCE {contentType ContentType,content [0] EXPLICIT ANY DEFINED BY contentType }ContentType ::= OBJECT IDENTIFIERThe fields of ContentInfo have the following meanings:contentType indicates the type of the associated content. It isan object identifier; it is a unique string of integers assignedby an authority that defines the content type.content is the associated content. The type of content can bedetermined uniquely by contentType. Content types for data,signed-data, enveloped-data, digested-data, encrypted-data, andauthenticated-data are defined in this document. If additionalcontent types are defined in other documents, the ASN.1 typedefined SHOULD NOT be a CHOICE type.4. Data Content TypeThe following object identifier identifies the data content type:id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2)us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 }The data content type is intended to refer to arbitrary octetstrings, such as ASCII text files; the interpretation is left to the application. Such strings need not have any internal structure(although they could have their own ASN.1 definition or otherstructure).S/MIME uses id-data to identify MIME-encoded content. The use ofthis content identifier is specified in RFC 2311 for S/MIME v2[MSG2], RFC 2633 for S/MIME v3 [MSG3], and RFC 3851 for S/MIME v3.1[MSG3.1].Housley Standards Track [Page 7]The data content type is generally encapsulated in the signed-data,enveloped-data, digested-data, encrypted-data, or authenticated-data content type.5. Signed-data Content TypeThe signed-data content type consists of a content of any type andzero or more signature values. Any number of signers in parallel can sign any type of content.The typical application of the signed-data content type representsone signer’s digital signature on content of the data content type.Another typical application disseminates certificates and certificate revocation lists (CRLs).The process by which signed-data is constructed involves thefollowing steps:1. For each signer, a message digest, or hash value, is computed on the content with a signer-specific message-digest algorithm. If the signer is signing any information other than the content, the message digest of the content and the other information aredigested with the signer’s message digest algorithm (see Section 5.4), and the result becomes the "message digest."2. For each signer, the message digest is digitally signed using the signer’s private key.3. For each signer, the signature value and other signer-specificinformation are collected into a SignerInfo value, as defined in Section 5.3. Certificates and CRLs for each signer, and thosenot corresponding to any signer, are collected in this step.4. The message digest algorithms for all the signers and theSignerInfo values for all the signers are collected together with the content into a SignedData value, as defined in Section 5.1.A recipient independently computes the message digest. This message digest and the signer’s public key are used to verify the signaturevalue. The signer’s public key is referenced in one of two ways. It can be referenced by an issuer distinguished name along with anissuer-specific serial number to uniquely identify the certificatethat contains the public key. Alternatively, it can be referenced by a subject key identifier, which accommodates both certified anduncertified public keys. While not required, the signer’scertificate can be included in the SignedData certificates field. Housley Standards Track [Page 8]When more than one signature is present, the successful validation of one signature associated with a given signer is usually treated as a successful signature by that signer. However, there are someapplication environments where other rules are needed. Anapplication that employs a rule other than one valid signature foreach signer must specify those rules. Also, where simple matching of the signer identifier is not sufficient to determine whether thesignatures were generated by the same signer, the applicationspecification must describe how to determine which signatures weregenerated by the same signer. Support of different communities ofrecipients is the primary reason that signers choose to include more than one signature. For example, the signed-data content type might include signatures generated with the RSA signature algorithm andwith the Elliptic Curve Digital Signature Algorithm (ECDSA) signature algorithm. This allows recipients to verify the signature associated with one algorithm or the other.This section is divided into six parts. The first part describes the top-level type SignedData, the second part describesEncapsulatedContentInfo, the third part describes the per-signerinformation type SignerInfo, and the fourth, fifth, and sixth partsdescribe the message digest calculation, signature generation, andsignature verification processes, respectively.5.1. SignedData TypeThe following object identifier identifies the signed-data contenttype:id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }The signed-data content type shall have ASN.1 type SignedData:SignedData ::= SEQUENCE {version CMSVersion,digestAlgorithms DigestAlgorithmIdentifiers,encapContentInfo EncapsulatedContentInfo,certificates [0] IMPLICIT CertificateSet OPTIONAL,crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,signerInfos SignerInfos }DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifierSignerInfos ::= SET OF SignerInfoHousley Standards Track [Page 9]The fields of type SignedData have the following meanings:version is the syntax version number. The appropriate valuedepends on certificates, eContentType, and SignerInfo. Theversion MUST be assigned as follows:IF ((certificates is present) AND(any certificates with a type of other are present)) OR((crls is present) AND(any crls with a type of other are present))THEN version MUST be 5ELSEIF (certificates is present) AND(any version 2 attribute certificates are present)THEN version MUST be 4ELSEIF ((certificates is present) AND(any version 1 attribute certificates are present)) OR (any SignerInfo structures are version 3) OR(encapContentInfo eContentType is other than id-data) THEN version MUST be 3ELSE version MUST be 1digestAlgorithms is a collection of message digest algorithmidentifiers. There MAY be any number of elements in thecollection, including zero. Each element identifies the messagedigest algorithm, along with any associated parameters, used byone or more signer. The collection is intended to list themessage digest algorithms employed by all of the signers, in anyorder, to facilitate one-pass signature verification.Implementations MAY fail to validate signatures that use a digest algorithm that is not included in this set. The message digesting process is described in Section 5.4.encapContentInfo is the signed content, consisting of a contenttype identifier and the content itself. Details of theEncapsulatedContentInfo type are discussed in Section 5.2.certificates is a collection of certificates. It is intended that the set of certificates be sufficient to contain certificationpaths from a recognized "root" or "top-level certificationauthority" to all of the signers in the signerInfos field. There may be more certificates than necessary, and there may becertificates sufficient to contain certification paths from two or more independent top-level certification authorities. There mayalso be fewer certificates than necessary, if it is expected that recipients have an alternate means of obtaining necessaryHousley Standards Track [Page 10]certificates (e.g., from a previous set of certificates). Thesigner’s certificate MAY be included. The use of version 1attribute certificates is strongly discouraged.crls is a collection of revocation status information. It isintended that the collection contain information sufficient todetermine whether the certificates in the certificates field arevalid, but such correspondence is not necessary. Certificaterevocation lists (CRLs) are the primary source of revocationstatus information. There MAY be more CRLs than necessary, andthere MAY also be fewer CRLs than necessary.signerInfos is a collection of per-signer information. There MAY be any number of elements in the collection, including zero. When the collection represents more than one signature, the successful validation of one of signature from a given signer ought to betreated as a successful signature by that signer. However, there are some application environments where other rules are needed.The details of the SignerInfo type are discussed in Section 5.3.Since each signer can employ a different digital signaturetechnique, and future specifications could update the syntax, all implementations MUST gracefully handle unimplemented versions ofSignerInfo. Further, since all implementations will not supportevery possible signature algorithm, all implementations MUSTgracefully handle unimplemented signature algorithms when they are encountered.5.2. EncapsulatedContentInfo TypeThe content is represented in the type EncapsulatedContentInfo:EncapsulatedContentInfo ::= SEQUENCE {eContentType ContentType,eContent [0] EXPLICIT OCTET STRING OPTIONAL }ContentType ::= OBJECT IDENTIFIERThe fields of type EncapsulatedContentInfo have the followingmeanings:eContentType is an object identifier. The object identifieruniquely specifies the content type.eContent is the content itself, carried as an octet string. TheeContent need not be DER encoded.Housley Standards Track [Page 11]The optional omission of the eContent within theEncapsulatedContentInfo field makes it possible to construct"external signatures". In the case of external signatures, thecontent being signed is absent from the EncapsulatedContentInfo value included in the signed-data content type. If the eContent valuewithin EncapsulatedContentInfo is absent, then the signatureValue is calculated and the eContentType is assigned as though the eContentvalue was present.In the degenerate case where there are no signers, theEncapsulatedContentInfo value being "signed" is irrelevant. In this case, the content type within the EncapsulatedContentInfo value being "signed" MUST be id-data (as defined in Section 4), and the contentfield of the EncapsulatedContentInfo value MUST be omitted.5.2.1. Compatibility with PKCS #7This section contains a word of warning to implementers that wish to support both the CMS and PKCS #7 [PKCS#7] SignedData content types.Both the CMS and PKCS #7 identify the type of the encapsulatedcontent with an object identifier, but the ASN.1 type of the content itself is variable in PKCS #7 SignedData content type.PKCS #7 defines content as:content [0] EXPLICIT ANY DEFINED BY contentType OPTIONALThe CMS defines eContent as:eContent [0] EXPLICIT OCTET STRING OPTIONALThe CMS definition is much easier to use in most applications, and it is compatible with both S/MIME v2 and S/MIME v3. S/MIME signedmessages using the CMS and PKCS #7 are compatible because identicalsigned message formats are specified in RFC 2311 for S/MIME v2[MSG2], RFC 2633 for S/MIME v3 [MSG3], and RFC 3851 for S/MIME v3.1[MSG3.1]. S/MIME v2 encapsulates the MIME content in a Data type(that is, an OCTET STRING) carried in the SignedData contentInfocontent ANY field, and S/MIME v3 carries the MIME content in theSignedData encapContentInfo eContent OCTET STRING. Therefore, inS/MIME v2, S/MIME v3, and S/MIME v3.1, the MIME content is placed in an OCTET STRING and the message digest is computed over the identical portions of the content. That is, the message digest is computedover the octets comprising the value of the OCTET STRING, neither the tag nor length octets are included.Housley Standards Track [Page 12]There are incompatibilities between the CMS and PKCS #7 SignedDatatypes when the encapsulated content is not formatted using the Datatype. For example, when an RFC 2634 signed receipt [ESS] isencapsulated in the CMS SignedData type, then the Receipt SEQUENCE is encoded in the SignedData encapContentInfo eContent OCTET STRING and the message digest is computed using the entire Receipt SEQUENCEencoding (including tag, length and value octets). However, if anRFC 2634 signed receipt is encapsulated in the PKCS #7 SignedDatatype, then the Receipt SEQUENCE is DER encoded [X.509-88] in theSignedData contentInfo content ANY field (a SEQUENCE, not an OCTETSTRING). Therefore, the message digest is computed using only thevalue octets of the Receipt SEQUENCE encoding.The following strategy can be used to achieve backward compatibility with PKCS #7 when processing SignedData content types. If theimplementation is unable to ASN.1 decode the SignedData type usingthe CMS SignedData encapContentInfo eContent OCTET STRING syntax,then the implementation MAY attempt to decode the SignedData typeusing the PKCS #7 SignedData contentInfo content ANY syntax andcompute the message digest accordingly.The following strategy can be used to achieve backward compatibility with PKCS #7 when creating a SignedData content type in which theencapsulated content is not formatted using the Data type.Implementations MAY examine the value of the eContentType, and thenadjust the expected DER encoding of eContent based on the objectidentifier value. For example, to support Microsoft Authenticode[MSAC], the following information MAY be included:eContentType Object Identifier is set to { 1 3 6 1 4 1 311 2 1 4 } eContent contains DER-encoded Authenticode signing information5.3. SignerInfo TypePer-signer information is represented in the type SignerInfo:SignerInfo ::= SEQUENCE {version CMSVersion,sid SignerIdentifier,digestAlgorithm DigestAlgorithmIdentifier,signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,signatureAlgorithm SignatureAlgorithmIdentifier,signature SignatureValue,unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL }Housley Standards Track [Page 13]。
Internet Message Access Protocol (IMAP) is an email retrieval protocol. It stores email messages on a mail server and enables the recipient to view and manipulate them as though they were stored locally on their device. IMAP was developed in the late 1980s and has since become one of the most widely used email retrieval protocols.The IMAP standard is defined in RFC 3501, which was published in 2003. This document provides a detailed description of the protocol's functionality, including its data formats, commands, and responses. The standard specifies how IMAP clients and servers should communicate with each other to enable the retrieval and manipulation of email messages.One of the key features of IMAP is its support for multiple clients accessing the same mailbox simultaneously. This is achieved through the use of a "shared" storage model, where all clients see the same set of messages and folders stored on the server. This allows users to access their email from different devices without having to worry about synchronizing their messages manually.Another important aspect of IMAP is its support for message organization and management. Clients can create, delete, and rename folders, as well as move messages between folders. They can also search for specific messages based on various criteria, such as sender, subject, or date.IMAP also provides a range of features for managing individual messages. Clients can mark messages as read or unread, flag them for follow-up, and even move them to a specific folder. They can also reply to messages, forward them to others, and generate replies or forwards with attachments.Overall, the IMAP standard provides a powerful and flexible framework for managing email messages. Its support for shared storage, message organization, and advanced message management features make it a popular choice for both personal and business email users.。
`nameoflastusedpublishprofile`是一个Azure DevOps Pipeline的步骤,它用于获取并输出最后一个使用的发布配置文件(publish profile)的名称。
发布配置文件是一种特定于Azure DevOps Pipelines的特殊类型的工作项,用于配置如何将源代码或资源推送到Azure或其他的云平台。
当你在Azure DevOps中创建一个Pipeline时,你通常会选择使用不同的发布配置文件。
这些文件包含了各种信息,如目标Azure环境、Azure存储账户、应用程序名等。
在Azure DevOps Pipeline中,当你执行诸如推送代码到Azure之类的任务时,Pipeline会自动选择最后一个使用的发布配置文件。
这就是`nameoflastusedpublishprofile`这个步骤的作用。
这个步骤通常在Pipeline的输出中显示,这样你可以看到Pipeline最后使用的发布配置文件的名称。
这对于调试和了解Pipeline如何工作非常有用,特别是当你需要了解Pipeline如何根据不同的发布配置文件进行构建和部署时。
如果你想查看`nameoflastusedpublishprofile`的值,你可以在Azure DevOps的Pipeline视图中找到它。
具体来说,你可以在Pipeline日志的输出中查找这个值。
这个值通常会显示在Pipeline 日志的底部,可能类似于"Last used publish profile: MyProfile"这样的信息。
请注意,这个步骤仅在创建了发布配置文件并使用它们来创建Azure DevOps Pipelines后才会出现。
如果你没有使用发布配置文件,或者你的Pipeline没有选择最后一个使用的发布配置文件,那么这个步骤可能不会显示任何值。
总的来说,`nameoflastusedpublishprofile`是一个有用的Azure DevOps Pipeline步骤,它可以帮助你了解Pipeline如何使用不同的发布配置文件进行构建和部署。
Apache-Tika解析Word⽂档通常在使⽤爬⾍时,爬取到⽹上的⽂章都是各式各样的格式处理起来⽐较⿇烦,这⾥我们使⽤Apache-Tika来处理Word格式的⽂章,如下:package com.mengyao.tika.app;import java.io.File;import java.io.FileInputStream;import org.apache.tika.metadata.Metadata;import org.apache.tika.parser.ParseContext;import org.apache.tika.parser.Parser;import org.apache.tika.parser.microsoft.OfficeParser;import org.apache.tika.sax.BodyContentHandler;public class WordApp {public static void main(final String[] args) throws Exception {// Tika默认是10*1024*1024,这⾥防⽌⽂件过⼤导致Tika报错BodyContentHandler handler = new BodyContentHandler(1024 * 1024 * 10);Metadata metadata = new Metadata();// Tika-1.1最⾼⽀持2007及更低版本的Office Word⽂档,如果是⾼于2007版本的Word⽂档需要使⽤POI处理(Tika会报错)FileInputStream inputstream = new FileInputStream(new File("D:/笔试题.doc"));ParseContext pcontext = new ParseContext();// 解析Word⽂档时应由超类AbstractParser的派⽣类OfficeParser实现Parser msofficeparser = new OfficeParser();msofficeparser.parse(inputstream, handler, metadata, pcontext);// 获取Word⽂档的内容System.out.println("Word⽂档内容:" + handler.toString());// 获取Word⽂档的元数据System.out.println("Word⽂档元数据:");String[] metadataNames = s();for (String name : metadataNames) {System.out.println(name + " : " + metadata.get(name));}}}。
H.264(AVC:Advanced Video Coding)是目前应用广泛的视频编码格式,而为了让H.264能在网络环境中进行传输,需要将之封装为RTP包,协议RFC6184就是描述如何定义这些RTP包的。
RFC6184废弃了RFC3984,是目前最新的协议标准。
简介H.264标准协议定义了两种不同的类型:一种称为VCL(Video Coding Layer),另一种称为NAL(Network Abstraction Layer)。
为了在网络上进行传输,NAL Encoder会将VCL Encoder输出的内容(slice)封装称为NALUs (NAL Units),然后再封包(如RTP包)进行传输。
NALU的格式如下:F(1 bit):如果是坏帧,则置1。
否则为0。
NRI(2 bit):如果是00,则表示此帧即使丢失了,也不影响解码;其他值则表示此帧如果丢失了,会影响解码。
Type(5 bit):NAL Unit的类型。
RTP包格式RTP头格式在RFC3550协议中定义,其中与H.264相关的字段如下:M(1 bit):表示此RTP包是NAL的最后一个RTP包。
PT(7 bits):动态映射的payload type的值,通常在SDP中完成协商。
Sequence number(16 bits):单调递增,同时也表示了解码的顺序。
timestamp(32 bits):NALU的采样时间,时钟频率是90k。
RTP负载格式根据NALU和RTP包大小,定义了三种不同的负载格式。
如下:Single NAL Unit:仅包含一个NALU。
Aggregation Unit:包含多个NALU,其中包含四种类型:STAP-A, STAP-B, MTAP16, MTAP24。
Fragmentation Unit:当一个NALU太大导致无法放入一个RTP包时,会使用这种格式。
NALU type与各个负载格式的对应关系如下:根据不同的使用场景,定义了三种不同的封包模式。
IMAP命令前几天要做关于imap协议方面的东西,对imap协议的命令不熟,特别是fetch命令的用法,不但网上很难找到,就是专业文章也很难找到。
经过这两天对一些书籍和rfc3501的深入学习,了解了一些关于imap4协议命令的用法,有了一点心得体会,现在拿出来,希望能给做方面东西的朋友们一点帮助。
1.createcreate可以建立选定名字的新邮箱。
邮箱名称通常就是拎路径的文件夹全名。
(有些imap客户机采用邮件夹称谓崭新邮箱)c:a004createowatagusiam/blurdybloop/*在建立的目录owatagusiam之下建立一个名叫blurdybloop的邮箱,当然可以省略第一步,轻易a004deletedelete命令删掉选定名字的文件夹。
文件夹名字通常就是拎路径的文件夹全名,当邮箱被删掉后,其中的邮件也不复存在。
renamerename命令可以修正文件夹的名称,它采用两个参数:当前邮箱名和崭新邮箱名,两个参数的命名符合标准路径命名规则。
listappendappend命令允许client上载一个邮件到指定的folder(文件夹/邮箱)中。
命令中包含了新邮件的属性、日期/时间、大小,随后是邮件数据。
c:a003appendsaved-messages(\\seen){310}c:date:mon,7feb199421:52:25-0800(pst)c:from:fredfoobarc:subject:afternoonmeetingc:to:******************.ed uc:message-id:c:mime-version:1.0c:content-type:text/plain;charset=us-asciic:c:hellojoe,doyouthinkwecanmeetat3:30tomorrow?c:selectselect命令使client选取某个邮箱(folder),则表示即将对该邮箱(folder)内的邮件并作操作方式。
VCard 通信薄格式说明最在网络上面查找关于vcard格式的技术资料,发现中文的资料很少,只能阅读vCard MIME Directory Pro-2426)翻译它需要花太多的时间,现在把自己的理解做下记录,希望对大家有帮助VCard 数据格式的标识符是VCARDl 预定义的值类型:uri, date, date-time, floatl 新增加的值类型:binary, phone-number, utc-offset and vcard valuel 预定义的类型:SOURCE, NAME, PROFILE, BEGIN, END.l 新增加的类型:FN, N, NICKNAME, PHOTO, BDAY, ADR, LABEL, TEL, EMAIL,MAILER, TZ, GEO, TITLE, ROLE, LOGO, AGENT, ORG, CATEGORIES, NOTE,PRODID, REV, SORT-STRING, SOUND, URL, UID, VERSION, CLASS, KEYl 预定义的参数:ENCODING, VALUE, CHARSET, LANGUAGE, CONTEXT.l 新增加的参数:TYPEvCard数据格式行是: 类型[;参数]:值ADR;HOME;POSTAL;PARCEL:;;街道地址;深圳;广东;433330;中国ADR:是一个类型,表示是一条地址信息“;”号是分隔符合HOME;POSTAL;PARCEL表示参数,表示ADR的用途或者是类别:;;街道地址;深圳;广东;433330;中国表示是一个ADR值,地址值预定义类型的用法BEGIN 和END 类型Vcard内容必须以BEGIN:VCARD开头,以END:VCARD 结尾参考一个vcard的例子1:BEGIN:VCARDVERSION:2.1N:周;鹏FN:周鹏NICKNAME:nickNameORG:深圳敖天;部门TITLE:职位NOTE;ENCODING=QUOTED-PRINTABLE:=C6=E4=CB= FBTEL;WORK;VOICE:电话1TEL;WORK;VOICE:电话2TEL;HOME;VOICE:电话1TEL;HOME;VOICE:电话2TEL;CELL;VOICE:TEL;PAGER;VOICE:0755TEL;WORK;FAX:传真TEL;HOME;FAX:传真ADR;WORK:;;单位地址;深圳;广东;433000;国家LABEL;WORK;ENCODING=QUOTED-PRINTABLE:=B5= A5=CE=BB=B5=D8=D6=B7=C9=EE=DB=DA=B9=E3=B6=AB433000=B9=FA=BC=D2ADR;HOME;POSTAL;PARCEL:;;街道地址;深圳;广东;433330;中国LABEL;HOME;ENCODING=QUOTED-PRINTABLE:=BD= D6=B5=C0=B5=D8=D6=B7=C9=EE=DB=DA=B9=E3=B6=AB433330=D6=D0=B9=FAURL:http://URL:单位主页EMAIL;PREF;INTERNET:X-QQ:38394246X-ICQ:icqX-WAB-GENDER:2REV:20060220T180305ZEND:VCARDNAME 类型如果在内容中出现NAME类型,那么它的值是一个可以显示的,描述vCard源的文本PROFILE类型如果出现PROFILE类型,那么它的值必须是“VCARD”SOURCE 类型如果包含SOURCE类型,它的值提供一些怎样找到vCard 源的信息预定参数的用法LANGUAGE参考[MIME-DIR]文档ENCODING参考[MIME-DIR]文档VALUE参考[MIME-DIR]文档预定义值类型的用法在[MIME-DIR]中预定类型的值一定不能包含用逗号分开的列表,除N,NICKNAME, ADR和CATEGORIES值类型外。
rfc相关设置及使用RFC(Request for Comments)是一种用于定义互联网协议、标准和相关问题的文档。
RFC的格式由互联网工程任务组(IETF)统一规定,它们记录了网络技术的发展和演进过程。
在本文中,我们将介绍RFC相关的设置和使用。
1. 了解RFC的作用和历史:RFC是由IETF组织制定的一种标准化文档,它记录了互联网协议的设计、开发和演化过程。
RFC起源于20世纪60年代的ARPANET,是一种社区驱动的文档,通过共享和讨论来推动互联网技术的发展。
RFC文档旨在提供指南、建议和最佳实践,帮助网络技术人员解决问题。
2. 寻找和阅读RFC文档:RFC文档可以在互联网上免费获取,IETF的官方网站和其他资源库都有存档。
这些文档按照顺序编号,并且以RFC开头,比如RFC 791定义了IPv4协议。
通过搜索引擎或在IETF网站上使用关键词搜索,可以找到特定主题的RFC文档。
阅读RFC文档时,应该注意文档的状态,有一些可能已经被更新或废弃。
3. 使用RFC文档:RFC文档在网络技术的发展过程中起着重要的指导作用。
它们提供了协议规范、算法实现、安全性和隐私等方面的建议。
网络管理员、网络工程师和开发人员可以使用RFC文档来了解和理解特定协议或标准的设计原理和要求。
此外,RFC文档还常用于进行互联网协议的实现、编程和配置。
4. 参与RFC的制定过程:RFC并不是静止的文件,而是一个持续演进的过程。
任何人都可以参与到RFC的制定过程中。
要参与RFC的制定,可以加入IETF并参与相关的工作组或邮件列表。
通过这种方式,个人可以提出改进建议,参与讨论和标准化的制定。
5. 遵循RFC的指导原则:在网络技术领域,遵循RFC的指导原则是至关重要的。
这些指导原则包括设计原则、协议分层、安全性和互操作性等要求。
遵循RFC的指导原则可以确保网络协议的正确性、稳定性和可靠性,同时也可以促进网络技术的发展和创新。
总结起来,RFC在互联网技术领域起着重要的作用,它们记录了互联网协议的发展历程和指导原则。
Network Working Group M. Wahl Request for Comments: 2927 Sun Microsystems, Inc. Category: Informational September 2000 MIME Directory Profile for LDAP SchemaStatus of this MemoThis memo provides information for the Internet community. It doesnot specify an Internet standard of any kind. Distribution of thismemo is unlimited.Copyright NoticeCopyright (C) The Internet Society (2000). All Rights Reserved. AbstractThis document defines a multipurpose internet mail extensions (MIME) directory profile for holding a lightweight directory access protocol (LDAP) schema. It is intended for communication with the Internetschema listing service.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 RFC 2119 [4].1. OverviewThis document defines how a MIME type may be used to transfer asingle LDAPv3 schema definition.A schema for use with LDAPv3 consists of any number of object class, attribute type, matching rule and syntax definitions. These concepts are defined in the LDAPv3 protocol definition [2]. The schema MAYhave a numeric OID assigned to it by a schema listing or registration service.A schema may import definitions from another schema. Schema imports are not, however, transitive.For example, a schema contains a definition for a "modem" objectclass, which is to be defined as a subclass of the X.521 "device"object class. In this case, the schema MUST import the definitionsof X.521.Wahl Informational [Page 1]2. The "schema-ldap-0" MIME Directory Profile RegistrationThis profile is identified by the following registration templateinformation.To: ietf-mime-direct@Subject: Registration of text/directory MIME profile "schema-ldap-0" Profile name: schema-ldap-0Profile purpose: To represent a schema defined for use with LDAPv3servers.Profile types: SOURCE, ldapSchemas, attributeTypes, matchingRules,objectClasses, matchingRuleUse, ldapSyntaxesProfile special notes:The charset parameter MUST be present on the MIME content, and thevalue of this parameter MUST be "utf-8". This ensures that schemavalues can be used in LDAPv3 attribute values without a character set translation.Neither the "BEGIN" and "END" types nor type grouping are used incontents of this profile.All of the types in this profile with the exception of ldapSchemasmay be multi-valued. Each value is present on its own contentline.Values may be present in any order, and need not be arranged by type. The "SOURCE" type is optional, and if values are present they SHOULD be URIs of the "ldap" form. If the URI is of the "ldap" form, theobject indicated by the URI is a subschema entry. The use of otherforms are reserved for future applications.In this version of the profile, exactly one value of the ldapSchemas type MUST be present. (Later versions of the profile may permitmultiple ldapSchemas values to be present in a content.)Implementors should note that there will likely be values of theprofile types in most contents much longer than 76 bytes. Inaddition, there may be non-ASCII characters and embedded CRLFs inside of values, which could require either quoting of the value or use of a content transfer encoding.Wahl Informational [Page 2]If a contentline in a particular content contains a "context"parameter and the value of that parameter is not "ldap", then thatcontentline SHOULD be ignored.Intended usage: COMMON3. MIME Directory Type RegistrationsThis document defines all the types, with the exception of "SOURCE"used in the schema-ldap-0 profile. The "SOURCE" type is defined in[1]. These types are primarily intended for use in the "schema-ldap-0" directory profile, although they may be applicable to otherprofiles defined in the future.3.1. ldapSchemasTo: ietf-mime-direct@Subject: Registration of text/directory MIME type ldapSchemasType name: ldapSchemasType purpose: To represent the LDAPv3 attribute "ldapSchemas",defined in section A.1.Type encoding: 8bitType valuetype: text, encoded according to the BNF of section A.2.Type special notes: Each value of this type specifies the contents of an LDAP schema definition. A definition of each object class,attribute, matching rule, matching rule use and syntax referenced in a value of ldapSchemas MUST either be defined in one of the schemasreferenced in the "IMPORTS" field, or present in the contentcontaining this value.Intended usage: COMMON3.2. attributeTypesTo: ietf-mime-direct@Subject: Registration of text/directory MIME type attributeTypesType name: attributeTypesType purpose: To represent the LDAPv3 attribute "attributeTypes",defined in section 5.1.6 of [4].Type encoding: 8bitWahl Informational [Page 3]Type valuetype: text, encoded according to the BNF of"AttributeTypeDescription" given in section 4.2 of [4].Type special notes: Each value of the type specifies one LDAPv3attribute type definition. The syntax and matching rules referenced in a value of attributeTypes MUST either be present in this content, or defined in one of the schemas referenced in the "IMPORTS" field of the ldapSchemas line.Intended usage: COMMON3.3. matchingRulesTo: ietf-mime-direct@Subject: Registration of text/directory MIME type matchingRulesType name: matchingRulesType purpose: To represent the LDAPv3 attribute "matchingRules",defined in section 5.1.8 of [4].Type encoding: 8bitType valuetype: text, encoded according to the BNF of"MatchingRuleDescription" given in section 4.5 of [4].Type special notes: Each value of the type specifies one matchingrule definition. The syntax reference in a value of matchingRulesMUST either be present in this content, or defined in one of theschemas referenced in the "IMPORTS" field of the ldapSchemas line.Intended usage: COMMON3.4. objectClassesTo: ietf-mime-direct@Subject: Registration of text/directory MIME type objectClassesType name: objectClassesType purpose: To represent the LDAPv3 attribute "objectClasses",defined in section 5.1.7 of [4].Type encoding: 8bitType valuetype: text, encoded according to the BNF of"ObjectClassDescription" given in section 4.4 of [4].Wahl Informational [Page 4]Type special notes: Each value of the type specifies one LDAPv3object class definition. The attributes and object classesreferenced in a value of objectClasses MUST either be present in this content, or defined in one of the schema referenced in the "IMPORTS" field of the ldapSchemas line.Intended usage: COMMON3.5. matchingRuleUseTo: ietf-mime-direct@Subject: Registration of text/directory MIME type matchingRuleUseType name: matchingRuleUseType purpose: To represent the LDAPv3 attribute "matchingRuleUse",defined in section 5.1.9 of [4].Type encoding: 8bitType valuetype: text, encoded according to the BNF of"MatchingRuleUseDescription" given in section 4.5 of [4].Type special notes: Each value of the type specifies a relationshipbetween a matching rule and attribute types. The matching rule andattribute types referenced in a value of matchingRuleUse MUST either be present in this content, or defined in one of the schemasreferenced in the "IMPORTS" statement of the ldapSchemas line.Intended usage: COMMON3.6. ldapSyntaxesTo: ietf-mime-direct@Subject: Registration of text/directory MIME type ldapSyntaxesType name: ldapSyntaxesType purpose: To represent the LDAPv3 attribute "ldapSyntaxes",defined in section 5.3.1 of [3].Type encoding: 8bitType valuetype: text, encoded according to the BNF of"SyntaxDescription" given in section 4.3.3 of [3].Wahl Informational [Page 5]Type special notes: Each value of this type specifies a single LDAPv3 attribute value syntax.Intended usage: COMMON3. ExampleFrom: Whomever@To: Someone@Subject: schema informationMIME-Version: 1.0Message-Id: <ids1@>Content-Type: text/directory; profile="schema-ldap-0";charset="utf-8" Content-Transfer-Encoding: Quoted-PrintableldapSchemas: ( 1.2.3.4 NAME ’bogus schema’ CLASSES ( top $ thing ) = ATTRIBUTES ( objectClass $ name ) SYNTAXES ( =1.3.6.1.4.1.1466.115.121.1.38 $ 1.3.6.1.4.1.1466.115.121.1.15 ) )attributeTypes: ( 2.5.4.0 NAME ’objectClass’ SYNTAX =1.3.6.1.4.1.1466.115.121.1.38 )objectClasses: ( 2.5.6.0 NAME ’top’ ABSTRACT MUST objectClass )attributeTypes: ( 2.5.4.41 NAME ’name’ SYNTAX =1.3.6.1.4.1.1466.115.121.1.15{32768} )objectClasses: ( 2.5.6.999 NAME ’thing’ MUST name )ldapSyntaxes: ( 1.3.6.1.4.1.1466.115.121.1.15 DESC ’String’ )ldapSyntaxes: ( 1.3.6.1.4.1.1466.115.121.1.38 DESC ’OID’ )4. Security ConsiderationsA MIME body part containing an text/directory of the schema-ldap-0profile may be incorporated in a digitally signed MIME content, which can be used to verify that the body part has not been modified intransit. When the signer has been certified by a trusted third party service, it may also be possible to verify the origin of the content.5. Bibliography[1] Howes, T., Smith, M. and F. Dawson, "A MIME Content-Type forDirectory Information", RFC 2425, September 1998.[2] Wahl, M., Howes, T. and S. Kille, "Lightweight Directory AccessProtocol (v3)", RFC 2251, December 1997.[3] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, "LightweightDirectory Access Protocol (v3): Attribute Syntax Definitions",RFC 2252, December 1997.[4] Bradner, S., "Key words for use in RFCs to Indicate RequirementLevels", BCP 14, RFC 2119, March 1997.Wahl Informational [Page 6]6. Author’s AddressMark WahlSun Microsystems, Inc.8911 Capital of Texas Hwy Suite 4140Austin, TX 78759USAEMail: Mark.Wahl@Wahl Informational [Page 7]Appendix AThis appendix defines two new attributes which could be present in an subschema entry. These attributes could be added to a futurerevision of the LDAP attribute definition [3].A.1. ldapSchemas attribute type definition( 1.3.6.1.4.1.1466.101.120.17 NAME ’ldapSchemas’SYNTAX 1.3.6.1.4.1.1466.115.121.1.56 USAGE directoryOperation ) Each value of the ldapSchemas attribute defines one schema. Itssyntax, given in section A.2, contains the elements needed for anLDAPv3 server to correctly process operations which use thedefinitions from this syntax.A.2. LDAP Schema Definition syntax definition( 1.3.6.1.4.1.1466.115.121.1.56 DESC ’LDAP Schema Definition’ )Values in this syntax are represented according to the following BNF: LdapSchema = "(" whspnumericoid whsp[ "NAME" qdescrs ][ "OBSOLETE" whsp ][ "IMPORTS" oids ][ "CLASSES" oids ][ "ATTRIBUTES" oids ][ "MATCHING-RULES" oids ][ "SYNTAXES" oids ]whsp ")"The numericoid field uniquely identifies the schema. A new OIDshould be assigned if any of the fields of the schema change. It is not possible to import definitions from a schema until an OID hasbeen assigned to it.The "NAME" field contains optional human-readable labels for theschema.The "OBSOLETE" field is present if the schema is obsolete.The "IMPORTS" field lists the OIDs of other schemas which are to beincorporated by reference into this schema. It is an error to havean attribute type or object class defined in a schema with the samename but a different OID as an attribute type or object class in an Wahl Informational [Page 8]imported schema. It is also an error to import from two schemadefinitions in which there are attribute types or object classes with the same names but different OIDs.The "CLASSES" field lists the OIDs of object classes defined in this schema. A schema need not contain any object class definitions. Aschema must not contain two object class definitions of the same name but with different OIDs.The "ATTRIBUTES" field lists the OIDs of attribute types defined inthis schema. A schema need not contain any object class definitions.A schema must not contain two attribute type definitions of the same name but with different OIDs.The "MATCHING-RULES" field lists the OIDs of matching rules definedin this schema. A schema need not contain any matching rules.The "SYNTAXES" field lists the OIDs of syntaxes defined in thisschema. A schema need not contain any syntaxes.Wahl Informational [Page 9]Full Copyright StatementCopyright (C) The Internet Society (2000). All Rights Reserved.This document and translations of it may be copied and furnished toothers, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, publishedand distributed, in whole or in part, without restriction of anykind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, thisdocument itself may not be modified in any way, such as by removingthe copyright notice or references to the Internet Society or otherInternet organizations, except as needed for the purpose ofdeveloping Internet standards in which case the procedures forcopyrights defined in the Internet Standards process must befollowed, or as required to translate it into languages other thanEnglish.The limited permissions granted above are perpetual and will not berevoked by the Internet Society or its successors or assigns.This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERINGTASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDINGBUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATIONHEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OFMERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.AcknowledgementFunding for the RFC Editor function is currently provided by theInternet Society.Wahl Informational [Page 10]。