aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/test/asn1_SUITE_data/rfcs
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2014-10-17 10:26:02 +0200
committerBjörn Gustavsson <[email protected]>2015-01-12 11:40:27 +0100
commit8a39672af4d9becac56ca069ecc107d68b202dcb (patch)
treef5c7b3fc50a8355fea1b0844247ba3031710857e /lib/asn1/test/asn1_SUITE_data/rfcs
parent7339da14195d1eeac133be8b9b7287ac8b577114 (diff)
downloadotp-8a39672af4d9becac56ca069ecc107d68b202dcb.tar.gz
otp-8a39672af4d9becac56ca069ecc107d68b202dcb.tar.bz2
otp-8a39672af4d9becac56ca069ecc107d68b202dcb.zip
Add the other PKCS files to the rfcs test case
Changed the following from the original copies: PKCS-5 (renamed from PKCS-v21) PKCS-9 Import from CryptographicMessageSyntax-2009 instead of CryptographicMessageSyntax Since most of the files from the x420 directory are needed, copy all of them into the rfcs directory and remove the x420 directory and test case. Copy the test of OTP-7759 to the testRfcs test case.
Diffstat (limited to 'lib/asn1/test/asn1_SUITE_data/rfcs')
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/ACSE-1.asn1253
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/AuthenticationFramework.asn1290
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/BasicAccessControl.asn1184
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/CertificateExtensions.asn1498
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Character-Coding-Attributes.asn117
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Character-Presentation-Attributes.asn1125
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Character-Profile-Attributes.asn154
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Colour-Attributes.asn1192
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DOR-definition.asn1134
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DSAOperationalAttributeTypes.asn1186
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Default-Value-Lists.asn1143
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryAbstractService.asn1710
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryAccessProtocol.asn1162
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryInformationShadowProtocol.asn1246
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryOperationalBindingManagementProtocol.asn1117
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryOperationalBindingTypes.asn126
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryProtectionMappings.asn170
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryShadowAbstractService.asn1324
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DirectorySystemProtocol.asn1118
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/DistributedOperations.asn1181
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Document-Profile-Descriptor.asn1464
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/EnhancedSecurity.asn1363
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/External-References.asn149
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/GULSProtectionMappings.asn171
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/GenericProtectingTransferSyntax.asn166
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Coding-Attributes.asn116
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Presentation-Attributes.asn1265
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Profile-Attributes.asn144
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/GulsSecurityExchanges.asn179
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/GulsSecurityTransformations.asn1212
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/HierarchicalOperationalBindings.asn1123
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSAbstractService.asn1148
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSAutoActionTypes.asn1234
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedBodyPartTypes.asn1102
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedBodyPartTypes2.asn137
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedVoiceBodyPartType.asn139
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSFileTransferBodyPartType.asn1253
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSForwardedContentBodyPartType.asn153
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSForwardedReportBodyPartType.asn141
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSFunctionalObjects.asn147
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSHeadingExtensions.asn1246
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSInformationObjects.asn1626
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSMessageStoreAttributes.asn11120
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSObjectIdentifiers.asn1507
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSObjectIdentifiers2.asn133
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSSecurityExtensions.asn1143
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/IPMSUpperBounds.asn146
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/ISO-STANDARD-9541-FONT-ATTRIBUTE-SET.asn1459
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/ISO8571-FTAM.asn11453
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/ISO9541-SN.asn151
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Identifiers-and-Expressions.asn1126
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/InformationFramework.asn1868
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Interchange-Data-Elements.asn157
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Layout-Descriptors.asn1268
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Link-Descriptors.asn180
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Location-Expressions.asn1338
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Logical-Descriptors.asn195
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MHSObjectIdentifiers.asn1187
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MHSProtocolObjectIdentifiers.asn1112
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MSAbstractService.asn11085
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MSAccessProtocol.asn1259
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MSGeneralAttributeTypes.asn1830
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MSGeneralAutoActionTypes.asn1118
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MSMatchingRules.asn1225
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MSObjectIdentifiers.asn1322
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MSUpperBounds.asn177
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MTAAbstractService.asn1481
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MTSAbstractService.asn12366
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MTSAbstractService88.asn1150
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MTSAccessProtocol.asn1321
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MTSObjectIdentifiers.asn1116
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/MTSUpperBounds.asn1146
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Notation.asn1244
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/OLD-PKCS7.asn1342
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/ObjectIdentifiers.asn146
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/OperationalBindingManagement.asn1263
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-12.asn1174
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-5.asn1202
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-7.asn1326
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-8.asn161
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-9.asn1391
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/PKCS7BodyPartType.asn131
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/PKIXAlgs-2009.asn12
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Protected-Part-Descriptors.asn174
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/ProtocolObjectIdentifiers.asn1140
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Coding-Attributes.asn175
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Presentation-Attributes.asn192
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Profile-Attributes.asn176
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Reliable-Transfer-APDU.asn1132
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Abstract-Syntaxes.asn1103
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Generic-ROS-PDUs.asn1163
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Information-Objects-extensions.asn136
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Information-Objects.asn1123
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Realizations.asn181
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Useful-Definitions.asn195
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/SelectedAttributeTypes.asn11466
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/SeseAPDUs.asn1116
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/SpkmGssTokens.asn1257
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Style-Descriptors.asn1190
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Subprofiles.asn196
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Temporal-Relationships.asn192
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Text-Units.asn172
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/UpperBounds.asn189
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/UsefulDefinitions.asn1238
-rw-r--r--lib/asn1/test/asn1_SUITE_data/rfcs/Videotex-Coding-Attributes.asn130
105 files changed, 25965 insertions, 0 deletions
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/ACSE-1.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/ACSE-1.asn1
new file mode 100644
index 0000000000..3f1385323a
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/ACSE-1.asn1
@@ -0,0 +1,253 @@
+-- Module ACSE-1 (X.237:04/1995)
+ACSE-1 {joint-iso-itu-t association-control(2) modules(0) apdus(0) version1(1)}
+-- ACSE-1 refers to ACSE version 1
+DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ acse-as-id, ACSE-apdu, aCSE-id, Application-context-name, AP-title,
+ AE-qualifier, AE-title, AP-invocation-identifier, AE-invocation-identifier,
+ Mechanism-name, Authentication-value, ACSE-requirements, ObjectSet;
+
+IMPORTS
+ Name, RelativeDistinguishedName
+ FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+ informationFramework(1) 3};
+
+-- The data types Name and RelativeDistinguishedName are imported from ISO/IEC 9594-2.
+-- object identifier assignments
+acse-as-id OBJECT IDENTIFIER ::=
+ {joint-iso-itu-t association-control(2) abstract-syntax(1) apdus(0)
+ version1(1)}
+
+-- may be used to reference the abstract syntax of the ACSE APDUs
+aCSE-id OBJECT IDENTIFIER ::=
+ {joint-iso-itu-t association-control(2) ase-id(3) acse-ase(1) version(1)}
+
+-- may be used to identify the Association Control ASE.
+-- top level CHOICE
+ACSE-apdu ::= CHOICE {
+ aarq AARQ-apdu,
+ aare AARE-apdu,
+ rlrq RLRQ-apdu,
+ rlre RLRE-apdu,
+ abrt ABRT-apdu,
+ ...
+}
+
+AARQ-apdu ::= [APPLICATION 0] IMPLICIT SEQUENCE {
+ protocol-version
+ [0] IMPLICIT BIT STRING {version1(0)} DEFAULT {version1},
+ application-context-name [1] Application-context-name,
+ called-AP-title [2] AP-title OPTIONAL,
+ called-AE-qualifier [3] AE-qualifier OPTIONAL,
+ called-AP-invocation-identifier [4] AP-invocation-identifier OPTIONAL,
+ called-AE-invocation-identifier [5] AE-invocation-identifier OPTIONAL,
+ calling-AP-title [6] AP-title OPTIONAL,
+ calling-AE-qualifier [7] AE-qualifier OPTIONAL,
+ calling-AP-invocation-identifier [8] AP-invocation-identifier OPTIONAL,
+ calling-AE-invocation-identifier [9] AE-invocation-identifier OPTIONAL,
+ -- The following field shall not be present if only the Kernel is used.
+ sender-acse-requirements [10] IMPLICIT ACSE-requirements OPTIONAL,
+ -- The following field shall only be present if the Authentication functional unit is selected.
+ mechanism-name [11] IMPLICIT Mechanism-name OPTIONAL,
+ -- The following field shall only be present if the Authentication functional unit is selected.
+ calling-authentication-value [12] EXPLICIT Authentication-value OPTIONAL,
+ application-context-name-list
+ [13] IMPLICIT Application-context-name-list OPTIONAL,
+ -- The above field shall only be present if the Application Context Negotiation functional unit is selected
+ implementation-information [29] IMPLICIT Implementation-data OPTIONAL,
+ ...,
+ ...,
+ user-information
+ [30] IMPLICIT Association-information OPTIONAL
+}
+
+AARE-apdu ::= [APPLICATION 1] IMPLICIT SEQUENCE {
+ protocol-version
+ [0] IMPLICIT BIT STRING {version1(0)} DEFAULT {version1},
+ application-context-name [1] Application-context-name,
+ result [2] Associate-result,
+ result-source-diagnostic [3] Associate-source-diagnostic,
+ responding-AP-title [4] AP-title OPTIONAL,
+ responding-AE-qualifier [5] AE-qualifier OPTIONAL,
+ responding-AP-invocation-identifier [6] AP-invocation-identifier OPTIONAL,
+ responding-AE-invocation-identifier [7] AE-invocation-identifier OPTIONAL,
+ -- The following field shall not be present if only the Kernel is used.
+ responder-acse-requirements [8] IMPLICIT ACSE-requirements OPTIONAL,
+ -- The following field shall only be present if the Authentication functional unit is selected.
+ mechanism-name [9] IMPLICIT Mechanism-name OPTIONAL,
+ -- This following field shall only be present if the Authentication functional unit is selected.
+ responding-authentication-value
+ [10] EXPLICIT Authentication-value OPTIONAL,
+ application-context-name-list
+ [11] IMPLICIT Application-context-name-list OPTIONAL,
+ -- The above field shall only be present if the Application Context Negotiation functional unit is selected
+ implementation-information
+ [29] IMPLICIT Implementation-data OPTIONAL,
+ ...,
+ ...,
+ user-information
+ [30] IMPLICIT Association-information OPTIONAL
+}
+
+RLRQ-apdu ::= [APPLICATION 2] IMPLICIT SEQUENCE {
+ reason [0] IMPLICIT Release-request-reason OPTIONAL,
+ ...,
+ ...,
+ user-information [30] IMPLICIT Association-information OPTIONAL
+}
+
+RLRE-apdu ::= [APPLICATION 3] IMPLICIT SEQUENCE {
+ reason [0] IMPLICIT Release-response-reason OPTIONAL,
+ ...,
+ ...,
+ user-information [30] IMPLICIT Association-information OPTIONAL
+}
+
+ABRT-apdu ::= [APPLICATION 4] IMPLICIT SEQUENCE {
+ abort-source [0] IMPLICIT ABRT-source,
+ abort-diagnostic [1] IMPLICIT ABRT-diagnostic OPTIONAL,
+ -- This field shall not be present if only the Kernel is used.
+ ...,
+ ...,
+ user-information [30] IMPLICIT Association-information OPTIONAL
+}
+
+ABRT-diagnostic ::= ENUMERATED {
+ no-reason-given(1), protocol-error(2),
+ authentication-mechanism-name-not-recognized(3),
+ authentication-mechanism-name-required(4), authentication-failure(5),
+ authentication-required(6), ...
+ }
+
+ABRT-source ::= INTEGER {acse-service-user(0), acse-service-provider(1)
+}(0..1, ...)
+
+ACSE-requirements ::= BIT STRING {
+ authentication(0), application-context-negotiation(1)}
+
+Application-context-name-list ::= SEQUENCE OF Application-context-name
+
+Application-context-name ::= OBJECT IDENTIFIER
+
+-- Application-entity title productions follow (not in alphabetical order)
+AP-title ::= CHOICE {
+ ap-title-form1 AP-title-form1,
+ ap-title-form2 AP-title-form2,
+ ...
+}
+
+AE-qualifier ::= CHOICE {
+ ae-qualifier-form1 AE-qualifier-form1,
+ ae-qualifier-form2 AE-qualifier-form2,
+ ...
+}
+
+-- When both AP-title and AE-qualifier data values are present in an AARQ or AARE APDU, both must
+-- have the same form to allow the construction of an AE-title as discussed in CCITT Rec. X.665 |
+-- ISO/IEC 9834-6.
+AP-title-form1 ::=
+ Name
+
+-- The value assigned to AP-title-form1 is The Directory Name of an application-process title.
+AE-qualifier-form1 ::=
+ RelativeDistinguishedName
+
+-- The value assigned to AE-qualifier-form1 is the relative distinguished name of a particular
+-- application-entity of the application-process identified by AP-title-form1.
+AP-title-form2 ::= OBJECT IDENTIFIER
+
+AE-qualifier-form2 ::= INTEGER
+
+AE-title ::= CHOICE {
+ ae-title-form1 AE-title-form1,
+ ae-title-form2 AE-title-form2,
+ ...
+}
+
+-- As defined in CCITT Rec. X.650 | ISO 7498-3, an application-entity title is composed of an application-
+-- process title and an application-entity qualifier. The ACSE protocol provides for the transfer of an
+-- application-entity title value by the transfer of its component values. However, the following data type
+-- is provided for International Standards that reference a single syntactic structure for AE titles.
+AE-title-form1 ::=
+ Name
+
+-- For access to The Directory (ITU-T Rec. X.500-Series | ISO/IEC 9594), an AE title has AE-title-form1.
+-- This value can be constructed from AP-title-form1 and AE-qualifier-form1 values contained in an
+-- AARQ or AARE APDU. A discussion of forming an AE-title-form1 from AP-title-form1 and AE-qualifier-
+-- form1 may be found in CCITT Rec. X.665 | ISO/IEC 9834-6.
+AE-title-form2 ::= OBJECT IDENTIFIER
+
+-- A discussion of forming an AE-title-form2 from AP-title-form2 and AE-qualifier-form2 may be
+-- found in CCITT Rec. X.665 | ISO/IEC 9834-6.
+AE-invocation-identifier ::= INTEGER
+
+AP-invocation-identifier ::= INTEGER
+
+-- End of Application-entity title productions
+Associate-result ::= INTEGER {
+ accepted(0), rejected-permanent(1), rejected-transient(2)}(0..2, ...)
+
+Associate-source-diagnostic ::= CHOICE {
+ acse-service-user
+ [1] INTEGER {null(0), no-reason-given(1),
+ application-context-name-not-supported(2),
+ calling-AP-title-not-recognized(3),
+ calling-AP-invocation-identifier-not-recognized(4),
+ calling-AE-qualifier-not-recognized(5),
+ calling-AE-invocation-identifier-not-recognized(6),
+ called-AP-title-not-recognized(7),
+ called-AP-invocation-identifier-not-recognized(8),
+ called-AE-qualifier-not-recognized(9),
+ called-AE-invocation-identifier-not-recognized(10),
+ authentication-mechanism-name-not-recognized(11),
+ authentication-mechanism-name-required(12),
+ authentication-failure(13), authentication-required(14)}
+ (0..14, ...),
+ acse-service-provider
+ [2] INTEGER {null(0), no-reason-given(1), no-common-acse-version(2)}
+ (0..2, ...)
+}
+
+Association-information ::= SEQUENCE SIZE (1, ..., 0 | 2..MAX) OF EXTERNAL
+
+Authentication-value ::= CHOICE {
+ charstring [0] IMPLICIT GraphicString,
+ bitstring [1] IMPLICIT BIT STRING,
+ external [2] IMPLICIT EXTERNAL,
+ other
+ [3] IMPLICIT SEQUENCE {other-mechanism-name
+ MECHANISM-NAME.&id({ObjectSet}),
+ other-mechanism-value
+ MECHANISM-NAME.&Type
+ ({ObjectSet}{@.other-mechanism-name})}
+}
+
+-- The abstract syntax of (calling/responding) authentication-value is determined by the authentication
+-- mechanism used during association establishment. The authentication mechanism is either explicitly
+-- denoted by the &id field (of type OBJECT IDENTIFIER) for a mechanism belonging to the class
+-- MECHANISM-NAME, or it is known implicitly by
+-- prior agreement between the communicating partners. If the "other" component is chosen, then
+-- the "mechanism-name" component must be present in accordance with
+-- ITU-T Rec. X.680 | ISO/IEC 8824. If the value "mechanism-name" occurs in the AARQ-apdu or the
+-- AARE-apdu, then that value must be the same as the value for "other-mechanism-name"
+Implementation-data ::= GraphicString
+
+Mechanism-name ::= OBJECT IDENTIFIER
+
+MECHANISM-NAME ::= TYPE-IDENTIFIER
+
+ObjectSet MECHANISM-NAME ::=
+ {...}
+
+Release-request-reason ::= INTEGER {normal(0), urgent(1), user-defined(30)
+}(0 | 1 | 30, ...)
+
+Release-response-reason ::= INTEGER {
+ normal(0), not-finished(1), user-defined(30)}(0 | 1 | 30, ...)
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/AuthenticationFramework.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/AuthenticationFramework.asn1
new file mode 100644
index 0000000000..5cfa9062f0
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/AuthenticationFramework.asn1
@@ -0,0 +1,290 @@
+-- Module AuthenticationFramework (X.509:08/1997)
+
+AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
+ authenticationFramework(7) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ id-at, id-mr, informationFramework, upperBounds, selectedAttributeTypes,
+ basicAccessControl, certificateExtensions
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ Name, ATTRIBUTE, AttributeType, MATCHING-RULE, Attribute
+ FROM InformationFramework informationFramework
+ ub-user-password
+ FROM UpperBounds upperBounds
+ AuthenticationLevel
+ FROM BasicAccessControl basicAccessControl
+ UniqueIdentifier, octetStringMatch
+ FROM SelectedAttributeTypes selectedAttributeTypes
+ certificateExactMatch, certificatePairExactMatch, certificateListExactMatch,
+ GeneralNames
+ FROM CertificateExtensions certificateExtensions;
+
+-- basic certificate definition
+Certificate ::=
+ SIGNED
+ {SEQUENCE {version [0] Version DEFAULT v1,
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL,
+ -- if present, version must be v2 or v3
+ subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL,
+ -- if present, version must be v2 or v3
+ extensions [3] Extensions OPTIONAL
+ -- If present, version must be v3 -- }}
+
+Version ::= INTEGER {v1(0), v2(1), v3(2)}
+
+CertificateSerialNumber ::= INTEGER
+
+AlgorithmIdentifier ::= SEQUENCE {
+ algorithm ALGORITHM.&id({SupportedAlgorithms}),
+ parameters ALGORITHM.&Type({SupportedAlgorithms}{@algorithm}) OPTIONAL
+}
+
+-- Definition of the following information object set is deferred, perhaps to standardized
+-- profiles or to protocol implementation conformance statements. The set is required to
+-- specify a table constraint on the parameters component of AlgorithmIdentifier.
+SupportedAlgorithms ALGORITHM ::=
+{...}
+
+Validity ::= SEQUENCE {notBefore Time,
+ notAfter Time
+}
+
+SubjectPublicKeyInfo ::= SEQUENCE {
+ algorithm AlgorithmIdentifier,
+ subjectPublicKey BIT STRING
+}
+
+Time ::= CHOICE {utcTime UTCTime,
+ generalizedTime GeneralizedTime
+}
+
+Extensions ::= SEQUENCE OF Extension
+
+-- For those extensions where ordering of individual extensions within the SEQUENCE is significant, the
+-- specification of those individual extensions shall include the rules for the significance of the order therein
+Extension ::= SEQUENCE {
+ extnId EXTENSION.&id({ExtensionSet}),
+ critical BOOLEAN DEFAULT FALSE,
+ extnValue OCTET STRING-- contains a DER encoding of a value of type &ExtnType
+-- for the extension object identified by extnId
+}
+
+ExtensionSet EXTENSION ::=
+ {...}
+
+EXTENSION ::= CLASS {&id OBJECT IDENTIFIER UNIQUE,
+ &ExtnType
+}WITH SYNTAX {SYNTAX &ExtnType
+ IDENTIFIED BY &id
+}
+
+-- other certificate constructs
+Certificates ::= SEQUENCE {
+ userCertificate Certificate,
+ certificationPath ForwardCertificationPath OPTIONAL
+}
+
+ForwardCertificationPath ::= SEQUENCE OF CrossCertificates
+
+CrossCertificates ::= SET OF Certificate
+
+CertificationPath ::= SEQUENCE {
+ userCertificate Certificate,
+ theCACertificates SEQUENCE OF CertificatePair OPTIONAL
+}
+
+CertificatePair ::= SEQUENCE {
+ issuedByThisCA [0] Certificate OPTIONAL,
+ issuedToThisCA [1] Certificate OPTIONAL
+ -- at least one of the pair shall be present
+}
+
+-- Certificate Revocation List (CRL)
+CertificateList ::=
+ SIGNED
+ {SEQUENCE {version Version OPTIONAL,
+ -- if present, version must be v2
+ signature AlgorithmIdentifier,
+ issuer Name,
+ thisUpdate Time,
+ nextUpdate Time OPTIONAL,
+ revokedCertificates
+ SEQUENCE OF
+ SEQUENCE {userCertificate CertificateSerialNumber,
+ revocationDate Time,
+ crlEntryExtensions Extensions OPTIONAL} OPTIONAL,
+ crlExtensions [0] Extensions OPTIONAL}}
+
+-- attribute certificate
+AttributeCertificationPath ::= SEQUENCE {
+ attributeCertificate AttributeCertificate,
+ acPath SEQUENCE OF ACPathData OPTIONAL
+}
+
+ACPathData ::= SEQUENCE {
+ certificate [0] Certificate OPTIONAL,
+ attributeCertificate [1] AttributeCertificate OPTIONAL
+}
+
+attributeCertificate ATTRIBUTE ::= {
+ WITH SYNTAX AttributeCertificate
+ EQUALITY MATCHING RULE attributeCertificateMatch
+ ID id-at-attributeCertificate
+}
+
+AttributeCertificate ::= SIGNED{AttributeCertificateInfo}
+
+AttributeCertificateInfo ::= SEQUENCE {
+ version Version DEFAULT v1,
+ subject
+ CHOICE {baseCertificateID [0] IssuerSerial, -- associated with a Public Key Certificate--
+ subjectName [1] GeneralNames}, -- associated with a name
+ issuer GeneralNames, -- CA issuing the attribute certificate
+ signature AlgorithmIdentifier,
+ serialNumber CertificateSerialNumber,
+ attCertValidityPeriod AttCertValidityPeriod,
+ attributes SEQUENCE OF Attribute,
+ issuerUniqueID UniqueIdentifier OPTIONAL,
+ extensions Extensions OPTIONAL
+}
+
+IssuerSerial ::= SEQUENCE {
+ issuer GeneralNames,
+ serial CertificateSerialNumber,
+ issuerUID UniqueIdentifier OPTIONAL
+}
+
+AttCertValidityPeriod ::= SEQUENCE {
+ notBeforeTime GeneralizedTime,
+ notAfterTime GeneralizedTime
+}
+
+attributeCertificateMatch MATCHING-RULE ::= {
+ SYNTAX AttributeCertificateAssertion
+ ID id-mr-attributeCertificateMatch
+}
+
+AttributeCertificateAssertion ::= SEQUENCE {
+ subject
+ [0] CHOICE {baseCertificateID [0] IssuerSerial,
+ subjectName [1] Name} OPTIONAL,
+ issuer [1] Name OPTIONAL,
+ attCertValidity [2] GeneralizedTime OPTIONAL,
+ attType [3] SET OF AttributeType OPTIONAL
+}
+
+-- At least one component of the sequence must be present
+-- attribute types
+userPassword ATTRIBUTE ::= {
+ WITH SYNTAX OCTET STRING(SIZE (0..ub-user-password))
+ EQUALITY MATCHING RULE octetStringMatch
+ ID id-at-userPassword
+}
+
+userCertificate ATTRIBUTE ::= {
+ WITH SYNTAX Certificate
+ EQUALITY MATCHING RULE certificateExactMatch
+ ID id-at-userCertificate
+}
+
+cACertificate ATTRIBUTE ::= {
+ WITH SYNTAX Certificate
+ EQUALITY MATCHING RULE certificateExactMatch
+ ID id-at-cAcertificate
+}
+
+crossCertificatePair ATTRIBUTE ::= {
+ WITH SYNTAX CertificatePair
+ EQUALITY MATCHING RULE certificatePairExactMatch
+ ID id-at-crossCertificatePair
+}
+
+authorityRevocationList ATTRIBUTE ::= {
+ WITH SYNTAX CertificateList
+ EQUALITY MATCHING RULE certificateListExactMatch
+ ID id-at-authorityRevocationList
+}
+
+certificateRevocationList ATTRIBUTE ::= {
+ WITH SYNTAX CertificateList
+ EQUALITY MATCHING RULE certificateListExactMatch
+ ID id-at-certificateRevocationList
+}
+
+attributeCertificateRevocationList ATTRIBUTE ::= {
+ WITH SYNTAX CertificateList
+ ID id-at-attributeCertificateRevocationList
+}
+
+-- information object classes
+ALGORITHM ::= TYPE-IDENTIFIER
+
+-- parameterized types
+HASH{ToBeHashed} ::= SEQUENCE {
+ algorithmIdentifier AlgorithmIdentifier,
+ hashValue
+ BIT STRING
+ (CONSTRAINED BY {
+ -- must be the result of applying a hashing procedure to the DER-encoded octets
+ -- of a value of -- ToBeHashed})
+}
+
+ENCRYPTED-HASH{ToBeSigned} ::=
+ BIT STRING
+ (CONSTRAINED BY {
+ -- must be the result of applying a hashing procedure to the DER-encoded octets
+ -- of a value of --ToBeSigned -- and then applying an encipherment procedure to those octets --})
+
+ENCRYPTED{ToBeEnciphered} ::=
+ BIT STRING
+ (CONSTRAINED BY {
+ -- must be the result of applying an encipherment procedure
+ -- to the BER-encoded octets of a value of --ToBeEnciphered})
+
+SIGNATURE{ToBeSigned} ::= SEQUENCE {
+ algorithmIdentifier AlgorithmIdentifier,
+ encrypted ENCRYPTED-HASH{ToBeSigned}
+}
+
+SIGNED{ToBeSigned} ::= SEQUENCE {
+ toBeSigned ToBeSigned,
+ COMPONENTS OF SIGNATURE{ToBeSigned}
+}
+
+-- object identifier assignments
+id-at-userPassword OBJECT IDENTIFIER ::=
+ {id-at 35}
+
+id-at-userCertificate OBJECT IDENTIFIER ::= {id-at 36}
+
+id-at-cAcertificate OBJECT IDENTIFIER ::= {id-at 37}
+
+id-at-authorityRevocationList OBJECT IDENTIFIER ::= {id-at 38}
+
+id-at-certificateRevocationList OBJECT IDENTIFIER ::= {id-at 39}
+
+id-at-crossCertificatePair OBJECT IDENTIFIER ::= {id-at 40}
+
+id-at-attributeCertificate OBJECT IDENTIFIER ::= {id-at 58}
+
+id-at-attributeCertificateRevocationList OBJECT IDENTIFIER ::= {id-at 59}
+
+id-mr-attributeCertificateMatch OBJECT IDENTIFIER ::= {id-mr 42}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/BasicAccessControl.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/BasicAccessControl.asn1
new file mode 100644
index 0000000000..d8b2b687ae
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/BasicAccessControl.asn1
@@ -0,0 +1,184 @@
+-- Module BasicAccessControl (X.501:08/1997)
+BasicAccessControl {joint-iso-itu-t ds(5) module(1) basicAccessControl(24) 3}
+DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ id-aca, id-acScheme, informationFramework, upperBounds,
+ selectedAttributeTypes, directoryAbstractService
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ ATTRIBUTE, AttributeType, DistinguishedName, ContextAssertion,
+ SubtreeSpecification, SupportedAttributes, MATCHING-RULE,
+ objectIdentifierMatch, Refinement
+ FROM InformationFramework informationFramework
+ Filter
+ FROM DirectoryAbstractService directoryAbstractService
+ ub-tag
+ FROM UpperBounds upperBounds
+ NameAndOptionalUID, directoryStringFirstComponentMatch, DirectoryString{}
+ FROM SelectedAttributeTypes selectedAttributeTypes;
+
+-- types
+ACIItem ::= SEQUENCE {
+ identificationTag DirectoryString{ub-tag},
+ precedence Precedence,
+ authenticationLevel AuthenticationLevel,
+ itemOrUserFirst
+ CHOICE {itemFirst
+ [0] SEQUENCE {protectedItems ProtectedItems,
+ itemPermissions SET OF ItemPermission},
+ userFirst
+ [1] SEQUENCE {userClasses UserClasses,
+ userPermissions SET OF UserPermission}}
+}
+
+Precedence ::= INTEGER(0..255)
+
+ProtectedItems ::= SEQUENCE {
+ entry [0] NULL OPTIONAL,
+ allUserAttributeTypes [1] NULL OPTIONAL,
+ attributeType
+ [2] SET SIZE (1..MAX) OF AttributeType OPTIONAL,
+ allAttributeValues
+ [3] SET SIZE (1..MAX) OF AttributeType OPTIONAL,
+ allUserAttributeTypesAndValues [4] NULL OPTIONAL,
+ attributeValue
+ [5] SET SIZE (1..MAX) OF AttributeTypeAndValue OPTIONAL,
+ selfValue
+ [6] SET SIZE (1..MAX) OF AttributeType OPTIONAL,
+ rangeOfValues [7] Filter OPTIONAL,
+ maxValueCount
+ [8] SET SIZE (1..MAX) OF MaxValueCount OPTIONAL,
+ maxImmSub [9] INTEGER OPTIONAL,
+ restrictedBy
+ [10] SET SIZE (1..MAX) OF RestrictedValue OPTIONAL,
+ contexts
+ [11] SET SIZE (1..MAX) OF ContextAssertion OPTIONAL,
+ classes [12] Refinement OPTIONAL
+}
+
+MaxValueCount ::= SEQUENCE {type AttributeType,
+ maxCount INTEGER
+}
+
+RestrictedValue ::= SEQUENCE {type AttributeType,
+ valuesIn AttributeType
+}
+
+UserClasses ::= SEQUENCE {
+ allUsers [0] NULL OPTIONAL,
+ thisEntry [1] NULL OPTIONAL,
+ name [2] SET SIZE (1..MAX) OF NameAndOptionalUID OPTIONAL,
+ userGroup [3] SET SIZE (1..MAX) OF NameAndOptionalUID OPTIONAL,
+ -- dn component must be the name of an
+ -- entry of GroupOfUniqueNames
+ subtree [4] SET SIZE (1..MAX) OF SubtreeSpecification OPTIONAL
+}
+
+ItemPermission ::= SEQUENCE {
+ precedence Precedence OPTIONAL,
+ -- defaults to precedence in ACIItem
+ userClasses UserClasses,
+ grantsAndDenials GrantsAndDenials
+}
+
+UserPermission ::= SEQUENCE {
+ precedence Precedence OPTIONAL,
+ -- defaults to precedence in ACIItem
+ protectedItems ProtectedItems,
+ grantsAndDenials GrantsAndDenials
+}
+
+AuthenticationLevel ::= CHOICE {
+ basicLevels
+ SEQUENCE {level ENUMERATED {none(0), simple(1), strong(2)},
+ localQualifier INTEGER OPTIONAL,
+ signed BOOLEAN DEFAULT FALSE},
+ other EXTERNAL
+}
+
+GrantsAndDenials ::= BIT STRING {
+ -- permissions that may be used in conjunction
+ -- with any component of ProtectedItems
+ grantAdd(0), denyAdd(1), grantDiscloseOnError(2), denyDiscloseOnError(3),
+ grantRead(4), denyRead(5), grantRemove(6),
+ denyRemove(7),
+ -- permissions that may be used only in conjunction
+ -- with the entry component
+ grantBrowse(8), denyBrowse(9), grantExport(10), denyExport(11),
+ grantImport(12), denyImport(13), grantModify(14), denyModify(15),
+ grantRename(16), denyRename(17), grantReturnDN(18),
+ denyReturnDN(19),
+ -- permissions that may be used in conjunction
+ -- with any component, except entry, of ProtectedItems
+ grantCompare(20), denyCompare(21), grantFilterMatch(22), denyFilterMatch(23),
+ grantInvoke(24), denyInvoke(25)}
+
+AttributeTypeAndValue ::= SEQUENCE {
+ type ATTRIBUTE.&id({SupportedAttributes}),
+ value ATTRIBUTE.&Type({SupportedAttributes}{@type})
+}
+
+-- attributes
+accessControlScheme ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ SINGLE VALUE TRUE
+ USAGE directoryOperation
+ ID id-aca-accessControlScheme
+}
+
+prescriptiveACI ATTRIBUTE ::= {
+ WITH SYNTAX ACIItem
+ EQUALITY MATCHING RULE directoryStringFirstComponentMatch
+ USAGE directoryOperation
+ ID id-aca-prescriptiveACI
+}
+
+entryACI ATTRIBUTE ::= {
+ WITH SYNTAX ACIItem
+ EQUALITY MATCHING RULE directoryStringFirstComponentMatch
+ USAGE directoryOperation
+ ID id-aca-entryACI
+}
+
+subentryACI ATTRIBUTE ::= {
+ WITH SYNTAX ACIItem
+ EQUALITY MATCHING RULE directoryStringFirstComponentMatch
+ USAGE directoryOperation
+ ID id-aca-subentryACI
+}
+
+-- object identifier assignments
+-- attributes
+id-aca-accessControlScheme OBJECT IDENTIFIER ::=
+ {id-aca 1}
+
+id-aca-prescriptiveACI OBJECT IDENTIFIER ::= {id-aca 4}
+
+id-aca-entryACI OBJECT IDENTIFIER ::= {id-aca 5}
+
+id-aca-subentryACI OBJECT IDENTIFIER ::= {id-aca 6}
+
+-- access control schemes -
+basicAccessControlScheme OBJECT IDENTIFIER ::=
+ {id-acScheme 1}
+
+simplifiedAccessControlScheme OBJECT IDENTIFIER ::= {id-acScheme 2}
+
+rule-based-access-control OBJECT IDENTIFIER ::= {id-acScheme 3}
+
+rule-and-basic-access-control OBJECT IDENTIFIER ::= {id-acScheme 4}
+
+rule-and-simple-access-control OBJECT IDENTIFIER ::= {id-acScheme 5}
+
+END -- BasicAccessControl
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/CertificateExtensions.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/CertificateExtensions.asn1
new file mode 100644
index 0000000000..0daf2208e9
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/CertificateExtensions.asn1
@@ -0,0 +1,498 @@
+-- Module CertificateExtensions (X.509:08/1997)
+
+CertificateExtensions {joint-iso-itu-t ds(5) module(1)
+ certificateExtensions(26) 0} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- EXPORTS ALL
+IMPORTS
+ id-at, id-ce, id-mr, informationFramework, authenticationFramework,
+ selectedAttributeTypes, upperBounds
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ Name, RelativeDistinguishedName, ATTRIBUTE, Attribute, MATCHING-RULE
+ FROM InformationFramework informationFramework
+ CertificateSerialNumber, CertificateList, AlgorithmIdentifier, EXTENSION,
+ Time
+ FROM AuthenticationFramework authenticationFramework
+ DirectoryString{}
+ FROM SelectedAttributeTypes selectedAttributeTypes
+ ub-name
+ FROM UpperBounds upperBounds
+ ORAddress
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)};
+
+-- Unless explicitly noted otherwise, there is no significance to the ordering
+-- of components of a SEQUENCE OF construct in this Specification.
+-- Key and policy information extensions
+authorityKeyIdentifier EXTENSION ::= {
+ SYNTAX AuthorityKeyIdentifier
+ IDENTIFIED BY id-ce-authorityKeyIdentifier
+}
+
+AuthorityKeyIdentifier ::= SEQUENCE {
+ keyIdentifier [0] KeyIdentifier OPTIONAL,
+ authorityCertIssuer [1] GeneralNames OPTIONAL,
+ authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL
+}
+(WITH COMPONENTS {
+ ...,
+ authorityCertIssuer PRESENT,
+ authorityCertSerialNumber PRESENT
+ } |
+ WITH COMPONENTS {
+ ...,
+ authorityCertIssuer ABSENT,
+ authorityCertSerialNumber ABSENT
+ })
+
+KeyIdentifier ::= OCTET STRING
+
+subjectKeyIdentifier EXTENSION ::= {
+ SYNTAX SubjectKeyIdentifier
+ IDENTIFIED BY id-ce-subjectKeyIdentifier
+}
+
+SubjectKeyIdentifier ::= KeyIdentifier
+
+keyUsage EXTENSION ::= {SYNTAX KeyUsage
+ IDENTIFIED BY id-ce-keyUsage
+}
+
+KeyUsage ::= BIT STRING {
+ digitalSignature(0), nonRepudiation(1), keyEncipherment(2),
+ dataEncipherment(3), keyAgreement(4), keyCertSign(5), cRLSign(6),
+ encipherOnly(7), decipherOnly(8)}
+
+extKeyUsage EXTENSION ::= {
+ SYNTAX SEQUENCE SIZE (1..MAX) OF KeyPurposeId
+ IDENTIFIED BY id-ce-extKeyUsage
+}
+
+KeyPurposeId ::= OBJECT IDENTIFIER
+
+privateKeyUsagePeriod EXTENSION ::= {
+ SYNTAX PrivateKeyUsagePeriod
+ IDENTIFIED BY id-ce-privateKeyUsagePeriod
+}
+
+PrivateKeyUsagePeriod ::= SEQUENCE {
+ notBefore [0] GeneralizedTime OPTIONAL,
+ notAfter [1] GeneralizedTime OPTIONAL
+}
+(WITH COMPONENTS {
+ ...,
+ notBefore PRESENT
+ } | WITH COMPONENTS {
+ ...,
+ notAfter PRESENT
+ })
+
+certificatePolicies EXTENSION ::= {
+ SYNTAX CertificatePoliciesSyntax
+ IDENTIFIED BY id-ce-certificatePolicies
+}
+
+CertificatePoliciesSyntax ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
+
+PolicyInformation ::= SEQUENCE {
+ policyIdentifier CertPolicyId,
+ policyQualifiers SEQUENCE SIZE (1..MAX) OF PolicyQualifierInfo OPTIONAL
+}
+
+CertPolicyId ::= OBJECT IDENTIFIER
+
+PolicyQualifierInfo ::= SEQUENCE {
+ policyQualifierId CERT-POLICY-QUALIFIER.&id({SupportedPolicyQualifiers}),
+ qualifier
+ CERT-POLICY-QUALIFIER.&Qualifier
+ ({SupportedPolicyQualifiers}{@policyQualifierId}) OPTIONAL
+}
+
+SupportedPolicyQualifiers CERT-POLICY-QUALIFIER ::=
+ {...}
+
+CERT-POLICY-QUALIFIER ::= CLASS {
+ &id OBJECT IDENTIFIER UNIQUE,
+ &Qualifier OPTIONAL
+}WITH SYNTAX {POLICY-QUALIFIER-ID &id
+ [QUALIFIER-TYPE &Qualifier]
+}
+
+policyMappings EXTENSION ::= {
+ SYNTAX PolicyMappingsSyntax
+ IDENTIFIED BY id-ce-policyMappings
+}
+
+PolicyMappingsSyntax ::=
+ SEQUENCE SIZE (1..MAX) OF
+ SEQUENCE {issuerDomainPolicy CertPolicyId,
+ subjectDomainPolicy CertPolicyId}
+
+supportedAlgorithms ATTRIBUTE ::= {
+ WITH SYNTAX SupportedAlgorithm
+ EQUALITY MATCHING RULE algorithmIdentifierMatch
+ ID id-at-supportedAlgorithms
+}
+
+SupportedAlgorithm ::= SEQUENCE {
+ algorithmIdentifier AlgorithmIdentifier,
+ intendedUsage [0] KeyUsage OPTIONAL,
+ intendedCertificatePolicies [1] CertificatePoliciesSyntax OPTIONAL
+}
+
+-- Certificate subject and certificate issuer attributes extensions
+subjectAltName EXTENSION ::= {
+ SYNTAX GeneralNames
+ IDENTIFIED BY id-ce-subjectAltName
+}
+
+GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
+
+GeneralName ::= CHOICE {
+ otherName [0] INSTANCE OF OTHER-NAME,
+ rfc822Name [1] IA5String,
+ dNSName [2] IA5String,
+ x400Address [3] ORAddress,
+ directoryName [4] Name,
+ ediPartyName [5] EDIPartyName,
+ uniformResourceIdentifier [6] IA5String,
+ iPAddress [7] OCTET STRING,
+ registeredID [8] OBJECT IDENTIFIER
+}
+
+OTHER-NAME ::= TYPE-IDENTIFIER
+
+EDIPartyName ::= SEQUENCE {
+ nameAssigner [0] DirectoryString{ub-name} OPTIONAL,
+ partyName [1] DirectoryString{ub-name}
+}
+
+issuerAltName EXTENSION ::= {
+ SYNTAX GeneralNames
+ IDENTIFIED BY id-ce-issuerAltName
+}
+
+subjectDirectoryAttributes EXTENSION ::= {
+ SYNTAX AttributesSyntax
+ IDENTIFIED BY id-ce-subjectDirectoryAttributes
+}
+
+AttributesSyntax ::= SEQUENCE SIZE (1..MAX) OF Attribute
+
+-- Certification path constraints extensions
+basicConstraints EXTENSION ::= {
+ SYNTAX BasicConstraintsSyntax
+ IDENTIFIED BY id-ce-basicConstraints
+}
+
+BasicConstraintsSyntax ::= SEQUENCE {
+ cA BOOLEAN DEFAULT FALSE,
+ pathLenConstraint INTEGER(0..MAX) OPTIONAL
+}
+
+nameConstraints EXTENSION ::= {
+ SYNTAX NameConstraintsSyntax
+ IDENTIFIED BY id-ce-nameConstraint
+}
+
+NameConstraintsSyntax ::= SEQUENCE {
+ permittedSubtrees [0] GeneralSubtrees OPTIONAL,
+ excludedSubtrees [1] GeneralSubtrees OPTIONAL,
+ requiredNameForms [2] NameForms OPTIONAL
+}
+
+GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
+
+GeneralSubtree ::= SEQUENCE {
+ base GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL
+}
+
+BaseDistance ::= INTEGER(0..MAX)
+
+NameForms ::= SEQUENCE {
+ basicNameForms [0] BasicNameForms OPTIONAL,
+ otherNameForms [1] SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER OPTIONAL
+}(ALL EXCEPT ({ --none; i.e.:at least one component shall be present--}))
+
+BasicNameForms ::= BIT STRING {
+ rfc822Name(0), dNSName(1), x400Address(2), directoryName(3), ediPartyName(4),
+ uniformResourceIdentifier(5), iPAddress(6), registeredID(7)}(SIZE (1..MAX))
+
+policyConstraints EXTENSION ::= {
+ SYNTAX PolicyConstraintsSyntax
+ IDENTIFIED BY id-ce-policyConstraints
+}
+
+PolicyConstraintsSyntax ::= SEQUENCE {
+ requireExplicitPolicy [0] SkipCerts OPTIONAL,
+ inhibitPolicyMapping [1] SkipCerts OPTIONAL
+}
+
+SkipCerts ::= INTEGER(0..MAX)
+
+CertPolicySet ::= SEQUENCE SIZE (1..MAX) OF CertPolicyId
+
+-- Basic CRL extensions
+cRLNumber EXTENSION ::= {
+ SYNTAX CRLNumber
+ IDENTIFIED BY id-ce-cRLNumber
+}
+
+CRLNumber ::= INTEGER(0..MAX)
+
+reasonCode EXTENSION ::= {
+ SYNTAX CRLReason
+ IDENTIFIED BY id-ce-reasonCode
+}
+
+CRLReason ::= ENUMERATED {
+ unspecified(0), keyCompromise(1), cACompromise(2), affiliationChanged(3),
+ superseded(4), cessationOfOperation(5), certificateHold(6), removeFromCRL(8)
+}
+
+instructionCode EXTENSION ::= {
+ SYNTAX HoldInstruction
+ IDENTIFIED BY id-ce-instructionCode
+}
+
+HoldInstruction ::= OBJECT IDENTIFIER
+
+invalidityDate EXTENSION ::= {
+ SYNTAX GeneralizedTime
+ IDENTIFIED BY id-ce-invalidityDate
+}
+
+-- CRL distribution points and delta-CRL extensions
+cRLDistributionPoints EXTENSION ::= {
+ SYNTAX CRLDistPointsSyntax
+ IDENTIFIED BY id-ce-cRLDistributionPoints
+}
+
+CRLDistPointsSyntax ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
+
+DistributionPoint ::= SEQUENCE {
+ distributionPoint [0] DistributionPointName OPTIONAL,
+ reasons [1] ReasonFlags OPTIONAL,
+ cRLIssuer [2] GeneralNames OPTIONAL
+}
+
+DistributionPointName ::= CHOICE {
+ fullName [0] GeneralNames,
+ nameRelativeToCRLIssuer [1] RelativeDistinguishedName
+}
+
+ReasonFlags ::= BIT STRING {
+ unused(0), keyCompromise(1), caCompromise(2), affiliationChanged(3),
+ superseded(4), cessationOfOperation(5), certificateHold(6)}
+
+issuingDistributionPoint EXTENSION ::= {
+ SYNTAX IssuingDistPointSyntax
+ IDENTIFIED BY id-ce-issuingDistributionPoint
+}
+
+IssuingDistPointSyntax ::= SEQUENCE {
+ distributionPoint [0] DistributionPointName OPTIONAL,
+ onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
+ onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
+ onlySomeReasons [3] ReasonFlags OPTIONAL,
+ indirectCRL [4] BOOLEAN DEFAULT FALSE
+}
+
+certificateIssuer EXTENSION ::= {
+ SYNTAX GeneralNames
+ IDENTIFIED BY id-ce-certificateIssuer
+}
+
+deltaCRLIndicator EXTENSION ::= {
+ SYNTAX BaseCRLNumber
+ IDENTIFIED BY id-ce-deltaCRLIndicator
+}
+
+BaseCRLNumber ::= CRLNumber
+
+deltaRevocationList ATTRIBUTE ::= {
+ WITH SYNTAX CertificateList
+ EQUALITY MATCHING RULE certificateListExactMatch
+ ID id-at-deltaRevocationList
+}
+
+-- Matching rules
+certificateExactMatch MATCHING-RULE ::= {
+ SYNTAX CertificateExactAssertion
+ ID id-mr-certificateExactMatch
+}
+
+CertificateExactAssertion ::= SEQUENCE {
+ serialNumber CertificateSerialNumber,
+ issuer Name
+}
+
+certificateMatch MATCHING-RULE ::= {
+ SYNTAX CertificateAssertion
+ ID id-mr-certificateMatch
+}
+
+CertificateAssertion ::= SEQUENCE {
+ serialNumber [0] CertificateSerialNumber OPTIONAL,
+ issuer [1] Name OPTIONAL,
+ subjectKeyIdentifier [2] SubjectKeyIdentifier OPTIONAL,
+ authorityKeyIdentifier [3] AuthorityKeyIdentifier OPTIONAL,
+ certificateValid [4] Time OPTIONAL,
+ privateKeyValid [5] GeneralizedTime OPTIONAL,
+ subjectPublicKeyAlgID [6] OBJECT IDENTIFIER OPTIONAL,
+ keyUsage [7] KeyUsage OPTIONAL,
+ subjectAltName [8] AltNameType OPTIONAL,
+ policy [9] CertPolicySet OPTIONAL,
+ pathToName [10] Name OPTIONAL
+}
+
+AltNameType ::= CHOICE {
+ builtinNameForm
+ ENUMERATED {rfc822Name(1), dNSName(2), x400Address(3), directoryName(4),
+ ediPartyName(5), uniformResourceIdentifier(6), iPAddress(7),
+ registeredId(8)},
+ otherNameForm OBJECT IDENTIFIER
+}
+
+certificatePairExactMatch MATCHING-RULE ::= {
+ SYNTAX CertificatePairExactAssertion
+ ID id-mr-certificatePairExactMatch
+}
+
+CertificatePairExactAssertion ::= SEQUENCE {
+ forwardAssertion [0] CertificateExactAssertion OPTIONAL,
+ reverseAssertion [1] CertificateExactAssertion OPTIONAL
+}
+(WITH COMPONENTS {
+ ...,
+ forwardAssertion PRESENT
+ } | WITH COMPONENTS {
+ ...,
+ reverseAssertion PRESENT
+ })
+
+certificatePairMatch MATCHING-RULE ::= {
+ SYNTAX CertificatePairAssertion
+ ID id-mr-certificatePairMatch
+}
+
+CertificatePairAssertion ::= SEQUENCE {
+ forwardAssertion [0] CertificateAssertion OPTIONAL,
+ reverseAssertion [1] CertificateAssertion OPTIONAL
+}
+(WITH COMPONENTS {
+ ...,
+ forwardAssertion PRESENT
+ } | WITH COMPONENTS {
+ ...,
+ reverseAssertion PRESENT
+ })
+
+certificateListExactMatch MATCHING-RULE ::= {
+ SYNTAX CertificateListExactAssertion
+ ID id-mr-certificateListExactMatch
+}
+
+CertificateListExactAssertion ::= SEQUENCE {
+ issuer Name,
+ thisUpdate Time,
+ distributionPoint DistributionPointName OPTIONAL
+}
+
+certificateListMatch MATCHING-RULE ::= {
+ SYNTAX CertificateListAssertion
+ ID id-mr-certificateListMatch
+}
+
+CertificateListAssertion ::= SEQUENCE {
+ issuer Name OPTIONAL,
+ minCRLNumber [0] CRLNumber OPTIONAL,
+ maxCRLNumber [1] CRLNumber OPTIONAL,
+ reasonFlags ReasonFlags OPTIONAL,
+ dateAndTime Time OPTIONAL,
+ distributionPoint [2] DistributionPointName OPTIONAL
+}
+
+algorithmIdentifierMatch MATCHING-RULE ::= {
+ SYNTAX AlgorithmIdentifier
+ ID id-mr-algorithmIdentifierMatch
+}
+
+-- Object identifier assignments
+id-at-supportedAlgorithms OBJECT IDENTIFIER ::=
+ {id-at 52}
+
+id-at-deltaRevocationList OBJECT IDENTIFIER ::= {id-at 53}
+
+id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= {id-ce 9}
+
+id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= {id-ce 14}
+
+id-ce-keyUsage OBJECT IDENTIFIER ::= {id-ce 15}
+
+id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= {id-ce 16}
+
+id-ce-subjectAltName OBJECT IDENTIFIER ::= {id-ce 17}
+
+id-ce-issuerAltName OBJECT IDENTIFIER ::= {id-ce 18}
+
+id-ce-basicConstraints OBJECT IDENTIFIER ::= {id-ce 19}
+
+id-ce-cRLNumber OBJECT IDENTIFIER ::= {id-ce 20}
+
+id-ce-reasonCode OBJECT IDENTIFIER ::= {id-ce 21}
+
+id-ce-instructionCode OBJECT IDENTIFIER ::= {id-ce 23}
+
+id-ce-invalidityDate OBJECT IDENTIFIER ::= {id-ce 24}
+
+id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= {id-ce 27}
+
+id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= {id-ce 28}
+
+id-ce-certificateIssuer OBJECT IDENTIFIER ::= {id-ce 29}
+
+id-ce-nameConstraint OBJECT IDENTIFIER ::= {id-ce 30 1}
+
+id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31}
+
+id-ce-certificatePolicies OBJECT IDENTIFIER ::= {id-ce 32}
+
+id-ce-policyMappings OBJECT IDENTIFIER ::= {id-ce 33}
+
+-- deprecated OBJECT IDENTIFIER ::= {id-ce 34}
+id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::=
+ {id-ce 35}
+
+id-ce-policyConstraints OBJECT IDENTIFIER ::= {id-ce 36}
+
+id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37}
+
+id-mr-certificateExactMatch OBJECT IDENTIFIER ::= {id-mr 34}
+
+id-mr-certificateMatch OBJECT IDENTIFIER ::= {id-mr 35}
+
+id-mr-certificatePairExactMatch OBJECT IDENTIFIER ::= {id-mr 36}
+
+id-mr-certificatePairMatch OBJECT IDENTIFIER ::= {id-mr 37}
+
+id-mr-certificateListExactMatch OBJECT IDENTIFIER ::= {id-mr 38}
+
+id-mr-certificateListMatch OBJECT IDENTIFIER ::= {id-mr 39}
+
+id-mr-algorithmIdentifierMatch OBJECT IDENTIFIER ::= {id-mr 40}
+
+id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= {id-ce 54}
+
+-- The following OBJECT IDENTIFIERS are not used by this Specification:
+-- {id-ce 2}, {id-ce 3}, {id-ce 4}, {id-ce 5}, {id-ce 6}, {id-ce 7},
+-- {id-ce 8}, {id-ce 10}, {id-ce 11}, {id-ce 12}, {id-ce 13},
+-- {id-ce 22}, {id-ce 25}, {id-ce 26}, {id-ce 30}
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Coding-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Coding-Attributes.asn1
new file mode 100644
index 0000000000..04060cf060
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Coding-Attributes.asn1
@@ -0,0 +1,17 @@
+-- Module Character-Coding-Attributes (T.416:03/1993)
+
+Character-Coding-Attributes {2 8 1 6 3} DEFINITIONS ::=
+BEGIN
+
+EXPORTS Character-Coding-Attributes;
+
+Character-Coding-Attributes ::= SET {
+}
+
+-- no character coding attributes
+-- are defined in this part of
+-- ITU-T Rec. T.410-Series | ISO/IEC 8613
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Presentation-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Presentation-Attributes.asn1
new file mode 100644
index 0000000000..aed48ac26b
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Presentation-Attributes.asn1
@@ -0,0 +1,125 @@
+-- Module Character-Presentation-Attributes (T.416:03/1993)
+
+Character-Presentation-Attributes {2 8 1 6 2} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Character-Attributes, One-Of-Four-Angles, One-Of-Two-Angles, Measure-Pair,
+ Alignment, Layout-Table, Graphic-Rendition, Formatting-Indicator,
+ Character-Fonts, Itemization, Kerning-Offset, Proportional-Line-Spacing,
+ Pairwise-Kerning;
+
+Character-Attributes ::= SET {
+ character-path [0] IMPLICIT One-Of-Four-Angles OPTIONAL,
+ line-progression [1] IMPLICIT One-Of-Two-Angles OPTIONAL,
+ character-orientation [2] IMPLICIT One-Of-Four-Angles OPTIONAL,
+ initial-offset [3] IMPLICIT Measure-Pair OPTIONAL,
+ character-spacing [6] IMPLICIT INTEGER OPTIONAL,
+ line-spacing [7] IMPLICIT INTEGER OPTIONAL,
+ alignment [8] IMPLICIT Alignment OPTIONAL,
+ line-layout-table [9] IMPLICIT Layout-Table OPTIONAL,
+ graphic-rendition [10] IMPLICIT Graphic-Rendition OPTIONAL,
+ formatting-indicator [11] IMPLICIT Formatting-Indicator OPTIONAL,
+ character-fonts [12] IMPLICIT Character-Fonts OPTIONAL,
+ graphic-char-subrepertoire [13] IMPLICIT INTEGER OPTIONAL,
+ itemization [14] IMPLICIT Itemization OPTIONAL,
+ widow-size [15] IMPLICIT INTEGER OPTIONAL,
+ orphan-size [16] IMPLICIT INTEGER OPTIONAL,
+ graphic-character-sets [17] IMPLICIT OCTET STRING OPTIONAL,
+ indentation [19] IMPLICIT INTEGER OPTIONAL,
+ kerning-offset [20] IMPLICIT Kerning-Offset OPTIONAL,
+ proportional-line-spacing [21] IMPLICIT Proportional-Line-Spacing OPTIONAL,
+ pairwise-kerning [22] IMPLICIT Pairwise-Kerning OPTIONAL,
+ first-line-offset [23] IMPLICIT INTEGER OPTIONAL,
+ code-extension-announcers [24] IMPLICIT OCTET STRING OPTIONAL
+}
+
+One-Of-Four-Angles ::= INTEGER {d0(0), d90(1), d180(2), d270(3)}
+
+One-Of-Two-Angles ::= INTEGER {d90(1), d270(3)}
+
+Measure-Pair ::= SEQUENCE {
+ horizontal [0] IMPLICIT INTEGER,
+ vertical [1] IMPLICIT INTEGER
+}
+
+Alignment ::= INTEGER {
+ start-aligned(0), end-aligned(1), centred(2), justified(3)}
+
+Layout-Table ::= SET OF Tabulation-Stop
+
+Tabulation-Stop ::= SET {
+ tabulation-reference [0] IMPLICIT NumericString,
+ tabulation-position [1] IMPLICIT INTEGER,
+ alignment
+ [2] IMPLICIT INTEGER {start-aligned(0), end-aligned(1), centred(2),
+ aligned-around(3)},
+ alignment-character-string [3] IMPLICIT OCTET STRING OPTIONAL
+}
+
+-- string of graphic characters
+-- from the set of graphic elements
+-- specified by the presentation
+-- attributes "graphic character
+-- sets" and "graphic character
+-- subrepertoire"
+Graphic-Rendition ::= SET OF Graphic-Rendition-Aspect
+
+Character-Fonts ::= SET {
+ primary-font [0] IMPLICIT Font-Type OPTIONAL,
+ first-alternative-font [1] IMPLICIT Font-Type OPTIONAL,
+ second-alternative-font [2] IMPLICIT Font-Type OPTIONAL,
+ third-alternative-font [3] IMPLICIT Font-Type OPTIONAL,
+ fourth-alternative-font [4] IMPLICIT Font-Type OPTIONAL,
+ fifth-alternative-font [5] IMPLICIT Font-Type OPTIONAL,
+ sixth-alternative-font [6] IMPLICIT Font-Type OPTIONAL,
+ seventh-alternative-font [7] IMPLICIT Font-Type OPTIONAL,
+ eighth-alternative-font [8] IMPLICIT Font-Type OPTIONAL,
+ ninth-alternative-font [9] IMPLICIT Font-Type OPTIONAL
+}
+
+Font-Type ::= SET {
+ font-size [0] IMPLICIT INTEGER,
+ font-identifier [1] IMPLICIT INTEGER
+}
+
+Graphic-Rendition-Aspect ::= INTEGER {
+ cancel(0), increased-intensity(1), decreased-intensity(2), italicized(3),
+ underlined(4), slowly-blinking(5), rapidly-blinking(6), negative-image(7),
+ crossed-out(9), primary-font(10), first-alternative-font(11),
+ second-alternative-font(12), third-alternative-font(13),
+ fourth-alternative-font(14), fifth-alternative-font(15),
+ sixth-alternative-font(16), seventh-alternative-font(17),
+ eighth-alternative-font(18), ninth-alternative-font(19),
+ doubly-underlined(21), normal-intensity(22), not-italicized(23),
+ not-underlined(24), steady(25), variable-spacing(26), positive-image(27),
+ not-crossed-out(29), black-foreground(30), red-foreground(31),
+ green-foreground(32), yellow-foreground(33), blue-foreground(34),
+ magenta-foreground(35), cyan-foreground(36), white-foreground(37),
+ select-char-foreground-colour(38), black-background(40), red-background(41),
+ green-background(42), yellow-background(43), blue-background(44),
+ magenta-background(45), cyan-background(46), white-background(47),
+ select-char-background-colour(48), not-variable-spacing(50)}
+
+Formatting-Indicator ::= INTEGER {no(0), yes(1)}
+
+Itemization ::= SET {
+ identifier-alignment
+ [0] IMPLICIT INTEGER {no-itemization(0), start-aligned(1), end-aligned(2)},
+ identifier-start-offset [1] IMPLICIT INTEGER OPTIONAL,
+ identifier-end-offset [2] IMPLICIT INTEGER OPTIONAL
+}
+
+Kerning-Offset ::= SET {
+ start-offset [0] IMPLICIT INTEGER,
+ end-offset [1] IMPLICIT INTEGER
+}
+
+Proportional-Line-Spacing ::= INTEGER {no(0), yes(1)}
+
+Pairwise-Kerning ::= INTEGER {no(0), yes(1)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Profile-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Profile-Attributes.asn1
new file mode 100644
index 0000000000..7ba5bf194a
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Character-Profile-Attributes.asn1
@@ -0,0 +1,54 @@
+-- Module Character-Profile-Attributes (T.416:03/1993)
+
+Character-Profile-Attributes {2 8 1 6 4} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Character-Presentation-Feature, Character-Coding-Attribute,
+ Character-Content-Defaults;
+
+IMPORTS
+ Character-Attributes, One-Of-Four-Angles, One-Of-Two-Angles, Measure-Pair,
+ Alignment, Layout-Table, Graphic-Rendition, Formatting-Indicator,
+ Character-Fonts, Itemization, Kerning-Offset, Proportional-Line-Spacing,
+ Pairwise-Kerning
+ FROM Character-Presentation-Attributes;
+
+-- see 11.2
+Character-Presentation-Feature ::= CHOICE {
+ character-path [0] IMPLICIT One-Of-Four-Angles,
+ line-progression [1] IMPLICIT One-Of-Two-Angles,
+ character-orientation [2] IMPLICIT One-Of-Four-Angles,
+ initial-offset [3] IMPLICIT Measure-Pair,
+ character-spacing [6] IMPLICIT INTEGER,
+ line-spacing [7] IMPLICIT INTEGER,
+ alignment [8] IMPLICIT Alignment,
+ line-layout-table [9] IMPLICIT Layout-Table,
+ graphic-rendition [10] IMPLICIT Graphic-Rendition,
+ formatting-indicator [11] IMPLICIT Formatting-Indicator,
+ character-fonts [12] IMPLICIT Character-Fonts,
+ graphic-char-subrepertoire [13] IMPLICIT INTEGER,
+ itemization [14] IMPLICIT Itemization,
+ widow-size [15] IMPLICIT INTEGER,
+ orphan-size [16] IMPLICIT INTEGER,
+ graphic-character-sets [17] IMPLICIT OCTET STRING,
+ indentation [19] IMPLICIT INTEGER,
+ kerning-offset [20] IMPLICIT Kerning-Offset,
+ proportional-line-spacing [21] IMPLICIT Proportional-Line-Spacing,
+ pairwise-kerning [22] IMPLICIT Pairwise-Kerning,
+ first-line-offset [23] IMPLICIT INTEGER,
+ code-extension-announcers [24] IMPLICIT OCTET STRING
+}
+
+Character-Coding-Attribute ::= NULL
+
+-- no character coding attributes
+-- are defined in this part of
+-- ITU-T Rec. T.410-Series | ISO/IEC 8613
+Character-Content-Defaults ::=
+ Character-Attributes
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Colour-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Colour-Attributes.asn1
new file mode 100644
index 0000000000..24c7fafc38
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Colour-Attributes.asn1
@@ -0,0 +1,192 @@
+-- Module Colour-Attributes (T.415:03/1993)
+
+Colour-Attributes {2 8 1 5 14} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Colour-Expression, Colour-Table, Colour-Spaces-List, Colour-Characteristics;
+
+IMPORTS Character-Data
+ FROM Document-Profile-Descriptor; -- see 7.7
+
+Real-Or-Int ::= CHOICE {a REAL,
+ b INTEGER
+}
+
+Colour-Expression ::= SEQUENCE {
+ colour-access-mode [0] IMPLICIT INTEGER {direct(0), indexed(1)},
+ a
+ [1] CHOICE {direct-colour [0] IMPLICIT Direct-Colour,
+ indexed-colour [1] IMPLICIT Indexed-Colour}
+}
+
+Direct-Colour ::= SET {
+ colour-space-id [0] IMPLICIT INTEGER OPTIONAL,
+ colour-specification [1] Colour-Specification OPTIONAL,
+ colour-tolerance [2] Colour-Tolerance OPTIONAL
+}
+
+Colour-Specification ::= CHOICE {
+ cmyk-colour [0] IMPLICIT CMYK-Colour,
+ rgb-colour [1] IMPLICIT RGB-Colour,
+ cie-colour [2] IMPLICIT CIE-Colour
+}
+
+CMYK-Colour ::= SET {
+ c-value [0] Real-Or-Int,
+ m-value [1] Real-Or-Int,
+ y-value [2] Real-Or-Int,
+ k-value [3] Real-Or-Int OPTIONAL
+}
+
+RGB-Colour ::= SET {
+ r-value [0] Real-Or-Int,
+ g-value [1] Real-Or-Int,
+ b-value [2] Real-Or-Int
+}
+
+CIE-Colour ::= SET {
+ x-value [0] Real-Or-Int,
+ y-value [1] Real-Or-Int,
+ z-value [2] Real-Or-Int
+}
+
+Colour-Tolerance ::= CHOICE {
+ unspecified-tolerance [0] IMPLICIT NULL,
+ specified-tolerance [1] IMPLICIT Specified-Tolerance
+}
+
+Specified-Tolerance ::= SET {
+ tolerance-value [0] Real-Or-Int,
+ tolerance-space [1] IMPLICIT INTEGER {cieluv(3), cielab(4)}
+}
+
+Indexed-Colour ::= SET {index [0] IMPLICIT INTEGER OPTIONAL
+}
+
+Colour-Table ::= SET {
+ colour-space-id [0] IMPLICIT INTEGER,
+ colour-table-entries
+ [1] IMPLICIT SET OF
+ SET {index [0] IMPLICIT INTEGER,
+ colour-coordinates [1] Colour-Specification,
+ colour-tolerance [2] Colour-Tolerance OPTIONAL
+ }
+}
+
+Colour-Characteristics ::= SET {
+ colour-spaces-present
+ [0] IMPLICIT SEQUENCE OF
+ SET {colour-space-type [0] IMPLICIT Colour-Space-Type,
+ colour-calibration-type
+ [1] IMPLICIT Colour-Space-Calibration-Type},
+ colour-modes-present [1] IMPLICIT Colour-Modes-Present,
+ minimum-colour-tolerance [2] Colour-Tolerance OPTIONAL,
+ maximum-colour-table-length [3] IMPLICIT INTEGER OPTIONAL,
+ -- "maximum number of colour table entries"
+ maximum-rgb-lut-length [4] IMPLICIT INTEGER OPTIONAL,
+ -- "maximum number of look-up table entries"
+ maximum-cmy-k-grid-size [5] IMPLICIT INTEGER OPTIONAL
+}
+
+Colour-Space-Type ::= INTEGER {rgb(0), cmyk(1), cmy(2), cieluv(3), cielab(4)}
+
+Colour-Space-Calibration-Type ::= INTEGER {
+ no-calibration(0), matrices(1), lookup-tables(2),
+ matrices-and-lookup-tables(3)}
+
+Colour-Modes-Present ::= INTEGER {direct(0), indexed(1), both(2)}
+
+Colour-Spaces-List ::= SET OF Colour-Space
+
+Colour-Space ::= SET {
+ colour-space-id [0] IMPLICIT INTEGER,
+ colour-space-type [1] IMPLICIT Colour-Space-Type,
+ colour-space-name [2] IMPLICIT Character-Data OPTIONAL,
+ colour-data-scaling [3] Colour-Data-Scaling OPTIONAL,
+ calibration-data [4] Calibration-Data OPTIONAL
+}
+
+Colour-Data-Scaling ::= SET {
+ first-component [0] IMPLICIT Scale-And-Offset,
+ second-component [1] IMPLICIT Scale-And-Offset,
+ third-component [2] IMPLICIT Scale-And-Offset,
+ fourth-component [3] IMPLICIT Scale-And-Offset OPTIONAL
+}
+
+Scale-And-Offset ::= SET {
+ colour-scale [0] Real-Or-Int,
+ colour-offset [1] Real-Or-Int
+}
+
+Calibration-Data ::= CHOICE {
+ rgb [0] IMPLICIT RGB-Calibration,
+ cmyk [1] IMPLICIT CMY-K-Calibration,
+ cmy [2] IMPLICIT CMY-K-Calibration,
+ cieluv [3] IMPLICIT CIE-Calibration,
+ cielab [4] IMPLICIT CIE-Calibration
+}
+
+CIE-Calibration ::= SET {reference-white [0] IMPLICIT CIE-Ref
+}
+
+RGB-Calibration ::= SET {
+ reference-white [0] IMPLICIT CIE-Ref,
+ matrix1 [1] IMPLICIT Three-by-Three-Matrix OPTIONAL,
+ lookup-table [3] IMPLICIT Colour-Lookup-Table OPTIONAL,
+ matrix2 [2] IMPLICIT Three-by-Three-Matrix OPTIONAL
+}
+
+Three-by-Three-Matrix ::= SEQUENCE {
+ row-1 Three-Nums,
+ row-2 Three-Nums,
+ row-3 Three-Nums
+}
+
+Three-Nums ::= SEQUENCE {
+ column-1 Real-Or-Int,
+ column-2 Real-Or-Int,
+ column-3 Real-Or-Int
+}
+
+Colour-Lookup-Table ::= SET {
+ number-of-entries [0] IMPLICIT INTEGER,
+ m [1] IMPLICIT INTEGER,
+ n [2] IMPLICIT INTEGER,
+ colour-table [3] IMPLICIT SET OF Colour-Table-Entry
+}
+
+Colour-Table-Entry ::= SET {
+ index [3] IMPLICIT INTEGER,
+ r [0] Real-Or-Int,
+ g [1] Real-Or-Int,
+ b [2] Real-Or-Int
+}
+
+CMY-K-Calibration ::= SET {
+ reference-white [0] IMPLICIT CIE-Ref,
+ comment [1] IMPLICIT Character-Data OPTIONAL,
+ cmyk-lut [2] IMPLICIT Grid-Specification
+}
+
+Grid-Specification ::=
+ SET OF
+ SET {grid-location [0] IMPLICIT CMYK-Colour,
+ grid-value [1] IMPLICIT Grid-Value}
+
+Grid-Value ::= SET {
+ x-value [0] IMPLICIT REAL,
+ y-value [1] IMPLICIT REAL,
+ z-value [2] IMPLICIT REAL
+}
+
+CIE-Ref ::= SET {
+ xn-value [0] Real-Or-Int,
+ yn-value [1] Real-Or-Int,
+ zn-value [2] Real-Or-Int
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DOR-definition.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DOR-definition.asn1
new file mode 100644
index 0000000000..cd3330dc56
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DOR-definition.asn1
@@ -0,0 +1,134 @@
+-- Module DOR-definition (ISO|IEC 10031-2:1991)
+DOR-definition {joint-iso-itu-t dor(4) reference-definition(0)} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ AE-Identifier, Altered-value, DOR, dor-abstract-syntax, dor-syntax-asn1,
+ dorx, Extend-QoS, Local-reference, Locational-identifier, Produce-QoS,
+ QoS-level, Quality-of-Service, Requested-QoS-level,
+ Single-use-of-reference, Token;
+
+IMPORTS
+ DistinguishedName
+ FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+ informationFramework(1) 3}
+ PresentationAddress
+ FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
+ selectedAttributeTypes(5) 3};
+
+-- Defined Object Identifiers
+dorx OBJECT IDENTIFIER ::=
+ {joint-iso-itu-t dor(11)}
+
+-- Object identifier for abstract syntax of DOR
+dor-abstract-syntax OBJECT IDENTIFIER ::=
+ {dorx reference-abstract-syntax(1)}
+
+-- Object identifier for abstract syntax of DOR with basic ASN.1 encodings in
+-- EXTERNAL
+dor-syntax-asn1 OBJECT IDENTIFIER ::=
+ {dorx reference-syntax(2) asn1(0)}
+
+-- Definition of DOR type
+DOR ::= SEQUENCE {
+ ae-identifier [0] AE-Identifier OPTIONAL,
+ -- mandatory in case of produce-operations and consume-operations
+ local-reference [1] Local-reference,
+ data-object-type OBJECT IDENTIFIER,
+ -- identifying the abstract syntax and the transfer syntax of the
+ -- referenced data value
+ quality-of-service [2] Quality-of-Service DEFAULT {},
+ token [3] Token OPTIONAL
+}
+
+AE-Identifier ::= SEQUENCE { -- at least one component shall be present
+ locational-identifier [0] Locational-identifier OPTIONAL,
+ direct-logical-identifier [1] DistinguishedName OPTIONAL,
+ indirect-logical-identifier [2] DistinguishedName OPTIONAL
+}
+
+Locational-identifier ::= SEQUENCE {
+ presentation-address [0] PresentationAddress,
+ ae-title [1] AE-title OPTIONAL,
+ -- as defined in ISO 8650:1988/Cor.1:1990
+ application-contexts SET OF OBJECT IDENTIFIER
+}
+
+Local-reference ::= SEQUENCE {
+ application [0] OCTET STRING OPTIONAL,
+ specific-reference [1] OCTET STRING
+}
+
+Quality-of-Service ::= SEQUENCE {
+ qoS-level [0] QoS-level DEFAULT level-1:NULL,
+ usage-of-reference Single-use-of-reference DEFAULT TRUE
+}
+
+QoS-level ::= CHOICE {
+ level-1 [1] IMPLICIT NULL,
+ level-2 [2] IMPLICIT GeneralizedTime,
+ -- specifying the produce time
+ level-3
+ [3] IMPLICIT SEQUENCE {produce-time GeneralizedTime,
+ fidelity-time GeneralizedTime}
+}
+
+Single-use-of-reference ::= BOOLEAN
+
+Token ::= CHOICE {
+ simpletoken OCTET STRING,
+ -- used to validate an access which use this DOR
+ externaltoken EXTERNAL -- for future proxy mechanism
+}
+
+-- Data types for produce-operations
+Produce-QoS ::= SEQUENCE {
+ qoS-level [0] Requested-QoS-level DEFAULT level-1:NULL,
+ usage-of-reference Single-use-of-reference DEFAULT TRUE
+}
+
+Requested-QoS-level ::= CHOICE {
+ level-1 [1] IMPLICIT NULL,
+ level-2 [2] IMPLICIT NULL,
+ level-3 [3] IMPLICIT GeneralizedTime
+ -- specifying the requested fidelity-time
+}
+
+-- Data types for extending a specific QoS
+Extend-QoS ::= SEQUENCE {
+ qoS-level [0] Requested-QoS-level OPTIONAL,
+ -- if omitted, no change required
+ usage-of-reference Single-use-of-reference OPTIONAL
+ -- if omitted, no change required
+}
+
+-- Data types for requesting / indicating value alteration in produce-operation
+-- or access-operation
+Altered-value ::= ENUMERATED {
+ value-not-altered(1), value-altered(2), undefined(3)}
+
+-- dw: definition of AE-title, as defined in ISO 8650:1988/Cor.1:1990
+-- dw: defined in-line here so we don't need to import it, original comments
+-- dw: are as they appear in the 8650:1988 Annex E
+AP-title ::= TYPE-IDENTIFIER.&Type
+
+-- The exact definition and values used for AP-title
+-- should be chosen taking into account the ongoing
+-- work in areas of naming, the Directory, and the
+-- Registration Authority procedures for AE titles,
+-- AE titles, and AE qualifiers
+AE-qualifier ::= TYPE-IDENTIFIER.&Type
+
+-- The exact definition and values used for AE-qualifier
+-- should be chosen taking into account the ongoing
+-- work in areas of naming, the Directory, and the
+-- Registration Authority procedures for AE titles,
+-- AE titles, and AE qualifiers
+AE-title ::= SEQUENCE {ap AP-title,
+ ae AE-qualifier
+}
+
+END -- of DOR-definition
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DSAOperationalAttributeTypes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DSAOperationalAttributeTypes.asn1
new file mode 100644
index 0000000000..df5e8489ea
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DSAOperationalAttributeTypes.asn1
@@ -0,0 +1,186 @@
+-- Module DSAOperationalAttributeTypes (X.501:08/1997)
+DSAOperationalAttributeTypes {joint-iso-itu-t ds(5) module(1)
+ dsaOperationalAttributeTypes(22) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ id-doa, id-kmr, informationFramework, distributedOperations,
+ opBindingManagement, selectedAttributeTypes
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ ATTRIBUTE, MATCHING-RULE, Name
+ FROM InformationFramework informationFramework
+ OperationalBindingID
+ FROM OperationalBindingManagement opBindingManagement
+ AccessPoint, MasterAndShadowAccessPoints
+ FROM DistributedOperations distributedOperations
+ bitStringMatch
+ FROM SelectedAttributeTypes selectedAttributeTypes;
+
+-- data types
+DSEType ::= BIT STRING {
+ root(0), -- root DSE
+ glue(1), -- represents knowledge of a name only
+ cp(2), -- context prefix
+ entry(3), -- object entry
+ alias(4), -- alias entry
+ subr(5), -- subordinate reference
+ nssr(6), -- non-specific subordinate reference
+ supr(7), -- superior reference
+ xr(8), -- cross reference
+ admPoint(9), -- administrative point
+ subentry(10), -- subentry
+ shadow(11), -- shadow copy
+ immSupr(13), -- immediate superior reference
+ rhob(14), -- rhob information
+ sa(15), -- subordinate reference to alias entry
+ dsSubentry(16), -- DSA Specific subentry
+ familyMember(17)} -- family member
+
+SupplierOrConsumer ::= SET {
+ COMPONENTS OF AccessPoint, -- supplier or consumer
+ agreementID [4] OperationalBindingID
+}
+
+SupplierInformation ::= SET {
+ COMPONENTS OF SupplierOrConsumer, -- supplier
+ supplier-is-master [5] BOOLEAN DEFAULT TRUE,
+ non-supplying-master [6] AccessPoint OPTIONAL
+}
+
+ConsumerInformation ::= SupplierOrConsumer -- consumer
+
+SupplierAndConsumers ::= SET {
+ COMPONENTS OF AccessPoint, -- supplier
+ consumers [4] SET OF AccessPoint
+}
+
+-- attribute types
+dseType ATTRIBUTE ::= {
+ WITH SYNTAX DSEType
+ EQUALITY MATCHING RULE bitStringMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE dSAOperation
+ ID id-doa-dseType
+}
+
+myAccessPoint ATTRIBUTE ::= {
+ WITH SYNTAX AccessPoint
+ EQUALITY MATCHING RULE accessPointMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE dSAOperation
+ ID id-doa-myAccessPoint
+}
+
+superiorKnowledge ATTRIBUTE ::= {
+ WITH SYNTAX AccessPoint
+ EQUALITY MATCHING RULE accessPointMatch
+ NO USER MODIFICATION TRUE
+ USAGE dSAOperation
+ ID id-doa-superiorKnowledge
+}
+
+specificKnowledge ATTRIBUTE ::= {
+ WITH SYNTAX MasterAndShadowAccessPoints
+ EQUALITY MATCHING RULE masterAndShadowAccessPointsMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE distributedOperation
+ ID id-doa-specificKnowledge
+}
+
+nonSpecificKnowledge ATTRIBUTE ::= {
+ WITH SYNTAX MasterAndShadowAccessPoints
+ EQUALITY MATCHING RULE masterAndShadowAccessPointsMatch
+ NO USER MODIFICATION TRUE
+ USAGE distributedOperation
+ ID id-doa-nonSpecificKnowledge
+}
+
+supplierKnowledge ATTRIBUTE ::= {
+ WITH SYNTAX SupplierInformation
+ EQUALITY MATCHING RULE supplierOrConsumerInformationMatch
+ NO USER MODIFICATION TRUE
+ USAGE dSAOperation
+ ID id-doa-supplierKnowledge
+}
+
+consumerKnowledge ATTRIBUTE ::= {
+ WITH SYNTAX ConsumerInformation
+ EQUALITY MATCHING RULE supplierOrConsumerInformationMatch
+ NO USER MODIFICATION TRUE
+ USAGE dSAOperation
+ ID id-doa-consumerKnowledge
+}
+
+secondaryShadows ATTRIBUTE ::= {
+ WITH SYNTAX SupplierAndConsumers
+ EQUALITY MATCHING RULE supplierAndConsumersMatch
+ NO USER MODIFICATION TRUE
+ USAGE dSAOperation
+ ID id-doa-secondaryShadows
+}
+
+-- matching rules
+accessPointMatch MATCHING-RULE ::= {
+ SYNTAX Name
+ ID id-kmr-accessPointMatch
+}
+
+masterAndShadowAccessPointsMatch MATCHING-RULE ::= {
+ SYNTAX SET OF Name
+ ID id-kmr-masterShadowMatch
+}
+
+supplierOrConsumerInformationMatch MATCHING-RULE ::= {
+ SYNTAX
+ SET {ae-title [0] Name,
+ agreement-identifier [2] INTEGER}
+ ID id-kmr-supplierConsumerMatch
+}
+
+supplierAndConsumersMatch MATCHING-RULE ::= {
+ SYNTAX Name
+ ID id-kmr-supplierConsumersMatch
+}
+
+-- object identifier assignments
+-- dsa operational attributes
+id-doa-dseType OBJECT IDENTIFIER ::=
+ {id-doa 0}
+
+id-doa-myAccessPoint OBJECT IDENTIFIER ::= {id-doa 1}
+
+id-doa-superiorKnowledge OBJECT IDENTIFIER ::= {id-doa 2}
+
+id-doa-specificKnowledge OBJECT IDENTIFIER ::= {id-doa 3}
+
+id-doa-nonSpecificKnowledge OBJECT IDENTIFIER ::= {id-doa 4}
+
+id-doa-supplierKnowledge OBJECT IDENTIFIER ::= {id-doa 5}
+
+id-doa-consumerKnowledge OBJECT IDENTIFIER ::= {id-doa 6}
+
+id-doa-secondaryShadows OBJECT IDENTIFIER ::= {id-doa 7}
+
+-- knowledge matching rules
+id-kmr-accessPointMatch OBJECT IDENTIFIER ::=
+ {id-kmr 0}
+
+id-kmr-masterShadowMatch OBJECT IDENTIFIER ::= {id-kmr 1}
+
+id-kmr-supplierConsumerMatch OBJECT IDENTIFIER ::= {id-kmr 2}
+
+id-kmr-supplierConsumersMatch OBJECT IDENTIFIER ::= {id-kmr 3}
+
+END -- DSAOperationalAttributeTypes
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Default-Value-Lists.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Default-Value-Lists.asn1
new file mode 100644
index 0000000000..ef1187ba8c
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Default-Value-Lists.asn1
@@ -0,0 +1,143 @@
+-- Module Default-Value-Lists (T.415:03/1993)
+
+Default-Value-Lists {2 8 1 5 11} DEFINITIONS ::=
+BEGIN
+
+EXPORTS Default-Value-Lists-Logical, Default-Value-Lists-Layout;
+
+IMPORTS
+ Style-Identifier, Category-Name
+ FROM Identifiers-and-Expressions -- see 7.8
+
+ Measure-Pair, One-Of-Four-Angles, Medium-Type, Dimension-Pair, Transparency,
+ Colour, Border, Content-Background-Colour, Content-Foreground-Colour,
+ Sealed
+ FROM Layout-Descriptors -- see 7.9
+
+ Protection
+ FROM Logical-Descriptors -- see 7.10
+
+ Presentation-Attributes
+ FROM Style-Descriptors -- see 7.11
+
+ Colour-Expression, Colour-Table
+ FROM Colour-Attributes; -- see 7.14
+
+Default-Value-Lists-Layout ::= SET {
+ page-set-attributes [1] IMPLICIT Page-Set-Attributes OPTIONAL,
+ page-attributes [2] IMPLICIT Page-Attributes OPTIONAL,
+ frame-attributes [3] IMPLICIT Frame-Attributes OPTIONAL,
+ block-attributes [4] IMPLICIT Block-Attributes OPTIONAL
+}
+
+Default-Value-Lists-Logical ::= SET {
+ composite-logical-attributes
+ [5] IMPLICIT Composite-Logical-Attributes OPTIONAL,
+ basic-logical-attributes [6] IMPLICIT Basic-Logical-Attributes OPTIONAL
+}
+
+Page-Set-Attributes ::= SET {
+ layout-stream-categories layout-stream-categories < Attribute OPTIONAL,
+ layout-stream-sub-categories
+ layout-stream-sub-categories < Attribute OPTIONAL
+}
+
+Page-Attributes ::= SET {
+ dimensions dimensions < Attribute OPTIONAL,
+ transparency transparency < Attribute OPTIONAL,
+ presentation-attributes presentation-attributes < Attribute OPTIONAL,
+ page-position page-position < Attribute OPTIONAL,
+ medium-type medium-type < Attribute OPTIONAL,
+ presentation-style presentation-style < Attribute OPTIONAL,
+ layout-stream-categories layout-stream-categories < Attribute OPTIONAL,
+ layout-stream-sub-categories
+ layout-stream-sub-categories < Attribute OPTIONAL,
+ colour colour < Attribute OPTIONAL,
+ colour-of-layout-object colour-of-layout-object < Attribute OPTIONAL,
+ object-colour-table object-colour-table < Attribute OPTIONAL,
+ content-background-colour content-background-colour < Attribute OPTIONAL,
+ content-foreground-colour content-foreground-colour < Attribute OPTIONAL,
+ content-colour-table content-colour-table < Attribute OPTIONAL,
+ sealed sealed < Attribute OPTIONAL
+}
+
+Frame-Attributes ::= SET {
+ position position < Attribute OPTIONAL,
+ dimensions dimensions < Attribute OPTIONAL,
+ transparency transparency < Attribute OPTIONAL,
+ layout-path layout-path < Attribute OPTIONAL,
+ permitted-categories permitted-categories < Attribute OPTIONAL,
+ layout-stream-categories layout-stream-categories < Attribute OPTIONAL,
+ layout-stream-sub-categories
+ layout-stream-sub-categories < Attribute OPTIONAL,
+ colour colour < Attribute OPTIONAL,
+ colour-of-layout-object colour-of-layout-object < Attribute OPTIONAL,
+ object-colour-table object-colour-table < Attribute OPTIONAL,
+ border border < Attribute OPTIONAL,
+ sealed sealed < Attribute OPTIONAL
+}
+
+Block-Attributes ::= SET {
+ position position < Attribute OPTIONAL,
+ dimensions dimensions < Attribute OPTIONAL,
+ transparency transparency < Attribute OPTIONAL,
+ presentation-attributes presentation-attributes < Attribute OPTIONAL,
+ presentation-style presentation-style < Attribute OPTIONAL,
+ layout-stream-categories layout-stream-categories < Attribute OPTIONAL,
+ layout-stream-sub-categories
+ layout-stream-sub-categories < Attribute OPTIONAL,
+ colou colour < Attribute OPTIONAL,
+ colour-of-layout-object colour-of-layout-object < Attribute OPTIONAL,
+ object-colour-table object-colour-table < Attribute OPTIONAL,
+ content-background-colour content-background-colour < Attribute OPTIONAL,
+ content-foreground-colour content-foreground-colour < Attribute OPTIONAL,
+ content-colour-table content-colour-table < Attribute OPTIONAL,
+ border border < Attribute OPTIONAL,
+ sealed sealed < Attribute OPTIONAL
+}
+
+Composite-Logical-Attributes ::= SET {
+ protection protection < Attribute OPTIONAL,
+ layout-style layout-style < Attribute OPTIONAL,
+ sealed sealed < Attribute OPTIONAL
+}
+
+Basic-Logical-Attributes ::= SET {
+ presentation-attributes presentation-attributes < Attribute OPTIONAL,
+ -- only for use for the attribute content-architecture-class;
+ -- the content architecture specific attributes can only be referenced by
+ -- use of presentation style
+ protection protection < Attribute OPTIONAL,
+ presentation-style presentation-style < Attribute OPTIONAL,
+ layout-style layout-style < Attribute OPTIONAL,
+ sealed sealed < Attribute OPTIONAL
+}
+
+Attribute ::= CHOICE {
+ position [0] IMPLICIT Measure-Pair,
+ dimensions [1] IMPLICIT Dimension-Pair,
+ transparency [2] IMPLICIT Transparency,
+ presentation-attributes [3] IMPLICIT Presentation-Attributes,
+ layout-path [4] IMPLICIT One-Of-Four-Angles,
+ page-position [5] IMPLICIT Measure-Pair,
+ medium-type [6] IMPLICIT Medium-Type,
+ permitted-categories [7] IMPLICIT SET OF Category-Name,
+ layout-stream-categories [19] IMPLICIT SET OF Category-Name,
+ layout-stream-sub-categories [20] IMPLICIT SET OF Category-Name,
+ protection [8] IMPLICIT Protection,
+ presentation-style [9] IMPLICIT Style-Identifier,
+ layout-style [10] IMPLICIT Style-Identifier,
+ colour [11] IMPLICIT Colour,
+ colour-of-layout-object [14] Colour-Expression,
+ object-colour-table [15] IMPLICIT Colour-Table,
+ content-background-colour [16] Content-Background-Colour,
+ content-foreground-colour [17] Content-Foreground-Colour,
+ content-colour-table [18] IMPLICIT Colour-Table,
+ border [12] IMPLICIT Border,
+ sealed [13] IMPLICIT Sealed
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryAbstractService.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryAbstractService.asn1
new file mode 100644
index 0000000000..5a5d310729
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryAbstractService.asn1
@@ -0,0 +1,710 @@
+-- Module DirectoryAbstractService (X.511:08/1997)
+DirectoryAbstractService {joint-iso-itu-t ds(5) module(1)
+ directoryAbstractService(2) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ informationFramework, distributedOperations, authenticationFramework,
+ dap, directoryShadowAbstractService, basicAccessControl, enhancedSecurity,
+ id-at
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ AttributeTypeAndValue
+ FROM BasicAccessControl basicAccessControl
+ AgreementID
+ FROM DirectoryShadowAbstractService directoryShadowAbstractService
+ Attribute, AttributeType, AttributeValue, AttributeValueAssertion,
+ DistinguishedName, Name, RelativeDistinguishedName, SupportedAttributes,
+ ATTRIBUTE, MATCHING-RULE, ContextAssertion, AttributeTypeAssertion,
+ OBJECT-CLASS, RelaxationPolicy
+ FROM InformationFramework informationFramework
+ OperationProgress, ReferenceType, Exclusions, AccessPoint,
+ ContinuationReference
+ FROM DistributedOperations distributedOperations
+ CertificationPath, SIGNED{}, SIGNATURE{}, ENCRYPTED{}, AlgorithmIdentifier,
+ AttributeCertificationPath
+ FROM AuthenticationFramework authenticationFramework
+ OPTIONALLY-PROTECTED{}, OPTIONALLY-PROTECTED-SEQ{}
+ FROM EnhancedSecurity enhancedSecurity
+ id-opcode-read, id-opcode-compare, id-opcode-abandon, id-opcode-list,
+ id-opcode-search, id-opcode-addEntry, id-opcode-removeEntry,
+ id-opcode-modifyEntry, id-opcode-modifyDN, id-errcode-abandoned,
+ id-errcode-abandonFailed, id-errcode-attributeError, id-errcode-nameError,
+ id-errcode-referral, id-errcode-securityError, id-errcode-serviceError,
+ id-errcode-updateError
+ FROM DirectoryAccessProtocol dap
+ OPERATION, ERROR, Code
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ emptyUnbind
+ FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
+ remote-operations(4) useful-definitions(7) version1(0)}
+ InvokeId
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ --PROTECTED
+ -- FROM Notation { joint-iso-itu-t genericULS (20) modules (1) notation (1) }
+ SPKM-REQ, SPKM-REP-TI, SPKM-ERROR
+ FROM SpkmGssTokens {iso(1) identified-organization(3) dod(6) internet(1)
+ security(5) mechanisms(5) spkm(1) spkmGssTokens(10)};
+
+-- Common data types
+-- Parameterized type for representing optional signing
+OPTIONALLY-SIGNED{Type} ::= CHOICE {unsigned Type,
+ signed SIGNED{Type}
+}
+
+CommonArguments ::= SET {
+ serviceControls [30] ServiceControls DEFAULT {},
+ securityParameters [29] SecurityParameters OPTIONAL,
+ requestor [28] DistinguishedName OPTIONAL,
+ operationProgress
+ [27] OperationProgress DEFAULT {nameResolutionPhase notStarted},
+ aliasedRDNs [26] INTEGER OPTIONAL,
+ criticalExtensions [25] BIT STRING OPTIONAL,
+ referenceType [24] ReferenceType OPTIONAL,
+ entryOnly [23] BOOLEAN DEFAULT TRUE,
+ nameResolveOnMaste [21] BOOLEAN DEFAULT FALSE,
+ operationContexts [20] ContextSelection OPTIONAL,
+ familyGrouping [19] FamilyGrouping DEFAULT entryOnly
+}
+
+FamilyGrouping ::= ENUMERATED {
+ entryOnly(1), compoundEntry(2), strands(3), multiStrand(4)}
+
+CommonResults ::= SET {
+ securityParameters [30] SecurityParameters OPTIONAL,
+ performer [29] DistinguishedName OPTIONAL,
+ aliasDereferenced [28] BOOLEAN DEFAULT FALSE,
+ notification [27] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL
+}
+
+CommonResultsSeq ::= SEQUENCE {
+ securityParameters [30] SecurityParameters OPTIONAL,
+ performer [29] DistinguishedName OPTIONAL,
+ aliasDereferenced [28] BOOLEAN DEFAULT FALSE
+}
+
+ServiceControls ::= SET {
+ options [0] ServiceControlOptions DEFAULT {},
+ priority [1] INTEGER {low(0), medium(1), high(2)} DEFAULT medium,
+ timeLimit [2] INTEGER OPTIONAL,
+ sizeLimit [3] INTEGER OPTIONAL,
+ scopeOfReferral [4] INTEGER {dmd(0), country(1)} OPTIONAL,
+ attributeSizeLimit [5] INTEGER OPTIONAL,
+ manageDSAITPlaneRef
+ [6] SEQUENCE {dsaName Name,
+ agreementID AgreementID} OPTIONAL,
+ serviceType [7] OBJECT IDENTIFIER OPTIONAL,
+ userClass [8] INTEGER OPTIONAL
+}
+
+ServiceControlOptions ::= BIT STRING {
+ preferChaining(0), chainingProhibited(1), localScope(2), dontUseCopy(3),
+ dontDereferenceAliases(4), subentries(5), copyShallDo(6),
+ partialNameResolution(7), manageDSAIT(8), noSubtypeMatch(9),
+ noSubtypeSelection(10), countFamily(11)}
+
+EntryInformationSelection ::= SET {
+ attributes
+ CHOICE {allUserAttributes [0] NULL,
+ select [1] SET OF AttributeType
+ -- empty set implies no attributes are requested
+ } DEFAULT allUserAttributes:NULL,
+ infoTypes
+ [2] INTEGER {attributeTypesOnly(0), attributeTypesAndValues(1)}
+ DEFAULT attributeTypesAndValues,
+ extraAttributes
+ CHOICE {allOperationalAttributes [3] NULL,
+ select [4] SET OF AttributeType} OPTIONAL,
+ contextSelection ContextSelection OPTIONAL,
+ returnContexts BOOLEAN DEFAULT FALSE,
+ familyReturn FamilyReturn DEFAULT {memberSelect contributingEntriesOnly}
+}
+
+ContextSelection ::= CHOICE {
+ allContexts NULL,
+ selectedContexts SET OF TypeAndContextAssertion
+}
+
+TypeAndContextAssertion ::= SEQUENCE {
+ type AttributeType,
+ contextAssertions
+ CHOICE {preference SEQUENCE OF ContextAssertion,
+ all SET OF ContextAssertion}
+}
+
+FamilyReturn ::= SEQUENCE {
+ memberSelect
+ ENUMERATED {contributingEntriesOnly(1), participatingEntriesOnly(2),
+ compoundEntry(3)},
+ familySelect SEQUENCE SIZE (1..MAX) OF OBJECT-CLASS.&id OPTIONAL
+}
+
+family-information ATTRIBUTE ::= {
+ WITH SYNTAX FamilyEntries
+ USAGE directoryOperation
+ ID id-at-family-information
+}
+
+FamilyEntries ::= SEQUENCE {
+ family-class OBJECT-CLASS.&id, -- structural object class value
+ familyEntries SEQUENCE OF FamilyEntry
+}
+
+FamilyEntry ::= SEQUENCE {
+ rdn RelativeDistinguishedName,
+ information
+ SEQUENCE OF CHOICE {attributeType AttributeType,
+ attribute Attribute},
+ family-info SEQUENCE SIZE (1..MAX) OF FamilyEntries OPTIONAL
+}
+
+EntryInformation ::= SEQUENCE {
+ name Name,
+ fromEntry BOOLEAN DEFAULT TRUE,
+ information
+ SET SIZE (1..MAX) OF
+ CHOICE {attributeType AttributeType,
+ attribute Attribute} OPTIONAL,
+ incompleteEntry [3] BOOLEAN DEFAULT FALSE, -- not in 1988-edition systems
+ partialNameResolution
+ [4] BOOLEAN DEFAULT FALSE -- not in 1988 or 1993 edition systems --
+}
+
+Filter ::= CHOICE {
+ item [0] FilterItem,
+ and [1] SET OF Filter,
+ or [2] SET OF Filter,
+ not [3] Filter
+}
+
+FilterItem ::= CHOICE {
+ equality [0] AttributeValueAssertion,
+ substrings
+ [1] SEQUENCE {type ATTRIBUTE.&id({SupportedAttributes}),
+ strings
+ SEQUENCE OF
+ CHOICE {initial
+ [0] ATTRIBUTE.&Type
+ ({SupportedAttributes}
+ {@substrings.type}),
+ any
+ [1] ATTRIBUTE.&Type
+ ({SupportedAttributes}
+ {@substrings.type}),
+ final
+ [2] ATTRIBUTE.&Type
+ ({SupportedAttributes}
+ {@substrings.type}),
+ control Attribute -- Used to specify interpretation of following items
+ }},
+ greaterOrEqual [2] AttributeValueAssertion,
+ lessOrEqual [3] AttributeValueAssertion,
+ present [4] AttributeType,
+ approximateMatch [5] AttributeValueAssertion,
+ extensibleMatch [6] MatchingRuleAssertion,
+ contextPresent [7] AttributeTypeAssertion
+}
+
+MatchingRuleAssertion ::= SEQUENCE {
+ matchingRule [1] SET SIZE (1..MAX) OF MATCHING-RULE.&id,
+ type [2] AttributeType OPTIONAL,
+ matchValue
+ [3] MATCHING-RULE.&AssertionType
+ (CONSTRAINED BY {
+ -- matchValue must be a value of type specified by the &AssertionType field of
+ -- one of the MATCHING-RULE information objects identified by matchingRule -- }),
+ dnAttributes [4] BOOLEAN DEFAULT FALSE
+}
+
+PagedResultsRequest ::= CHOICE {
+ newRequest
+ SEQUENCE {pageSize INTEGER,
+ sortKeys SEQUENCE SIZE (1..MAX) OF SortKey OPTIONAL,
+ reverse [1] BOOLEAN DEFAULT FALSE,
+ unmerged [2] BOOLEAN DEFAULT FALSE},
+ queryReference OCTET STRING
+}
+
+SortKey ::= SEQUENCE {
+ type AttributeType,
+ orderingRule MATCHING-RULE.&id OPTIONAL
+}
+
+SecurityParameters ::= SET {
+ certification-path [0] CertificationPath OPTIONAL,
+ name [1] DistinguishedName OPTIONAL,
+ time [2] Time OPTIONAL,
+ random [3] BIT STRING OPTIONAL,
+ target [4] ProtectionRequest OPTIONAL,
+ response [5] BIT STRING OPTIONAL,
+ operationCode [6] Code OPTIONAL,
+ attributeCertificationPath [7] AttributeCertificationPath OPTIONAL,
+ errorProtection [8] ErrorProtectionRequest OPTIONAL,
+ errorCode [9] Code OPTIONAL
+}
+
+ProtectionRequest ::= INTEGER {
+ none(0), signed(1), encrypted(2), signed-encrypted(3)}
+
+Time ::= CHOICE {utcTime UTCTime,
+ generalizedTime GeneralizedTime
+}
+
+ErrorProtectionRequest ::= INTEGER {
+ none(0), signed(1), encrypted(2), signed-encrypted(3)}
+
+-- Bind and unbind operations
+directoryBind OPERATION ::= {
+ ARGUMENT DirectoryBindArgument
+ RESULT DirectoryBindResult
+ ERRORS {directoryBindError}
+}
+
+DirectoryBindArgument ::= SET {
+ credentials [0] Credentials OPTIONAL,
+ versions [1] Versions DEFAULT {v1}
+}
+
+Credentials ::= CHOICE {
+ simple [0] SimpleCredentials,
+ strong [1] StrongCredentials,
+ externalProcedure [2] EXTERNAL,
+ spkm [3] SpkmCredentials
+}
+
+SimpleCredentials ::= SEQUENCE {
+ name [0] DistinguishedName,
+ validity
+ [1] SET {time1 [0] CHOICE {utc UTCTime,
+ gt GeneralizedTime} OPTIONAL,
+ time2 [1] CHOICE {utc UTCTime,
+ gt GeneralizedTime} OPTIONAL,
+ random1 [2] BIT STRING OPTIONAL,
+ random2 [3] BIT STRING OPTIONAL},
+ password
+ [2] CHOICE {unprotected OCTET STRING,
+ protected SIGNATURE{OCTET STRING}} OPTIONAL
+}
+
+StrongCredentials ::= SET {
+ certification-path [0] CertificationPath OPTIONAL,
+ bind-token [1] Token,
+ name [2] DistinguishedName OPTIONAL,
+ attributeCertificationPath [3] AttributeCertificationPath OPTIONAL
+}
+
+SpkmCredentials ::= CHOICE {req [0] SPKM-REQ,
+ rep [1] SPKM-REP-TI
+}
+
+Token ::=
+ SIGNED
+ {SEQUENCE {algorithm [0] AlgorithmIdentifier,
+ name [1] DistinguishedName,
+ time [2] Time,
+ random [3] BIT STRING,
+ response [4] BIT STRING OPTIONAL,
+ bindIntAlgorithm
+ [5] SEQUENCE SIZE (1..MAX) OF AlgorithmIdentifier OPTIONAL,
+ bindIntKeyInfo [6] BindKeyInfo OPTIONAL,
+ bindConfAlgorithm
+ [7] SEQUENCE SIZE (1..MAX) OF AlgorithmIdentifier OPTIONAL,
+ bindConfKeyInfo [8] BindKeyInfo OPTIONAL}}
+
+Versions ::= BIT STRING {v1(0), v2(1)}
+
+DirectoryBindResult ::= DirectoryBindArgument
+
+directoryBindError ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {versions [0] Versions DEFAULT {v1},
+ error
+ CHOICE {serviceError [1] ServiceProblem,
+ securityError [2] SecurityProblem}}}
+}
+
+BindKeyInfo ::= ENCRYPTED{BIT STRING}
+
+directoryUnbind OPERATION ::= emptyUnbind
+
+-- Operations, arguments, and results
+read OPERATION ::= {
+ ARGUMENT ReadArgument
+ RESULT ReadResult
+ ERRORS
+ {attributeError | nameError | serviceError | referral | abandoned |
+ securityError}
+ CODE id-opcode-read
+}
+
+ReadArgument ::=
+ OPTIONALLY-PROTECTED
+ {SET {object [0] Name,
+ selection [1] EntryInformationSelection DEFAULT {},
+ modifyRightsRequest [2] BOOLEAN DEFAULT FALSE,
+ COMPONENTS OF CommonArguments}}
+
+ReadResult ::=
+ OPTIONALLY-PROTECTED
+ {SET {entry [0] EntryInformation,
+ modifyRights [1] ModifyRights OPTIONAL,
+ COMPONENTS OF CommonResults}}
+
+ModifyRights ::=
+ SET OF
+ SEQUENCE {item
+ CHOICE {entry [0] NULL,
+ attribute [1] AttributeType,
+ value [2] AttributeValueAssertion},
+ permission
+ [3] BIT STRING {add(0), remove(1), rename(2), move(3)}
+ }
+
+compare OPERATION ::= {
+ ARGUMENT CompareArgument
+ RESULT CompareResult
+ ERRORS
+ {attributeError | nameError | serviceError | referral | abandoned |
+ securityError}
+ CODE id-opcode-compare
+}
+
+CompareArgument ::=
+ OPTIONALLY-PROTECTED
+ {SET {object [0] Name,
+ purported [1] AttributeValueAssertion,
+ COMPONENTS OF CommonArguments}}
+
+CompareResult ::=
+ OPTIONALLY-PROTECTED
+ {SET {name Name OPTIONAL,
+ matched [0] BOOLEAN,
+ fromEntry [1] BOOLEAN DEFAULT TRUE,
+ matchedSubtype [2] AttributeType OPTIONAL,
+ COMPONENTS OF CommonResults}}
+
+abandon OPERATION ::= {
+ ARGUMENT AbandonArgument
+ RESULT AbandonResult
+ ERRORS {abandonFailed}
+ CODE id-opcode-abandon
+}
+
+AbandonArgument ::=
+ OPTIONALLY-PROTECTED-SEQ{SEQUENCE {invokeID [0] InvokeId}}
+
+AbandonResult ::= CHOICE {
+ null NULL,
+ information
+ OPTIONALLY-PROTECTED-SEQ{SEQUENCE {invokeID InvokeId,
+ COMPONENTS OF CommonResultsSeq
+ }}
+}
+
+list OPERATION ::= {
+ ARGUMENT ListArgument
+ RESULT ListResult
+ ERRORS {nameError | serviceError | referral | abandoned | securityError}
+ CODE id-opcode-list
+}
+
+ListArgument ::=
+ OPTIONALLY-PROTECTED
+ {SET {object [0] Name,
+ pagedResults [1] PagedResultsRequest OPTIONAL,
+ listFamily [2] BOOLEAN DEFAULT FALSE,
+ COMPONENTS OF CommonArguments}}
+
+ListResult ::=
+ OPTIONALLY-PROTECTED
+ {CHOICE {listInfo
+ SET {name Name OPTIONAL,
+ subordinates
+ [1] SET OF
+ SEQUENCE {rdn RelativeDistinguishedName,
+ aliasEntry [0] BOOLEAN DEFAULT FALSE,
+ fromEntry [1] BOOLEAN DEFAULT TRUE
+ },
+ partialOutcomeQualifier
+ [2] PartialOutcomeQualifier OPTIONAL,
+ COMPONENTS OF CommonResults},
+ uncorrelatedListInfo [0] SET OF ListResult}}
+
+PartialOutcomeQualifier ::= SET {
+ limitProblem [0] LimitProblem OPTIONAL,
+ unexplored
+ [1] SET SIZE (1..MAX) OF ContinuationReference OPTIONAL,
+ unavailableCriticalExtensions [2] BOOLEAN DEFAULT FALSE,
+ unknownErrors
+ [3] SET SIZE (1..MAX) OF ABSTRACT-SYNTAX.&Type OPTIONAL,
+ queryReference [4] OCTET STRING OPTIONAL,
+ overspecFilter [5] Filter OPTIONAL,
+ notification
+ [6] SEQUENCE SIZE (1..MAX) OF Attribute OPTIONAL,
+ entryCount
+ CHOICE {bestEstimate [7] INTEGER,
+ lowEstimate [8] INTEGER} OPTIONAL
+}
+
+LimitProblem ::= INTEGER {
+ timeLimitExceeded(0), sizeLimitExceeded(1), administrativeLimitExceeded(2)
+}
+
+search OPERATION ::= {
+ ARGUMENT SearchArgument
+ RESULT SearchResult
+ ERRORS
+ {attributeError | nameError | serviceError | referral | abandoned |
+ securityError}
+ CODE id-opcode-search
+}
+
+SearchArgument ::=
+ OPTIONALLY-PROTECTED
+ {SET {baseObject [0] Name,
+ subset
+ [1] INTEGER {baseObject(0), oneLevel(1), wholeSubtree(2)}
+ DEFAULT baseObject,
+ filter [2] Filter DEFAULT and:{},
+ searchAliases [3] BOOLEAN DEFAULT TRUE,
+ selection [4] EntryInformationSelection DEFAULT {},
+ pagedResults [5] PagedResultsRequest OPTIONAL,
+ matchedValuesOnly [6] BOOLEAN DEFAULT FALSE,
+ extendedFilter [7] Filter OPTIONAL,
+ checkOverspecified [8] BOOLEAN DEFAULT FALSE,
+ relaxation [9] RelaxationPolicy OPTIONAL,
+ extendedArea [10] INTEGER OPTIONAL,
+ hierarchySelections [11] HierarchySelections DEFAULT {self},
+ searchControlOptions
+ [12] SearchControlOptions DEFAULT {searchAliases},
+ COMPONENTS OF CommonArguments}}
+
+HierarchySelections ::= BIT STRING {
+ self(0), children(1), parent(2), hierarchy(3), top(4), subtree(5),
+ siblings(6), siblingChildren(7), siblingSubtree(8), all(9)}
+
+SearchControlOptions ::= BIT STRING {
+ searchAliases(0), matchedValuesOnly(1), checkOverspecified(2),
+ performExactly(3), includeAllAreas(4), noSystemRelaxation(5), dnAttribute(6),
+ matchOnResidualName(7), entryCount(8), useSubset(9),
+ separateFamilyMembers(10), searchFamily(11)}
+
+SearchResult ::=
+ OPTIONALLY-PROTECTED
+ {CHOICE {searchInfo
+ SET {name Name OPTIONAL,
+ entries [0] SET OF EntryInformation,
+ partialOutcomeQualifier
+ [2] PartialOutcomeQualifier OPTIONAL,
+ altMatching [3] BOOLEAN DEFAULT FALSE,
+ COMPONENTS OF CommonResults},
+ uncorrelatedSearchInfo [0] SET OF SearchResult}}
+
+addEntry OPERATION ::= {
+ ARGUMENT AddEntryArgument
+ RESULT AddEntryResult
+ ERRORS
+ {attributeError | nameError | serviceError | referral | securityError |
+ updateError}
+ CODE id-opcode-addEntry
+}
+
+AddEntryArgument ::=
+ OPTIONALLY-PROTECTED
+ {SET {object [0] Name,
+ entry [1] SET OF Attribute,
+ targetSystem [2] AccessPoint OPTIONAL,
+ COMPONENTS OF CommonArguments}}
+
+AddEntryResult ::= CHOICE {
+ null NULL,
+ information
+ OPTIONALLY-PROTECTED-SEQ{SEQUENCE {COMPONENTS OF CommonResultsSeq}}
+}
+
+removeEntry OPERATION ::= {
+ ARGUMENT RemoveEntryArgument
+ RESULT RemoveEntryResult
+ ERRORS {nameError | serviceError | referral | securityError | updateError}
+ CODE id-opcode-removeEntry
+}
+
+RemoveEntryArgument ::=
+ OPTIONALLY-PROTECTED{SET {object [0] Name,
+ COMPONENTS OF CommonArguments}}
+
+RemoveEntryResult ::= CHOICE {
+ null NULL,
+ information
+ OPTIONALLY-PROTECTED-SEQ{SEQUENCE {COMPONENTS OF CommonResultsSeq}}
+}
+
+modifyEntry OPERATION ::= {
+ ARGUMENT ModifyEntryArgument
+ RESULT ModifyEntryResult
+ ERRORS
+ {attributeError | nameError | serviceError | referral | securityError |
+ updateError}
+ CODE id-opcode-modifyEntry
+}
+
+ModifyEntryArgument ::=
+ OPTIONALLY-PROTECTED
+ {SET {object [0] Name,
+ changes [1] SEQUENCE OF EntryModification,
+ selection [2] EntryInformationSelection OPTIONAL,
+ COMPONENTS OF CommonArguments}}
+
+ModifyEntryResult ::= CHOICE {
+ null NULL,
+ information
+ OPTIONALLY-PROTECTED-SEQ{SEQUENCE {entry [0] EntryInformation OPTIONAL,
+ COMPONENTS OF CommonResultsSeq
+ }}
+}
+
+EntryModification ::= CHOICE {
+ addAttribute [0] Attribute,
+ removeAttribute [1] AttributeType,
+ addValues [2] Attribute,
+ removeValues [3] Attribute,
+ alterValues [4] AttributeTypeAndValue,
+ resetValue [5] AttributeType
+}
+
+modifyDN OPERATION ::= {
+ ARGUMENT ModifyDNArgument
+ RESULT ModifyDNResult
+ ERRORS {nameError | serviceError | referral | securityError | updateError}
+ CODE id-opcode-modifyDN
+}
+
+ModifyDNArgument ::=
+ OPTIONALLY-PROTECTED
+ {SET {object [0] DistinguishedName,
+ newRDN [1] RelativeDistinguishedName,
+ deleteOldRDN [2] BOOLEAN DEFAULT FALSE,
+ newSuperior [3] DistinguishedName OPTIONAL,
+ COMPONENTS OF CommonArguments}}
+
+ModifyDNResult ::= CHOICE {
+ null NULL,
+ information
+ OPTIONALLY-PROTECTED-SEQ{SEQUENCE {newRDN RelativeDistinguishedName,
+ COMPONENTS OF CommonResultsSeq
+ }}
+}
+
+-- Errors and parameters
+abandoned ERROR ::= { -- not literally an "error"
+ PARAMETER OPTIONALLY-PROTECTED {SET {COMPONENTS OF CommonResults}}
+ CODE id-errcode-abandoned
+}
+
+abandonFailed ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {problem [0] AbandonProblem,
+ operation [1] InvokeId,
+ COMPONENTS OF CommonResults}}
+ CODE id-errcode-abandonFailed
+}
+
+AbandonProblem ::= INTEGER {noSuchOperation(1), tooLate(2), cannotAbandon(3)}
+
+attributeError ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {object [0] Name,
+ problems
+ [1] SET OF
+ SEQUENCE {problem [0] AttributeProblem,
+ type [1] AttributeType,
+ value [2] AttributeValue OPTIONAL},
+ COMPONENTS OF CommonResults}}
+ CODE id-errcode-attributeError
+}
+
+AttributeProblem ::= INTEGER {
+ noSuchAttributeOrValue(1), invalidAttributeSyntax(2),
+ undefinedAttributeType(3), inappropriateMatching(4), constraintViolation(5),
+ attributeOrValueAlreadyExists(6), contextViolation(7)}
+
+nameError ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {problem [0] NameProblem,
+ matched [1] Name,
+ COMPONENTS OF CommonResults}}
+ CODE id-errcode-nameError
+}
+
+NameProblem ::= INTEGER {
+ noSuchObject(1), aliasProblem(2), invalidAttributeSyntax(3),
+ aliasDereferencingProblem(4), contextProblem(5)}
+
+referral ERROR ::= { -- not literally an "error"
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {candidate [0] ContinuationReference,
+ COMPONENTS OF CommonResults}}
+ CODE id-errcode-referral
+}
+
+securityError ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {problem [0] SecurityProblem,
+ spkmInfo [1] SPKM-ERROR,
+ COMPONENTS OF CommonResults}}
+ CODE id-errcode-securityError
+}
+
+SecurityProblem ::= INTEGER {
+ inappropriateAuthentication(1), invalidCredentials(2),
+ insufficientAccessRights(3), invalidSignature(4), protectionRequired(5),
+ noInformation(6), blockedCredentials(7), invalidQOPMatch(8), spkmError(9)
+}
+
+serviceError ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {problem [0] ServiceProblem,
+ COMPONENTS OF CommonResults}}
+ CODE id-errcode-serviceError
+}
+
+ServiceProblem ::= INTEGER {
+ busy(1), unavailable(2), unwillingToPerform(3), chainingRequired(4),
+ unableToProceed(5), invalidReference(6), timeLimitExceeded(7),
+ administrativeLimitExceeded(8), loopDetected(9),
+ unavailableCriticalExtension(10), outOfScope(11), ditError(12),
+ invalidQueryReference(13), requestedServiceNotAvailable(14),
+ relaxationNotSupported(15), unavailableRelaxationLevel(16),
+ unsupportedMatchingUse(17), unmatchedKeyAttributes(18),
+ ambiguousKeyAttributes(19)}
+
+updateError ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {problem [0] UpdateProblem,
+ attributeInfo
+ [1] SET SIZE (1..MAX) OF
+ CHOICE {attributeType AttributeType,
+ attribute Attribute} OPTIONAL,
+ COMPONENTS OF CommonResults}}
+ CODE id-errcode-updateError
+}
+
+UpdateProblem ::= INTEGER {
+ namingViolation(1), objectClassViolation(2), notAllowedOnNonLeaf(3),
+ notAllowedOnRDN(4), entryAlreadyExists(5), affectsMultipleDSAs(6),
+ objectClassModificationProhibited(7), notAncestor(8), parentNotAncestor(9),
+ hierarchyRuleViolation(10), familyRuleViolation(11)}
+
+id-at-family-information OBJECT IDENTIFIER ::= {id-at 64}
+
+END -- DirectoryAbstractService
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryAccessProtocol.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryAccessProtocol.asn1
new file mode 100644
index 0000000000..10d6979f6d
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryAccessProtocol.asn1
@@ -0,0 +1,162 @@
+-- Module DirectoryAccessProtocol (X.519 TC2:08/1997)
+
+DirectoryAccessProtocol {joint-iso-itu-t ds(5) module(1) dap(11) 3} DEFINITIONS
+::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ directoryAbstractService, protocolObjectIdentifiers
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ ROS-OBJECT-CLASS, CONTRACT, OPERATION-PACKAGE, CONNECTION-PACKAGE,
+ Code, OPERATION
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ ROS{}, Bind{}, Unbind{}, InvokeId
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ APPLICATION-CONTEXT
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)}
+ acse, pData
+ FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
+ realizations(9) version1(0)}
+ acse-abstract-syntax
+ FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
+ remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)}
+ id-ac-directoryAccessAC, id-rosObject-dua, id-rosObject-directory,
+ id-rosObject-dapDSA, id-contract-dap, id-package-dapConnection,
+ id-package-read, id-package-search, id-package-modify,
+ id-as-directoryAccessAS
+ FROM ProtocolObjectIdentifiers protocolObjectIdentifiers
+ directoryBind, directoryUnbind, read, compare, abandon, list, search,
+ addEntry, removeEntry, modifyEntry, modifyDN
+ FROM DirectoryAbstractService directoryAbstractService;
+
+-- application contexts
+directoryAccessAC APPLICATION-CONTEXT ::= {
+ CONTRACT dapContract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | directoryAccessAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-directoryAccessAC
+}
+
+-- ROS objects
+dua ROS-OBJECT-CLASS ::= {INITIATES {dapContract}
+ ID id-rosObject-dua
+}
+
+directory ROS-OBJECT-CLASS ::= {
+ RESPONDS {dapContract}
+ ID id-rosObject-directory
+}
+
+dap-dsa ROS-OBJECT-CLASS ::= {
+ RESPONDS {dapContract}
+ ID id-rosObject-dapDSA
+}
+
+-- contracts
+dapContract CONTRACT ::= {
+ CONNECTION dapConnectionPackage
+ INITIATOR CONSUMER OF {readPackage | searchPackage | modifyPackage}
+ ID id-contract-dap
+}
+
+-- connection package
+dapConnectionPackage CONNECTION-PACKAGE ::= {
+ BIND directoryBind
+ UNBIND directoryUnbind
+ ID id-package-dapConnection
+}
+
+-- read package
+readPackage OPERATION-PACKAGE ::= {
+ CONSUMER INVOKES {read | compare | abandon}
+ ID id-package-read
+}
+
+-- search package
+searchPackage OPERATION-PACKAGE ::= {
+ CONSUMER INVOKES {list | search}
+ ID id-package-search
+}
+
+-- modify Package
+modifyPackage OPERATION-PACKAGE ::= {
+ CONSUMER INVOKES {addEntry | removeEntry | modifyEntry | modifyDN}
+ ID id-package-modify
+}
+
+-- abstract syntaxes
+directoryAccessAbstractSyntax ABSTRACT-SYNTAX ::= {
+ DAP-PDUs
+ IDENTIFIED BY id-as-directoryAccessAS
+}
+
+DAP-PDUs ::= CHOICE {
+ basicRos ROS{{DAP-InvokeIDSet}, {DAP-Invokable}, {DAP-Returnable}},
+ bind Bind{directoryBind},
+ unbind Unbind{directoryUnbind}
+}
+
+DAP-InvokeIDSet ::= InvokeId(ALL EXCEPT absent:NULL)
+
+DAP-Invokable OPERATION ::=
+ {read | compare | abandon | list | search | addEntry | removeEntry |
+ modifyEntry | modifyDN}
+
+DAP-Returnable OPERATION ::=
+ {read | compare | abandon | list | search | addEntry | removeEntry |
+ modifyEntry | modifyDN}
+
+-- remote operation codes
+id-opcode-read Code ::= local:1
+
+id-opcode-compare Code ::= local:2
+
+id-opcode-abandon Code ::= local:3
+
+id-opcode-list Code ::= local:4
+
+id-opcode-search Code ::= local:5
+
+id-opcode-addEntry Code ::= local:6
+
+id-opcode-removeEntry Code ::= local:7
+
+id-opcode-modifyEntry Code ::= local:8
+
+id-opcode-modifyDN Code ::= local:9
+
+-- remote error codes
+id-errcode-attributeError Code ::= local:1
+
+id-errcode-nameError Code ::= local:2
+
+id-errcode-serviceError Code ::= local:3
+
+id-errcode-referral Code ::= local:4
+
+id-errcode-abandoned Code ::= local:5
+
+id-errcode-securityError Code ::= local:6
+
+id-errcode-abandonFailed Code ::= local:7
+
+id-errcode-updateError Code ::= local:8
+
+-- remote error code for DSP
+id-errcode-dsaReferral Code ::= local:9
+
+END -- DirectoryAccessProtocol
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryInformationShadowProtocol.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryInformationShadowProtocol.asn1
new file mode 100644
index 0000000000..91c0a865f7
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryInformationShadowProtocol.asn1
@@ -0,0 +1,246 @@
+-- Module DirectoryInformationShadowProtocol (X.519 TC2:08/1997)
+
+DirectoryInformationShadowProtocol {joint-iso-itu-t ds(5) module(1) disp(16) 3}
+DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ directoryShadowAbstractService, protocolObjectIdentifiers
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ ROS-OBJECT-CLASS, CONTRACT, OPERATION-PACKAGE, CONNECTION-PACKAGE,
+ Code, OPERATION
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ ROS{}, Bind{}, Unbind{}, InvokeId
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ APPLICATION-CONTEXT
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)}
+ acse, pData, association-by-RTSE, transfer-by-RTSE
+ FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
+ realizations(9) version1(0)}
+ acse-abstract-syntax
+ FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
+ remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)}
+ id-ac-shadowSupplierInitiatedAC, id-ac-shadowSupplierInitiatedAsynchronousAC,
+ id-ac-shadowConsumerInitiatedAC,
+ id-ac-shadowConsumerInitiatedAsynchronousAC,
+ id-ac-reliableShadowSupplierInitiatedAC,
+ id-ac-reliableShadowConsumerInitiatedAC,
+ id-rosObject-initiatingConsumerDSA, id-rosObject-respondingSupplierDSA,
+ id-rosObject-initiatingSupplierDSA, id-rosObject-respondingConsumerDSA,
+ id-contract-shadowConsumer, id-contract-shadowSupplier,
+ id-package-dispConnection, id-package-shadowConsumer,
+ id-package-shadowSupplier, id-as-directoryShadowAS,
+ id-as-directoryReliableShadowAS, id-as-reliableShadowBindingAS
+ FROM ProtocolObjectIdentifiers protocolObjectIdentifiers
+ dSAShadowBind, dSAShadowUnbind, requestShadowUpdate, updateShadow,
+ coordinateShadowUpdate
+ FROM DirectoryShadowAbstractService directoryShadowAbstractService
+ RTORQapdu, RTOACapdu, RTORJapdu
+ FROM Reliable-Transfer-APDU {joint-iso-itu-t reliable-transfer(3) apdus(0)};
+
+RTSE-apdus ::= CHOICE {
+ rtorq-apdu [16] IMPLICIT RTORQapdu,
+ rtoac-apdu [17] IMPLICIT RTOACapdu,
+ rtorj-apdu [18] IMPLICIT RTORJapdu,
+ rttp-apdu RTTPapdu,
+ rttr-apdu RTTRapdu,
+ rtab-apdu [22] IMPLICIT RTABapdu
+}
+
+RTTPapdu ::= -- priority-- INTEGER
+
+RTTRapdu ::= OCTET STRING
+
+RTABapdu ::= SET {
+ abortReason [0] IMPLICIT AbortReason OPTIONAL,
+ reflectedParameter [1] IMPLICIT BIT STRING OPTIONAL,
+ -- 8 bits maximum, only if abortReason is invalidParameter
+ userdataAB
+ [2] TYPE-IDENTIFIER.&Type
+ OPTIONAL -- only in normal mode and if abortReason--
+ -- is userError
+}
+
+AbortReason ::= INTEGER {
+ localSystemProblem(0),
+ invalidParameter(1), -- reflectedParameter supplied
+ unrecognizedActivity(2),
+ temporaryProblem(3),
+ -- the RTSE cannot accept a session for a period of time
+ protocolError(4), -- RTSE level protocol error
+ permanentProblem(5), --provider-abort solely in normal mode
+ userError(6), -- user-abort solely in normal mode
+ transferCompleted(7) -- activity can't be discarded--}
+
+-- application contexts
+shadowSupplierInitiatedAC APPLICATION-CONTEXT ::= {
+ CONTRACT shadowSupplierContract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | directoryShadowAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-shadowSupplierInitiatedAC
+}
+
+shadowSupplierInitiatedAsynchronousAC APPLICATION-CONTEXT ::= {
+ CONTRACT shadowSupplierContract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | directoryShadowAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-shadowSupplierInitiatedAsynchronousAC
+}
+
+shadowConsumerInitiatedAC APPLICATION-CONTEXT ::= {
+ CONTRACT shadowConsumerContract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | directoryShadowAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-shadowConsumerInitiatedAC
+}
+
+shadowConsumerInitiatedAsynchronousAC APPLICATION-CONTEXT ::= {
+ CONTRACT shadowConsumerContract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | directoryShadowAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-shadowConsumerInitiatedAsynchronousAC
+}
+
+reliableShadowSupplierInitiatedAC APPLICATION-CONTEXT ::= {
+ CONTRACT shadowSupplierContract
+ ESTABLISHED BY association-by-RTSE
+ INFORMATION TRANSFER BY transfer-by-RTSE
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | reliableShadowBindingAbstractSyntax |
+ directoryReliableShadowAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-reliableShadowSupplierInitiatedAC
+}
+
+reliableShadowConsumerInitiatedAC APPLICATION-CONTEXT ::= {
+ CONTRACT shadowConsumerContract
+ ESTABLISHED BY association-by-RTSE
+ INFORMATION TRANSFER BY transfer-by-RTSE
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | reliableShadowBindingAbstractSyntax |
+ directoryReliableShadowAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-reliableShadowConsumerInitiatedAC
+}
+
+-- ROS objects
+initiating-consumer-dsa ROS-OBJECT-CLASS ::= {
+ INITIATES {shadowConsumerContract}
+ ID id-rosObject-initiatingConsumerDSA
+}
+
+responding-supplier-dsa ROS-OBJECT-CLASS ::= {
+ RESPONDS {shadowConsumerContract}
+ ID id-rosObject-respondingSupplierDSA
+}
+
+initiating-supplier-dsa ROS-OBJECT-CLASS ::= {
+ INITIATES {shadowSupplierContract}
+ ID id-rosObject-initiatingSupplierDSA
+}
+
+responding-consumer-dsa ROS-OBJECT-CLASS ::= {
+ RESPONDS {shadowSupplierContract}
+ ID id-rosObject-respondingConsumerDSA
+}
+
+-- contracts
+shadowConsumerContract CONTRACT ::= {
+ CONNECTION dispConnectionPackage
+ INITIATOR CONSUMER OF {shadowConsumerPackage}
+ ID id-contract-shadowConsumer
+}
+
+shadowSupplierContract CONTRACT ::= {
+ CONNECTION dispConnectionPackage
+ RESPONDER CONSUMER OF {shadowSupplierPackage}
+ ID id-contract-shadowSupplier
+}
+
+-- connection package
+dispConnectionPackage CONNECTION-PACKAGE ::= {
+ BIND dSAShadowBind
+ UNBIND dSAShadowUnbind
+ ID id-package-dispConnection
+}
+
+-- packages
+shadowConsumerPackage OPERATION-PACKAGE ::= {
+ CONSUMER INVOKES {requestShadowUpdate}
+ SUPPLIER INVOKES {updateShadow}
+ ID id-package-shadowConsumer
+}
+
+shadowSupplierPackage OPERATION-PACKAGE ::= {
+ SUPPLIER INVOKES {coordinateShadowUpdate | updateShadow}
+ ID id-package-shadowSupplier
+}
+
+-- abstract syntaxes
+directoryShadowAbstractSyntax ABSTRACT-SYNTAX ::= {
+ DISP-PDUs
+ IDENTIFIED BY id-as-directoryShadowAS
+}
+
+directoryReliableShadowAbstractSyntax ABSTRACT-SYNTAX ::= {
+ Reliable-DISP-PDUs
+ IDENTIFIED BY id-as-directoryReliableShadowAS
+}
+
+reliableShadowBindingAbstractSyntax ABSTRACT-SYNTAX ::= {
+ ReliableShadowBinding-PDUs
+ IDENTIFIED BY id-as-reliableShadowBindingAS
+}
+
+DISP-PDUs ::= CHOICE {
+ basicROS ROS{{DISP-InvokeIDSet}, {DISP-Invokable}, {DISP-Returnable}},
+ bind Bind{dSAShadowBind},
+ unbind Unbind{dSAShadowUnbind}
+}
+
+Reliable-DISP-PDUs ::=
+ ROS{{DISP-InvokeIDSet}, {DISP-Invokable}, {DISP-Returnable}}
+
+ReliableShadowBinding-PDUs ::= CHOICE {
+ rTS [0] RTSE-apdus,
+ bind Bind{dSAShadowBind},
+ unbind Unbind{dSAShadowUnbind}
+}
+
+DISP-InvokeIDSet ::= InvokeId(ALL EXCEPT absent:NULL)
+
+DISP-Invokable OPERATION ::=
+ {requestShadowUpdate | updateShadow | coordinateShadowUpdate}
+
+DISP-Returnable OPERATION ::=
+ {requestShadowUpdate | updateShadow | coordinateShadowUpdate}
+
+-- remote operation codes
+id-opcode-requestShadowUpdate Code ::= local:1
+
+id-opcode-updateShadow Code ::= local:2
+
+id-opcode-coordinateShadowUpdate Code ::= local:3
+
+-- remote error codes
+id-errcode-shadowError Code ::= local:1
+
+END -- DirectoryInformationShadowProtocol
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryOperationalBindingManagementProtocol.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryOperationalBindingManagementProtocol.asn1
new file mode 100644
index 0000000000..e3e1f95621
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryOperationalBindingManagementProtocol.asn1
@@ -0,0 +1,117 @@
+-- Module DirectoryOperationalBindingManagementProtocol (X.519 TC2:08/1997)
+
+DirectoryOperationalBindingManagementProtocol {joint-iso-itu-t ds(5)
+ module(1) dop(17) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ protocolObjectIdentifiers, directoryAbstractService, opBindingManagement
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ directoryBind, directoryUnbind
+ FROM DirectoryAbstractService directoryAbstractService
+ ROS-OBJECT-CLASS, CONTRACT, OPERATION-PACKAGE, CONNECTION-PACKAGE,
+ Code, OPERATION
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ ROS{}, Bind{}, Unbind{}, InvokeId
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ APPLICATION-CONTEXT
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)}
+ acse, pData
+ FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
+ realizations(9) version1(0)}
+ acse-abstract-syntax
+ FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
+ remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)}
+ id-ac-directoryOperationalBindingManagementAC, id-rosObject-dopDSA,
+ id-contract-dop, id-package-dopConnection,
+ id-package-operationalBindingManagement,
+ id-as-directoryOperationalBindingManagementAS
+ FROM ProtocolObjectIdentifiers protocolObjectIdentifiers
+ establishOperationalBinding, modifyOperationalBinding,
+ terminateOperationalBinding, dSAOperationalBindingManagementBind,
+ dSAOperationalBindingManagementUnbind
+ FROM OperationalBindingManagement opBindingManagement;
+
+-- application contexts
+directoryOperationalBindingManagementAC APPLICATION-CONTEXT ::= {
+ CONTRACT dopContract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax |
+ directoryOperationalBindingManagementAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-directoryOperationalBindingManagementAC
+}
+
+-- ROS objects
+dop-dsa ROS-OBJECT-CLASS ::= {BOTH {dopContract}
+ ID id-rosObject-dopDSA
+}
+
+-- contracts
+dopContract CONTRACT ::= {
+ CONNECTION dopConnectionPackage
+ OPERATIONS OF {dopPackage}
+ ID id-contract-dop
+}
+
+-- connection package
+dopConnectionPackage CONNECTION-PACKAGE ::= {
+ BIND dSAOperationalBindingManagementBind
+ UNBIND dSAOperationalBindingManagementUnbind
+ ID id-package-dopConnection
+}
+
+-- packages
+dopPackage OPERATION-PACKAGE ::= {
+ CONSUMER INVOKES
+ {establishOperationalBinding | modifyOperationalBinding |
+ terminateOperationalBinding}
+ ID id-package-operationalBindingManagement
+}
+
+-- abstract syntaxes
+directoryOperationalBindingManagementAbstractSyntax ABSTRACT-SYNTAX ::=
+{DOP-PDUs
+ IDENTIFIED BY id-as-directoryOperationalBindingManagementAS
+}
+
+DOP-PDUs ::= CHOICE {
+ basicRos ROS{{DOP-InvokeIDSet}, {DOP-Invokable}, {DOP-Returnable}},
+ bind Bind{directoryBind},
+ unbind Unbind{directoryUnbind}
+}
+
+DOP-InvokeIDSet ::= InvokeId(ALL EXCEPT absent:NULL)
+
+DOP-Invokable OPERATION ::=
+ {establishOperationalBinding | modifyOperationalBinding |
+ terminateOperationalBinding}
+
+DOP-Returnable OPERATION ::=
+ {establishOperationalBinding | modifyOperationalBinding |
+ terminateOperationalBinding}
+
+-- remote operation codes
+id-op-establishOperationalBinding Code ::= local:100
+
+id-op-modifyOperationalBinding Code ::= local:102
+
+id-op-terminateOperationalBinding Code ::= local:101
+
+-- remote error codes
+id-err-operationalBindingError Code ::= local:100
+
+END -- DirectoryOperationalBindingManagementProtocol
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryOperationalBindingTypes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryOperationalBindingTypes.asn1
new file mode 100644
index 0000000000..9df5d2783a
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryOperationalBindingTypes.asn1
@@ -0,0 +1,26 @@
+-- Module DirectoryOperationalBindingTypes (X.519 TC2:08/1997)
+
+DirectoryOperationalBindingTypes {joint-iso-itu-t ds(5) module(1)
+ directoryOperationalBindingTypes(25) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ id-ob
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3};
+
+id-op-binding-shadow OBJECT IDENTIFIER ::= {id-ob 1}
+
+id-op-binding-hierarchical OBJECT IDENTIFIER ::= {id-ob 2}
+
+id-op-binding-non-specific-hierarchical OBJECT IDENTIFIER ::= {id-ob 3}
+
+END -- DirectoryOperationalBindingTypes
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryProtectionMappings.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryProtectionMappings.asn1
new file mode 100644
index 0000000000..37c6cac261
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryProtectionMappings.asn1
@@ -0,0 +1,70 @@
+-- Module DirectoryProtectionMappings (X.830:04/1995)
+
+DirectoryProtectionMappings {joint-iso-itu-t genericULS(20) modules(1)
+ dirProtectionMappings(4)} DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+-- These protection mappings generate bit-compatible encodings
+-- to the parameterized types in the Directory Authentication
+-- Framework
+-- EXPORTS All
+IMPORTS
+ notation, gulsSecurityTransformations
+ FROM ObjectIdentifiers {joint-iso-itu-t genericULS(20) modules(1)
+ objectIdentifiers(0)}
+ PROTECTION-MAPPING
+ FROM Notation notation
+ dirEncryptedTransformation, dirSignedTransformation,
+ dirSignatureTransformation
+ FROM GulsSecurityTransformations gulsSecurityTransformations;
+
+-- **************************************
+-- Directory encrypted Protection Mapping
+-- **************************************
+-- This protection mapping enables the notation
+-- PROTECTED {BaseType, encrypted}
+-- to replace the notation
+-- ENCRYPTED {BaseType}
+-- as provided by ITU-T Rec. X.509 | ISO/IEC 9594-8:1994, and to
+-- generate an identical bit-encoding.
+-- Security Service: confidentiality
+encrypted PROTECTION-MAPPING ::= {
+ SECURITY-TRANSFORMATION {dirEncryptedTransformation}
+}
+
+-- ***********************************
+-- Directory signed Protection Mapping
+-- ***********************************
+-- This protection mapping enables the notation
+-- PROTECTED {BaseType, signed}
+-- to replace the notation
+-- SIGNED {BaseType}
+-- as provided by ITU-T Rec. X.509 | ISO/IEC 9594-8:1994, and to
+-- generate an identical bit-encoding.
+-- Security Service: data origin authentication, data integrity and
+-- (in certain situations) non-repudiation.
+signed PROTECTION-MAPPING ::= {
+ SECURITY-TRANSFORMATION {dirSignedTransformation}
+}
+
+-- **************************************
+-- Directory signature Protection Mapping
+-- **************************************
+-- This protection mapping enables the notation
+-- PROTECTED {BaseType, signature}
+-- to provide a functionally-equivalent replacement of the notation
+-- SIGNATURE BaseType
+-- as provided by ITU-T Rec. X.509 | ISO/IEC 9594-8.
+-- Security Service: data origin authentication, data integrity and
+-- (in certain situations) non-repudiation.
+signature PROTECTION-MAPPING ::= {
+ SECURITY-TRANSFORMATION {dirSignatureTransformation}
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
+
+-- content of stack:
+--
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryShadowAbstractService.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryShadowAbstractService.asn1
new file mode 100644
index 0000000000..acbb692b6f
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectoryShadowAbstractService.asn1
@@ -0,0 +1,324 @@
+-- Module DirectoryShadowAbstractService (X.525:08/1997)
+DirectoryShadowAbstractService {joint-iso-itu-t ds(5) module(1)
+ directoryShadowAbstractService(15) 4} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the directory service.
+IMPORTS
+ -- from ITU-T Rec. X.501 | ISO/IEC 9594-2
+ directoryAbstractService, directoryOperationalBindingTypes,
+ informationFramework, disp, distributedOperations,
+ dsaOperationalAttributeTypes, enhancedSecurity, opBindingManagement
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ Attribute, AttributeType, CONTEXT, DistinguishedName,
+ RelativeDistinguishedName, SubtreeSpecification
+ FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+ informationFramework(1) 3}
+ OPERATIONAL-BINDING, OperationalBindingID
+ FROM OperationalBindingManagement {joint-iso-itu-t ds(5) module(1)
+ opBindingManagement(18) 3}
+ DSEType, SupplierAndConsumers
+ FROM DSAOperationalAttributeTypes {joint-iso-itu-t ds(5) module(1)
+ dsaOperationalAttributeTypes(22) 3}
+ OPTIONALLY-PROTECTED{}, OPTIONALLY-PROTECTED-SEQ{}
+ FROM EnhancedSecurity {joint-iso-itu-t ds(5) module(1) enhancedSecurity(28)
+ 1}
+ -- from ITU-T Rec. X.511 | ISO/IEC 9594-3
+ CommonResultsSeq, ContextSelection, directoryBind, directoryUnbind,
+ EntryModification, SecurityParameters
+ FROM DirectoryAbstractService {joint-iso-itu-t ds(5) module(1)
+ directoryAbstractService(2) 3}
+ -- from ITU-T Rec. X.518 | ISO/IEC 9594-4
+ AccessPoint
+ FROM DistributedOperations {joint-iso-itu-t ds(5) module(1)
+ distributedOperations(3) 3}
+ -- from ITU-T Rec. X.519 | ISO/IEC 9594-5
+ id-op-binding-shadow
+ FROM DirectoryOperationalBindingTypes {joint-iso-itu-t ds(5) module(1)
+ directoryOperationalBindingTypes(25) 3}
+ id-errcode-shadowError, id-opcode-coordinateShadowUpdate,
+ id-opcode-requestShadowUpdate, id-opcode-updateShadow,
+ reliableShadowSupplierInitiatedAC, reliableShadowConsumerInitiatedAC,
+ shadowConsumerInitiatedAC, shadowSupplierInitiatedAC
+ FROM DirectoryInformationShadowProtocol {joint-iso-itu-t ds(5) module(1)
+ disp(16) 3}
+ -- from ITU-T Rec. X.880 | ISO/IEC 13712-1
+ ERROR, OPERATION
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)};
+
+-- bind and unbind operations
+dSAShadowBind OPERATION ::= directoryBind
+
+dSAShadowUnbind OPERATION ::= directoryUnbind
+
+-- shadow operational binding
+shadowOperationalBinding OPERATIONAL-BINDING ::= {
+ AGREEMENT ShadowingAgreementInfo
+ APPLICATION CONTEXTS
+ {{shadowSupplierInitiatedAC
+ APPLIES TO {All-operations-supplier-initiated}} |
+ {shadowConsumerInitiatedAC
+ APPLIES TO {All-operations-consumer-initiated}} |
+ {reliableShadowSupplierInitiatedAC
+ APPLIES TO {All-operations-supplier-initiated}} |
+ {reliableShadowConsumerInitiatedAC
+ APPLIES TO {All-operations-consumer-initiated}}}
+ ASYMMETRIC ROLE-A
+ { -- shadow supplier roleESTABLISHMENT-INITIATOR TRUE
+ ESTABLISHMENT-PARAMETER NULL
+ MODIFICATION-INITIATOR TRUE
+ TERMINATION-INITIATOR TRUE}
+ ROLE-B
+ { -- shadow consumer roleESTABLISHMENT-INITIATOR TRUE
+ ESTABLISHMENT-PARAMETER NULL
+ MODIFICATION-INITIATOR TRUE
+ MODIFICATION-PARAMETER ModificationParameter
+ TERMINATION-INITIATOR TRUE}
+ ID id-op-binding-shadow
+}
+
+-- types
+ModificationParameter ::= SEQUENCE {
+ secondaryShadows SET OF SupplierAndConsumers
+}
+
+AgreementID ::= OperationalBindingID
+
+ShadowingAgreementInfo ::= SEQUENCE {
+ shadowSubject UnitOfReplication,
+ updateMode UpdateMode DEFAULT supplierInitiated:onChange:TRUE,
+ master AccessPoint OPTIONAL,
+ secondaryShadows [2] BOOLEAN DEFAULT FALSE
+}
+
+UnitOfReplication ::= SEQUENCE {
+ area AreaSpecification,
+ attributes AttributeSelection,
+ knowledge Knowledge OPTIONAL,
+ subordinates BOOLEAN DEFAULT FALSE,
+ contextSelection ContextSelection OPTIONAL,
+ supplyContexts
+ [0] CHOICE {allContexts NULL,
+ selectedContexts SET SIZE (1..MAX) OF CONTEXT.&id} OPTIONAL
+}
+
+AreaSpecification ::= SEQUENCE {
+ contextPrefix DistinguishedName,
+ replicationArea SubtreeSpecification
+}
+
+Knowledge ::= SEQUENCE {
+ knowledgeType ENUMERATED {master(0), shadow(1), both(2)},
+ extendedKnowledge BOOLEAN DEFAULT FALSE
+}
+
+AttributeSelection ::= SET OF ClassAttributeSelection
+
+ClassAttributeSelection ::= SEQUENCE {
+ class OBJECT IDENTIFIER OPTIONAL,
+ classAttributes ClassAttributes DEFAULT allAttributes:NULL
+}
+
+ClassAttributes ::= CHOICE {
+ allAttributes NULL,
+ include [0] AttributeTypes,
+ exclude [1] AttributeTypes
+}
+
+AttributeTypes ::= SET OF AttributeType
+
+UpdateMode ::= CHOICE {
+ supplierInitiated [0] SupplierUpdateMode,
+ consumerInitiated [1] ConsumerUpdateMode
+}
+
+SupplierUpdateMode ::= CHOICE {
+ onChange BOOLEAN,
+ scheduled SchedulingParameters
+}
+
+ConsumerUpdateMode ::= SchedulingParameters
+
+SchedulingParameters ::= SEQUENCE {
+ periodic PeriodicStrategy OPTIONAL, -- must be present if othertimes is set to FALSE
+ othertimes BOOLEAN DEFAULT FALSE
+}
+
+PeriodicStrategy ::= SEQUENCE {
+ beginTime Time OPTIONAL,
+ windowSize INTEGER,
+ updateInterval INTEGER
+}
+
+Time ::= GeneralizedTime
+
+-- as per 34.2 b) and c) of CCITT Rec. X.208 and ISO/IEC 8824
+-- shadow operations, arguments, and results
+All-operations-consumer-initiated OPERATION ::=
+ {requestShadowUpdate | updateShadow}
+
+All-operations-supplier-initiated OPERATION ::=
+ {coordinateShadowUpdate | updateShadow}
+
+coordinateShadowUpdate OPERATION ::= {
+ ARGUMENT CoordinateShadowUpdateArgument
+ RESULT CoordinateShadowUpdateResult
+ ERRORS {shadowError}
+ CODE id-opcode-coordinateShadowUpdate
+}
+
+CoordinateShadowUpdateArgument ::=
+ OPTIONALLY-PROTECTED
+ {[0] SEQUENCE {agreementID AgreementID,
+ lastUpdate Time OPTIONAL,
+ updateStrategy
+ CHOICE {standard
+ ENUMERATED {noChanges(0), incremental(1),
+ total(2)},
+ other EXTERNAL},
+ securityParameters SecurityParameters OPTIONAL}}
+
+CoordinateShadowUpdateResult ::= CHOICE {
+ null NULL,
+ information
+ OPTIONALLY-PROTECTED{[0] SEQUENCE {greementID AgreementID,
+ lastUpdate Time OPTIONAL,
+ COMPONENTS OF CommonResultsSeq
+ }}
+}
+
+requestShadowUpdate OPERATION ::= {
+ ARGUMENT RequestShadowUpdateArgument
+ RESULT RequestShadowUpdateResult
+ ERRORS {shadowError}
+ CODE id-opcode-requestShadowUpdate
+}
+
+RequestShadowUpdateArgument ::=
+ OPTIONALLY-PROTECTED
+ {[0] SEQUENCE {agreementID AgreementID,
+ lastUpdate Time OPTIONAL,
+ requestedStrategy
+ CHOICE {standard ENUMERATED {incremental(1), total(2)},
+ other EXTERNAL},
+ securityParameters SecurityParameters OPTIONAL}}
+
+RequestShadowUpdateResult ::= CHOICE {
+ null NULL,
+ information
+ OPTIONALLY-PROTECTED{[0] SEQUENCE {agreementID AgreementID,
+ lastUpdate Time OPTIONAL,
+ COMPONENTS OF CommonResultsSeq
+ }}
+}
+
+updateShadow OPERATION ::= {
+ ARGUMENT UpdateShadowArgument
+ RESULT UpdateShadowResult
+ ERRORS {shadowError}
+ CODE id-opcode-updateShadow
+}
+
+UpdateShadowArgument ::=
+ OPTIONALLY-PROTECTED
+ {[0] SEQUENCE {agreementID AgreementID,
+ updateTime Time,
+ updateWindow UpdateWindow OPTIONAL,
+ updatedInfo RefreshInformation,
+ securityParameters SecurityParameters OPTIONAL}}
+
+UpdateShadowResult ::= CHOICE {
+ null NULL,
+ information
+ OPTIONALLY-PROTECTED{[0] SEQUENCE {agreementID AgreementID,
+ lastUpdate Time OPTIONAL,
+ COMPONENTS OF CommonResultsSeq
+ }}
+}
+
+UpdateWindow ::= SEQUENCE {start Time,
+ stop Time
+}
+
+RefreshInformation ::= CHOICE {
+ noRefresh NULL,
+ total [0] TotalRefresh,
+ incremental [1] IncrementalRefresh,
+ otherStrategy EXTERNAL
+}
+
+TotalRefresh ::= SEQUENCE {
+ sDSE SDSEContent OPTIONAL,
+ subtree SET SIZE (1..MAX) OF Subtree OPTIONAL
+}
+
+SDSEContent ::= SEQUENCE {
+ sDSEType SDSEType,
+ subComplete [0] BOOLEAN DEFAULT FALSE,
+ attComplete [1] BOOLEAN OPTIONAL,
+ attributes SET OF Attribute,
+ attValIncomplete SET OF AttributeType DEFAULT {}
+}
+
+SDSEType ::= DSEType
+
+Subtree ::= SEQUENCE {
+ rdn RelativeDistinguishedName,
+ COMPONENTS OF TotalRefresh
+}
+
+IncrementalRefresh ::= SEQUENCE OF IncrementalStepRefresh
+
+IncrementalStepRefresh ::= SEQUENCE {
+ sDSEChanges
+ CHOICE {add [0] SDSEContent,
+ remove NULL,
+ modify [1] ContentChange} OPTIONAL,
+ subordinateUpdates SEQUENCE SIZE (1..MAX) OF SubordinateChanges OPTIONAL
+}
+
+ContentChange ::= SEQUENCE {
+ rename
+ CHOICE {newRDN RelativeDistinguishedName,
+ newDN DistinguishedName} OPTIONAL,
+ attributeChanges
+ CHOICE {replace [0] SET SIZE (1..MAX) OF Attribute,
+ changes [1] SEQUENCE SIZE (1..MAX) OF EntryModification
+ } OPTIONAL,
+ sDSEType SDSEType,
+ subComplete [2] BOOLEAN DEFAULT FALSE,
+ attComplete [3] BOOLEAN OPTIONAL,
+ attValIncomplete SET OF AttributeType DEFAULT {}
+}
+
+SubordinateChanges ::= SEQUENCE {
+ subordinate RelativeDistinguishedName,
+ changes IncrementalStepRefresh
+}
+
+-- errors and parameters
+shadowError ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED-SEQ
+ {SEQUENCE {problem ShadowProblem,
+ lastUpdate Time OPTIONAL,
+ updateWindow UpdateWindow OPTIONAL,
+ COMPONENTS OF CommonResultsSeq}}
+ CODE id-errcode-shadowError
+}
+
+ShadowProblem ::= INTEGER {
+ invalidAgreementID(1), inactiveAgreement(2), invalidInformationReceived(3),
+ unsupportedStrategy(4), missedPrevious(5), fullUpdateRequired(6),
+ unwillingToPerform(7), unsuitableTiming(8), updateAlreadyReceived(9),
+ invalidSequencing(10), insufficientResources(11)}
+
+END -- DirectoryShadowAbstractService
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DirectorySystemProtocol.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectorySystemProtocol.asn1
new file mode 100644
index 0000000000..cace79d109
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DirectorySystemProtocol.asn1
@@ -0,0 +1,118 @@
+-- Module DirectorySystemProtocol (X.519 TC2:08/1997)
+
+DirectorySystemProtocol {joint-iso-itu-t ds(5) module(1) dsp(12) 3} DEFINITIONS
+::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ distributedOperations, protocolObjectIdentifiers
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ ROS-OBJECT-CLASS, CONTRACT, OPERATION-PACKAGE, CONNECTION-PACKAGE,
+ Code, OPERATION
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ ROS{}, Bind{}, Unbind{}, InvokeId
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ APPLICATION-CONTEXT
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)}
+ acse, pData
+ FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
+ realizations(9) version1(0)}
+ acse-abstract-syntax
+ FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
+ remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)}
+ id-ac-directorySystemAC, id-rosObject-dspDSA, id-contract-dsp,
+ id-package-dspConnection, id-package-chainedRead, id-package-chainedSearch,
+ id-package-chainedModify, id-as-directorySystemAS
+ FROM ProtocolObjectIdentifiers protocolObjectIdentifiers
+ dSABind, dSAUnbind, chainedRead, chainedCompare, chainedAbandon, chainedList,
+ chainedSearch, chainedAddEntry, chainedRemoveEntry, chainedModifyEntry,
+ chainedModifyDN
+ FROM DistributedOperations distributedOperations;
+
+-- application contexts
+directorySystemAC APPLICATION-CONTEXT ::= {
+ CONTRACT dspContract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | directorySystemAbstractSyntax}
+ APPLICATION CONTEXT NAME id-ac-directorySystemAC
+}
+
+-- ROS objects
+dsp-dsa ROS-OBJECT-CLASS ::= {BOTH {dspContract}
+ ID id-rosObject-dspDSA
+}
+
+-- contracts
+dspContract CONTRACT ::= {
+ CONNECTION dspConnectionPackage
+ OPERATIONS OF
+ {chainedReadPackage | chainedSearchPackage | chainedModifyPackage}
+ ID id-contract-dsp
+}
+
+-- connection package
+dspConnectionPackage CONNECTION-PACKAGE ::= {
+ BIND dSABind
+ UNBIND dSAUnbind
+ ID id-package-dspConnection
+}
+
+-- chained read package
+chainedReadPackage OPERATION-PACKAGE ::= {
+ OPERATIONS {chainedRead | chainedCompare | chainedAbandon}
+ ID id-package-chainedRead
+}
+
+-- chained search package
+chainedSearchPackage OPERATION-PACKAGE ::= {
+ OPERATIONS {chainedList | chainedSearch}
+ ID id-package-chainedSearch
+}
+
+-- chained modify package
+chainedModifyPackage OPERATION-PACKAGE ::= {
+ OPERATIONS
+ {chainedAddEntry | chainedRemoveEntry | chainedModifyEntry |
+ chainedModifyDN}
+ ID id-package-chainedModify
+}
+
+-- abstract syntaxes
+directorySystemAbstractSyntax ABSTRACT-SYNTAX ::= {
+ DSP-PDUs
+ IDENTIFIED BY id-as-directorySystemAS
+}
+
+DSP-PDUs ::= CHOICE {
+ basicRos ROS{{DSP-InvokeIDSet}, {DSP-Invokable}, {DSP-Returnable}},
+ bind Bind{dSABind},
+ unbind Unbind{dSAUnbind}
+}
+
+DSP-InvokeIDSet ::= InvokeId(ALL EXCEPT absent:NULL)
+
+DSP-Invokable OPERATION ::=
+ {chainedRead | chainedCompare | chainedAbandon | chainedList | chainedSearch
+ | chainedAddEntry | chainedRemoveEntry | chainedModifyEntry |
+ chainedModifyDN}
+
+DSP-Returnable OPERATION ::=
+ {chainedRead | chainedCompare | chainedAbandon | chainedList | chainedSearch
+ | chainedAddEntry | chainedRemoveEntry | chainedModifyEntry |
+ chainedModifyDN}
+
+END -- DirectorySystemProtocol
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/DistributedOperations.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/DistributedOperations.asn1
new file mode 100644
index 0000000000..72e791f10c
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/DistributedOperations.asn1
@@ -0,0 +1,181 @@
+-- Module DistributedOperations (X.518 TC2:08/1997)
+
+DistributedOperations {joint-iso-itu-t ds(5) module(1) distributedOperations(3)
+ 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ informationFramework, directoryAbstractService, distributedOperations,
+ selectedAttributeTypes, basicAccessControl, dap, enhancedSecurity
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ DistinguishedName, Name, RDNSequence, SearchRuleId, MRMapping
+ FROM InformationFramework informationFramework
+ PresentationAddress, ProtocolInformation, UniqueIdentifier
+ FROM SelectedAttributeTypes selectedAttributeTypes
+ AuthenticationLevel
+ FROM BasicAccessControl basicAccessControl
+ OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ directoryBind, directoryUnbind, read, compare, abandon, list, search,
+ addEntry, removeEntry, modifyEntry, modifyDN, referral, SecurityParameters,
+ CommonResults
+ FROM DirectoryAbstractService directoryAbstractService
+ OPTIONALLY-PROTECTED{}
+ FROM EnhancedSecurity enhancedSecurity
+ id-errcode-dsaReferral
+ FROM DirectoryAccessProtocol dap;
+
+-- parameterized type for deriving chained operations
+chained{OPERATION:operation} OPERATION ::= {
+ ARGUMENT OPTIONALLY-PROTECTED
+ {SET {chainedArgument ChainingArguments,
+ argument [0] operation.&ArgumentType}}
+ RESULT OPTIONALLY-PROTECTED
+ {SET {chainedResult ChainingResults,
+ result [0] operation.&ResultType}}
+ ERRORS
+ {operation.&Errors EXCEPT referral | dsaReferral}
+ CODE operation.&operationCode
+}
+
+-- bind and unbind operations
+dSABind OPERATION ::= directoryBind
+
+dSAUnbind OPERATION ::= directoryUnbind
+
+-- chained operations
+chainedRead OPERATION ::= chained{read}
+
+chainedCompare OPERATION ::= chained{compare}
+
+chainedAbandon OPERATION ::= abandon
+
+chainedList OPERATION ::= chained{list}
+
+chainedSearch OPERATION ::= chained{search}
+
+chainedAddEntry OPERATION ::= chained{addEntry}
+
+chainedRemoveEntry OPERATION ::= chained{removeEntry}
+
+chainedModifyEntry OPERATION ::= chained{modifyEntry}
+
+chainedModifyDN OPERATION ::= chained{modifyDN}
+
+-- errors and parameters
+dsaReferral ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED
+ {SET {reference [0] ContinuationReference,
+ contextPrefix [1] DistinguishedName OPTIONAL,
+ COMPONENTS OF CommonResults}}
+ CODE id-errcode-dsaReferral
+}
+
+-- common arguments and results
+ChainingArguments ::= SET {
+ originator [0] DistinguishedName OPTIONAL,
+ targetObject [1] DistinguishedName OPTIONAL,
+ operationProgress
+ [2] OperationProgress DEFAULT {nameResolutionPhase notStarted},
+ traceInformation [3] TraceInformation,
+ aliasDereferenced [4] BOOLEAN DEFAULT FALSE,
+ aliasedRDNs [5] INTEGER OPTIONAL,
+ -- only present in 1988 systems
+ returnCrossRefs [6] BOOLEAN DEFAULT FALSE,
+ referenceType [7] ReferenceType DEFAULT superior,
+ info [8] DomainInfo OPTIONAL,
+ timeLimit [9] Time OPTIONAL,
+ securityParameters [10] SecurityParameters DEFAULT {},
+ entryOnly [11] BOOLEAN DEFAULT FALSE,
+ uniqueIdentifier [12] UniqueIdentifier OPTIONAL,
+ authenticationLevel [13] AuthenticationLevel OPTIONAL,
+ exclusions [14] Exclusions OPTIONAL,
+ excludeShadows [15] BOOLEAN DEFAULT FALSE,
+ nameResolveOnMaster [16] BOOLEAN DEFAULT FALSE,
+ operationIdentifier [17] INTEGER OPTIONAL,
+ searchRuleId [18] SearchRuleId OPTIONAL,
+ chainedRelaxation [19] MRMapping OPTIONAL
+}
+
+Time ::= CHOICE {utcTime UTCTime,
+ generalizedTime GeneralizedTime
+}
+
+ChainingResults ::= SET {
+ info [0] DomainInfo OPTIONAL,
+ crossReferences [1] SEQUENCE (SIZE (1..MAX)) OF CrossReference OPTIONAL,
+ securityParameters [2] SecurityParameters DEFAULT {},
+ alreadySearched [3] Exclusions OPTIONAL
+}
+
+CrossReference ::= SET {
+ contextPrefix [0] DistinguishedName,
+ accessPoint [1] AccessPointInformation,
+ chainingRequired [2] BOOLEAN DEFAULT FALSE
+}
+
+ReferenceType ::= ENUMERATED {
+ superior(1), subordinate(2), cross(3), nonSpecificSubordinate(4),
+ supplier(5), master(6), immediateSuperior(7), self(8)}
+
+TraceInformation ::= SEQUENCE OF TraceItem
+
+TraceItem ::= SET {
+ dsa [0] Name,
+ targetObject [1] Name OPTIONAL,
+ operationProgress [2] OperationProgress
+}
+
+OperationProgress ::= SET {
+ nameResolutionPhase
+ [0] ENUMERATED {notStarted(1), proceeding(2), completed(3)},
+ nextRDNToBeResolved [1] INTEGER OPTIONAL
+}
+
+DomainInfo ::= ABSTRACT-SYNTAX.&Type
+
+ContinuationReference ::= SET {
+ targetObject [0] Name,
+ aliasedRDNs [1] INTEGER OPTIONAL, -- only present in 1988 systems
+ operationProgress [2] OperationProgress,
+ rdnsResolved [3] INTEGER OPTIONAL,
+ referenceType [4] ReferenceType,
+ accessPoints [5] SET OF AccessPointInformation,
+ entryOnly [6] BOOLEAN DEFAULT FALSE,
+ exclusions [7] Exclusions OPTIONAL,
+ returnToDUA [8] BOOLEAN DEFAULT FALSE,
+ nameResolveOnMaster [9] BOOLEAN DEFAULT FALSE
+}
+
+AccessPoint ::= SET {
+ ae-title [0] Name,
+ address [1] PresentationAddress,
+ protocolInformation [2] SET OF ProtocolInformation OPTIONAL,
+ chainingRequired [3] BOOLEAN DEFAULT FALSE
+}
+
+AccessPointInformation ::= SET {
+ COMPONENTS OF MasterOrShadowAccessPoint,
+ additionalPoints [5] MasterAndShadowAccessPoints OPTIONAL
+}
+
+MasterOrShadowAccessPoint ::= SET {
+ COMPONENTS OF AccessPoint,
+ category [4] ENUMERATED {master(0), shadow(1)} DEFAULT master
+}
+
+MasterAndShadowAccessPoints ::= SET OF MasterOrShadowAccessPoint
+
+Exclusions ::= SET OF RDNSequence
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Document-Profile-Descriptor.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Document-Profile-Descriptor.asn1
new file mode 100644
index 0000000000..d8c15b7afa
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Document-Profile-Descriptor.asn1
@@ -0,0 +1,464 @@
+-- Module Document-Profile-Descriptor (T.415:03/1993)
+
+Document-Profile-Descriptor {2 8 1 5 6} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Document-Profile-Descriptor, Character-Data, Document-Reference,
+ Date-and-Time, Dates-and-Times, Personal-Name, Originators,
+ Other-User-Information, Local-File-References, Security-Information,
+ Document-Description,
+ External-References ,
+ Sealed-Doc-Bodyparts, ODA-Version;
+
+IMPORTS
+ Resource-Name, Object-or-Class-Identifier, Protected-Part-Identifier,
+ Style-Identifier
+ FROM Identifiers-and-Expressions -- see 7.8
+
+ Measure-Pair, Transparency, Colour, Dimension-Pair, One-Of-Four-Angles,
+ Border, Medium-Type, Comment-String, Content-Background-Colour,
+ Content-Foreground-Colour
+ FROM Layout-Descriptors -- see 7.9
+
+ Protection
+ FROM Logical-Descriptors -- see 7.10
+
+ Content-Architecture-Class, Content-Type, Block-Alignment, Fill-Order
+ FROM Style-Descriptors -- see 7.11
+
+ Type-Of-Coding
+ FROM Text-Units -- see 7.13
+
+ Colour-Characteristics, Colour-Spaces-List, Colour-Expression, Colour-Table
+ FROM Colour-Attributes -- see 7.14
+
+ Character-Content-Defaults, Character-Presentation-Feature,
+ Character-Coding-Attribute
+ FROM Character-Profile-Attributes {2 8 1 6 4
+ } -- see ITU-T Rec. T.416 | ISO/IEC 8613-6
+ Raster-Gr-Content-Defaults, Ra-Gr-Presentation-Feature,
+ Ra-Gr-Coding-Attribute
+ FROM Raster-Gr-Profile-Attributes {2 8 1 7 4
+ } -- see ITU-T Rec. T.417 | ISO/IEC 8613-7
+ Geo-Gr-Content-Defaults, Geo-Gr-Presentation-Feature, Geo-Gr-Coding-Attribute
+ FROM Geo-Gr-Profile-Attributes {2 8 1 8 4
+ } -- see ITU-T Rec. T.418 | ISO/IEC 8613-8
+ Font-Attribute-Set
+ FROM ISO-STANDARD-9541-FONT-ATTRIBUTE-SET {1 0 9541 2 2
+ } -- see ISO/IEC 9541-2
+ Document-Presentation-Time, Time-Scaling
+ FROM Temporal-Relationships {2 8 1 14 0};
+
+-- See ITU-T Rec. T.424 | ISO/IEC 8613-14
+Document-Profile-Descriptor ::= SET {
+ generic-layout-structure [0] IMPLICIT NumericString OPTIONAL,
+ specific-layout-structure [1] IMPLICIT NumericString OPTIONAL,
+ generic-logical-structure [4] IMPLICIT NumericString OPTIONAL,
+ specific-logical-structure [5] IMPLICIT NumericString OPTIONAL,
+ presentation-styles [6] IMPLICIT NumericString OPTIONAL,
+ layout-styles [7] IMPLICIT NumericString OPTIONAL,
+ sealed-profiles [12] IMPLICIT NumericString OPTIONAL,
+ enciphered-profiles [13] IMPLICIT NumericString OPTIONAL,
+ preenciphered-bodyparts [14] IMPLICIT NumericString OPTIONAL,
+ postenciphered-bodyparts [15] IMPLICIT NumericString OPTIONAL,
+ -- for the generic structures,
+ -- 'partial-generator-set' is represented by "0", 'complete-generator-set'
+ -- is represented by "1", 'factor-set' is represented by "2";
+ -- for the other cases, the numeric string has the value 'present'
+ -- represented by "1"
+ external-document-class [9] Document-Reference OPTIONAL,
+ resource-document [10] Document-Reference OPTIONAL,
+ resources
+ [11] IMPLICIT SET OF
+ SET {resource-identifier Resource-Name,
+ object-class-identifier Object-or-Class-Identifier
+ } OPTIONAL,
+ document-characteristics [2] IMPLICIT Document-Characteristics,
+ document-management-attributes
+ [3] IMPLICIT Document-Management-Attributes OPTIONAL,
+ document-security-attributes
+ [16] IMPLICIT Document-Security-Attributes OPTIONAL,
+ links [17] IMPLICIT NumericString OPTIONAL,
+ link-classes [18] IMPLICIT NumericString OPTIONAL,
+ enciphered-links [19] IMPLICIT NumericString OPTIONAL,
+ temporal-relations [20] IMPLICIT NumericString OPTIONAL
+}
+
+Document-Characteristics ::= SET {
+ document-application-profile
+ CHOICE {a [0] IMPLICIT INTEGER {group-4-facsimile(2)},
+ b [4] IMPLICIT OBJECT IDENTIFIER} OPTIONAL,
+ doc-appl-profile-defaults
+ [10] IMPLICIT Doc-Appl-Profile-Defaults OPTIONAL,
+ document-architecture-class
+ [1] IMPLICIT INTEGER {formatted(0), processable(1),
+ formatted-processable(2)},
+ content-architecture-classes [5] IMPLICIT SET OF OBJECT IDENTIFIER,
+ interchange-format-class [6] IMPLICIT INTEGER {if-a(0), if-b(1)},
+ oda-version [8] IMPLICIT ODA-Version,
+ alternative-feature-sets
+ [11] IMPLICIT SET OF SET OF OBJECT IDENTIFIER OPTIONAL,
+ non-basic-doc-characteristics
+ [2] IMPLICIT Non-Basic-Doc-Characteristics OPTIONAL,
+ non-basic-struc-characteristics
+ [3] IMPLICIT Non-Basic-Struc-Characteristics OPTIONAL,
+ additional-doc-characteristics
+ [9] IMPLICIT Additional-Doc-Characteristics OPTIONAL
+}
+
+ODA-Version ::= SEQUENCE {
+ standard-or-recommendation Character-Data,
+ publication-date Date-and-Time
+}
+
+Doc-Appl-Profile-Defaults ::= SET {
+ document-architecture-defaults
+ [0] IMPLICIT Document-Architecture-Defaults OPTIONAL,
+ character-content-defaults
+ [1] IMPLICIT Character-Content-Defaults OPTIONAL,
+ raster-gr-content-defaults
+ [2] IMPLICIT Raster-Gr-Content-Defaults OPTIONAL,
+ geo-gr-content-defaults
+ [3] IMPLICIT Geo-Gr-Content-Defaults OPTIONAL,
+ -- the following tags are reserved for additional types
+ -- of content defaults:
+ -- [4] videotex, for use in conjunction with CCITT Recommendations
+ -- [5] audio
+ -- [6] dynamic-graphics
+ external-content-architecture-defaults
+ [7] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL
+}
+
+Document-Architecture-Defaults ::= SET {
+ content-architecture-class
+ CHOICE {a [0] IMPLICIT Content-Architecture-Class,
+ b [1] IMPLICIT Content-Type} OPTIONAL,
+ page-dimensions [2] IMPLICIT Measure-Pair OPTIONAL,
+ transparency [3] IMPLICIT Transparency OPTIONAL,
+ colour [4] IMPLICIT Colour OPTIONAL,
+ colour-of-layout-object [11] Colour-Expression OPTIONAL,
+ object-colour-table [12] IMPLICIT Colour-Table OPTIONAL,
+ content-background-colour [13] Content-Background-Colour OPTIONAL,
+ content-foreground-colour [14] Content-Foreground-Colour OPTIONAL,
+ content-colour-table [15] IMPLICIT Colour-Table OPTIONAL,
+ layout-path [5] IMPLICIT One-Of-Four-Angles OPTIONAL,
+ medium-type [6] IMPLICIT Medium-Type OPTIONAL,
+ block-alignment [7] IMPLICIT Block-Alignment OPTIONAL,
+ border [8] IMPLICIT Border OPTIONAL,
+ page-position [9] IMPLICIT Measure-Pair OPTIONAL,
+ type-of-coding [10] Type-Of-Coding OPTIONAL
+}
+
+Non-Basic-Doc-Characteristics ::= SET {
+ profile-character-sets [5] IMPLICIT OCTET STRING OPTIONAL,
+ comments-character-sets [1] IMPLICIT OCTET STRING OPTIONAL,
+ alternative-repr-char-sets [6] IMPLICIT OCTET STRING OPTIONAL,
+ -- each of these octet strings represents a string of escape sequences
+ page-dimensions [2] IMPLICIT SET OF Dimension-Pair OPTIONAL,
+ medium-types [8] IMPLICIT SET OF Medium-Type OPTIONAL,
+ layout-paths
+ [21] IMPLICIT SET OF One-Of-Four-Angles OPTIONAL,
+ transparencies [22] IMPLICIT SET OF Transparency OPTIONAL,
+ protections [23] IMPLICIT SET OF Protection OPTIONAL,
+ block-alignments
+ [24] IMPLICIT SET OF Block-Alignment OPTIONAL,
+ fill-orders [25] IMPLICIT SET OF Fill-Order OPTIONAL,
+ colours [26] IMPLICIT SET OF Colour OPTIONAL,
+ colours-of-layout-object
+ [30] IMPLICIT SET OF Colour-Expression OPTIONAL,
+ object-colour-tables [31] IMPLICIT SET OF Colour-Table OPTIONAL,
+ content-background-colours
+ [32] IMPLICIT SET OF Content-Background-Colour OPTIONAL,
+ content-foreground-colours
+ [33] IMPLICIT SET OF Content-Foreground-Colour OPTIONAL,
+ content-colour-tables [34] IMPLICIT SET OF Colour-Table OPTIONAL,
+ borders [27] IMPLICIT SET OF Border OPTIONAL,
+ page-positions [28] IMPLICIT SET OF Measure-Pair OPTIONAL,
+ types-of-coding [29] IMPLICIT SET OF Type-Of-Coding OPTIONAL,
+ character-presentation-features
+ [9] IMPLICIT SET OF Character-Presentation-Feature OPTIONAL,
+ ra-gr-presentation-features
+ [4] IMPLICIT SET OF Ra-Gr-Presentation-Feature OPTIONAL,
+ geo-gr-presentation-features
+ [12] IMPLICIT SET OF Geo-Gr-Presentation-Feature OPTIONAL,
+ character-coding-attributes
+ [16] IMPLICIT SET OF Character-Coding-Attribute OPTIONAL,
+ ra-gr-coding-attributes
+ [3] IMPLICIT SET OF Ra-Gr-Coding-Attribute OPTIONAL,
+ geo-gr-coding-attributes
+ [17] IMPLICIT SET OF Geo-Gr-Coding-Attribute OPTIONAL,
+ ext-non-basic-pres-features [10] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL,
+ ext-non-basic-coding-attributes [11] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL
+}
+
+Non-Basic-Struc-Characteristics ::= SET {
+ number-of-objects-per-page [0] IMPLICIT INTEGER OPTIONAL
+}
+
+Additional-Doc-Characteristics ::= SET {
+ unit-scaling [3] IMPLICIT SEQUENCE {a INTEGER,
+ b INTEGER} OPTIONAL,
+ fonts-list [2] IMPLICIT Fonts-List OPTIONAL,
+ colour-characteristics [0] IMPLICIT Colour-Characteristics OPTIONAL,
+ colour-spaces-list [1] IMPLICIT Colour-Spaces-List OPTIONAL,
+ assured-reproduction-areas [5] IMPLICIT Assured-Reproduction-Areas OPTIONAL,
+ time-scaling [6] IMPLICIT Time-Scaling OPTIONAL,
+ document-presentation-time [7] IMPLICIT Document-Presentation-Time OPTIONAL
+}
+
+Fonts-List ::=
+ SET OF SET {font-identifier INTEGER,
+ font-reference Font-Reference}
+
+Font-Reference ::= SET {
+ user-visible-name [0] IMPLICIT Comment-String OPTIONAL,
+ user-readable-comment [1] IMPLICIT Comment-String OPTIONAL,
+ reference-properties
+ [2] IMPLICIT SET OF
+ SET {precedence-number [0] IMPLICIT INTEGER OPTIONAL,
+ properties [1] IMPLICIT Font-Attribute-Set,
+ user-readable-comment
+ [2] IMPLICIT Comment-String OPTIONAL}
+}
+
+Assured-Reproduction-Areas ::=
+ SET OF
+ SET {nominal-page-size [0] IMPLICIT Measure-Pair,
+ assured-reproduction-area
+ [1] SET {position [0] IMPLICIT Measure-Pair,
+ dimensions [1] IMPLICIT Measure-Pair}}
+
+Document-Management-Attributes ::= SET {
+ document-description [7] IMPLICIT Document-Description OPTIONAL,
+ dates-and-times [0] IMPLICIT Dates-and-Times OPTIONAL,
+ originators [1] IMPLICIT Originators OPTIONAL,
+ other-user-information [2] IMPLICIT Other-User-Information OPTIONAL,
+ external-references [3] IMPLICIT External-References OPTIONAL,
+ local-file-references [4] IMPLICIT Local-File-References OPTIONAL,
+ content-attributes [5] IMPLICIT Content-Attributes OPTIONAL,
+ security-information [6] IMPLICIT Security-Information OPTIONAL
+}
+
+Document-Description ::= SET {
+ title [0] IMPLICIT Character-Data OPTIONAL,
+ subject [1] IMPLICIT Character-Data OPTIONAL,
+ document-type [2] IMPLICIT Character-Data OPTIONAL,
+ abstract [3] IMPLICIT Character-Data OPTIONAL,
+ keywords [4] IMPLICIT SET OF Character-Data OPTIONAL,
+ document-reference [5] Document-Reference OPTIONAL
+}
+
+Character-Data ::= [APPLICATION 3] IMPLICIT OCTET STRING
+
+-- string of characters from the sets designated by the attribute
+-- "profile character sets", plus space, carriage return and line feed
+Document-Reference ::= CHOICE {
+ unique-reference OBJECT IDENTIFIER,
+ descriptive-reference Character-Data
+}
+
+Dates-and-Times ::= SET {
+ document-date-and-time [0] IMPLICIT Date-and-Time OPTIONAL,
+ creation-date-and-time [1] IMPLICIT Date-and-Time OPTIONAL,
+ local-filing-date-and-time [2] IMPLICIT SEQUENCE OF Date-and-Time OPTIONAL,
+ expiry-date-and-time [3] IMPLICIT Date-and-Time OPTIONAL,
+ start-date-and-time [4] IMPLICIT Date-and-Time OPTIONAL,
+ purge-date-and-time [5] IMPLICIT Date-and-Time OPTIONAL,
+ release-date-and-time [6] IMPLICIT Date-and-Time OPTIONAL,
+ revision-history
+ [7] IMPLICIT SEQUENCE OF
+ SET {revision-date-and-time
+ [0] IMPLICIT Date-and-Time OPTIONAL,
+ version-identifier
+ [1] IMPLICIT Character-Data OPTIONAL,
+ revisers
+ [2] IMPLICIT SET OF
+ SET {names
+ [0] IMPLICIT SET OF
+ Personal-Name
+ OPTIONAL,
+ position
+ [1] IMPLICIT Character-Data
+ OPTIONAL,
+ organization
+ [2] IMPLICIT Character-Data
+ OPTIONAL} OPTIONAL,
+ version-reference
+ [3] Document-Reference OPTIONAL,
+ user-comments
+ [4] IMPLICIT Character-Data OPTIONAL} OPTIONAL
+}
+
+Date-and-Time ::= [APPLICATION 4] IMPLICIT PrintableString
+
+Originators ::= SET {
+ organizations [0] IMPLICIT SET OF Character-Data OPTIONAL,
+ preparers
+ [1] IMPLICIT SEQUENCE OF
+ SET {personal-name [0] IMPLICIT Personal-Name OPTIONAL,
+ organization [1] IMPLICIT Character-Data OPTIONAL
+ } OPTIONAL,
+ owners
+ [2] IMPLICIT SEQUENCE OF
+ SET {personal-name [0] IMPLICIT Personal-Name OPTIONAL,
+ organization [1] IMPLICIT Character-Data OPTIONAL
+ } OPTIONAL,
+ authors
+ [3] IMPLICIT SEQUENCE OF
+ SET {personal-name [0] IMPLICIT Personal-Name OPTIONAL,
+ organization [1] IMPLICIT Character-Data OPTIONAL
+ } OPTIONAL
+}
+
+Personal-Name ::= [APPLICATION 6] IMPLICIT SET {
+ surname [0] IMPLICIT Character-Data,
+ givenname [1] IMPLICIT Character-Data OPTIONAL,
+ initials [2] IMPLICIT Character-Data OPTIONAL,
+ generation-qualifier [3] IMPLICIT Character-Data OPTIONAL
+}
+
+Other-User-Information ::= SET {
+ copyright
+ [0] IMPLICIT SET OF
+ SET {copyright-information
+ [0] IMPLICIT SET OF Character-Data OPTIONAL,
+ copyright-dates
+ [1] IMPLICIT SET OF Date-and-Time OPTIONAL} OPTIONAL,
+ status [1] IMPLICIT Character-Data OPTIONAL,
+ user-specific-codes [2] IMPLICIT SET OF Character-Data OPTIONAL,
+ distribution-list
+ [3] IMPLICIT SEQUENCE OF
+ SET {personal-name [0] IMPLICIT Personal-Name OPTIONAL,
+ organization [1] IMPLICIT Character-Data OPTIONAL
+ } OPTIONAL,
+ additional-information [5] TYPE-IDENTIFIER.&Type OPTIONAL
+}
+
+External-References ::=
+ SET {
+ references-to-other-documents
+ [0] IMPLICIT SET OF Document-Reference OPTIONAL,
+ superseded-documents
+ [1] IMPLICIT SET OF Document-Reference OPTIONAL
+}
+
+Local-File-References ::=
+ SET OF
+ SET {file-name [0] IMPLICIT Character-Data OPTIONAL,
+ location [1] IMPLICIT Character-Data OPTIONAL,
+ user-comments [2] IMPLICIT Character-Data OPTIONAL}
+
+Content-Attributes ::= SET {
+ document-size [1] IMPLICIT INTEGER OPTIONAL,
+ number-of-pages [2] IMPLICIT INTEGER OPTIONAL,
+ languages [4] IMPLICIT SET OF Character-Data OPTIONAL
+}
+
+Security-Information ::= SET {
+ authorization
+ CHOICE {person [0] IMPLICIT Personal-Name,
+ organization [4] IMPLICIT Character-Data} OPTIONAL,
+ security-classification [1] IMPLICIT Character-Data OPTIONAL,
+ access-rights [2] IMPLICIT SET OF Character-Data OPTIONAL
+}
+
+Document-Security-Attributes ::= SET {
+ sealed-info-encoding [7] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
+ oda-security-label [0] IMPLICIT Oda-Security-Label OPTIONAL,
+ sealed-doc-profiles [1] IMPLICIT Sealed-Doc-Profiles OPTIONAL,
+ presealed-doc-bodyparts [2] IMPLICIT Sealed-Doc-Bodyparts OPTIONAL,
+ postsealed-doc-bodyparts [3] IMPLICIT Sealed-Doc-Bodyparts OPTIONAL,
+ enciphered-doc-profiles [4] IMPLICIT Protected-Doc-Parts OPTIONAL,
+ preenciphered-doc-bodyparts [5] IMPLICIT Protected-Doc-Parts OPTIONAL,
+ postenciphered-doc-bodyparts [6] IMPLICIT Protected-Doc-Parts OPTIONAL,
+ sealed-links [8] IMPLICIT Sealed-Doc-Bodyparts OPTIONAL
+}
+
+Oda-Security-Label ::= SEQUENCE {
+ oda-label-text [0] IMPLICIT Character-Data OPTIONAL,
+ oda-label-data [1] IMPLICIT OCTET STRING OPTIONAL
+}
+
+Seal-Data ::= SEQUENCE {
+ seal-method [0] IMPLICIT Seal-Method OPTIONAL,
+ sealed-information [1] IMPLICIT Sealed-Information OPTIONAL,
+ seal [2] IMPLICIT OCTET STRING
+}
+
+Seal-Method ::= SEQUENCE {
+ fingerprint-method [0] IMPLICIT Method-Information OPTIONAL,
+ fingerprint-key-information [1] IMPLICIT Key-Information OPTIONAL,
+ sealing-method [2] IMPLICIT Method-Information OPTIONAL,
+ sealing-key-information [3] IMPLICIT Key-Information OPTIONAL
+}
+
+Sealed-Information ::= SEQUENCE {
+ fingerprint [0] IMPLICIT OCTET STRING OPTIONAL,
+ time [1] IMPLICIT Date-and-Time OPTIONAL,
+ sealing-orig-id [2] IMPLICIT Personal-Name OPTIONAL,
+ location [3] IMPLICIT Location OPTIONAL
+}
+
+Method-Information ::= SEQUENCE {
+ unique-method-info [0] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
+ descriptive-method-info [1] IMPLICIT Character-Data OPTIONAL
+}
+
+Key-Information ::= SEQUENCE {
+ method-information [0] IMPLICIT Method-Information OPTIONAL,
+ additional-information [1] IMPLICIT Additional-Information OPTIONAL
+}
+
+Additional-Information ::= SEQUENCE {
+ descriptive-information [0] IMPLICIT Character-Data OPTIONAL,
+ octet-string [1] IMPLICIT OCTET STRING OPTIONAL
+}
+
+Location ::= SEQUENCE {
+ unique-location [0] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
+ descriptive-location [1] IMPLICIT Character-Data OPTIONAL
+}
+
+Sealed-Doc-Profiles ::=
+ SET OF
+ SEQUENCE {sealed-doc-prof-descriptor-id
+ [0] IMPLICIT Protected-Part-Identifier,
+ privileged-recipients
+ [1] IMPLICIT SET OF Personal-Name OPTIONAL,
+ doc-prof-seal [2] IMPLICIT Seal-Data}
+
+Sealed-Doc-Bodyparts ::=
+ SET OF
+ SEQUENCE {seal-id [0] IMPLICIT INTEGER,
+ sealed-constituents [1] IMPLICIT Sealed-Constituents,
+ privileged-recipients [2] IMPLICIT SET OF Personal-Name OPTIONAL,
+ doc-bodypart-seal [3] IMPLICIT Seal-Data}
+
+Sealed-Constituents ::= SEQUENCE {
+ object-class-identifiers
+ [0] IMPLICIT SEQUENCE OF Object-or-Class-Identifier OPTIONAL,
+ presentation-style-identifiers
+ [1] IMPLICIT SEQUENCE OF Style-Identifier OPTIONAL,
+ layout-style-identifiers
+ [2] IMPLICIT SEQUENCE OF Style-Identifier OPTIONAL,
+ object-identifiers
+ [3] IMPLICIT SEQUENCE OF Object-or-Class-Identifier OPTIONAL
+}
+
+Protected-Doc-Parts ::=
+ SET OF
+ SEQUENCE {protected-doc-part-id [0] IMPLICIT Protected-Part-Identifier,
+ priv-recipients-info [1] IMPLICIT SET OF Priv-Recipients-Info
+ }
+
+Priv-Recipients-Info ::= SEQUENCE {
+ privileged-recipients [0] IMPLICIT SET OF Personal-Name OPTIONAL,
+ encipherment-method-info [1] IMPLICIT Method-Information OPTIONAL,
+ encipherment-key-info [2] IMPLICIT Key-Information OPTIONAL
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/EnhancedSecurity.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/EnhancedSecurity.asn1
new file mode 100644
index 0000000000..9991a59454
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/EnhancedSecurity.asn1
@@ -0,0 +1,363 @@
+-- Module EnhancedSecurity (X.501:08/1997)
+EnhancedSecurity {joint-iso-itu-t ds(5) module(1) enhancedSecurity(28) 1}
+DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- EXPORTS All
+IMPORTS
+ -- from ITU-T Rec. X.501 | ISO/IEC 9594-2
+ authenticationFramework, basicAccessControl, certificateExtensions,
+ id-at, id-avc, id-mr, informationFramework, upperBounds
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ Attribute, ATTRIBUTE, AttributeType, Context, CONTEXT, MATCHING-RULE,
+ Name, objectIdentifierMatch, SupportedAttributes
+ FROM InformationFramework informationFramework
+ AttributeTypeAndValue
+ FROM BasicAccessControl basicAccessControl
+ -- from ITU-T Rec. X.509 | ISO/IEC 9594-8
+ AlgorithmIdentifier, CertificateSerialNumber, ENCRYPTED{}, HASH{},
+ SIGNED{}
+ FROM AuthenticationFramework authenticationFramework
+ GeneralName, KeyIdentifier
+ FROM CertificateExtensions certificateExtensions
+ ub-privacy-mark-length
+ FROM UpperBounds upperBounds;
+
+-- from GULS
+-- SECURITY-TRANSFORMATION, PROTECTION-MAPPING, PROTECTED
+-- FROM Notation { joint-iso-ccitt genericULS (20) modules (1) notation (1) }
+--dirSignedTransformation, KEY-INFORMATION
+-- FROM GulsSecurityTransformations { joint-iso-ccitt genericULS (20) modules (1)
+-- gulsSecurityTransformations (3) }
+-- signed
+-- FROM GulsSecurityTransformations { joint-iso-ccitt genericULS (20) modules (1)
+-- dirProtectionMappings (4) };
+-- The "signed" Protection Mapping and associated "dirSignedTransformations" imported
+-- from the Generic Upper Layers Security specification (ITU-T Rec. X.830 | ISO/IEC 11586-1)
+-- results in identical encoding as the same data type used with the SIGNED as defined in
+-- ITU-T REC. X.509 | ISO/IEC 9594-8
+-- The three statements below are provided temporarily to allow signed operations to be supported as in edition 3.
+OPTIONALLY-PROTECTED{Type} ::= CHOICE {unsigned Type,
+ signed SIGNED{Type}
+}
+
+OPTIONALLY-PROTECTED-SEQ{Type} ::= CHOICE {
+ unsigned Type,
+ signed [0] SIGNED{Type}
+}
+
+-- The following out-commented ASN.1 specification are know to be erroneous and are therefore deprecated.
+-- genEncryptedTransform {KEY-INFORMATION: SupportedKIClasses } SECURITY-TRANSFORMATION ::=
+-- {
+-- IDENTIFIER { enhancedSecurity gen-encrypted(2) }
+-- INITIAL-ENCODING-RULES { joint-iso-itu-t asn1(1) ber(1) }
+-- This default for initial encoding rules may be overridden
+-- using a static protected parameter (initEncRules).
+-- XFORMED-DATA-TYPE SEQUENCE {
+-- initEncRules OBJECT IDENTIFIER DEFAULT { joint-iso-itu-t asn1(1) ber(1) },
+-- encAlgorithm AlgorithmIdentifier OPTIONAL, -- -- Identifies the encryption algorithm,
+-- keyInformation SEQUENCE {
+-- kiClass KEY-INFORMATION.&kiClass ({SupportedKIClasses}),
+-- keyInfo KEY-INFORMATION.&KiType ({SupportedKIClasses} {@kiClass})
+-- } OPTIONAL,
+-- Key information may assume various formats, governed by supported members
+-- of the KEY-INFORMATION information object class (defined in ITU-T
+-- Rec. X.830 | ISO/IEC 11586-1)
+-- encData BIT STRING ( CONSTRAINED BY {
+-- the encData value must be generated following
+-- the procedure specified in 17.3.1-- -- })
+-- }
+-- }
+-- encrypted PROTECTION-MAPPING ::= {
+-- SECURITY-TRANSFORMATION { genEncryptedTransform } }
+-- signedAndEncrypt PROTECTION-MAPPING ::= {
+-- SECURITY-TRANSFORMATION { signedAndEncryptedTransform } }
+-- signedAndEncryptedTransform {KEY-INFORMATION: SupportedKIClasses}
+-- SECURITY-TRANSFORMATION ::= {
+-- IDENTIFIER { enhancedSecurity dir-encrypt-sign (1) }
+-- INITIAL-ENCODING-RULES { joint-iso-itu-t asn1 (1) ber-derived (2) distinguished-encoding (1) }
+-- XFORMED-DATA-TYPE
+-- PROTECTED
+-- {
+-- PROTECTED
+-- {
+-- ABSTRACT-SYNTAX.&Type,
+-- signed
+-- },
+-- encrypted
+-- }
+-- }
+-- OPTIONALLY-PROTECTED {ToBeProtected, PROTECTION-MAPPING:generalProtection} ::=
+-- CHOICE {
+-- toBeProtected ToBeProtected,
+--no DIRQOP specified for operation
+-- signed PROTECTED {ToBeProtected, signed},
+--DIRQOP is Signed
+-- protected [APPLICATION 0]
+-- PROTECTED { ToBeProtected, generalProtection } }
+--DIRQOP is other than Signed
+-- defaultDirQop ATTRIBUTE ::= {
+-- WITH SYNTAX OBJECT IDENTIFIER
+-- EQUALITY MATCHING RULE objectIdentifierMatch
+-- USAGE directoryOperation
+-- ID id-at-defaultDirQop }
+-- DIRQOP ::= CLASS
+-- This information object class is used to define the quality of protection
+-- required throughout directory operation.
+-- The Quality Of Protection can be signed, encrypted, signedAndEncrypt
+-- {
+-- &dirqop-Id OBJECT IDENTIFIER UNIQUE,
+-- &dirBindError-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dirErrors-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapReadArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapReadRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapCompareArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapCompareRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapListArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapListRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapSearchArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapSearchRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapAbandonArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapAbandonRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapAddEntryArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapAddEntryRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapRemoveEntryArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapRemoveEntryRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapModifyEntryArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapModifyEntryRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapModifyDNArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dapModifyDNRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dspChainedOp-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dispShadowAgreeInfo-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dispCoorShadowArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dispCoorShadowRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dispUpdateShadowArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dispUpdateShadowRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dispRequestShadowUpdateArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dispRequestShadowUpdateRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dopEstablishOpBindArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dopEstablishOpBindRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dopModifyOpBindArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dopModifyOpBindRes-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dopTermOpBindArg-QOP PROTECTION-MAPPING:protectionReqd,
+-- &dopTermOpBindRes-QOP PROTECTION-MAPPING:protectionReqd
+-- }
+-- WITH SYNTAX
+-- {
+-- DIRQOP-ID &dirqop-Id
+-- DIRECTORYBINDERROR-QOP &dirBindError-QOP
+-- DIRERRORS-QOP &dirErrors-QOP
+-- DAPREADARG-QOP &dapReadArg-QOP
+-- DAPREADRES-QOP &dapReadRes-QOP
+-- DAPCOMPAREARG-QOP &dapCompareArg-QOP
+-- DAPCOMPARERES-QOP &dapCompareRes-QOP
+-- DAPLISTARG-QOP &dapListArg-QOP
+-- DAPLISTRES-QOP &dapListRes-QOP
+-- DAPSEARCHARG-QOP &dapSearchArg-QOP
+-- DAPSEARCHRES-QOP &dapSearchRes-QOP
+-- DAPABANDONARG-QOP &dapAbandonArg-QOP
+-- DAPABANDONRES-QOP &dapAbandonRes-QOP
+-- DAPADDENTRYARG-QOP &dapAddEntryArg-QOP
+-- DAPADDENTRYRES-QOP &dapAddEntryRes-QOP
+-- DAPREMOVEENTRYARG-QOP &dapRemoveEntryArg-QOP
+-- DAPREMOVEENTRYRES-QOP &dapRemoveEntryRes-QOP
+-- DAPMODIFYENTRYARG-QOP &dapModifyEntryArg-QOP
+-- DAPMODIFYENTRYRES-QOP &dapModifyEntryRes-QOP
+-- DAPMODIFYDNARG-QOP &dapModifyDNArg-QOP
+-- DAPMODIFYDNRES-QOP &dapModifyDNRes-QOP
+-- DSPCHAINEDOP-QOP &dspChainedOp-QOP
+-- DISPSHADOWAGREEINFO-QOP &dispShadowAgreeInfo-QOP
+-- DISPCOORSHADOWARG-QOP &dispCoorShadowArg-QOP
+-- DISPCOORSHADOWRES-QOP &dispCoorShadowRes-QOP
+-- DISPUPDATESHADOWARG-QOP &dispUpdateShadowArg-QOP
+-- DISPUPDATESHADOWRES-QOP &dispUpdateShadowRes-QOP
+-- DISPREQUESTSHADOWUPDATEARG-QOP &dispRequestShadowUpdateArg-QOP
+-- DISPREQUESTSHADOWUPDATERES-QOP &dispRequestShadowUpdateRes-QOP
+-- DOPESTABLISHOPBINDARG-QOP &dopEstablishOpBindArg-QOP
+-- DOPESTABLISHOPBINDRES-QOP &dopEstablishOpBindRes-QOP
+-- DOPMODIFYOPBINDARG-QOP &dopModifyOpBindArg-QOP
+-- DOPMODIFYOPBINDRES-QOP &dopModifyOpBindRes-QOP
+-- DOPTERMINATEOPBINDARG-QOP &dopTermOpBindArg-QOP
+-- DOPTERMINATEOPBINDRES-QOP &dopTermOpBindRes-QOP
+-- }
+attributeValueSecurityLabelContext CONTEXT ::= {
+ WITH SYNTAX
+ SignedSecurityLabel -- At most one security label context can be assigned to an
+ -- attribute value
+ ID id-avc-attributeValueSecurityLabelContext
+}
+
+SignedSecurityLabel ::=
+ SIGNED
+ {SEQUENCE {attHash HASH{AttributeTypeAndValue},
+ issuer Name OPTIONAL, -- name of labelling authority
+ keyIdentifier KeyIdentifier OPTIONAL,
+ securityLabel SecurityLabel}}
+
+SecurityLabel ::= SET {
+ security-policy-identifier SecurityPolicyIdentifier OPTIONAL,
+ security-classification SecurityClassification OPTIONAL,
+ privacy-mark PrivacyMark OPTIONAL,
+ security-categories SecurityCategories OPTIONAL
+}(ALL EXCEPT ({ --none, at least one component shall be presen--}))
+
+SecurityPolicyIdentifier ::= OBJECT IDENTIFIER
+
+SecurityClassification ::= INTEGER {
+ unmarked(0), unclassified(1), restricted(2), confidential(3), secret(4),
+ top-secret(5)}
+
+PrivacyMark ::= PrintableString(SIZE (1..ub-privacy-mark-length))
+
+SecurityCategories ::= SET SIZE (1..MAX) OF SecurityCategory
+
+clearance ATTRIBUTE ::= {WITH SYNTAX Clearance
+ ID id-at-clearance
+}
+
+Clearance ::= SEQUENCE {
+ policyId OBJECT IDENTIFIER,
+ classList ClassList DEFAULT {unclassified},
+ securityCategories SET SIZE (1..MAX) OF SecurityCategory OPTIONAL
+}
+
+ClassList ::= BIT STRING {
+ unmarked(0), unclassified(1), restricted(2), confidential(3), secret(4),
+ topSecret(5)}
+
+SecurityCategory ::= SEQUENCE {
+ type [0] SECURITY-CATEGORY.&id({SecurityCategoriesTable}),
+ value [1] EXPLICIT SECURITY-CATEGORY.&Type({SecurityCategoriesTable}{@type})
+}
+
+SECURITY-CATEGORY ::= TYPE-IDENTIFIER
+
+SecurityCategoriesTable SECURITY-CATEGORY ::=
+ {...}
+
+attributeIntegrityInfo ATTRIBUTE ::= {
+ WITH SYNTAX AttributeIntegrityInfo
+ ID id-at-attributeIntegrityInfo
+}
+
+AttributeIntegrityInfo ::=
+ SIGNED
+ {SEQUENCE {scope Scope, -- Identifies the attributes protected
+ signer Signer OPTIONAL, -- Authority or data originators name
+ attribsHash AttribsHash}} -- Hash value of protected attributes
+
+Signer ::= CHOICE {
+ thisEntry [0] EXPLICIT ThisEntry,
+ thirdParty [1] SpecificallyIdentified
+}
+
+ThisEntry ::= CHOICE {onlyOne NULL,
+ specific IssuerAndSerialNumber
+}
+
+IssuerAndSerialNumber ::= SEQUENCE {
+ issuer Name,
+ serial CertificateSerialNumber
+}
+
+SpecificallyIdentified ::= SEQUENCE {
+ name GeneralName,
+ issuer GeneralName OPTIONAL,
+ serial CertificateSerialNumber OPTIONAL
+}
+(WITH COMPONENTS {
+ ...,
+ issuer PRESENT,
+ serial PRESENT
+ } | (WITH COMPONENTS {
+ ...,
+ issuer ABSENT,
+ serial ABSENT
+ }))
+
+Scope ::= CHOICE {
+ wholeEntry [0] NULL, -- Signature protects all attribute values in this entry
+ selectedTypes [1] SelectedTypes
+ -- Signature protects all attribute values of the selected attribute types
+}
+
+SelectedTypes ::= SEQUENCE SIZE (1..MAX) OF AttributeType
+
+AttribsHash ::= HASH{SEQUENCE SIZE (1..MAX) OF Attribute}
+
+-- Attribute type and values with associated context values for the selected Scope
+attributeValueIntegrityInfoContext CONTEXT ::= {
+ WITH SYNTAX AttributeValueIntegrityInfo
+ ID id-avc-attributeValueIntegrityInfoContext
+}
+
+AttributeValueIntegrityInfo ::=
+ SIGNED
+ {SEQUENCE {signer Signer OPTIONAL, -- Authority or data originators name
+ aVIHash AVIHash}} -- Hash value of protected attribute
+
+AVIHash ::= HASH{AttributeTypeValueContexts}
+
+-- Attribute type and value with associated context values
+AttributeTypeValueContexts ::= SEQUENCE {
+ type ATTRIBUTE.&id({SupportedAttributes}),
+ value ATTRIBUTE.&Type({SupportedAttributes}{@type}),
+ contextList SET SIZE (1..MAX) OF Context OPTIONAL
+}
+
+-- The following out-commented ASN.1 specification are know to be erroneous and are therefore deprecated.
+-- EncryptedAttributeSyntax {AttributeSyntax} ::= SEQUENCE {
+-- keyInfo SEQUENCE OF KeyIdOrProtectedKey,
+-- encAlg AlgorithmIdentifier,
+-- encValue ENCRYPTED { AttributeSyntax } }
+-- KeyIdOrProtectedKey ::= SEQUENCE {
+-- keyIdentifier [0] KeyIdentifier OPTIONAL,
+-- protectedKeys [1] ProtectedKey OPTIONAL }
+-- At least one key identifier or protected key must be present
+-- ProtectedKey ::= SEQUENCE {
+-- authReaders AuthReaders,-- -- if absent, use attribute in authorized reader entry
+-- keyEncAlg AlgorithmIdentifier OPTIONAL, -- -- algorithm to encrypt encAttrKey
+-- encAttKey EncAttKey }
+-- confidentiality key protected with authorized user's
+-- protection mechanism
+-- AuthReaders ::= SEQUENCE OF Name
+-- EncAttKey ::= PROTECTED {SymmetricKey, keyProtection}
+-- SymmetricKey ::= BIT STRING
+-- keyProtection PROTECTION-MAPPING ::= {
+-- SECURITY-TRANSFORMATION {genEncryption} }
+-- confKeyInfo ATTRIBUTE ::= {
+-- WITH SYNTAX ConfKeyInfo
+-- EQUALITY MATCHING RULE readerAndKeyIDMatch
+-- ID id-at-confKeyInfo }
+-- ConfKeyInfo ::= SEQUENCE {
+-- keyIdentifier KeyIdentifier,
+-- protectedKey ProtectedKey }
+-- readerAndKeyIDMatch MATCHING-RULE ::= {
+-- SYNTAX ReaderAndKeyIDAssertion
+-- ID id-mr-readerAndKeyIDMatch }
+-- ReaderAndKeyIDAssertion ::= SEQUENCE {
+-- keyIdentifier KeyIdentifier,
+-- authReaders AuthReaders OPTIONAL }
+-- Object identifier assignments
+-- attributes
+id-at-clearance OBJECT IDENTIFIER ::=
+ {id-at 55}
+
+-- id-at-defaultDirQop OBJECT IDENTIFIER ::= {id-at 56}
+id-at-attributeIntegrityInfo OBJECT IDENTIFIER ::=
+ {id-at 57}
+
+-- id-at-confKeyInfo OBJECT IDENTIFIER ::= {id-at 60}
+-- matching rules
+-- id-mr-readerAndKeyIDMatch OBJECT IDENTIFIER ::= {id-mr 43}
+-- contexts
+id-avc-attributeValueSecurityLabelContext OBJECT IDENTIFIER ::=
+ {id-avc 3}
+
+id-avc-attributeValueIntegrityInfoContext OBJECT IDENTIFIER ::= {id-avc 4}
+
+END -- EnhancedSecurity
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/External-References.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/External-References.asn1
new file mode 100644
index 0000000000..9a7d4936a6
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/External-References.asn1
@@ -0,0 +1,49 @@
+-- Module External-References (T.422:08/1995)
+
+External-References {2 8 1 12 1} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+EXPORTS External-References-List, Reference-Name;
+
+IMPORTS
+ Location-Expression
+ FROM Location-Expressions {2 8 1 12 0}
+ -- see 7.4
+ DOR
+ FROM DOR-definition {2 4 0}
+ -- see ISO/IEC 10031-2
+ DistinguishedName
+ FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+ informationFramework(1) 3};
+
+-- see ITU-T Rec. X.501 � ISO/IEC 9594-2
+External-References-List ::=
+ SET OF
+ SET {reference-name [1] Reference-Name,
+ external-entity [2] External-Entity,
+ location-rule [3] Location-Expression OPTIONAL}
+
+Reference-Name ::= PrintableString
+
+External-Entity ::= CHOICE {
+ external-info [0] External-Information-Name,
+ object-id [1] OBJECT IDENTIFIER,
+ dor [2] DOR,
+ distinguished [3] DistinguishedName,
+ associated-info [4] Associated-Information-Name
+}
+
+External-Information-Name ::= SEQUENCE {
+ string [0] PrintableString,
+ object-id [1] OBJECT IDENTIFIER OPTIONAL
+}
+
+Associated-Information-Name ::= SEQUENCE {
+ string [0] PrintableString,
+ object-id [1] OBJECT IDENTIFIER OPTIONAL
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/GULSProtectionMappings.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/GULSProtectionMappings.asn1
new file mode 100644
index 0000000000..9b6a426ca2
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/GULSProtectionMappings.asn1
@@ -0,0 +1,71 @@
+-- Module GULSProtectionMappings (X.830:04/1995)
+
+GULSProtectionMappings {joint-iso-itu-t genericULS(20) modules(1)
+ gulsProtectionMappings(5)} DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+-- These protection mappings are more versatile that the
+-- preceding protection mappings which were specifically designed
+-- to generate identical bit-encodings as the Directory
+-- Authentication Framework parameterized types.
+-- EXPORTS All
+IMPORTS
+ notation, gulsSecurityTransformations
+ FROM ObjectIdentifiers {joint-iso-itu-t genericULS(20) modules(1)
+ objectIdentifiers(0)}
+ PROTECTION-MAPPING
+ FROM Notation notation
+ dirEncryptedTransformation, gulsSignedTransformation{},
+ gulsSignatureTransformation, symmetricKeyInformation,
+ asymmetricKeyInformation
+ FROM GulsSecurityTransformations gulsSecurityTransformations;
+
+-- **********************************
+-- confidentiality Protection Mapping
+-- **********************************
+-- This protection mapping enables the notation
+-- PROTECTED {BaseType, confidentiality}
+-- to map to either dirEncryptedTransformation or to no transformation
+-- at the choice of the encoding system, dependent upon local security
+-- policy and other local environment considerations.
+-- Security Service: confidentiality
+confidentiality PROTECTION-MAPPING ::= {
+ SECURITY-TRANSFORMATION {dirEncryptedTransformation}
+ BYPASS-PERMITTED TRUE
+}
+
+-- ******************************
+-- GULS signed Protection Mapping
+-- ******************************
+-- This protection mapping causes the notation
+-- PROTECTED {BaseType, signed}
+-- to map to the gulsSignedTransformation.
+-- Security Service: data origin authentication, data integrity and
+-- (in certain situations) non-repudiation.
+signed PROTECTION-MAPPING ::= {
+ SECURITY-TRANSFORMATION
+ {gulsSignedTransformation
+ {{symmetricKeyInformation | asymmetricKeyInformation}}}
+}
+
+-- *********************************
+-- GULS signature Protection Mapping
+-- *********************************
+-- This protection mapping causes the notation
+-- PROTECTED {BaseType, signature}
+-- to map to the gulsSignatureTransformation.
+-- Security Service: data origin authentication, data integrity and
+-- (in certain situations) non-repudiation.
+signature PROTECTION-MAPPING ::= {
+ SECURITY-TRANSFORMATION
+ {gulsSignatureTransformation
+ {{symmetricKeyInformation | asymmetricKeyInformation}}}
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
+
+-- content of stack:
+--
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/GenericProtectingTransferSyntax.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/GenericProtectingTransferSyntax.asn1
new file mode 100644
index 0000000000..c59451dcdb
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/GenericProtectingTransferSyntax.asn1
@@ -0,0 +1,66 @@
+-- Module GenericProtectingTransferSyntax (X.833:04/1995)
+
+GenericProtectingTransferSyntax {joint-iso-itu-t genericULS(20) modules(1)
+ genericProtectingTransferSyntax(7)} DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+EXPORTS SyntaxStructure{};
+
+IMPORTS
+ notation
+ FROM ObjectIdentifiers {joint-iso-itu-t genericULS(20) modules(1)
+ objectIdentifiers(0)}
+ SECURITY-TRANSFORMATION, ExternalSAID
+ FROM Notation notation;
+
+SyntaxStructure{SECURITY-TRANSFORMATION:ValidSTs} ::= CHOICE {
+ firstPdvExplicit FirstPdvExplicit{{ValidSTs}},
+ -- To be used on the first PDV of a protecting presentation
+ -- context, or a protected PDV sent outside a presentation
+ -- context, in the case of a presentation-context-bound or
+ -- single-item-bound security association.
+ firstPdvExternal FirstPdvExternal{{ValidSTs}},
+ -- To be used on the first PDV of a protecting presentation
+ -- context, or a protected PDV sent outside a presentation
+ -- context, in the case of an externally established
+ -- security association.
+ subsequentPdv SubsequentPdv{{ValidSTs}}
+ -- To be used on a subsequent PDV in a protecting
+ -- presentation context.
+}
+
+FirstPdvExplicit{SECURITY-TRANSFORMATION:ValidSTs} ::= SEQUENCE {
+ transformationId SECURITY-TRANSFORMATION.&sT-Identifier({ValidSTs}),
+ staticUnprotParm
+ SECURITY-TRANSFORMATION.&StaticUnprotectedParm
+ ({ValidSTs}{@transformationId}) OPTIONAL,
+ dynamicUnprotParm
+ SECURITY-TRANSFORMATION.&DynamicUnprotectedParm
+ ({ValidSTs}{@transformationId}) OPTIONAL,
+ xformedData
+ SECURITY-TRANSFORMATION.&XformedDataType({ValidSTs}{@transformationId})
+}
+
+FirstPdvExternal{SECURITY-TRANSFORMATION:ValidSTs} ::= SEQUENCE {
+ externalSAID ExternalSAID,
+ dynamicUnprotParm
+ SECURITY-TRANSFORMATION.&DynamicUnprotectedParm({ValidSTs}) OPTIONAL,
+ -- Actual member of ValidSTs is as implied
+ -- by externalSAID
+ xformedData SECURITY-TRANSFORMATION.&XformedDataType({ValidSTs})
+ -- Actual member of ValidSTs is as implied
+ -- by externalSAID
+}
+
+SubsequentPdv{SECURITY-TRANSFORMATION:ValidSTs} ::= SEQUENCE {
+ dynamicUnprotParm
+ SECURITY-TRANSFORMATION.&DynamicUnprotectedParm({ValidSTs}) OPTIONAL,
+ xformedData SECURITY-TRANSFORMATION.&XformedDataType({ValidSTs})
+ -- Actual member of ValidSTs is implied
+ -- by presentation context
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Coding-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Coding-Attributes.asn1
new file mode 100644
index 0000000000..60acbb3b5c
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Coding-Attributes.asn1
@@ -0,0 +1,16 @@
+-- Module Geo-Gr-Coding-Attributes (T.418:03/1993)
+
+Geo-Gr-Coding-Attributes {2 8 1 8 3} DEFINITIONS ::=
+BEGIN
+
+EXPORTS Geo-Gr-Coding-Attributes;
+
+Geo-Gr-Coding-Attributes ::= SET {
+}
+
+-- no geometric graphics coding attributes are defined
+-- in this Specification
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Presentation-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Presentation-Attributes.asn1
new file mode 100644
index 0000000000..84c1ee9851
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Presentation-Attributes.asn1
@@ -0,0 +1,265 @@
+-- Module Geo-Gr-Presentation-Attributes (T.418:03/1993)
+
+Geo-Gr-Presentation-Attributes {2 8 1 8 2} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+EXPORTS
+ Geometric-Graphics-Attributes, Line-Rendition, Marker-Rendition,
+ Text-Rendition, Filled-Area-Rendition, Edge-Rendition,
+ Colour-Representations, Transparency-Specification,
+ Transformation-Specification, Region-Of-Interest-Specification,
+ Picture-Orientation, Picture-Dimensions, ASF-Type, VDC-Pair,
+ One-Of-Four-Angles;
+
+Geometric-Graphics-Attributes ::= SET {
+ line-rendition [1] Line-Rendition OPTIONAL,
+ marker-rendition [2] Marker-Rendition OPTIONAL,
+ text-rendition [3] Text-Rendition OPTIONAL,
+ filled-area-rendition [4] Filled-Area-Rendition OPTIONAL,
+ edge-rendition [5] Edge-Rendition OPTIONAL,
+ colour-representations [6] Colour-Representations OPTIONAL,
+ transparency-specification [7] Transparency-Specification OPTIONAL,
+ transformation-specification [8] Transformation-Specification OPTIONAL,
+ region-of-interest-specification
+ [9] Region-Of-Interest-Specification OPTIONAL,
+ picture-orientation [10] Picture-Orientation OPTIONAL,
+ picture-dimensions [11] Picture-Dimensions OPTIONAL
+}
+
+ASF-Type ::= ENUMERATED {bundled(0), individual(1)}
+
+Colour ::= CHOICE {indexed [0] INTEGER,
+ direct [1] RGB
+}
+
+RGB ::= SEQUENCE {red REAL,
+ green REAL,
+ blue REAL
+}
+
+SpecificationMode ::= ENUMERATED {absolute(0), scaled(1)}
+
+Line-Rendition ::= SEQUENCE {
+ line-width-specification-mode [0] SpecificationMode OPTIONAL,
+ line-bundle-index [1] INTEGER OPTIONAL,
+ line-type [2] INTEGER OPTIONAL,
+ line-width [3] Scaled-or-Absolute OPTIONAL,
+ line-colour [4] Colour OPTIONAL,
+ line-aspect-source-flags
+ [5] SEQUENCE {line-type-asf ASF-Type,
+ line-width-asf ASF-Type,
+ line-colour-asf ASF-Type} OPTIONAL,
+ line-bundle-specifications
+ [6] SEQUENCE OF
+ SEQUENCE {line-bundle-index INTEGER,
+ line-bundle-representation
+ SEQUENCE {line-type INTEGER,
+ line-width Scaled-or-Absolute,
+ line-colour Colour}} OPTIONAL
+}
+
+Scaled-or-Absolute ::= CHOICE {
+ absolute
+ [0] CHOICE { -- absolute--vdc-int [0] INTEGER, -- for VDC Type INTEGER--
+ vdc-real [1] REAL}, -- for VDC Type REAL
+ scaled [1] REAL
+} -- scaled
+
+Marker-Rendition ::= SEQUENCE {
+ marker-size-specification-mode [0] SpecificationMode OPTIONAL,
+ marker-bundle-index [1] INTEGER OPTIONAL,
+ marker-type [2] INTEGER OPTIONAL,
+ marker-size [3] Scaled-or-Absolute OPTIONAL,
+ marker-colour [4] Colour OPTIONAL,
+ marker-aspect-source-flags
+ [5] SEQUENCE {marker-type-asf ASF-Type,
+ marker-size-asf ASF-Type,
+ marker-colour-asf ASF-Type} OPTIONAL,
+ marker-bundle-specifications
+ [6] SEQUENCE OF
+ SEQUENCE {marker-bundle-index INTEGER,
+ marker-bundle-representation
+ SEQUENCE {marker-type INTEGER,
+ marker-size Scaled-or-Absolute,
+ marker-colour Colour}} OPTIONAL
+}
+
+Text-Rendition ::= SEQUENCE {
+ font-list [0] SEQUENCE OF GeneralString OPTIONAL,
+ character-set-list
+ [1] SEQUENCE {character-set-type
+ ENUMERATED {n94-char-sets(0), n96-char-sets(1),
+ n94-char-multibyte-sets(2),
+ n96-char-multibyte-sets(3), comp-code(4)},
+ designation-sequence-tail GeneralString} OPTIONAL,
+ character-coding-announcer
+ [2] ENUMERATED {basic-7-bit(0), basic-8-bit(1), extended-7-bit(2),
+ extended-8-bit(3)} OPTIONAL,
+ text-bundle-index [3] INTEGER OPTIONAL,
+ text-font-index [4] INTEGER OPTIONAL,
+ text-precision
+ [5] ENUMERATED {string(0), character(1), stroke(2)} OPTIONAL,
+ character-expansion-factor [6] REAL OPTIONAL,
+ character-spacing [7] REAL OPTIONAL,
+ text-colour [8] Colour OPTIONAL,
+ character-height [9] VDC-Value OPTIONAL,
+ character-orientation [10] SEQUENCE {a VDC-Pair,
+ b VDC-Pair} OPTIONAL,
+ text-path
+ [11] ENUMERATED {right(0), left(1), up(2), down(3)} OPTIONAL,
+ text-alignment
+ [12] SEQUENCE {horizontal-alignment
+ ENUMERATED {normal-horizontal(0), left(1), centre(2),
+ right(3), continuous-horizontal(4)},
+ vertical-alignment
+ ENUMERATED {normal-vertical(0), top(1), cap(2),
+ half(3), base(4), bottom(5),
+ continuous-vertical(6)},
+ continuous-horizontal-alignment [0] REAL OPTIONAL,
+ continuous-vertical-alignment [1] REAL OPTIONAL
+ } OPTIONAL,
+ character-set-index [13] INTEGER OPTIONAL,
+ alternate-character-set-index [14] INTEGER OPTIONAL,
+ text-aspect-source-flags
+ [15] SEQUENCE {text-font-asf ASF-Type,
+ text-precision-asf ASF-Type,
+ character-expansion-factor-asf ASF-Type,
+ character-spacing-asf ASF-Type,
+ text-colour-asf ASF-Type} OPTIONAL,
+ text-bundle-specifications
+ [16] SEQUENCE OF
+ SEQUENCE {text-bundle-index INTEGER,
+ text-bundle-representation
+ SEQUENCE {text-font-index INTEGER,
+ text-precision
+ ENUMERATED {string(0), character(1),
+ stroke(2)},
+ character-expansion-factor REAL,
+ character-spacing REAL,
+ text-colour Colour}
+ } OPTIONAL
+}
+
+VDC-Value ::= CHOICE {a INTEGER,
+ b REAL
+}
+
+VDC-Pair ::= SEQUENCE {x VDC-Value,
+ y VDC-Value
+}
+
+Filled-Area-Rendition ::= SEQUENCE {
+ fill-bundle-index [1] INTEGER OPTIONAL,
+ interior-style
+ [2] ENUMERATED {hollow(0), solid(1), pattern(2), hatch(3), empty(4)}
+ OPTIONAL,
+ fill-colour [3] Colour OPTIONAL,
+ hatch-index [4] INTEGER OPTIONAL,
+ pattern-index [5] INTEGER OPTIONAL,
+ fill-reference-point [6] VDC-Pair OPTIONAL,
+ pattern-size
+ [7] SEQUENCE {height-x-component VDC-Value,
+ height-y-component VDC-Value,
+ width-x-component VDC-Value,
+ width-y-component VDC-Value} OPTIONAL,
+ pattern-table-specifications [8] SEQUENCE OF PatternTableElement OPTIONAL,
+ fill-aspect-source-flags
+ [9] SEQUENCE {interior-style-asf ASF-Type,
+ fill-colour-asf ASF-Type,
+ hatch-index-asf ASF-Type,
+ pattern-index-asf ASF-Type} OPTIONAL,
+ fill-bundle-specifications
+ [10] SEQUENCE {fill-bundle-index INTEGER,
+ fill-bundle-representation
+ SEQUENCE {interior-style
+ ENUMERATED {hollow(0), solid(1), pattern(2),
+ hatch(3), empty(4)},
+ fill-colour Colour,
+ hatch-index INTEGER,
+ patttern-index INTEGER}} OPTIONAL
+}
+
+PatternTableElement ::= SEQUENCE {
+ pattern-table-index INTEGER,
+ nx INTEGER,
+ ny INTEGER,
+ local-colour-precision INTEGER,
+ colour SEQUENCE OF Colour
+}
+
+Edge-Rendition ::= SEQUENCE {
+ edge-width-spec-mode [0] SpecificationMode OPTIONAL,
+ edge-visibility [1] On-or-Off OPTIONAL,
+ edge-bundle-index [2] INTEGER OPTIONAL,
+ edge-type [3] INTEGER OPTIONAL,
+ edge-width [4] Scaled-or-Absolute OPTIONAL,
+ edge-colour [5] Colour OPTIONAL,
+ edge-aspect-source-flags
+ [6] SEQUENCE {edge-type-asf ASF-Type,
+ edge-width-asf ASF-Type,
+ edge-colour-asf ASF-Type} OPTIONAL,
+ edge-bundle-specifications
+ [7] SEQUENCE OF
+ SEQUENCE {edge-bundle-index INTEGER,
+ edge-bundle-representation
+ SEQUENCE {edge-type INTEGER,
+ edge-width Scaled-or-Absolute,
+ edge-colour Colour}} OPTIONAL
+}
+
+On-or-Off ::= ENUMERATED {off(0), on(1)}
+
+Colour-Representations ::= SEQUENCE {
+ background-colour [0] RGB OPTIONAL,
+ colour-table-specification
+ [1] SEQUENCE OF
+ SEQUENCE {starting-index INTEGER,
+ colour-list SEQUENCE OF RGB} OPTIONAL
+}
+
+Transparency-Specification ::= SEQUENCE {
+ transparency [0] On-or-Off OPTIONAL,
+ auxiliary-colour [1] Colour OPTIONAL
+}
+
+Transformation-Specification ::= SEQUENCE {
+ vdc-extent [0] Rectangle OPTIONAL,
+ clip-rectangle [1] Rectangle OPTIONAL,
+ clip-indicator [2] On-or-Off OPTIONAL
+}
+
+Rectangle ::= SEQUENCE {first-corner VDC-Pair,
+ second-corner VDC-Pair
+}
+
+Region-Of-Interest-Specification ::= CHOICE {
+ automatic [0] NULL,
+ rectangle [1] SEQUENCE {a VDC-Pair,
+ b VDC-Pair}
+}
+
+Picture-Orientation ::= One-Of-Four-Angles
+
+One-Of-Four-Angles ::= ENUMERATED {d0(0), d90(1), d180(2), d270(3)}
+
+Picture-Dimensions ::= CHOICE {
+ width-controlled
+ [0] SEQUENCE {minimum-width INTEGER,
+ preferred-width INTEGER},
+ height-controlled
+ [1] SEQUENCE {minimum-height INTEGER,
+ preferred-height INTEGER},
+ area-controlled
+ [2] SEQUENCE {minimum-width INTEGER,
+ preferred-width INTEGER,
+ minimum-height INTEGER,
+ preferred-height INTEGER,
+ aspect-ratio-flag ENUMERATED {fixed(0), variable(1)}
+ },
+ automatic [3] NULL
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Profile-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Profile-Attributes.asn1
new file mode 100644
index 0000000000..28daa467e1
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Geo-Gr-Profile-Attributes.asn1
@@ -0,0 +1,44 @@
+-- Module Geo-Gr-Profile-Attributes (T.418:03/1993)
+
+Geo-Gr-Profile-Attributes {2 8 1 8 4} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+EXPORTS
+ Geo-Gr-Presentation-Feature, Geo-Gr-Coding-Attribute, Geo-Gr-Content-Defaults;
+
+IMPORTS
+ Line-Rendition, Marker-Rendition, Text-Rendition, Filled-Area-Rendition,
+ Edge-Rendition, Colour-Representations, Transparency-Specification,
+ Transformation-Specification, Region-Of-Interest-Specification,
+ Picture-Orientation, Picture-Dimensions, ASF-Type, VDC-Pair,
+ One-Of-Four-Angles
+ FROM Geo-Gr-Presentation-Attributes {2 8 1 8 2}; -- see 10.2
+
+Geo-Gr-Presentation-Feature ::= CHOICE {
+ null NULL,
+ text-rendition [3] Text-Rendition
+}
+
+Geo-Gr-Coding-Attribute ::= NULL
+
+-- no non-basic values are defined for the
+-- geometric graphics coding attributes in this Specification
+Geo-Gr-Content-Defaults ::= SET {
+ line-rendition [1] Line-Rendition OPTIONAL,
+ marker-rendition [2] Marker-Rendition OPTIONAL,
+ text-rendition [3] Text-Rendition OPTIONAL,
+ filled-area-rendition [4] Filled-Area-Rendition OPTIONAL,
+ edge-rendition [5] Edge-Rendition OPTIONAL,
+ colour-representations [6] Colour-Representations OPTIONAL,
+ transparency-specification [7] Transparency-Specification OPTIONAL,
+ transformation-specification [8] Transformation-Specification OPTIONAL,
+ region-of-interest-specification
+ [9] Region-Of-Interest-Specification OPTIONAL,
+ picture-orientation [10] Picture-Orientation OPTIONAL,
+ picture-dimensions [11] Picture-Dimensions OPTIONAL
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/GulsSecurityExchanges.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/GulsSecurityExchanges.asn1
new file mode 100644
index 0000000000..336b824174
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/GulsSecurityExchanges.asn1
@@ -0,0 +1,79 @@
+-- Module GulsSecurityExchanges (X.830:04/1995)
+
+GulsSecurityExchanges {joint-iso-itu-t genericULS(20) modules(1)
+ gulsSecurityExchanges(2)} DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+-- EXPORTS All
+IMPORTS
+ securityExchanges, notation
+ FROM ObjectIdentifiers {joint-iso-itu-t genericULS(20) modules(1)
+ objectIdentifiers(0)}
+ SECURITY-EXCHANGE, SEC-EXCHG-ITEM, SE-ERROR
+ FROM Notation notation
+ Credentials, SecurityProblem
+ FROM DirectoryAbstractService {joint-iso-itu-t ds(5) module(1)
+ directoryAbstractService(2) 3};
+
+-- *******************************************
+-- Directory Authentication Exchange (One-way)
+-- *******************************************
+dirAuthenticationOneWay SECURITY-EXCHANGE ::= {
+ SE-ITEMS {credentials}
+ IDENTIFIER global:{securityExchanges dir-authent-one-way(1)}
+}
+
+credentials SEC-EXCHG-ITEM ::= {
+ ITEM-TYPE DirectoryAbstractService.Credentials
+ ITEM-ID 1
+}
+
+-- *******************************************
+-- Directory Authentication Exchange (Two-way)
+-- *******************************************
+dirAuthenticationTwoWay SECURITY-EXCHANGE ::= {
+ SE-ITEMS {initiatorCredentials | responderCredentials}
+ IDENTIFIER global:{securityExchanges dir-authent-two-way(2)}
+}
+
+initiatorCredentials SEC-EXCHG-ITEM ::= {
+ ITEM-TYPE DirectoryAbstractService.Credentials
+ ITEM-ID 1
+ ERRORS {authenticationFailure}
+}
+
+responderCredentials SEC-EXCHG-ITEM ::= {
+ ITEM-TYPE DirectoryAbstractService.Credentials
+ ITEM-ID 2
+}
+
+authenticationFailure SE-ERROR ::= {
+ PARAMETER DirectoryAbstractService.SecurityProblem
+ ERROR-CODE local:1
+}
+
+-- ***************************
+-- Simple Negotiation Exchange
+-- ***************************
+simpleNegotiationSE SECURITY-EXCHANGE ::= {
+ SE-ITEMS {offeredIds | acceptedIds}
+ IDENTIFIER global:{securityExchanges simple-negotiation-se(3)}
+}
+
+offeredIds SEC-EXCHG-ITEM ::= {ITEM-TYPE Negotiation-SEI
+ ITEM-ID 1
+}
+
+acceptedIds SEC-EXCHG-ITEM ::= {ITEM-TYPE Negotiation-SEI
+ ITEM-ID 2
+}
+
+Negotiation-SEI ::= SEQUENCE OF OBJECT IDENTIFIER
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
+
+-- content of stack:
+--
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/GulsSecurityTransformations.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/GulsSecurityTransformations.asn1
new file mode 100644
index 0000000000..db2725c37d
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/GulsSecurityTransformations.asn1
@@ -0,0 +1,212 @@
+-- Module GulsSecurityTransformations (X.830:04/1995)
+
+GulsSecurityTransformations {joint-iso-itu-t genericULS(20) modules(1)
+ gulsSecurityTransformations(3)} DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+-- EXPORTS All
+IMPORTS
+ securityTransformations, notation
+ FROM ObjectIdentifiers {joint-iso-itu-t genericULS(20) modules(1)
+ objectIdentifiers(0)}
+ SECURITY-TRANSFORMATION, SecurityIdentity
+ FROM Notation notation
+ AlgorithmIdentifier
+ FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
+ authenticationFramework(7) 3};
+
+-- ***************************************
+-- Notation for specifying key information
+-- ***************************************
+KEY-INFORMATION ::=
+ CLASS
+ -- This information object class definition is for use when
+ -- specifying key information relating to particular classes
+ -- of protection mechanisms (e.g. symmetric, asymmetric).
+ -- It may be useful in defining various security transformations.
+ {
+ &kiClass CHOICE {local INTEGER,
+ -- local objects can only be defined within this
+ -- ASN.1 module.
+ global OBJECT IDENTIFIER
+ -- global objects are defined elsewhere
+ } UNIQUE,
+ &KiType
+}WITH SYNTAX {KEY-INFO-CLASS &kiClass
+ KEY-INFO-TYPE &KiType
+}
+
+symmetricKeyInformation KEY-INFORMATION ::= {
+ KEY-INFO-CLASS local:0
+ KEY-INFO-TYPE
+ SEQUENCE {entityId SecurityIdentity,
+ keyIdentifier INTEGER}
+}
+
+asymmetricKeyInformation KEY-INFORMATION ::= {
+ KEY-INFO-CLASS local:1
+ KEY-INFO-TYPE
+ SEQUENCE {issuerCAName SecurityIdentity OPTIONAL,
+ certSerialNumber INTEGER OPTIONAL,
+ signerName SecurityIdentity OPTIONAL,
+ keyIdentifier BIT STRING OPTIONAL}
+}
+
+-- *******************************************
+-- Directory ENCRYPTED Security Transformation
+-- *******************************************
+dirEncryptedTransformation SECURITY-TRANSFORMATION ::= {
+ IDENTIFIER {securityTransformations dir-encrypted(1)}
+ -- This transformation transforms a string of octets to a
+ -- new bit string using an encipherment process.
+ INITIAL-ENCODING-RULES {joint-iso-itu-t asn1(1) ber(1)}
+ XFORMED-DATA-TYPE BIT STRING
+}
+
+-- ****************************************
+-- Directory SIGNED Security Transformation
+-- ****************************************
+dirSignedTransformation SECURITY-TRANSFORMATION ::= {
+ IDENTIFIER {securityTransformations dir-signed(2)}
+ INITIAL-ENCODING-RULES
+ {joint-iso-itu-t asn1(1) ber-derived(2) distinguished-encoding(1)}
+ XFORMED-DATA-TYPE
+ SEQUENCE {toBeSigned
+ ABSTRACT-SYNTAX.&Type
+ (CONSTRAINED BY {
+
+ -- this type is constrained to being the to-be-signed type -- }),
+ algorithmId AlgorithmIdentifier,
+ -- of the algorithms used to compute the signature
+ encipheredHash BIT STRING}
+}
+
+-- *******************************************
+-- Directory SIGNATURE Security Transformation
+-- *******************************************
+dirSignatureTransformation SECURITY-TRANSFORMATION ::= {
+ IDENTIFIER {securityTransformations dir-signature(3)}
+ INITIAL-ENCODING-RULES
+ {joint-iso-itu-t asn1(1) ber-derived(2) distinguished-encoding(1)}
+ XFORMED-DATA-TYPE
+ SEQUENCE {algorithmId AlgorithmIdentifier,
+ -- of the algorithms used to compute the signature
+ encipheredHash BIT STRING}
+}
+
+-- ***********************************
+-- GULS SIGNED Security Transformation
+-- ***********************************
+gulsSignedTransformation{KEY-INFORMATION:SupportedKIClasses}
+ SECURITY-TRANSFORMATION ::= {
+ IDENTIFIER {securityTransformations guls-signed(4)}
+ INITIAL-ENCODING-RULES
+ {joint-iso-itu-t asn1(1) ber-derived(2) canonical-encoding(0)}
+ -- This default for initial encoding rules may be overridden
+ -- using a static protected parameter (initEncRules).
+ XFORMED-DATA-TYPE
+ SEQUENCE {intermediateValue
+ EMBEDDED PDV
+ (WITH COMPONENTS {
+ identification (WITH COMPONENTS {
+ transfer-syntax (CONSTRAINED BY {
+ -- The transfer syntax to be used is that
+ -- indicated by the initEncRules value within
+ -- the intermediate value -- })PRESENT
+ }),
+ data-value (CONTAINING IntermediateType{{SupportedKIClasses}})
+
+ -- The data value encoded is a value of type
+ -- IntermediateType
+ }),
+ appendix
+ BIT STRING
+ (CONSTRAINED BY {
+ -- the appendix value must be generated following
+ -- the procedure specified in D.4 of DIS 11586-1 -- })
+ }
+}
+
+IntermediateType{KEY-INFORMATION:SupportedKIClasses} ::= SEQUENCE {
+ unprotectedItem ABSTRACT-SYNTAX.&Type-- this type is constrained to being
+ -- the type of the unprotected item, or
+ -- BIT STRING if the unprotected item is
+ -- not derived from an ASN.1 abstract
+ -- syntax --,
+ initEncRules
+ OBJECT IDENTIFIER
+ DEFAULT {joint-iso-itu-t asn1(1) ber-derived(2) canonical-encoding(0)},
+ signOrSealAlgorithm AlgorithmIdentifier OPTIONAL,
+ -- Identifies the signing or
+ -- sealing algorithm, and can convey
+ -- algorithm parameters
+ hashAlgorithm AlgorithmIdentifier OPTIONAL,
+ -- Identifies a hash function,
+ -- for use if a hash function is required
+ -- and the signOrSealAlgorithm identifier
+ -- does not imply a particular hash
+ -- function. Can also convey algorithm
+ -- parameters.
+ keyInformation
+ SEQUENCE {kiClass KEY-INFORMATION.&kiClass({SupportedKIClasses}),
+ keyInfo KEY-INFORMATION.&KiType({SupportedKIClasses}{@.kiClass})
+ } OPTIONAL
+ -- Key information may assume various
+ -- formats, governed by supported members
+ -- of the KEY-INFORMATION information
+ -- object class (defined at start of the
+ -- definitive ASN.1 module)
+}
+
+-- **************************************
+-- GULS SIGNATURE Security Transformation
+-- **************************************
+gulsSignatureTransformation{KEY-INFORMATION:SupportedKIClasses}
+ SECURITY-TRANSFORMATION ::= {
+ IDENTIFIER {securityTransformations guls-signature(5)}
+ INITIAL-ENCODING-RULES
+ {joint-iso-itu-t asn1(1) ber-derived(2) canonical-encoding(0)}
+ -- This default for initial encoding rules may be overridden
+ -- using a static protected parameter (initEncRules).
+ XFORMED-DATA-TYPE
+ SEQUENCE {initEncRules
+ OBJECT IDENTIFIER
+ DEFAULT
+ {joint-iso-itu-t asn1(1) ber-derived(2)
+ canonical-encoding(0)},
+ signOrSealAlgorithm AlgorithmIdentifier OPTIONAL,
+ -- Identifies the signing or
+ -- sealing algorithm, and can convey
+ -- algorithm parameters
+ hashAlgorithm AlgorithmIdentifier OPTIONAL,
+ -- Identifies a hash function,
+ -- for use if a hash function is required
+ -- and the signOrSealAlgorithm identifier
+ -- does not imply a particular hash
+ -- function. Can also convey algorithm parameters.
+ keyInformation
+ SEQUENCE {kiClass
+ KEY-INFORMATION.&kiClass({SupportedKIClasses}),
+ keyInfo
+ KEY-INFORMATION.&KiType
+ ({SupportedKIClasses}{@.kiClass})} OPTIONAL,
+ -- Key information may assume various
+ -- formats, governed by supported members
+ -- of the KEY-INFORMATION information
+ -- object class (defined at start of the
+ -- definitive ASN.1 module)
+ appendix
+ BIT STRING
+ (CONSTRAINED BY {
+ -- the appendix value must be generated following
+ -- the procedure specified in D.5 of DIS 11586-1 -- })
+ }
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
+
+-- content of stack:
+--
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/HierarchicalOperationalBindings.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/HierarchicalOperationalBindings.asn1
new file mode 100644
index 0000000000..4e0084b079
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/HierarchicalOperationalBindings.asn1
@@ -0,0 +1,123 @@
+-- Module HierarchicalOperationalBindings (X.518 TC2:08/1997)
+
+HierarchicalOperationalBindings {joint-iso-itu-t ds(5) module(1)
+ hierarchicalOperationalBindings(20) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ informationFramework, distributedOperations,
+ directoryOperationalBindingTypes, opBindingManagement, dsp
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ Attribute, RelativeDistinguishedName, DistinguishedName
+ FROM InformationFramework informationFramework
+ MasterAndShadowAccessPoints
+ FROM DistributedOperations distributedOperations
+ directorySystemAC
+ FROM DirectorySystemProtocol dsp
+ OPERATIONAL-BINDING
+ FROM OperationalBindingManagement opBindingManagement
+ id-op-binding-hierarchical, id-op-binding-non-specific-hierarchical
+ FROM DirectoryOperationalBindingTypes directoryOperationalBindingTypes;
+
+-- types
+HierarchicalAgreement ::= SEQUENCE {
+ rdn [0] RelativeDistinguishedName,
+ immediateSuperior [1] DistinguishedName
+}
+
+NonSpecificHierarchicalAgreement ::= SEQUENCE {
+ immediateSuperior [1] DistinguishedName
+}
+
+SuperiorToSubordinate ::= SEQUENCE {
+ contextPrefixInfo [0] DITcontext,
+ entryInfo [1] SET (SIZE (1..MAX)) OF Attribute OPTIONAL,
+ immediateSuperiorInfo [2] SET (SIZE (1..MAX)) OF Attribute OPTIONAL
+}
+
+DITcontext ::= SEQUENCE OF Vertex
+
+Vertex ::= SEQUENCE {
+ rdn [0] RelativeDistinguishedName,
+ admPointInfo [1] SET (SIZE (1..MAX)) OF Attribute OPTIONAL,
+ subentries [2] SET (SIZE (1..MAX)) OF SubentryInfo OPTIONAL,
+ accessPoints [3] MasterAndShadowAccessPoints OPTIONAL
+}
+
+SubentryInfo ::= SEQUENCE {
+ rdn [0] RelativeDistinguishedName,
+ info [1] SET OF Attribute
+}
+
+SubordinateToSuperior ::= SEQUENCE {
+ accessPoints [0] MasterAndShadowAccessPoints OPTIONAL,
+ alias [1] BOOLEAN DEFAULT FALSE,
+ entryInfo [2] SET (SIZE (1..MAX)) OF Attribute OPTIONAL,
+ subentries [3] SET (SIZE (1..MAX)) OF SubentryInfo OPTIONAL
+}
+
+SuperiorToSubordinateModification ::=
+ SuperiorToSubordinate(WITH COMPONENTS {
+ ...,
+ entryInfo ABSENT
+ })
+
+NHOBSuperiorToSubordinate ::=
+ SuperiorToSubordinate(WITH COMPONENTS {
+ ...,
+ entryInfo ABSENT
+ })
+
+NHOBSubordinateToSuperior ::= SEQUENCE {
+ accessPoint [0] MasterAndShadowAccessPoints OPTIONAL,
+ subentries [3] SET (SIZE (1..MAX)) OF SubentryInfo OPTIONAL
+}
+
+-- operational binding information objects
+hierarchicalOperationalBinding OPERATIONAL-BINDING ::= {
+ AGREEMENT HierarchicalAgreement
+ -- APPLICATION CONTEXTS {{directorySystemAC}}
+ APPLICATION CONTEXTS {directorySystemAC}
+ ASYMMETRIC ROLE-A
+ { -- superior DSAESTABLISHMENT-INITIATOR TRUE
+ ESTABLISHMENT-PARAMETER SuperiorToSubordinate
+ MODIFICATION-INITIATOR TRUE
+ MODIFICATION-PARAMETER SuperiorToSubordinateModification
+ TERMINATION-INITIATOR TRUE}
+ ROLE-B
+ { -- subordinate DSAESTABLISHMENT-INITIATOR TRUE
+ ESTABLISHMENT-PARAMETER SubordinateToSuperior
+ MODIFICATION-INITIATOR TRUE
+ MODIFICATION-PARAMETER SubordinateToSuperior
+ TERMINATION-INITIATOR TRUE}
+ ID id-op-binding-hierarchical
+}
+
+nonSpecificHierarchicalOperationalBinding OPERATIONAL-BINDING ::= {
+ AGREEMENT NonSpecificHierarchicalAgreement
+ -- APPLICATION CONTEXTS {{directorySystemAC}}
+ APPLICATION CONTEXTS {directorySystemAC}
+ ASYMMETRIC ROLE-A
+ { -- superior DSAESTABLISHMENT-PARAMETER NHOBSuperiorToSubordinate
+ MODIFICATION-INITIATOR TRUE
+ MODIFICATION-PARAMETER NHOBSuperiorToSubordinate
+ TERMINATION-INITIATOR TRUE}
+ ROLE-B
+ { -- subordinate DSAESTABLISHMENT-INITIATOR TRUE
+ ESTABLISHMENT-PARAMETER NHOBSubordinateToSuperior
+ MODIFICATION-INITIATOR TRUE
+ MODIFICATION-PARAMETER NHOBSubordinateToSuperior
+ TERMINATION-INITIATOR TRUE}
+ ID id-op-binding-non-specific-hierarchical
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSAbstractService.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSAbstractService.asn1
new file mode 100644
index 0000000000..3fec8ae64a
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSAbstractService.asn1
@@ -0,0 +1,148 @@
+-- Module IPMSAbstractService (X.420:06/1999)
+IPMSAbstractService {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ abstract-service(3) version-1994(0)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Information Objects
+ AutoForwardComment, Heading, InformationObject, IPM, NRN, ON, RN
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-pt-management, id-pt-origination, id-pt-reception
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- MTS Abstract Service
+ ABSTRACT-ERROR, ABSTRACT-OPERATION, MessageDeliveryEnvelope,
+ MessageSubmissionEnvelope, MessageSubmissionIdentifier,
+ MessageSubmissionTime, ORName, PORT, ProbeSubmissionEnvelope,
+ ProbeSubmissionIdentifier, ProbeSubmissionTime,
+ recipient-improperly-specified, ReportDeliveryEnvelope,
+ SupplementaryInformation
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)};
+
+-- Ports
+origination PORT ::= {
+ CONSUMER INVOKES
+ {originate-probe | originate-ipm | originate-rn | originate-on}
+ ID id-pt-origination
+}
+
+reception PORT ::= {
+ SUPPLIER INVOKES
+ {receive-report | receive-ipm | receive-rn | receive-nrn | receive-on}
+ ID id-pt-reception
+}
+
+management PORT ::= {
+ CONSUMER INVOKES
+ {change-auto-discard | change-auto-acknowledgment | change-auto-forwarding}
+ ID id-pt-management
+}
+
+-- Origination abstract operations
+originate-probe ABSTRACT-OPERATION ::= {
+ ARGUMENT SET {envelope [0] ProbeSubmissionEnvelope,
+ content [1] IPM}
+ RESULT
+ SET {submission-identifier [0] ProbeSubmissionIdentifier,
+ submission-time [1] ProbeSubmissionTime}
+ ERRORS {subscription-error | recipient-improperly-specified}
+}
+
+originate-ipm ABSTRACT-OPERATION ::= {
+ ARGUMENT SET {envelope [0] MessageSubmissionEnvelope,
+ content [1] IPM}
+ RESULT
+ SET {submission-identifier [0] MessageSubmissionIdentifier,
+ submission-time [1] MessageSubmissionTime}
+ ERRORS {subscription-error | recipient-improperly-specified}
+}
+
+originate-rn ABSTRACT-OPERATION ::= {
+ ARGUMENT SET {envelope [0] MessageSubmissionEnvelope,
+ content [1] RN}
+ RESULT
+ SET {submission-identifier [0] MessageSubmissionIdentifier,
+ submission-time [1] MessageSubmissionTime}
+ ERRORS {subscription-error | recipient-improperly-specified}
+}
+
+originate-on ABSTRACT-OPERATION ::= {
+ ARGUMENT SET {envelope [0] MessageSubmissionEnvelope,
+ content [1] ON}
+ RESULT
+ SET {submission-identifier [0] MessageSubmissionIdentifier,
+ submission-time [1] MessageSubmissionTime}
+ ERRORS {subscription-error | recipient-improperly-specified}
+}
+
+-- Reception abstract operations
+receive-report ABSTRACT-OPERATION ::= {
+ ARGUMENT
+ SET {envelope [0] ReportDeliveryEnvelope,
+ undelivered-object [1] InformationObject OPTIONAL}
+}
+
+receive-ipm ABSTRACT-OPERATION ::= {
+ ARGUMENT SET {envelope [0] MessageDeliveryEnvelope,
+ content [1] IPM}
+}
+
+receive-rn ABSTRACT-OPERATION ::= {
+ ARGUMENT SET {envelope [0] MessageDeliveryEnvelope,
+ content [1] RN}
+}
+
+receive-nrn ABSTRACT-OPERATION ::= {
+ ARGUMENT SET {envelope [0] MessageDeliveryEnvelope,
+ content [1] NRN}
+}
+
+receive-on ABSTRACT-OPERATION ::= {
+ ARGUMENT SET {envelope [0] MessageDeliveryEnvelope,
+ content [1] ON}
+}
+
+-- Management abstract operations
+change-auto-discard ABSTRACT-OPERATION ::= {
+ ARGUMENT
+ SET {auto-discard-expired-IPMs [0] BOOLEAN,
+ auto-discard-obsolete-IPMs [1] BOOLEAN}
+}
+
+change-auto-acknowledgment ABSTRACT-OPERATION ::= {
+ ARGUMENT
+ SET {auto-acknowledge-IPMs [0] BOOLEAN,
+ auto-acknowledge-suppl-receipt-info
+ [1] SupplementaryInformation OPTIONAL}
+ ERRORS {subscription-error}
+}
+
+change-auto-forwarding ABSTRACT-OPERATION ::= {
+ ARGUMENT
+ SET {auto-forward-IPMs [0] BOOLEAN,
+ auto-forward-recipients [1] SEQUENCE OF ORName OPTIONAL,
+ auto-forward-heading [2] Heading OPTIONAL,
+ auto-forward-comment [3] AutoForwardComment OPTIONAL}
+ ERRORS {subscription-error | recipient-improperly-specified}
+}
+
+-- Abstract errors
+subscription-error ABSTRACT-ERROR ::= {
+ PARAMETER SET {problem [0] SubscriptionProblem}
+}
+
+SubscriptionProblem ::= ENUMERATED {
+ ipms-eos-not-subscribed(0), mts-eos-not-subscribed(1)}
+
+END -- of IPMSAbstractService
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSAutoActionTypes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSAutoActionTypes.asn1
new file mode 100644
index 0000000000..8c0c8138e2
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSAutoActionTypes.asn1
@@ -0,0 +1,234 @@
+-- Module IPMSAutoActionTypes (X.420:06/1999)
+IPMSAutoActionTypes {joint-iso-itu-t mhs(6) ipms(1) modules(0) auto-actions(13)
+ version-1999(1)} DEFINITIONS EXPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Information Objects
+ AdviceNotifications, AutoForwardComment, BodyPart, Heading, IA5TextBodyPart,
+ IPMSExtension, SupplReceiptInfoField
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Upper Bounds
+ ub-ipm-identifier-suffix
+ --==
+ FROM IPMSUpperBounds {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ upper-bounds(10) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-aa-ipm-auto-acknowledgement, id-aa-ipm-auto-advise,
+ id-aa-ipm-auto-correlate, id-aa-ipm-auto-discard,
+ id-aae-auto-discard-error, id-aae-auto-forwarding-loop,
+ id-aae-duplicate-ipn
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- Auto-action information object class
+ AUTO-ACTION,
+ AUTO-ACTION-ERROR,
+ -- MS Abstract Service data-types and abstract-errors
+ Filter, EntryInformationSelection, ms-extension-error, MSSubmissionOptions,
+ service-error
+ --==
+ FROM MSAbstractService {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ abstract-service(1) version-1999(1)}
+ -- MS object identifier
+ id-act-ipm-auto-forward
+ --==
+ FROM MSObjectIdentifiers {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- MTS Abstract Service data-types and abstract-errors
+ ContentIdentifier, DeferredDeliveryTime, element-of-service-not-subscribed,
+ ExplicitConversion, ExtensionField{}, inconsistent-request,
+ MessageSubmissionEnvelope, originator-invalid, OriginatorName,
+ OriginatorReportRequest, PerMessageIndicators,
+ PerMessageSubmissionExtensions, PerRecipientMessageSubmissionExtensions,
+ Priority, recipient-improperly-specified, RecipientName, remote-bind-error,
+ security-error, submission-control-violated, unsupported-critical-function
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- MTS upper bounds
+ ub-recipients
+ --==
+ FROM MTSUpperBounds {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ upper-bounds(3) version-1999(1)};
+
+-- IPM auto-actions information object set
+IPMAutoActions AUTO-ACTION ::=
+ {ipm-auto-forward, ... -- 1994 extension additions --,
+ ipm-auto-acknowledgement | ipm-auto-correlate | ipm-auto-discard |
+ ipm-auto-advise}
+
+-- Auto-actions
+ipm-auto-forward AUTO-ACTION ::= {
+ REGISTRATION PARAMETER IS
+ CHOICE {ipm-auto-forward-registration-parameter
+ IPMAutoForwardRegistrationParameter-- used in 1994 Application Contexts only -- ,
+ auto-forward-registration-parameter-88
+ AutoForwardRegistrationParameter88
+ } -- used in 1988 Application Contexts only
+ ERRORS
+ {auto-forwarding-loop | element-of-service-not-subscribed |
+ inconsistent-request | ms-extension-error | originator-invalid |
+ recipient-improperly-specified | remote-bind-error | security-error |
+ service-error | submission-control-violated |
+ unsupported-critical-function, ...}
+ IDENTIFIED BY id-act-ipm-auto-forward
+}
+
+-- Auto-forward 1994
+IPMAutoForwardRegistrationParameter ::= SEQUENCE {
+ filter [0] Filter OPTIONAL,
+ forwarding-envelope [1] MessageSubmissionEnvelope,
+ forwarding-heading [2] Heading,
+ forwarding-cover-note [3] BodyPart OPTIONAL,
+ submission-options [4] MSSubmissionOptions OPTIONAL,
+ nrn-comment [5] AutoForwardComment OPTIONAL,
+ ipm-auto-forward-options [6] IPMAutoForwardOptions DEFAULT {}
+}
+
+IPMAutoForwardOptions ::= BIT STRING {
+ forward-all-object-types(0), -- forward-all-object-types 'one', forward IPMs only 'zero'
+ include-returned-content(1), -- include-returned-content 'one', exclude 'zero'
+ include-returned-ipm(2), -- include-returned-ipm 'one', exclude 'zero'
+ forwarded-content-prohibited(3), -- forwarded-content-prohibited 'one', allowed'zero'
+ preserve-retrieval-status(4), -- preserve-retrieval-status 'one', change 'zero'
+ delete-delivered-object(5)
+} -- delete-delivered-object 'one', no deletion 'zero'
+
+-- Auto-forward 1988
+AutoForwardRegistrationParameter88 ::= SET {
+ filter [0] Filter OPTIONAL,
+ auto-forward-arguments [1] AutoForwardArguments,
+ delete-after-auto-forwarding [2] BOOLEAN DEFAULT FALSE,
+ forwarding-information [3] EncodedForwardingInformation
+}
+
+AutoForwardArguments ::= SET {
+ COMPONENTS OF PerMessageAutoForwardFields,
+ per-recipient-fields
+ [1] IMPLICIT SEQUENCE SIZE (1..ub-recipients) OF
+ PerRecipientAutoForwardFields
+}
+
+PerMessageAutoForwardFields ::= SET {
+ originator-name OriginatorName,
+ content-identifier ContentIdentifier OPTIONAL,
+ priority Priority OPTIONAL,
+ per-message-indicators PerMessageIndicators OPTIONAL,
+ deferred-delivery-time [0] IMPLICIT DeferredDeliveryTime OPTIONAL,
+ extensions
+ [2] IMPLICIT SET OF ExtensionField{{PerMessageSubmissionExtensions}}
+ DEFAULT {}
+}
+
+PerRecipientAutoForwardFields ::= SET {
+ recipient-name RecipientName,
+ originator-report-request [0] IMPLICIT OriginatorReportRequest,
+ explicit-conversion [1] IMPLICIT ExplicitConversion OPTIONAL,
+ extensions
+ [2] IMPLICIT SET OF
+ ExtensionField{{PerRecipientMessageSubmissionExtensions}}
+ DEFAULT {}
+}
+
+EncodedForwardingInformation ::=
+ OCTET STRING -- contains ForwardingInformation1988
+
+ForwardingInformation1988 ::= SET {
+ auto-forwarding-comment [0] IMPLICIT AutoForwardComment OPTIONAL,
+ ia5-cover-note [1] IMPLICIT IA5TextBodyPart OPTIONAL,
+ this-ipm-prefix
+ [2] IMPLICIT PrintableString(SIZE (1..ub-ipm-identifier-suffix)) OPTIONAL
+}
+
+--
+ipm-auto-acknowledgement AUTO-ACTION ::= {
+ REGISTRATION PARAMETER IS IPMAutoAcknowledgementRegistrationParameter
+ ERRORS
+ {originator-invalid | submission-control-violated |
+ element-of-service-not-subscribed | recipient-improperly-specified |
+ remote-bind-error | inconsistent-request | security-error |
+ unsupported-critical-function | duplicate-ipn}
+ IDENTIFIED BY id-aa-ipm-auto-acknowledgement
+}
+
+IPMAutoAcknowledgementRegistrationParameter ::= SET {
+ auto-acknowledge-suppl-receipt-info [0] SupplReceiptInfoField OPTIONAL,
+ submission-options [1] MSSubmissionOptions OPTIONAL
+}
+
+--
+ipm-auto-correlate AUTO-ACTION ::= {IDENTIFIED BY id-aa-ipm-auto-correlate
+}
+
+--
+ipm-auto-discard AUTO-ACTION ::= {
+ REGISTRATION PARAMETER IS IPMAutoDiscardRegistrationParameter
+ ERRORS
+ {submission-control-violated | ipm-auto-discard-error | originator-invalid
+ | recipient-improperly-specified | inconsistent-request | security-error
+ | unsupported-critical-function | remote-bind-error |
+ element-of-service-not-subscribed}
+ IDENTIFIED BY id-aa-ipm-auto-discard
+}
+
+IPMAutoDiscardRegistrationParameter ::= SET {
+ filter [0] Filter OPTIONAL,
+ submission-options [1] MSSubmissionOptions OPTIONAL,
+ auto-discard-expired-ipms [2] BOOLEAN,
+ auto-discard-obsoleted-ipms [3] BOOLEAN,
+ restrict-obsoleting-to-originator [4] BOOLEAN
+}
+
+--
+ipm-auto-advise AUTO-ACTION ::= {
+ REGISTRATION PARAMETER IS IPMAutoAdviseRegistrationParameter
+ ERRORS
+ {inconsistent-request | element-of-service-not-subscribed |
+ originator-invalid | recipient-improperly-specified | remote-bind-error |
+ security-error | submission-control-violated |
+ unsupported-critical-function}
+ IDENTIFIED BY id-aa-ipm-auto-advise
+}
+
+IPMAutoAdviseRegistrationParameter ::= SET {
+ enabled [0] BOOLEAN DEFAULT TRUE,
+ filter [1] Filter OPTIONAL,
+ advice-notifications
+ [2] SET OF IPMSExtension{{AdviceNotifications}},
+ suppress-subsequent-notifications [3] BOOLEAN DEFAULT TRUE,
+ use-ipm-if-an-not-supported [4] BOOLEAN DEFAULT FALSE,
+ submission-options [5] MSSubmissionOptions OPTIONAL
+}
+
+-- IPM auto-action-error-table information object set
+IPMAutoActionErrorTable AUTO-ACTION-ERROR ::=
+ {... -- 1994 extension additions --, auto-forwarding-loop | duplicate-ipn |
+ element-of-service-not-subscribed | inconsistent-request |
+ ipm-auto-discard-error | ms-extension-error | originator-invalid |
+ recipient-improperly-specified | remote-bind-error | security-error |
+ service-error | submission-control-violated | unsupported-critical-function}
+
+-- Auto-action-error-types
+auto-forwarding-loop AUTO-ACTION-ERROR ::= {
+ CODE global:id-aae-auto-forwarding-loop
+}
+
+duplicate-ipn AUTO-ACTION-ERROR ::= {CODE global:id-aae-duplicate-ipn
+}
+
+ipm-auto-discard-error AUTO-ACTION-ERROR ::= {
+ PARAMETER SET {problem [0] AutoDiscardProblem}
+ CODE global:id-aae-auto-discard-error
+}
+
+AutoDiscardProblem ::= INTEGER {not-obsoleted-by-originator(0)}
+
+END -- of IPMSAutoActionTypes
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedBodyPartTypes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedBodyPartTypes.asn1
new file mode 100644
index 0000000000..9805a6189d
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedBodyPartTypes.asn1
@@ -0,0 +1,102 @@
+-- Module IPMSExtendedBodyPartTypes (X.420:06/1999)
+IPMSExtendedBodyPartTypes {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ extended-body-part-types(7) version-1994(0)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Information Objects
+ BilaterallyDefinedBodyPart, EncryptedData, EncryptedParameters,
+ EXTENDED-BODY-PART-TYPE, G3FacsimileData, G3FacsimileParameters,
+ G4Class1BodyPart, IA5TextData, IA5TextParameters, MessageData,
+ MessageParameters, MixedModeBodyPart, NationallyDefinedBodyPart,
+ TeletexData, TeletexParameters, VideotexData, VideotexParameters
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-ep-encrypted, id-ep-g3-facsimile, id-ep-ia5-text, id-ep-message,
+ id-ep-teletex, id-ep-videotex, id-et-bilaterally-defined, id-et-encrypted,
+ id-et-g3-facsimile, id-et-g4-class1, id-et-ia5-text, id-et-message,
+ id-et-mixed-mode, id-et-nationally-defined, id-et-teletex, id-et-videotex
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- Extended IA5 Text body part
+ia5-text-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {IA5TextParameters
+ IDENTIFIED BY id-ep-ia5-text},
+ DATA {IA5TextData
+ IDENTIFIED BY id-et-ia5-text}
+}
+
+-- Extended G3 Facsimile body part
+g3-facsimile-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {G3FacsimileParameters
+ IDENTIFIED BY id-ep-g3-facsimile},
+ DATA {G3FacsimileData
+ IDENTIFIED BY id-et-g3-facsimile}
+}
+
+-- Extended G4 Class 1 body part
+g4-class1-body-part EXTENDED-BODY-PART-TYPE ::= {
+ DATA {G4Class1BodyPart
+ IDENTIFIED BY id-et-g4-class1}
+}
+
+-- Extended Teletex body part
+teletex-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {TeletexParameters
+ IDENTIFIED BY id-ep-teletex},
+ DATA {TeletexData
+ IDENTIFIED BY id-et-teletex}
+}
+
+-- Extended Videotex body part
+videotex-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {VideotexParameters
+ IDENTIFIED BY id-ep-videotex},
+ DATA {VideotexData
+ IDENTIFIED BY id-et-videotex}
+}
+
+-- Extended Encrypted body part
+encrypted-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {EncryptedParameters
+ IDENTIFIED BY id-ep-encrypted},
+ DATA {EncryptedData
+ IDENTIFIED BY id-et-encrypted}
+}
+
+-- Extended Message body part
+message-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {MessageParameters
+ IDENTIFIED BY id-ep-message},
+ DATA {MessageData
+ IDENTIFIED BY id-et-message}
+}
+
+-- Extended Mixed-mode body part
+mixed-mode-body-part EXTENDED-BODY-PART-TYPE ::= {
+ DATA {MixedModeBodyPart
+ IDENTIFIED BY id-et-mixed-mode}
+}
+
+-- Extended Bilaterally Defined body part
+bilaterally-defined-body-part EXTENDED-BODY-PART-TYPE ::= {
+ DATA {BilaterallyDefinedBodyPart
+ IDENTIFIED BY id-et-bilaterally-defined}
+}
+
+-- Extended Nationally Defined body part
+nationally-defined-body-part EXTENDED-BODY-PART-TYPE ::= {
+ DATA {NationallyDefinedBodyPart
+ IDENTIFIED BY id-et-nationally-defined}
+}
+
+END -- of IPMSExtendedBodyPartTypes
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedBodyPartTypes2.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedBodyPartTypes2.asn1
new file mode 100644
index 0000000000..b39e03c3b6
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedBodyPartTypes2.asn1
@@ -0,0 +1,37 @@
+-- Module IPMSExtendedBodyPartTypes2 (X.420:06/1999)
+IPMSExtendedBodyPartTypes2 {iso standard mhs(10021) ipms(7) modules(0)
+ extended-body-part-types-2(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Information Objects
+ EXTENDED-BODY-PART-TYPE
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-ep-general-text, id-et-general-text
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- General Text body part
+general-text-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {GeneralTextParameters
+ IDENTIFIED BY id-ep-general-text},
+ DATA {GeneralTextData
+ IDENTIFIED BY id-et-general-text}
+}
+
+GeneralTextParameters ::= SET OF CharacterSetRegistration
+
+GeneralTextData ::= GeneralString
+
+CharacterSetRegistration ::= INTEGER(1..32767)
+
+END -- of IPMSExtendedBodyPartTypes2
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedVoiceBodyPartType.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedVoiceBodyPartType.asn1
new file mode 100644
index 0000000000..171f4b4223
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSExtendedVoiceBodyPartType.asn1
@@ -0,0 +1,39 @@
+-- Module IPMSExtendedVoiceBodyPartType (X.420:06/1999)
+IPMSExtendedVoiceBodyPartType {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ extended-voice-body-part-type(11)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Information Objects
+ EXTENDED-BODY-PART-TYPE
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-ep-voice, id-et-voice
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- Extended Voice body part
+voice-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {VoiceParameters
+ IDENTIFIED BY id-ep-voice},
+ DATA {VoiceData
+ IDENTIFIED BY id-et-voice}
+}
+
+VoiceParameters ::= SEQUENCE {
+ voice-message-duration [0] INTEGER OPTIONAL, -- In seconds
+ voice-encoding-type [1] OBJECT IDENTIFIER,
+ supplementary-information [2] IA5String OPTIONAL
+}
+
+VoiceData ::= OCTET STRING
+
+END -- of IPMSExtendedVoiceBodyPartType
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSFileTransferBodyPartType.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSFileTransferBodyPartType.asn1
new file mode 100644
index 0000000000..59de6d1b04
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSFileTransferBodyPartType.asn1
@@ -0,0 +1,253 @@
+-- Module IPMSFileTransferBodyPartType (X.420:06/1999)
+IPMSFileTransferBodyPartType {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ file-transfer-body-part-type(9)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- FTAM Attribute Types
+ Attribute-Extensions, Concurrency-Access, Date-and-Time-Attribute,
+ Legal-Qualification-Attribute, Object-Availability-Attribute,
+ Object-Size-Attribute, Pathname, Permitted-Actions-Attribute,
+ Private-Use-Attribute
+ --==
+ FROM ISO8571-FTAM {iso standard 8571 application-context(1) iso-ftam(1)}
+ -- ACSE definitions of AP-title and AE-qualifier
+ AE-qualifier, AP-title
+ --==
+ FROM ACSE-1 {joint-iso-itu-t association-control(2) modules(0) apdus(0)
+ version1(1)}
+ -- IPMS Information Objects
+ EXTENDED-BODY-PART-TYPE, ExtensionsField
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-ep-file-transfer, id-et-file-transfer
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- MTS Abstract Service
+ ORName
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)};
+
+-- File Transfer body part
+file-transfer-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {FileTransferParameters
+ IDENTIFIED BY id-ep-file-transfer},
+ DATA {FileTransferData
+ IDENTIFIED BY id-et-file-transfer}
+}
+
+FileTransferParameters ::= SEQUENCE {
+ related-stored-file [0] RelatedStoredFile OPTIONAL,
+ contents-type
+ [1] ContentsTypeParameter
+ DEFAULT
+ document-type:
+ {document-type-name
+ {iso standard 8571 document-type(5) unstructured-binary(3)}},
+ environment [2] EnvironmentParameter OPTIONAL,
+ compression [3] CompressionParameter OPTIONAL,
+ file-attributes [4] FileAttributes OPTIONAL,
+ extensions [5] ExtensionsField OPTIONAL
+}
+
+FileTransferData ::= SEQUENCE OF EXTERNAL
+
+-- This conveys a sequence of data values representing file contents;
+-- The rules for generating this sequence are implied by the value of the contents-type parameter.
+RelatedStoredFile ::=
+ SET OF
+ SEQUENCE {file-identifier FileIdentifier,
+ relationship
+ Relationship DEFAULT explicit-relationship:unspecified
+ }
+
+FileIdentifier ::= CHOICE {
+ pathname-and-version [0] PathnameandVersion,
+ cross-reference [1] CrossReference
+}
+
+PathnameandVersion ::= SEQUENCE {
+ pathname [0] Pathname-Attribute,
+ file-version [1] GraphicString OPTIONAL
+}
+
+CrossReference ::= SEQUENCE {
+ application-cross-reference [0] OCTET STRING,
+ message-reference [1] MessageReference OPTIONAL,
+ body-part-reference [2] INTEGER OPTIONAL
+}
+
+MessageReference ::= SET {
+ user [0] ORName OPTIONAL,
+ -- Defined in 8.5.5 of ITU-T Rec. X.411 | ISO/IEC 10021-4
+ user-relative-identifier [1] PrintableString
+}
+
+Relationship ::= CHOICE {
+ explicit-relationship [0] ExplicitRelationship,
+ descriptive-relationship [1] GraphicString
+}
+
+ExplicitRelationship ::= INTEGER {
+ unspecified(0), new-file(1), replacement(2), extension(3)}
+
+ContentsTypeParameter ::= Contents-Type-Attribute
+
+Contents-Type-Attribute ::= CHOICE {
+ document-type
+ [0] SEQUENCE {document-type-name Document-Type-Name,
+ parameter [0] DOCUMENT-PARAMETER.&Type OPTIONAL
+ },
+ -- The actual types to be used for values of the parameter field
+ -- are defined in the named document type.
+ constraint-set-and-abstract-syntax
+ [1] SEQUENCE {constraint-set-name Constraint-Set-Name,
+ abstract-syntax-name Abstract-Syntax-Name}
+}
+
+Document-Type-Name ::= OBJECT IDENTIFIER
+
+DOCUMENT-PARAMETER ::= CLASS {&Type
+}
+
+Constraint-Set-Name ::= OBJECT IDENTIFIER
+
+Abstract-Syntax-Name ::= OBJECT IDENTIFIER
+
+EnvironmentParameter ::= SEQUENCE {
+ application-reference [0] GeneralIdentifier OPTIONAL,
+ machine [1] GeneralIdentifier OPTIONAL,
+ operating-system [2] OBJECT IDENTIFIER OPTIONAL,
+ user-visible-string [3] SEQUENCE OF GraphicString OPTIONAL
+}
+
+GeneralIdentifier ::= CHOICE {
+ registered-identifier [0] OBJECT IDENTIFIER,
+ descriptive-identifier [1] SEQUENCE OF GraphicString
+}
+
+CompressionParameter ::= SEQUENCE {
+ compression-algorithm-id
+ [0] COMPRESSION-ALGORITHM.&id({CompressionAlgorithmTable}),
+ compression-algorithm-param
+ [1] COMPRESSION-ALGORITHM.&Type
+ ({CompressionAlgorithmTable}{@compression-algorithm-id})
+}
+
+COMPRESSION-ALGORITHM ::= TYPE-IDENTIFIER
+
+CompressionAlgorithmTable COMPRESSION-ALGORITHM ::=
+ {...}
+
+FileAttributes ::= SEQUENCE {
+ pathname Pathname-Attribute OPTIONAL,
+ permitted-actions
+ [1] Permitted-Actions-Attribute OPTIONAL,
+ storage-account [3] Account-Attribute OPTIONAL,
+ date-and-time-of-creation
+ [4] Date-and-Time-Attribute OPTIONAL,
+ date-and-time-of-last-modification
+ [5] Date-and-Time-Attribute OPTIONAL,
+ date-and-time-of-last-read-access
+ [6] Date-and-Time-Attribute OPTIONAL,
+ date-and-time-of-last-attribute-modification
+ [7] Date-and-Time-Attribute OPTIONAL,
+ identity-of-creator
+ [8] User-Identity-Attribute OPTIONAL,
+ identity-of-last-modifier
+ [9] User-Identity-Attribute OPTIONAL,
+ identity-of-last-reader
+ [10] User-Identity-Attribute OPTIONAL,
+ identity-of-last-attribute-modifier
+ [11] User-Identity-Attribute OPTIONAL,
+ object-availability
+ [12] Object-Availability-Attribute OPTIONAL,
+ object-size
+ [13] Object-Size-Attribute OPTIONAL,
+ future-object-size
+ [14] Object-Size-Attribute OPTIONAL,
+ access-control
+ [15] Access-Control-Attribute OPTIONAL,
+ legal-qualifications
+ [16] Legal-Qualification-Attribute OPTIONAL,
+ private-use
+ [17] Private-Use-Attribute OPTIONAL,
+ attribute-extensions
+ [22] Attribute-Extensions OPTIONAL
+}
+
+Pathname-Attribute ::= CHOICE {
+ incomplete-pathname [0] Pathname,
+ complete-pathname [23] Pathname
+}
+
+Account-Attribute ::= CHOICE {
+ no-value-available [0] NULL,
+ -- Indicates partial support of this attribute
+ actual-values Account
+}
+
+Account ::= GraphicString
+
+User-Identity-Attribute ::= CHOICE {
+ no-value-available [0] NULL,
+ -- Indicates partial support of this attribute.
+ actual-values User-Identity
+}
+
+User-Identity ::= GraphicString
+
+Access-Control-Attribute ::= CHOICE {
+ no-value-available [0] NULL,
+ -- Indicates partial support of this attribute.
+ actual-values [1] SET OF Access-Control-Element
+}
+
+-- The semantics of this attribute are described in ISO 8571-2
+Access-Control-Element ::= SEQUENCE {
+ action-list [0] Access-Request,
+ concurrency-access [1] Concurrency-Access OPTIONAL,
+ identity [2] User-Identity OPTIONAL,
+ passwords [3] Access-Passwords OPTIONAL,
+ location [4] Application-Entity-Title OPTIONAL
+}
+
+Access-Request ::= BIT STRING {
+ read(0), insert(1), replace(2), extend(3), erase(4), read-attribute(5),
+ change-attribute(6), delete-object(7)}
+
+Access-Passwords ::= SEQUENCE {
+ read-password [0] Password,
+ insert-password [1] Password,
+ replace-password [2] Password,
+ extend-password [3] Password,
+ erase-password [4] Password,
+ read-attribute-password [5] Password,
+ change-attribute-password [6] Password,
+ delete-password [7] Password,
+ pass-passwords [8] Pass-Passwords,
+ link-password [9] Password
+}
+
+Password ::= CHOICE {
+ graphic-string GraphicString,
+ octet-string OCTET STRING
+}
+
+Pass-Passwords ::= SEQUENCE OF Password
+
+Application-Entity-Title ::= SEQUENCE {
+ ap-title AP-title,
+ ae-qualifier AE-qualifier
+}
+
+END -- of IPMSFileTransferBodyPartType
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSForwardedContentBodyPartType.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSForwardedContentBodyPartType.asn1
new file mode 100644
index 0000000000..57faac6587
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSForwardedContentBodyPartType.asn1
@@ -0,0 +1,53 @@
+-- Module IPMSForwardedContentBodyPartType (X.420:06/1999)
+IPMSForwardedContentBodyPartType {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ forwarded-content-body-part-type(15)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- MTS Abstract Service
+ Content, ExtendedContentType, MessageDeliveryIdentifier, MessageDeliveryTime,
+ MessageSubmissionEnvelope, OriginatingMTACertificate,
+ OtherMessageDeliveryFields, ProofOfSubmission
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- IPMS Information Objects
+ EXTENDED-BODY-PART-TYPE
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-ep-content, id-et-content
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- Forwarded Content body part
+content-body-part{ExtendedContentType:content-type} EXTENDED-BODY-PART-TYPE ::=
+ {
+ PARAMETERS
+ {ForwardedContentParameters
+ IDENTIFIED BY {id-ep-content content-type}},
+ DATA {Content
+ IDENTIFIED BY {id-et-content content-type}}
+}
+
+ForwardedContentParameters ::= SET {
+ delivery-time [0] MessageDeliveryTime OPTIONAL,
+ delivery-envelope [1] OtherMessageDeliveryFields OPTIONAL,
+ mts-identifier [2] MessageDeliveryIdentifier OPTIONAL,
+ submission-proof [3] SubmissionProof OPTIONAL
+}
+
+SubmissionProof ::= SET {
+ proof-of-submission [0] ProofOfSubmission,
+ originating-MTA-certificate [1] OriginatingMTACertificate,
+ message-submission-envelope MessageSubmissionEnvelope
+}
+
+END -- of IPMSForwardedContentBodyPartType
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSForwardedReportBodyPartType.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSForwardedReportBodyPartType.asn1
new file mode 100644
index 0000000000..4e46c7679b
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSForwardedReportBodyPartType.asn1
@@ -0,0 +1,41 @@
+-- Module IPMSForwardedReportBodyPartType (X.420:06/1999)
+IPMSForwardedReportBodyPartType {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ forwarded-report-body-part-type(12)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- MTS Abstract Service
+ ReportDeliveryArgument
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- IPMS Information Objects
+ EXTENDED-BODY-PART-TYPE, IPN, MessageParameters
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-ep-notification, id-et-report, id-et-notification
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- Report body part
+report-body-part EXTENDED-BODY-PART-TYPE ::= {
+ DATA {ReportDeliveryArgument
+ IDENTIFIED BY id-et-report}
+}
+
+-- Notification body part
+notification-body-part EXTENDED-BODY-PART-TYPE ::= {
+ PARAMETERS {MessageParameters
+ IDENTIFIED BY id-ep-notification},
+ DATA {IPN IDENTIFIED BY id-et-notification}
+}
+
+END -- of IPMSForwardedReportBodyPartType
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSFunctionalObjects.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSFunctionalObjects.asn1
new file mode 100644
index 0000000000..09ef4de282
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSFunctionalObjects.asn1
@@ -0,0 +1,47 @@
+-- Module IPMSFunctionalObjects (X.420:06/1999)
+IPMSFunctionalObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ functional-objects(1) version-1994(0)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Abstract Service
+ management, origination, reception
+ --==
+ FROM IPMSAbstractService {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ abstract-service(3) version-1994(0)}
+ -- IPMS Object Identifiers
+ id-ot-ipms, id-ot-ipms-user
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- MTS Abstract Service
+ MHS-OBJECT
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- Remote Operations
+ CONTRACT
+ --==
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)};
+
+-- Primary object types
+ipms-user MHS-OBJECT ::= {
+ INITIATES {ipms-access-contract}
+ ID id-ot-ipms-user
+}
+
+ipms-access-contract CONTRACT ::= {
+ INITIATOR CONSUMER OF {origination | reception | management}
+}
+
+ipms MHS-OBJECT ::= {RESPONDS {ipms-access-contract}
+ ID id-ot-ipms
+}
+
+END -- of IPMSFunctionalObjects
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSHeadingExtensions.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSHeadingExtensions.asn1
new file mode 100644
index 0000000000..752e8d05e1
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSHeadingExtensions.asn1
@@ -0,0 +1,246 @@
+-- Module IPMSHeadingExtensions (X.420:06/1999)
+IPMSHeadingExtensions {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ heading-extensions(6) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Information Objects
+ IPMS-EXTENSION, ORDescriptor, RecipientSpecifier, ThisIPMField, BodyPart
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- MTS Abstract Service
+ ExtendedCertificates, SecurityLabel, UniversalOrBMPString{}
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- Directory Authentication Framework
+ AlgorithmIdentifier, SIGNATURE{}, SIGNED{}
+ --==
+ FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
+ authenticationFramework(7) 3}
+ -- Directory Certificate Extensions
+ CertificateAssertion
+ --==
+ FROM CertificateExtensions {joint-iso-itu-t ds(5) module(1)
+ certificateExtensions(26) 0}
+ -- IPMS upper bounds
+ ub-alpha-code-length, ub-circulation-list-members, ub-distribution-codes,
+ ub-extended-subject-length, ub-information-categories,
+ ub-information-category-length, ub-manual-handling-instruction-length,
+ ub-manual-handling-instructions, ub-originators-reference-length,
+ ub-precedence
+ --==
+ FROM IPMSUpperBounds {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ upper-bounds(10) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-hex-authorization-time, id-hex-auto-submitted,
+ id-hex-body-part-signatures, id-hex-circulation-list-recipients,
+ id-hex-distribution-codes, id-hex-extended-subject, id-hex-incomplete-copy,
+ id-hex-information-category, id-hex-ipm-security-label, id-hex-languages,
+ id-hex-manual-handling-instructions, id-hex-originators-reference,
+ id-hex-precedence-policy-id, id-rex-circulation-list-indicator,
+ id-rex-precedence
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- Incomplete Copy
+incomplete-copy IPMS-EXTENSION ::= {
+ VALUE IncompleteCopy,
+ IDENTIFIED BY id-hex-incomplete-copy
+}
+
+IncompleteCopy ::= NULL
+
+-- Languages
+languages IPMS-EXTENSION ::= {
+ VALUE SET OF Language,
+ IDENTIFIED BY id-hex-languages
+}
+
+Language ::= PrintableString(SIZE (2 | 5))
+
+-- Auto-submitted
+auto-submitted IPMS-EXTENSION ::= {
+ VALUE AutoSubmitted,
+ IDENTIFIED BY id-hex-auto-submitted
+}
+
+AutoSubmitted ::= ENUMERATED {
+ not-auto-submitted(0), auto-generated(1), auto-replied(2)}
+
+body-part-signatures IPMS-EXTENSION ::= {
+ VALUE BodyPartSignatures,
+ IDENTIFIED BY id-hex-body-part-signatures
+}
+
+BodyPartSignatures ::=
+ SET OF
+ SET {body-part-number BodyPartNumber,
+ body-part-signature BodyPartSignature,
+ originator-certificate-selector [1] CertificateAssertion OPTIONAL,
+ originator-certificates [0] ExtendedCertificates OPTIONAL,
+ ...}
+
+BodyPartNumber ::= INTEGER(1..MAX)
+
+BodyPartSignature ::=
+ SIGNATURE
+ {SEQUENCE {signature-algorithm-identifier AlgorithmIdentifier,
+ body-part BodyPart,
+ body-part-security-label SecurityLabel OPTIONAL
+ }}
+
+ipm-security-label IPMS-EXTENSION ::= {
+ VALUE IPMSecurityLabel,
+ IDENTIFIED BY id-hex-ipm-security-label
+}
+
+IPMSecurityLabel ::= SEQUENCE {
+ content-security-label [0] SecurityLabel,
+ heading-security-label [1] SecurityLabel OPTIONAL,
+ body-part-security-labels [2] SEQUENCE OF BodyPartSecurityLabel OPTIONAL
+}
+
+BodyPartSecurityLabel ::= CHOICE {
+ body-part-unlabelled [0] NULL,
+ body-part-security-label [1] SecurityLabel
+}
+
+-- Authorization Time
+authorization-time IPMS-EXTENSION ::= {
+ VALUE AuthorizationTime,
+ IDENTIFIED BY id-hex-authorization-time
+}
+
+AuthorizationTime ::= GeneralizedTime
+
+-- Circulation List
+circulation-list-recipients IPMS-EXTENSION ::= {
+ VALUE CirculationList,
+ IDENTIFIED BY id-hex-circulation-list-recipients
+}
+
+CirculationList ::=
+ SEQUENCE (SIZE (2..ub-circulation-list-members)) OF CirculationMember
+
+CirculationMember ::= SET {
+ circulation-recipient
+ RecipientSpecifier
+ (WITH COMPONENTS {
+ ...,
+ recipient (WITH COMPONENTS {
+ ...,
+ formal-name PRESENT
+ })
+ }),
+ checked Checkmark OPTIONAL
+}
+
+Checkmark ::= CHOICE {
+ simple NULL,
+ timestamped CirculationTime,
+ signed CirculationSignature
+}
+
+CirculationTime ::= GeneralizedTime
+
+CirculationSignature ::=
+ SIGNED
+ {SEQUENCE {algorithm-identifier CirculationSignatureAlgorithmIdentifier,
+ this-IPM ThisIPMField,
+ timestamp CirculationTime}}
+
+CirculationSignatureAlgorithmIdentifier ::= AlgorithmIdentifier
+
+-- Circulation List Indicator
+circulation-list-indicator IPMS-EXTENSION ::= {
+ VALUE NULL,
+ IDENTIFIED BY id-rex-circulation-list-indicator
+}
+
+-- Distribution Codes
+distribution-codes IPMS-EXTENSION ::= {
+ VALUE DistributionCodes,
+ IDENTIFIED BY id-hex-distribution-codes
+}
+
+DistributionCodes ::=
+ SEQUENCE (SIZE (1..ub-distribution-codes)) OF DistributionCode
+
+DistributionCode ::= SEQUENCE {
+ oid-code OBJECT IDENTIFIER OPTIONAL,
+ alphanumeric-code AlphaCode OPTIONAL,
+ or-descriptor [0] ORDescriptor OPTIONAL
+}
+
+AlphaCode ::= UniversalOrBMPString{ub-alpha-code-length}
+
+-- Extended Subject
+extended-subject IPMS-EXTENSION ::= {
+ VALUE ExtendedSubject,
+ IDENTIFIED BY id-hex-extended-subject
+}
+
+ExtendedSubject ::= UniversalOrBMPString{ub-extended-subject-length}
+
+-- Information category
+information-category IPMS-EXTENSION ::= {
+ VALUE InformationCategories,
+ IDENTIFIED BY id-hex-information-category
+}
+
+InformationCategories ::=
+ SEQUENCE (SIZE (1..ub-information-categories)) OF InformationCategory
+
+InformationCategory ::= SEQUENCE {
+ reference [0] OBJECT IDENTIFIER OPTIONAL,
+ description [1] DescriptionString OPTIONAL
+}
+
+DescriptionString ::= UniversalOrBMPString{ub-information-category-length}
+
+-- Manual handling Instructions
+manual-handling-instructions IPMS-EXTENSION ::= {
+ VALUE ManualHandlingInstructions,
+ IDENTIFIED BY id-hex-manual-handling-instructions
+}
+
+ManualHandlingInstructions ::=
+ SEQUENCE (SIZE (1..ub-manual-handling-instructions)) OF
+ ManualHandlingInstruction
+
+ManualHandlingInstruction ::=
+ UniversalOrBMPString{ub-manual-handling-instruction-length}
+
+-- Originator's Reference
+originators-reference IPMS-EXTENSION ::= {
+ VALUE OriginatorsReference,
+ IDENTIFIED BY id-hex-originators-reference
+}
+
+OriginatorsReference ::= UniversalOrBMPString{ub-originators-reference-length}
+
+-- Precedence Policy Identifier
+precedence-policy-identifier IPMS-EXTENSION ::= {
+ VALUE PrecedencePolicyIdentifier,
+ IDENTIFIED BY id-hex-precedence-policy-id
+}
+
+PrecedencePolicyIdentifier ::= OBJECT IDENTIFIER
+
+-- Precedence
+precedence IPMS-EXTENSION ::= {
+ VALUE Precedence,
+ IDENTIFIED BY id-rex-precedence
+}
+
+Precedence ::= INTEGER(0..ub-precedence)
+
+END -- of IPMSHeadingExtensions
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSInformationObjects.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSInformationObjects.asn1
new file mode 100644
index 0000000000..3fb0463ee7
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSInformationObjects.asn1
@@ -0,0 +1,626 @@
+-- Module IPMSInformationObjects (X.420:06/1999)
+IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Extended Body Parts
+ bilaterally-defined-body-part, encrypted-body-part, g3-facsimile-body-part,
+ g4-class1-body-part, ia5-text-body-part, message-body-part,
+ mixed-mode-body-part, nationally-defined-body-part, teletex-body-part,
+ videotex-body-part
+ --==
+ FROM IPMSExtendedBodyPartTypes {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ extended-body-part-types(7) version-1994(0)}
+ general-text-body-part
+ --==
+ FROM IPMSExtendedBodyPartTypes2 {iso standard mhs(10021) ipms(7)
+ modules(0) extended-body-part-types-2(1)}
+ file-transfer-body-part
+ --==
+ FROM IPMSFileTransferBodyPartType {joint-iso-itu-t mhs(6) ipms(1)
+ modules(0) file-transfer-body-part-type(9)}
+ voice-body-part
+ --==
+ FROM IPMSExtendedVoiceBodyPartType {joint-iso-itu-t mhs(6) ipms(1)
+ modules(0) extended-voice-body-part-type(11)}
+ notification-body-part, report-body-part
+ --==
+ FROM IPMSForwardedReportBodyPartType {joint-iso-itu-t mhs(6) ipms(1)
+ modules(0) forwarded-report-body-part-type(12)}
+ content-body-part{}
+ --==
+ FROM IPMSForwardedContentBodyPartType {joint-iso-itu-t mhs(6) ipms(1)
+ modules(0) forwarded-content-body-part-type(15)}
+ pkcs7-body-part
+ --==
+ FROM PKCS7BodyPartType {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ pkcs7-body-part-type(16)}
+ -- IPMS Heading Extensions
+ authorization-time, auto-submitted, body-part-signatures,
+ circulation-list-indicator, circulation-list-recipients,
+ distribution-codes, extended-subject, incomplete-copy,
+ information-category, ipm-security-label, languages,
+ manual-handling-instructions, originators-reference, precedence,
+ precedence-policy-identifier
+ --==
+ FROM IPMSHeadingExtensions {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ heading-extensions(6) version-1999(1)}
+ -- IPMS Security Extensions
+ body-part-encryption-token, BodyPartTokens, forwarded-content-token,
+ ForwardedContentToken, ipn-security-response, recipient-security-request
+ --==
+ FROM IPMSSecurityExtensions {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ ipm-security-extensions(14) version-1999(1)}
+ -- IPMS Upper bounds
+ ub-auto-forward-comment, ub-free-form-name, ub-local-ipm-identifier,
+ ub-subject-field, ub-telephone-number
+ --==
+ FROM IPMSUpperBounds {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ upper-bounds(10) version-1999(1)}
+ -- ODIF
+ Interchange-Data-Element
+ --==
+ FROM Interchange-Data-Elements {2 8 1 5 5}
+ -- MTS Abstract Service
+ EncodedInformationTypes, ExtendedCertificates, EXTENSION,
+ G3FacsimileNonBasicParameters, MessageDeliveryTime, ORName,
+ OtherMessageDeliveryFields, SupplementaryInformation,
+ TeletexNonBasicParameters
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- MS Abstract Service
+ MS-EXTENSION, SequenceNumber
+ --==
+ FROM MSAbstractService {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ abstract-service(1) version-1999(1)}
+ -- Directory Authentication Framework
+ AlgorithmIdentifier, ENCRYPTED{}
+ --==
+ FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
+ authenticationFramework(7) 3}
+ -- IPMS Object Identifiers
+ id-mst-assembly-capability, id-mst-assembly-instructions,
+ id-mst-invalid-assembly-instructions, id-mst-invalid-ipn,
+ id-mst-originator-body-part-encryption-token,
+ id-mst-originator-forwarded-content-token,
+ id-mst-suspend-auto-acknowledgement, id-mst-prevent-nrn-generation,
+ id-on-absence-advice, id-on-change-of-address-advice
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+Time ::= UTCTime
+
+-- Information object
+InformationObject ::= CHOICE {ipm [0] IPM,
+ ipn [1] IPN
+}
+
+-- IPM
+IPM ::= SEQUENCE {heading Heading,
+ body Body
+}
+
+-- MTS Extensions
+IPMPerRecipientEnvelopeExtensions EXTENSION ::=
+ {blind-copy-recipients | body-part-encryption-token |
+ forwarded-content-token, ...}
+
+-- IPMS Extensions
+IPMSExtension{IPMS-EXTENSION:ChosenFrom} ::= SEQUENCE {
+ type IPMS-EXTENSION.&id({ChosenFrom}),
+ value IPMS-EXTENSION.&Type({ChosenFrom}{@type}) DEFAULT NULL:NULL
+}
+
+IPMS-EXTENSION ::= CLASS {&id OBJECT IDENTIFIER UNIQUE,
+ &Type DEFAULT NULL
+}WITH SYNTAX {[VALUE &Type,]
+ IDENTIFIED BY &id
+}
+
+PrivateIPMSExtensions IPMS-EXTENSION ::=
+ {...}
+
+-- Heading
+Heading ::= SET {
+ this-IPM ThisIPMField,
+ originator [0] OriginatorField OPTIONAL,
+ authorizing-users [1] AuthorizingUsersField OPTIONAL,
+ primary-recipients [2] PrimaryRecipientsField DEFAULT {},
+ copy-recipients [3] CopyRecipientsField DEFAULT {},
+ blind-copy-recipients [4] BlindCopyRecipientsField OPTIONAL,
+ replied-to-IPM [5] RepliedToIPMField OPTIONAL,
+ obsoleted-IPMs [6] ObsoletedIPMsField DEFAULT {},
+ related-IPMs [7] RelatedIPMsField DEFAULT {},
+ subject [8] EXPLICIT SubjectField OPTIONAL,
+ expiry-time [9] ExpiryTimeField OPTIONAL,
+ reply-time [10] ReplyTimeField OPTIONAL,
+ reply-recipients [11] ReplyRecipientsField OPTIONAL,
+ importance [12] ImportanceField DEFAULT normal,
+ sensitivity [13] SensitivityField OPTIONAL,
+ auto-forwarded [14] AutoForwardedField DEFAULT FALSE,
+ extensions [15] ExtensionsField DEFAULT {}
+}
+
+-- Heading component types
+IPMIdentifier ::= [APPLICATION 11] SET {
+ user ORName OPTIONAL,
+ user-relative-identifier LocalIPMIdentifier
+}
+
+LocalIPMIdentifier ::= PrintableString(SIZE (0..ub-local-ipm-identifier))
+
+RecipientSpecifier ::= SET {
+ recipient [0] ORDescriptor,
+ notification-requests [1] NotificationRequests DEFAULT {},
+ reply-requested [2] BOOLEAN DEFAULT FALSE,
+ recipient-extensions [3] RecipientExtensionsField OPTIONAL
+}
+
+ORDescriptor ::= SET {
+ formal-name ORName OPTIONAL,
+ free-form-name [0] FreeFormName OPTIONAL,
+ telephone-number [1] TelephoneNumber OPTIONAL
+}
+
+FreeFormName ::= TeletexString(SIZE (0..ub-free-form-name))
+
+TelephoneNumber ::= PrintableString(SIZE (0..ub-telephone-number))
+
+NotificationRequests ::= BIT STRING {
+ rn(0), nrn(1), ipm-return(2), an-supported(3), suppress-an(4)}
+
+RecipientExtensionsField ::= SET OF IPMSExtension{{RecipientExtensions}}
+
+RecipientExtensions IPMS-EXTENSION ::=
+ {circulation-list-indicator | precedence | recipient-security-request |
+ PrivateIPMSExtensions, ...}
+
+-- This IPM heading field
+ThisIPMField ::= IPMIdentifier
+
+-- Originator heading field
+OriginatorField ::= ORDescriptor
+
+-- Authorizing Users heading field
+AuthorizingUsersField ::= SEQUENCE OF AuthorizingUsersSubfield
+
+AuthorizingUsersSubfield ::= ORDescriptor
+
+-- Primary Recipients heading field
+PrimaryRecipientsField ::= SEQUENCE OF PrimaryRecipientsSubfield
+
+PrimaryRecipientsSubfield ::= RecipientSpecifier
+
+-- Copy Recipients heading field
+CopyRecipientsField ::= SEQUENCE OF CopyRecipientsSubfield
+
+CopyRecipientsSubfield ::= RecipientSpecifier
+
+-- Blind Copy Recipients heading field
+BlindCopyRecipientsField ::= SEQUENCE OF BlindCopyRecipientsSubfield
+
+BlindCopyRecipientsSubfield ::= RecipientSpecifier
+
+-- Blind Copy Recipients envelope field
+blind-copy-recipients EXTENSION ::= {
+ BlindCopyRecipientsField,
+ IDENTIFIED BY standard-extension:41
+}
+
+-- Replied-to IPM heading field
+RepliedToIPMField ::= IPMIdentifier
+
+-- Obsoleted IPMs heading field
+ObsoletedIPMsField ::= SEQUENCE OF ObsoletedIPMsSubfield
+
+ObsoletedIPMsSubfield ::= IPMIdentifier
+
+-- Related IPMs heading field
+RelatedIPMsField ::= SEQUENCE OF RelatedIPMsSubfield
+
+RelatedIPMsSubfield ::= IPMIdentifier
+
+-- Subject heading field
+SubjectField ::= TeletexString(SIZE (0..ub-subject-field))
+
+-- Expiry Time heading field
+ExpiryTimeField ::= Time
+
+-- Reply Time heading field
+ReplyTimeField ::= Time
+
+-- Reply Recipients heading field
+ReplyRecipientsField ::= SEQUENCE OF ReplyRecipientsSubfield
+
+ReplyRecipientsSubfield ::=
+ ORDescriptor(WITH COMPONENTS {
+ ...,
+ formal-name PRESENT
+ })
+
+-- Importance heading field
+ImportanceField ::= ENUMERATED {low(0), normal(1), high(2)}
+
+-- Sensitivity heading field
+SensitivityField ::= ENUMERATED {
+ personal(1), private(2), company-confidential(3)}
+
+-- Auto-forwarded heading field
+AutoForwardedField ::= BOOLEAN
+
+-- Extensions heading field
+ExtensionsField ::= SET OF IPMSExtension{{HeadingExtensions}}
+
+HeadingExtensions IPMS-EXTENSION ::=
+ {authorization-time | auto-submitted | body-part-signatures |
+ circulation-list-recipients | distribution-codes | extended-subject |
+ incomplete-copy | information-category | ipm-security-label | languages |
+ manual-handling-instructions | originators-reference |
+ precedence-policy-identifier | PrivateIPMSExtensions, ...}
+
+-- Body
+Body ::= SEQUENCE OF BodyPart
+
+BodyPart ::= CHOICE {
+ basic
+ CHOICE {ia5-text [0] IA5TextBodyPart,
+ g3-facsimile [3] G3FacsimileBodyPart,
+ g4-class1 [4] G4Class1BodyPart,
+ teletex [5] TeletexBodyPart,
+ videotex [6] VideotexBodyPart,
+ encrypted [8] EncryptedBodyPart,
+ message [9] MessageBodyPart,
+ mixed-mode [11] MixedModeBodyPart,
+ bilaterally-defined [14] BilaterallyDefinedBodyPart,
+ nationally-defined [7] NationallyDefinedBodyPart},
+ extended [15] ExtendedBodyPart{{IPMBodyPartTable}}
+}
+
+-- Extended body part
+ExtendedBodyPart{EXTENDED-BODY-PART-TYPE:IPMBodyPartTable} ::= SEQUENCE {
+ parameters [0] INSTANCE OF TYPE-IDENTIFIER OPTIONAL,
+ data INSTANCE OF TYPE-IDENTIFIER
+}
+(CONSTRAINED BY { -- must correspond to the &parameters field and &data field of a member of --
+ IPMBodyPartTable})
+
+IPMBodyPartTable EXTENDED-BODY-PART-TYPE ::=
+ {StandardBodyParts | ApplicationSpecificBodyParts}
+
+StandardBodyParts EXTENDED-BODY-PART-TYPE ::=
+ {ia5-text-body-part | g3-facsimile-body-part | g4-class1-body-part |
+ teletex-body-part | videotex-body-part | encrypted-body-part |
+ message-body-part | mixed-mode-body-part | bilaterally-defined-body-part |
+ nationally-defined-body-part | general-text-body-part |
+ file-transfer-body-part | voice-body-part | report-body-part |
+ notification-body-part |
+ content-body-part{{1 2 3 -- RELATIVE-OID to be provided --}} |
+ pkcs7-body-part, ...}
+
+ApplicationSpecificBodyParts EXTENDED-BODY-PART-TYPE ::=
+ {--any body part defined in other Specifications, or for proprietary or private use
+ ...}
+
+EXTENDED-BODY-PART-TYPE ::= CLASS {
+ &parameters TYPE-IDENTIFIER OPTIONAL,
+ &data TYPE-IDENTIFIER
+}WITH SYNTAX {[PARAMETERS &parameters,]
+ DATA &data
+}
+
+-- IA5 Text body part
+IA5TextBodyPart ::= SEQUENCE {
+ parameters IA5TextParameters,
+ data IA5TextData
+}
+
+IA5TextParameters ::= SET {repertoire [0] Repertoire DEFAULT ia5
+}
+
+IA5TextData ::= IA5String
+
+Repertoire ::= ENUMERATED {ita2(2), ia5(5)}
+
+-- G3 Facsimile body part
+G3FacsimileBodyPart ::= SEQUENCE {
+ parameters G3FacsimileParameters,
+ data G3FacsimileData
+}
+
+G3FacsimileParameters ::= SET {
+ number-of-pages [0] INTEGER OPTIONAL,
+ non-basic-parameters [1] G3FacsimileNonBasicParameters OPTIONAL
+}
+
+G3FacsimileData ::= SEQUENCE OF BIT STRING
+
+-- G4 Class 1 and Mixed-mode body parts
+G4Class1BodyPart ::= SEQUENCE OF Interchange-Data-Element
+
+MixedModeBodyPart ::= SEQUENCE OF Interchange-Data-Element
+
+-- Teletex body part
+TeletexBodyPart ::= SEQUENCE {
+ parameters TeletexParameters,
+ data TeletexData
+}
+
+TeletexParameters ::= SET {
+ number-of-pages [0] INTEGER OPTIONAL,
+ telex-compatible [1] BOOLEAN DEFAULT FALSE,
+ non-basic-parameters [2] TeletexNonBasicParameters OPTIONAL
+}
+
+TeletexData ::= SEQUENCE OF TeletexString
+
+-- Videotex body part
+VideotexBodyPart ::= SEQUENCE {
+ parameters VideotexParameters,
+ data VideotexData
+}
+
+VideotexParameters ::= SET {syntax [0] VideotexSyntax OPTIONAL
+}
+
+VideotexSyntax ::= INTEGER {
+ ids(0), data-syntax1(1), data-syntax2(2), data-syntax3(3)}
+
+VideotexData ::= VideotexString
+
+-- Encrypted body part
+EncryptedBodyPart ::= SEQUENCE {
+ parameters EncryptedParameters,
+ data EncryptedData
+}
+
+EncryptedParameters ::= SET {
+ algorithm-identifier AlgorithmIdentifier,
+ originator-certificates ExtendedCertificates OPTIONAL,
+ ...
+}
+
+EncryptedData ::= BIT STRING(CONSTRAINED BY {BodyPart})
+
+-- Message body part
+MessageBodyPart ::= SEQUENCE {
+ parameters MessageParameters,
+ data MessageData
+}
+
+MessageParameters ::= SET {
+ delivery-time [0] MessageDeliveryTime OPTIONAL,
+ delivery-envelope [1] OtherMessageDeliveryFields OPTIONAL
+}
+
+MessageData ::= IPM
+
+-- Bilaterally Defined body part
+BilaterallyDefinedBodyPart ::= OCTET STRING
+
+-- Nationally Defined body part
+NATIONAL-BODY-PARTS ::= CLASS {&Type
+}
+
+NationallyDefinedBodyPart ::= NATIONAL-BODY-PARTS.&Type
+
+-- Provided for Historic reasons. Use is strongly deprecated.
+-- IPN
+IPN ::= SET {
+ -- common-fields --COMPONENTS OF CommonFields,
+ choice
+ [0] CHOICE {non-receipt-fields [0] NonReceiptFields,
+ receipt-fields [1] ReceiptFields,
+ other-notification-type-fields
+ [2] OtherNotificationTypeFields}
+}
+
+RN ::=
+ IPN
+ (WITH COMPONENTS {
+ ...,
+ choice (WITH COMPONENTS {
+ receipt-fields PRESENT
+ })
+ })
+
+NRN ::=
+ IPN
+ (WITH COMPONENTS {
+ ...,
+ choice (WITH COMPONENTS {
+ non-receipt-fields PRESENT
+ })
+ })
+
+ON ::=
+ IPN
+ (WITH COMPONENTS {
+ ...,
+ choice (WITH COMPONENTS {
+ other-notification-type-fields PRESENT
+ })
+ })
+
+CommonFields ::= SET {
+ subject-ipm SubjectIPMField,
+ ipn-originator [1] IPNOriginatorField OPTIONAL,
+ ipm-intended-recipient [2] IPMIntendedRecipientField OPTIONAL,
+ conversion-eits ConversionEITsField OPTIONAL,
+ notification-extensions [3] NotificationExtensionsField OPTIONAL
+}
+
+NonReceiptFields ::= SET {
+ non-receipt-reason [0] NonReceiptReasonField,
+ discard-reason [1] DiscardReasonField OPTIONAL,
+ auto-forward-comment [2] AutoForwardCommentField OPTIONAL,
+ returned-ipm [3] ReturnedIPMField OPTIONAL,
+ nrn-extensions [4] NRNExtensionsField OPTIONAL
+}
+
+ReceiptFields ::= SET {
+ receipt-time [0] ReceiptTimeField,
+ acknowledgment-mode [1] AcknowledgmentModeField DEFAULT manual,
+ suppl-receipt-info [2] SupplReceiptInfoField OPTIONAL,
+ rn-extensions [3] RNExtensionsField OPTIONAL
+}
+
+-- Common fields
+SubjectIPMField ::= IPMIdentifier
+
+IPNOriginatorField ::= ORDescriptor
+
+IPMIntendedRecipientField ::= ORDescriptor
+
+ConversionEITsField ::= EncodedInformationTypes
+
+NotificationExtensionsField ::= SET OF IPMSExtension{{NotificationExtensions}}
+
+NotificationExtensions IPMS-EXTENSION ::=
+ {ipn-security-response | PrivateIPMSExtensions, ...}
+
+-- Non-receipt fields
+NonReceiptReasonField ::= ENUMERATED {
+ ipm-discarded(0), ipm-auto-forwarded(1), ...
+ }
+
+-- ITU-T version:
+DiscardReasonField ::= ENUMERATED {
+ ipm-expired(0), ipm-obsoleted(1), user-subscription-terminated(2),
+ not-used(3)}
+
+-- ISO/IEC version:
+--DiscardReasonField ::= ENUMERATED {
+-- ipm-expired (0),
+-- ipm-obsoleted (1),
+-- user-subscription-terminated (2),
+-- The following value may not be supported by implementations of earlier versions of this Specification
+-- ipm-deleted (3),
+-- ... }
+AutoForwardCommentField ::=
+ AutoForwardComment
+
+AutoForwardComment ::= PrintableString(SIZE (0..ub-auto-forward-comment))
+
+ReturnedIPMField ::= IPM
+
+NRNExtensionsField ::= SET OF IPMSExtension{{NRNExtensions}}
+
+NRNExtensions IPMS-EXTENSION ::= {PrivateIPMSExtensions, ...}
+
+-- Receipt fields
+ReceiptTimeField ::= Time
+
+AcknowledgmentModeField ::= ENUMERATED {manual(0), automatic(1)}
+
+SupplReceiptInfoField ::= SupplementaryInformation
+
+RNExtensionsField ::= SET OF IPMSExtension{{RNExtensions}}
+
+RNExtensions IPMS-EXTENSION ::= {PrivateIPMSExtensions, ...}
+
+-- Other Notification Type fields
+OtherNotificationTypeFields ::= SET OF IPMSExtension{{OtherNotifications}}
+
+OtherNotifications IPMS-EXTENSION ::=
+ {AdviceNotifications | PrivateIPMSExtensions, ...}
+
+AdviceNotifications IPMS-EXTENSION ::=
+ {absence-advice | change-of-address-advice, ...}
+
+-- Advice Notification fields
+absence-advice IPMS-EXTENSION ::= {
+ VALUE AbsenceAdvice,
+ IDENTIFIED BY id-on-absence-advice
+}
+
+AbsenceAdvice ::= SEQUENCE {
+ advice BodyPart OPTIONAL,
+ next-available Time OPTIONAL
+}
+
+-- at least one component shall be present
+change-of-address-advice IPMS-EXTENSION ::= {
+ VALUE ChangeOfAddressAdvice,
+ IDENTIFIED BY id-on-change-of-address-advice
+}
+
+ChangeOfAddressAdvice ::= SEQUENCE {
+ new-address
+ [0] ORDescriptor(WITH COMPONENTS {
+ ...,
+ formal-name PRESENT
+ }),
+ effective-from [1] Time OPTIONAL
+}
+
+-- Message Store Realization
+prevent-nrn-generation MS-EXTENSION ::= {
+ NULL
+ IDENTIFIED BY id-mst-prevent-nrn-generation
+}
+
+suspend-auto-acknowledgement MS-EXTENSION ::= {
+ NULL
+ IDENTIFIED BY id-mst-suspend-auto-acknowledgement
+}
+
+assembly-capability MS-EXTENSION ::= {
+ NULL
+ IDENTIFIED BY id-mst-assembly-capability
+}
+
+IPMSubmissionOptions MS-EXTENSION ::=
+ {ipm-assembly-instructions | originator-body-part-encryption-token |
+ originator-forwarded-content-token, ...} -- For future extension additions
+
+ipm-assembly-instructions MS-EXTENSION ::= {
+ IPMAssemblyInstructions
+ IDENTIFIED BY id-mst-assembly-instructions
+}
+
+IPMAssemblyInstructions ::= SET {assembly-instructions [0] BodyPartReferences
+}
+
+BodyPartReferences ::= SEQUENCE OF BodyPartReference
+
+BodyPartReference ::= CHOICE {
+ stored-entry [0] SequenceNumber,
+ stored-content [1] SequenceNumber,
+ submitted-body-part [2] INTEGER(1..MAX),
+ stored-body-part
+ [3] SEQUENCE {message-entry SequenceNumber,
+ body-part-number INTEGER(1..MAX)}
+}
+
+originator-body-part-encryption-token MS-EXTENSION ::= {
+ BodyPartTokens
+ IDENTIFIED BY id-mst-originator-body-part-encryption-token
+}
+
+originator-forwarded-content-token MS-EXTENSION ::= {
+ ForwardedContentToken
+ IDENTIFIED BY id-mst-originator-forwarded-content-token
+}
+
+IPMSubmissionErrors MS-EXTENSION ::=
+ {invalid-assembly-instructions | invalid-ipn, ...
+ } -- For future extension additions
+
+invalid-assembly-instructions MS-EXTENSION ::= {
+ BodyPartReferences
+ IDENTIFIED BY id-mst-invalid-assembly-instructions
+}
+
+invalid-ipn MS-EXTENSION ::= {NULL
+ IDENTIFIED BY id-mst-invalid-ipn
+}
+
+END -- of IPMSInformationObjects
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSMessageStoreAttributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSMessageStoreAttributes.asn1
new file mode 100644
index 0000000000..719bca4987
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSMessageStoreAttributes.asn1
@@ -0,0 +1,1120 @@
+-- Module IPMSMessageStoreAttributes (X.420:06/1999)
+IPMSMessageStoreAttributes {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ message-store-attributes(8) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS
+ -- IPMS Heading Extensions
+ AuthorizationTime, AutoSubmitted, BodyPartNumber, BodyPartSecurityLabel,
+ BodyPartSignatures, CirculationMember, DistributionCode, ExtendedSubject,
+ IncompleteCopy, InformationCategory, IPMSecurityLabel, Language,
+ ManualHandlingInstruction, OriginatorsReference, Precedence,
+ PrecedencePolicyIdentifier
+ --==
+ FROM IPMSHeadingExtensions {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ heading-extensions(6) version-1999(1)}
+ -- IPMS Security Extensions
+ BodyPartTokens, ForwardedContentToken
+ --==
+ FROM IPMSSecurityExtensions {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ ipm-security-extensions(14) version-1999(1)}
+ -- IPMS Information Objects
+ AcknowledgmentModeField, AuthorizingUsersSubfield, AutoForwardCommentField,
+ AutoForwardedField, BilaterallyDefinedBodyPart,
+ BlindCopyRecipientsSubfield, Body, ConversionEITsField,
+ CopyRecipientsSubfield, DiscardReasonField, EncryptedBodyPart,
+ EncryptedData, EncryptedParameters, ExpiryTimeField,
+ EXTENDED-BODY-PART-TYPE, G3FacsimileBodyPart, G3FacsimileData,
+ G3FacsimileParameters, G4Class1BodyPart, Heading, IA5TextBodyPart,
+ IA5TextData, IA5TextParameters, ImportanceField, IPMIdentifier,
+ IPMIntendedRecipientField, IPMSExtension{}, IPNOriginatorField,
+ MessageBodyPart, MessageData, MessageParameters, MixedModeBodyPart,
+ NationallyDefinedBodyPart, NonReceiptReasonField, NotificationExtensions,
+ NRNExtensions, ObsoletedIPMsSubfield, ORDescriptor, OriginatorField,
+ OtherNotifications, PrimaryRecipientsSubfield, ReceiptTimeField,
+ RecipientSpecifier, RelatedIPMsSubfield, RepliedToIPMField,
+ ReplyRecipientsSubfield, ReplyTimeField, ReturnedIPMField, RNExtensions,
+ SensitivityField, SubjectField, SubjectIPMField, SupplReceiptInfoField,
+ TeletexBodyPart, TeletexData, TeletexParameters, ThisIPMField,
+ VideotexBodyPart, VideotexData, VideotexParameters
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-bat-bilaterally-defined-body-parts, id-bat-body,
+ id-bat-encrypted-body-parts, id-bat-encrypted-data,
+ id-bat-encrypted-parameters, id-bat-extended-body-part-types,
+ id-bat-g3-facsimile-body-parts, id-bat-g3-facsimile-data,
+ id-bat-g3-facsimile-parameters, id-bat-g4-class1-body-parts,
+ id-bat-ia5-text-body-parts, id-bat-ia5-text-data,
+ id-bat-ia5-text-parameters, id-bat-message-body-parts, id-bat-message-data,
+ id-bat-message-parameters, id-bat-mixed-mode-body-parts,
+ id-bat-nationally-defined-body-parts, id-bat-teletex-body-parts,
+ id-bat-teletex-data, id-bat-teletex-parameters, id-bat-videotex-body-parts,
+ id-bat-videotex-data, id-bat-videotex-parameters,
+ id-cat-correlated-delivered-ipns, id-cat-correlated-delivered-replies,
+ id-cat-delivered-ipn-summary, id-cat-delivered-replies-summary,
+ id-cat-forwarded-ipms, id-cat-forwarding-ipms, id-cat-ipm-recipients,
+ id-cat-obsoleted-ipms, id-cat-obsoleting-ipms, id-cat-related-ipms,
+ id-cat-relating-ipms, id-cat-replied-to-ipm, id-cat-recipient-category,
+ id-cat-replying-ipms, id-cat-revised-reply-time, id-cat-subject-ipm,
+ id-cat-submitted-ipn-status, id-cat-submitted-ipns,
+ id-cat-submitted-reply-status, id-hat-authorization-time,
+ id-hat-authorizing-users, id-hat-auto-forwarded, id-hat-auto-submitted,
+ id-hat-blind-copy-recipients, id-hat-body-part-encryption-token,
+ id-hat-body-part-security-label,
+ id-hat-body-part-signature-verification-status,
+ id-hat-body-part-signatures, id-hat-circulation-list-recipients,
+ id-hat-copy-recipients, id-hat-distribution-codes, id-hat-expiry-time,
+ id-hat-extended-subject, id-hat-forwarded-content-token,
+ id-hat-forwarding-token, id-hat-heading, id-hat-importance,
+ id-hat-incomplete-copy, id-hat-information-category,
+ id-hat-ipm-security-label, id-hat-languages,
+ id-hat-manual-handling-instructions, id-hat-nrn-requestors,
+ id-hat-obsoleted-IPMs, id-hat-originator, id-hat-originators-reference,
+ id-hat-precedence, id-hat-precedence-policy-id, id-hat-primary-recipients,
+ id-hat-related-IPMs, id-hat-replied-to-IPM, id-hat-reply-recipients,
+ id-hat-reply-requestors, id-hat-reply-time, id-hat-rn-requestors,
+ id-hat-sensitivity, id-hat-subject, id-hat-this-ipm, id-mr-ipm-identifier,
+ id-mr-ipm-location, id-mr-or-descriptor, id-mr-or-descriptor-elements,
+ id-mr-or-descriptor-single-element, id-mr-or-descriptor-substring-elements,
+ id-mr-circulation-member, id-mr-circulation-member-checkmark,
+ id-mr-circulation-member-elements, id-mr-circulation-member-single-element,
+ id-mr-circulation-member-substring-elements, id-mr-distribution-code,
+ id-mr-information-category, id-mr-recipient-specifier,
+ id-mr-recipient-specifier-elements,
+ id-mr-recipient-specifier-single-element,
+ id-mr-recipient-specifier-substring-elements, id-nat-acknowledgment-mode,
+ id-nat-auto-forward-comment, id-nat-conversion-eits, id-nat-discard-reason,
+ id-nat-ipm-intended-recipient, id-nat-ipn-originator,
+ id-nat-non-receipt-reason, id-nat-notification-extensions,
+ id-nat-nrn-extensions, id-nat-other-notification-type-fields,
+ id-nat-receipt-time, id-nat-returned-ipm, id-nat-rn-extensions,
+ id-nat-subject-ipm, id-nat-suppl-receipt-info, id-sat-body-parts-summary,
+ id-sat-ipm-auto-discarded, id-sat-ipm-entry-type, id-sat-ipm-synopsis
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- MS Abstract Service
+ X413ATTRIBUTE, MS-EIT, SequenceNumber
+ --==
+ FROM MSAbstractService {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ abstract-service(1) version-1999(1)}
+ -- MS General Attribute Types
+ SignatureStatus
+ --==
+ FROM MSGeneralAttributeTypes {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-attribute-types(2) version-1999(1)}
+ -- MS matching-rules
+ MSString{}, mSStringMatch, mSSubstringsMatch
+ --==
+ FROM MSMatchingRules {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-matching-rules(5) version-1999(1)}
+ -- MTS Abstract Service
+ EncodedInformationTypes, MessageToken
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- Directory Information Framework
+ objectIdentifierMatch, MATCHING-RULE
+ --==
+ FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+ informationFramework(1) 3}
+ -- Directory Abstract Service
+ booleanMatch, generalizedTimeMatch, generalizedTimeOrderingMatch,
+ integerMatch, integerOrderingMatch, uTCTimeMatch, uTCTimeOrderingMatch
+ --==
+ FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
+ selectedAttributeTypes(5) 3}
+ ub-msstring-match
+ FROM MSUpperBounds {joint-iso-itu-t mhs(6) ms(4) modules(0) upper-bounds(4)
+ version-1994(0)};
+
+-- IPMS attribute table information object set
+IPMSAttributeTable X413ATTRIBUTE ::=
+ {acknowledgment-mode | authorizing-users | auto-forward-comment |
+ auto-forwarded | auto-submitted | bilaterally-defined-body-parts |
+ blind-copy-recipients | body | conversion-eits | copy-recipients |
+ discard-reason | encrypted-body-parts | encrypted-data |
+ encrypted-parameters | expiry-time | extended-body-part-types |
+ g3-facsimile-body-parts | g3-facsimile-data | g3-facsimile-parameters |
+ g4-class1-body-parts | heading | ia5-text-body-parts | ia5-text-data |
+ ia5-text-parameters | importance | incomplete-copy | ipm-entry-type |
+ ipm-intended-recipient | ipm-synopsis | ipn-originator | languages |
+ message-body-parts | message-data | message-parameters |
+ mixed-mode-body-parts | nationally-defined-body-parts | non-receipt-reason |
+ nrn-requestors | obsoleted-IPMs | originator | primary-recipients |
+ receipt-time | related-IPMs | replied-to-IPM | reply-recipients |
+ reply-requestors | reply-time | returned-ipm | rn-requestors | sensitivity |
+ subject | subject-ipm | suppl-receipt-info | teletex-body-parts |
+ teletex-data | teletex-parameters | this-ipm | videotex-body-parts |
+ videotex-data | videotex-parameters, ... -- 1994 extension additions --,
+ ac-correlated-delivered-ipns | ac-correlated-delivered-replies |
+ ac-delivered-ipn-summary | ac-delivered-replies-summary | ac-forwarded-ipms
+ | ac-forwarding-ipms | ac-ipm-recipients | ac-obsoleted-ipms |
+ ac-obsoleting-ipms | ac-related-ipms | ac-relating-ipms | ac-replied-to-ipm
+ | ac-replying-ipms | ac-subject-ipm | ac-submitted-ipn-status |
+ ac-submitted-ipns | ac-submitted-reply-status | authorization-time |
+ body-part-encryption-token | body-part-security-label |
+ body-part-signature-verification-status | body-part-signatures |
+ body-parts-summary | circulation-list-recipients | distribution-codes |
+ extended-subject | forwarded-content-token | forwarding-token |
+ information-category | ipm-auto-discarded | ipm-security-label |
+ manual-handling-instructions | notification-extensions | nrn-extensions |
+ originators-reference | other-notification-type-fields | precedence |
+ precedence-policy-identifier | recipient-category | revised-reply-time |
+ rn-extensions}
+
+-- SUMMARY ATTRIBUTES
+-- IPM entry type
+ipm-entry-type X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMEntryType,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-sat-ipm-entry-type
+}
+
+IPMEntryType ::= ENUMERATED {ipm(0), rn(1), nrn(2), on(3)}
+
+-- IPM synopsis
+ipm-synopsis X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMSynopsis,
+ NUMERATION single-valued,
+ ID id-sat-ipm-synopsis
+}
+
+IPMSynopsis ::= SEQUENCE OF BodyPartSynopsis
+
+BodyPartSynopsis ::= CHOICE {
+ message [0] MessageBodyPartSynopsis,
+ non-message [1] NonMessageBodyPartSynopsis
+}
+
+MessageBodyPartSynopsis ::= SEQUENCE {
+ number [0] SequenceNumber,
+ synopsis [1] IPMSynopsis
+}
+
+NonMessageBodyPartSynopsis ::= SEQUENCE {
+ type [0] OBJECT IDENTIFIER,
+ parameters [1] INSTANCE OF TYPE-IDENTIFIER OPTIONAL,
+ size [2] INTEGER,
+ processed [3] BOOLEAN DEFAULT FALSE
+}
+
+-- Body part summary
+body-parts-summary X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BodyPartDescriptor,
+ NUMERATION multi-valued,
+ ID id-sat-body-parts-summary
+}
+
+BodyPartDescriptor ::= SEQUENCE {
+ data [0] OBJECT IDENTIFIER,
+ parameters [1] OBJECT IDENTIFIER OPTIONAL,
+ this-child-entry [2] SequenceNumber OPTIONAL,
+ position [3] INTEGER,
+ size [4] INTEGER,
+ processed [5] BOOLEAN DEFAULT FALSE
+}
+
+-- IPM auto discarded
+ipm-auto-discarded X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BOOLEAN,
+ EQUALITY MATCHING-RULE booleanMatch,
+ NUMERATION single-valued,
+ ID id-sat-ipm-auto-discarded
+}
+
+-- Body part signature verification status
+body-part-signature-verification-status X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BodyPartSignatureVerification,
+ NUMERATION single-valued,
+ ID id-hat-body-part-signature-verification-status
+}
+
+BodyPartSignatureVerification ::=
+ SET OF
+ SET {body-part-sequence-number [0] BodyPartNumber,
+ body-part-signature [1] SignatureStatus}
+
+-- HEADING ATTRIBUTES
+-- Heading
+heading X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX Heading,
+ NUMERATION single-valued,
+ ID id-hat-heading
+}
+
+-- Heading analyses
+rn-requestors X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORDescriptor,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ NUMERATION multi-valued,
+ ID id-hat-rn-requestors
+}
+
+nrn-requestors X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORDescriptor,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ NUMERATION multi-valued,
+ ID id-hat-nrn-requestors
+}
+
+reply-requestors X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORDescriptor,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ NUMERATION multi-valued,
+ ID id-hat-reply-requestors
+}
+
+-- Heading fields
+this-ipm X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ThisIPMField,
+ EQUALITY MATCHING-RULE iPMIdentifierMatch,
+ NUMERATION single-valued,
+ ID id-hat-this-ipm
+}
+
+originator X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX OriginatorField,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ OTHER MATCHING-RULES
+ {oRDescriptorElementsMatch | oRDescriptorSingleElementMatch |
+ oRDescriptorSubstringElementsMatch, ...},
+ NUMERATION single-valued,
+ ID id-hat-originator
+}
+
+replied-to-IPM X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX RepliedToIPMField,
+ EQUALITY MATCHING-RULE iPMIdentifierMatch,
+ NUMERATION single-valued,
+ ID id-hat-replied-to-IPM
+}
+
+subject X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SubjectField,
+ EQUALITY MATCHING-RULE mSStringMatch,
+ SUBSTRINGS MATCHING-RULE mSSubstringsMatch,
+ NUMERATION single-valued,
+ ID id-hat-subject
+}
+
+expiry-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ExpiryTimeField,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-hat-expiry-time
+}
+
+reply-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReplyTimeField,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-hat-reply-time
+}
+
+importance X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ImportanceField,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE
+ integerOrderingMatch, -- not defined for 1988 Application Contexts
+
+ NUMERATION single-valued,
+ ID id-hat-importance
+}
+
+sensitivity X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SensitivityField,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE
+ integerOrderingMatch, -- not defined for 1988 Application Contexts
+
+ NUMERATION single-valued,
+ ID id-hat-sensitivity
+}
+
+auto-forwarded X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AutoForwardedField,
+ EQUALITY MATCHING-RULE booleanMatch,
+ NUMERATION single-valued,
+ ID id-hat-auto-forwarded
+}
+
+-- Heading sub-fields
+authorizing-users X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AuthorizingUsersSubfield,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ OTHER MATCHING-RULES
+ {oRDescriptorElementsMatch | oRDescriptorSingleElementMatch |
+ oRDescriptorSubstringElementsMatch, ...},
+ NUMERATION multi-valued,
+ ID id-hat-authorizing-users
+}
+
+primary-recipients X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX PrimaryRecipientsSubfield,
+ EQUALITY MATCHING-RULE recipientSpecifierMatch,
+ OTHER MATCHING-RULES
+ {recipientSpecifierElementsMatch | recipientSpecifierSubstringElementsMatch
+ | recipientSpecifierSingleElementMatch, ...},
+ NUMERATION multi-valued,
+ ID id-hat-primary-recipients
+}
+
+copy-recipients X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX CopyRecipientsSubfield,
+ EQUALITY MATCHING-RULE recipientSpecifierMatch,
+ OTHER MATCHING-RULES
+ {recipientSpecifierElementsMatch | recipientSpecifierSubstringElementsMatch
+ | recipientSpecifierSingleElementMatch, ...},
+ NUMERATION multi-valued,
+ ID id-hat-copy-recipients
+}
+
+blind-copy-recipients X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BlindCopyRecipientsSubfield,
+ EQUALITY MATCHING-RULE recipientSpecifierMatch,
+ OTHER MATCHING-RULES
+ {recipientSpecifierElementsMatch | recipientSpecifierSubstringElementsMatch
+ | recipientSpecifierSingleElementMatch, ...},
+ NUMERATION multi-valued,
+ ID id-hat-blind-copy-recipients
+}
+
+obsoleted-IPMs X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ObsoletedIPMsSubfield,
+ EQUALITY MATCHING-RULE iPMIdentifierMatch,
+ NUMERATION multi-valued,
+ ID id-hat-obsoleted-IPMs
+}
+
+related-IPMs X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX RelatedIPMsSubfield,
+ EQUALITY MATCHING-RULE iPMIdentifierMatch,
+ NUMERATION multi-valued,
+ ID id-hat-related-IPMs
+}
+
+reply-recipients X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReplyRecipientsSubfield,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ OTHER MATCHING-RULES
+ {oRDescriptorElementsMatch | oRDescriptorSingleElementMatch |
+ oRDescriptorSubstringElementsMatch, ...},
+ NUMERATION multi-valued,
+ ID id-hat-reply-recipients
+}
+
+-- Heading extensions
+incomplete-copy X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IncompleteCopy,
+ NUMERATION
+ single-valued, -- An equality match is specified for 1988
+
+
+ -- Application Contexts
+ ID id-hat-incomplete-copy
+}
+
+languages X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX Language,
+ EQUALITY MATCHING-RULE mSStringMatch,
+ SUBSTRINGS MATCHING-RULE
+ mSSubstringsMatch, -- Not defined for 1988 Application Contexts
+
+ NUMERATION multi-valued,
+ ID id-hat-languages
+}
+
+auto-submitted X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AutoSubmitted,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-hat-auto-submitted
+}
+
+body-part-signatures X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BodyPartSignatures,
+ NUMERATION single-valued,
+ ID id-hat-body-part-signatures
+}
+
+ipm-security-label X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMSecurityLabel,
+ NUMERATION single-valued,
+ ID id-hat-ipm-security-label
+}
+
+body-part-security-label X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BodyPartSecurityLabel,
+ NUMERATION multi-valued,
+ ID id-hat-body-part-security-label
+}
+
+authorization-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AuthorizationTime,
+ EQUALITY MATCHING-RULE generalizedTimeMatch,
+ ORDERING MATCHING-RULE generalizedTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-hat-authorization-time
+}
+
+circulation-list-recipients X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX CirculationMember,
+ EQUALITY MATCHING-RULE circulationMemberMatch,
+ OTHER MATCHING-RULES
+ {circulationMemberElementsMatch | circulationMemberSubstringElementsMatch |
+ circulationMemberSingleElementMatch | circulationMemberCheckmarkMatch,
+ ...},
+ NUMERATION multi-valued,
+ ID id-hat-circulation-list-recipients
+}
+
+distribution-codes X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DistributionCode,
+ EQUALITY MATCHING-RULE distributionCodeMatch,
+ NUMERATION multi-valued,
+ ID id-hat-distribution-codes
+}
+
+extended-subject X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ExtendedSubject,
+ EQUALITY MATCHING-RULE mSStringMatch,
+ SUBSTRINGS MATCHING-RULE mSSubstringsMatch,
+ NUMERATION single-valued,
+ ID id-hat-extended-subject
+}
+
+information-category X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX InformationCategory,
+ EQUALITY MATCHING-RULE informationCategoryMatch,
+ NUMERATION multi-valued,
+ ID id-hat-information-category
+}
+
+manual-handling-instructions X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ManualHandlingInstruction,
+ EQUALITY MATCHING-RULE mSStringMatch,
+ NUMERATION multi-valued,
+ ID id-hat-manual-handling-instructions
+}
+
+originators-reference X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX OriginatorsReference,
+ EQUALITY MATCHING-RULE mSStringMatch,
+ NUMERATION single-valued,
+ ID id-hat-originators-reference
+}
+
+precedence-policy-identifier X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX PrecedencePolicyIdentifier,
+ EQUALITY MATCHING-RULE objectIdentifierMatch,
+ NUMERATION single-valued,
+ ID id-hat-precedence-policy-id
+}
+
+-- Recipient extensions
+precedence X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX Precedence,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-hat-precedence
+}
+
+-- Envelope extensions
+body-part-encryption-token X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BodyPartTokens,
+ NUMERATION single-valued,
+ ID id-hat-body-part-encryption-token
+}
+
+forwarded-content-token X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ForwardedContentToken,
+ NUMERATION single-valued,
+ ID id-hat-forwarded-content-token
+}
+
+forwarding-token X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageToken,
+ NUMERATION single-valued,
+ ID id-hat-forwarding-token
+}
+
+-- BODY ATTRIBUTES
+-- Body
+body X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX Body,
+ NUMERATION single-valued,
+ ID id-bat-body
+}
+
+-- Extended body part types
+extended-body-part-types X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX OBJECT IDENTIFIER,
+ EQUALITY MATCHING-RULE objectIdentifierMatch,
+ NUMERATION multi-valued,
+ ID id-bat-extended-body-part-types
+}
+
+-- Extended body parts
+-- (These attributes cannot be enumerated. See 19.6.3.3.)
+-- (They may be derived using the following parameterized object assignments:)
+extended-body-part-data-attribute{EXTENDED-BODY-PART-TYPE:ebpt} X413ATTRIBUTE
+ ::= {
+ WITH ATTRIBUTE-SYNTAX [0] EXPLICIT ebpt.&data.&Type,
+ NUMERATION multi-valued,
+ ID ebpt.&data.&id
+}
+
+extended-body-part-parameters-attribute{EXTENDED-BODY-PART-TYPE:ebpt}
+ X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX [0] EXPLICIT ebpt.&parameters.&Type,
+ NUMERATION multi-valued,
+ ID ebpt.&parameters.&id
+}
+
+-- Basic body parts
+ia5-text-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IA5TextBodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-ia5-text-body-parts
+}
+
+g3-facsimile-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX G3FacsimileBodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-g3-facsimile-body-parts
+}
+
+g4-class1-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX G4Class1BodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-g4-class1-body-parts
+}
+
+teletex-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX TeletexBodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-teletex-body-parts
+}
+
+videotex-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX VideotexBodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-videotex-body-parts
+}
+
+encrypted-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX EncryptedBodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-encrypted-body-parts
+}
+
+message-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ NUMERATION multi-valued,
+ ID id-bat-message-body-parts
+}
+
+mixed-mode-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MixedModeBodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-mixed-mode-body-parts
+}
+
+bilaterally-defined-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BilaterallyDefinedBodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-bilaterally-defined-body-parts
+}
+
+nationally-defined-body-parts X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX NationallyDefinedBodyPart,
+ NUMERATION multi-valued,
+ ID id-bat-nationally-defined-body-parts
+}
+
+-- Basic body part parameters components
+ia5-text-parameters X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IA5TextParameters,
+ NUMERATION multi-valued,
+ ID id-bat-ia5-text-parameters
+}
+
+g3-facsimile-parameters X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX G3FacsimileParameters,
+ NUMERATION multi-valued,
+ ID id-bat-g3-facsimile-parameters
+}
+
+teletex-parameters X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX TeletexParameters,
+ NUMERATION multi-valued,
+ ID id-bat-teletex-parameters
+}
+
+videotex-parameters X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX VideotexParameters,
+ NUMERATION multi-valued,
+ ID id-bat-videotex-parameters
+}
+
+encrypted-parameters X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX EncryptedParameters,
+ NUMERATION multi-valued,
+ ID id-bat-encrypted-parameters
+}
+
+message-parameters X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageParameters,
+ NUMERATION multi-valued,
+ ID id-bat-message-parameters
+}
+
+-- Basic body part data components
+ia5-text-data X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IA5TextData,
+ NUMERATION multi-valued,
+ ID id-bat-ia5-text-data
+}
+
+g3-facsimile-data X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX G3FacsimileData,
+ NUMERATION multi-valued,
+ ID id-bat-g3-facsimile-data
+}
+
+teletex-data X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX TeletexData,
+ NUMERATION multi-valued,
+ ID id-bat-teletex-data
+}
+
+videotex-data X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX VideotexData,
+ NUMERATION multi-valued,
+ ID id-bat-videotex-data
+}
+
+encrypted-data X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX EncryptedData,
+ NUMERATION multi-valued,
+ ID id-bat-encrypted-data
+}
+
+message-data X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageData,
+ NUMERATION multi-valued,
+ ID id-bat-message-data
+}
+
+-- NOTIFICATION ATTRIBUTES
+-- Common fields
+subject-ipm X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SubjectIPMField,
+ EQUALITY MATCHING-RULE iPMIdentifierMatch,
+ NUMERATION single-valued,
+ ID id-nat-subject-ipm
+}
+
+ipn-originator X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPNOriginatorField,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ OTHER MATCHING-RULES
+ {oRDescriptorElementsMatch | oRDescriptorSingleElementMatch |
+ oRDescriptorSubstringElementsMatch, ...},
+ NUMERATION single-valued,
+ ID id-nat-ipn-originator
+}
+
+ipm-intended-recipient X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMIntendedRecipientField,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ OTHER MATCHING-RULES
+ {oRDescriptorElementsMatch | oRDescriptorSingleElementMatch |
+ oRDescriptorSubstringElementsMatch, ...},
+ NUMERATION single-valued,
+ ID id-nat-ipm-intended-recipient
+}
+
+conversion-eits X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MS-EIT,
+ EQUALITY MATCHING-RULE objectIdentifierMatch,
+ NUMERATION multi-valued,
+ ID id-nat-conversion-eits
+}
+
+notification-extensions X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMSExtension {{NotificationExtensions}},
+ NUMERATION multi-valued,
+ ID id-nat-notification-extensions
+}
+
+-- Non-receipt fields
+non-receipt-reason X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX NonReceiptReasonField,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-nat-non-receipt-reason
+}
+
+discard-reason X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DiscardReasonField,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-nat-discard-reason
+}
+
+auto-forward-comment X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AutoForwardCommentField,
+ EQUALITY MATCHING-RULE mSStringMatch,
+ SUBSTRINGS MATCHING-RULE mSSubstringsMatch,
+ NUMERATION single-valued,
+ ID id-nat-auto-forward-comment
+}
+
+returned-ipm X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReturnedIPMField,
+ NUMERATION single-valued,
+ ID id-nat-returned-ipm
+}
+
+nrn-extensions X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMSExtension {{NRNExtensions}},
+ NUMERATION multi-valued,
+ ID id-nat-nrn-extensions
+}
+
+-- Receipt fields
+receipt-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReceiptTimeField,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-nat-receipt-time
+}
+
+acknowledgment-mode X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AcknowledgmentModeField,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-nat-acknowledgment-mode
+}
+
+suppl-receipt-info X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SupplReceiptInfoField,
+ EQUALITY MATCHING-RULE mSStringMatch,
+ SUBSTRINGS MATCHING-RULE mSSubstringsMatch,
+ NUMERATION single-valued,
+ ID id-nat-suppl-receipt-info
+}
+
+rn-extensions X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMSExtension {{RNExtensions}},
+ NUMERATION multi-valued,
+ ID id-nat-rn-extensions
+}
+
+-- Other notification type fields
+other-notification-type-fields X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMSExtension {{OtherNotifications}},
+ NUMERATION multi-valued,
+ ID id-nat-other-notification-type-fields
+}
+
+-- CORRELATION ATTRIBUTES
+-- Common attributes
+ac-forwarding-ipms X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-forwarding-ipms
+}
+
+ac-forwarded-ipms X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-forwarded-ipms
+}
+
+ac-obsoleting-ipms X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-obsoleting-ipms
+}
+
+ac-obsoleted-ipms X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMLocation,
+ OTHER MATCHING-RULES {iPMLocationMatch, ...},
+ NUMERATION multi-valued,
+ ID id-cat-obsoleted-ipms
+}
+
+IPMLocation ::= CHOICE {stored SET OF SequenceNumber,
+ absent NULL,
+ ...
+}
+
+ac-relating-ipms X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-relating-ipms
+}
+
+ac-related-ipms X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX IPMLocation,
+ OTHER MATCHING-RULES {iPMLocationMatch, ...},
+ NUMERATION multi-valued,
+ ID id-cat-related-ipms
+}
+
+ac-replied-to-ipm X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-replied-to-ipm
+}
+
+ac-replying-ipms X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-replying-ipms
+}
+
+ac-subject-ipm X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-subject-ipm
+}
+
+-- Submitted message correlation
+ac-ipm-recipients X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORDescriptor,
+ EQUALITY MATCHING-RULE oRDescriptorMatch,
+ OTHER MATCHING-RULES
+ {oRDescriptorElementsMatch | oRDescriptorSingleElementMatch |
+ oRDescriptorSubstringElementsMatch, ...},
+ NUMERATION multi-valued,
+ ID id-cat-ipm-recipients
+}
+
+ac-delivered-replies-summary X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DeliveredReplyStatus,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-delivered-replies-summary
+}
+
+DeliveredReplyStatus ::= INTEGER {
+ no-reply-requested(0) -- reply not requested --,
+ reply-outstanding(1) -- reply requested --, reply-received(2)}
+
+ac-correlated-delivered-replies X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX CorrelatedDeliveredReplies,
+ NUMERATION multi-valued,
+ ID id-cat-correlated-delivered-replies
+}
+
+CorrelatedDeliveredReplies ::= CHOICE {
+ no-reply-received [0] NULL,
+ received-replies [1] SEQUENCE OF SequenceNumber
+}
+
+ac-delivered-ipn-summary X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DeliveredIPNStatus,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-delivered-ipn-summary
+}
+
+DeliveredIPNStatus ::= INTEGER {
+ no-ipn-requested(0), an-requested(3), nrn-requested(5), rn-requested(10),
+ an-received(13), ipm-auto-forwarded(15), ipm-discarded(20), rn-received(25)
+}
+
+ac-correlated-delivered-ipns X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX CorrelatedDeliveredIPNs,
+ NUMERATION multi-valued,
+ ID id-cat-correlated-delivered-ipns
+}
+
+CorrelatedDeliveredIPNs ::= CHOICE {
+ no-ipn-received [0] NULL,
+ ipns-received [1] SEQUENCE OF SequenceNumber
+}
+
+-- Delivered message correlation
+ac-submitted-reply-status X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SubmittedReplyStatus,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-cat-submitted-reply-status
+}
+
+SubmittedReplyStatus ::= INTEGER {
+ no-reply-requested(0), no-reply-intended(1), reply-pending(2), reply-sent(3)
+}
+
+ac-submitted-ipn-status X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SubmittedIPNStatus,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-cat-submitted-ipn-status
+}
+
+SubmittedIPNStatus ::= INTEGER {
+ no-ipn-requested(0), nrn-requested(5), nrn-with-ipm-return-requested(10),
+ rn-requested(15), rn-with-ipm-return-requested(20), ipm-auto-forwarded(25),
+ ipm-discarded(30), rn-sent(35)}
+
+ac-submitted-ipns X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-cat-submitted-ipns
+}
+
+recipient-category X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX RecipientCategory,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-cat-recipient-category
+}
+
+RecipientCategory ::= INTEGER {
+ primary-recipient(0), copy-recipient(1), blind-copy-recipient(2),
+ category-unknown(3), circulation-list(4)}
+
+revised-reply-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReplyTimeField,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-cat-revised-reply-time
+}
+
+-- MATCHING-RULES
+IPMMatchingRuleTable MATCHING-RULE ::=
+ {iPMIdentifierMatch | oRDescriptorMatch | recipientSpecifierMatch,
+ ... -- 1994 extension additions --, circulationMemberCheckmarkMatch |
+ circulationMemberElementsMatch | circulationMemberMatch |
+ circulationMemberSingleElementMatch |
+ circulationMemberSubstringElementsMatch | distributionCodeMatch |
+ informationCategoryMatch | iPMLocationMatch | oRDescriptorElementsMatch |
+ oRDescriptorSingleElementMatch | oRDescriptorSubstringElementsMatch |
+ recipientSpecifierElementsMatch | recipientSpecifierSingleElementMatch |
+ recipientSpecifierSubstringElementsMatch}
+
+iPMIdentifierMatch MATCHING-RULE ::= {
+ SYNTAX IPMIdentifier
+ ID id-mr-ipm-identifier
+}
+
+iPMLocationMatch MATCHING-RULE ::= {
+ SYNTAX SequenceNumber
+ ID id-mr-ipm-location
+}
+
+oRDescriptorMatch MATCHING-RULE ::= {
+ SYNTAX ORDescriptor
+ ID id-mr-or-descriptor
+}
+
+oRDescriptorElementsMatch MATCHING-RULE ::= {
+ SYNTAX ORDescriptor
+ ID id-mr-or-descriptor-elements
+}
+
+oRDescriptorSubstringElementsMatch MATCHING-RULE ::= {
+ SYNTAX ORDescriptor
+ ID id-mr-or-descriptor-substring-elements
+}
+
+oRDescriptorSingleElementMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-or-descriptor-single-element
+}
+
+recipientSpecifierMatch MATCHING-RULE ::= {
+ SYNTAX RecipientSpecifier
+ ID id-mr-recipient-specifier
+}
+
+recipientSpecifierElementsMatch MATCHING-RULE ::= {
+ SYNTAX RecipientSpecifier
+ ID id-mr-recipient-specifier-elements
+}
+
+recipientSpecifierSubstringElementsMatch MATCHING-RULE ::= {
+ SYNTAX RecipientSpecifier
+ ID id-mr-recipient-specifier-substring-elements
+}
+
+recipientSpecifierSingleElementMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-recipient-specifier-single-element
+}
+
+circulationMemberMatch MATCHING-RULE ::= {
+ SYNTAX CirculationMember
+ ID id-mr-circulation-member
+}
+
+circulationMemberElementsMatch MATCHING-RULE ::= {
+ SYNTAX CirculationMember
+ ID id-mr-circulation-member-elements
+}
+
+circulationMemberSubstringElementsMatch MATCHING-RULE ::= {
+ SYNTAX CirculationMember
+ ID id-mr-circulation-member-substring-elements
+}
+
+circulationMemberSingleElementMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-circulation-member-single-element
+}
+
+circulationMemberCheckmarkMatch MATCHING-RULE ::= {
+ SYNTAX CirculationMember
+ ID id-mr-circulation-member-checkmark
+}
+
+distributionCodeMatch MATCHING-RULE ::= {
+ SYNTAX DistributionCode
+ ID id-mr-distribution-code
+}
+
+informationCategoryMatch MATCHING-RULE ::= {
+ SYNTAX InformationCategory
+ ID id-mr-information-category
+}
+
+END -- of IPMSMessageStoreAttributes
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSObjectIdentifiers.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSObjectIdentifiers.asn1
new file mode 100644
index 0000000000..6e5c01ab40
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSObjectIdentifiers.asn1
@@ -0,0 +1,507 @@
+-- Module IPMSObjectIdentifiers (X.420:06/1999)
+IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS -- nothing -- ;
+
+ID ::= OBJECT IDENTIFIER
+
+-- Interpersonal Messaging (not definitive)
+id-ipms ID ::=
+ {joint-iso-itu-t mhs(6) ipms(1)} -- not definitive
+
+-- Categories
+id-mod ID ::= {id-ipms 0} -- modules; not definitive
+
+id-ot ID ::= {id-ipms 1} -- object types
+
+id-pt ID ::= {id-ipms 2} -- port types
+
+id-et ID ::= {id-ipms 4} -- extended body part types
+
+id-hex ID ::= {id-ipms 5} -- heading extensions
+
+id-sat ID ::= {id-ipms 6} -- summary attributes
+
+id-hat ID ::= {id-ipms 7} -- heading attributes
+
+id-bat ID ::= {id-ipms 8} -- body attributes
+
+id-nat ID ::= {id-ipms 9} -- notification attributes
+
+id-mct ID ::= {id-ipms 10} -- message content types
+
+id-ep ID ::= {id-ipms 11} -- extended body part parameters
+
+id-eit ID ::= {id-ipms 12} -- encoded information types
+
+id-cat ID ::= {id-ipms 13} -- correlation attributes
+
+id-mr ID ::= {id-ipms 14} -- matching-rules
+
+id-aa ID ::= {id-ipms 15} -- auto-actions
+
+id-aae ID ::= {id-ipms 16} -- auto-action errors
+
+id-mst ID ::= {id-ipms 17} -- message store types
+
+id-sec ID ::= {id-ipms 18} -- ipm security extensions
+
+id-on ID ::= {id-ipms 19} -- other notification type extensions
+
+id-rex ID ::= {id-ipms 20} -- recipient extensions
+
+-- Modules
+id-mod-object-identifiers ID ::= {id-mod 0} -- not definitive
+
+id-mod-functional-objects ID ::= {id-mod 1} -- not definitive
+
+id-mod-information-objects ID ::= {id-mod 2} -- not definitive
+
+id-mod-abstract-service ID ::= {id-mod 3} -- not definitive
+
+id-mod-heading-extensions ID ::= {id-mod 6} -- not definitive
+
+id-mod-extended-body-part-types ID ::= {id-mod 7} -- not definitive
+
+id-mod-message-store-attributes ID ::= {id-mod 8} -- not definitive
+
+id-mod-file-transfer-body-part-type ID ::= {id-mod 9} -- not definitive
+
+id-mod-upper-bounds ID ::= {id-mod 10} -- not definitive
+
+id-mod-extended-voice-body-part-type ID ::= {id-mod 11} -- not definitive
+
+id-mod-forwarded-report-body-part-type ID ::= {id-mod 12} -- not definitive
+
+id-mod-auto-actions ID ::= {id-mod 13} -- not definitive
+
+id-mod-ipm-security-extensions ID ::= {id-mod 14} -- not definitive
+
+id-mod-forwarded-content-body-part-type ID ::= {id-mod 15} -- not definitive
+
+id-mod-pkcs7-body-part-type ID ::= {id-mod 16} -- not definitive
+
+-- Object types
+id-ot-ipms-user ID ::= {id-ot 1}
+
+id-ot-ipms ID ::= {id-ot 2}
+
+-- Port types
+id-pt-origination ID ::= {id-pt 0}
+
+id-pt-reception ID ::= {id-pt 1}
+
+id-pt-management ID ::= {id-pt 2}
+
+-- Extended body part types
+id-et-ia5-text ID ::= {id-et 0}
+
+id-et-g3-facsimile ID ::= {id-et 2}
+
+id-et-g4-class1 ID ::= {id-et 3}
+
+id-et-teletex ID ::= {id-et 4}
+
+id-et-videotex ID ::= {id-et 5}
+
+id-et-encrypted ID ::= {id-et 6}
+
+id-et-message ID ::= {id-et 7}
+
+id-et-mixed-mode ID ::= {id-et 8}
+
+id-et-bilaterally-defined ID ::= {id-et 9}
+
+id-et-nationally-defined ID ::= {id-et 10}
+
+id-et-general-text ID ::= {id-et 11}
+
+id-et-file-transfer ID ::= {id-et 12}
+
+-- Value {id-et 13} is no longer defined
+id-et-report ID ::= {id-et 14}
+
+id-et-notification ID ::= {id-et 15}
+
+id-et-voice ID ::= {id-et 16}
+
+id-et-content ID ::=
+ {id-et 17} -- This value is not used directly, only as a prefix
+
+id-et-pkcs7 ID ::= {id-et 18}
+
+-- Heading extensions
+id-hex-incomplete-copy ID ::= {id-hex 0}
+
+id-hex-languages ID ::= {id-hex 1}
+
+id-hex-auto-submitted ID ::= {id-hex 2}
+
+id-hex-body-part-signatures ID ::= {id-hex 3}
+
+id-hex-ipm-security-label ID ::= {id-hex 4}
+
+id-hex-authorization-time ID ::= {id-hex 5}
+
+id-hex-circulation-list-recipients ID ::= {id-hex 6}
+
+id-hex-distribution-codes ID ::= {id-hex 7}
+
+id-hex-extended-subject ID ::= {id-hex 8}
+
+id-hex-information-category ID ::= {id-hex 9}
+
+id-hex-manual-handling-instructions ID ::= {id-hex 10}
+
+id-hex-originators-reference ID ::= {id-hex 11}
+
+id-hex-precedence-policy-id ID ::= {id-hex 12}
+
+-- Summary attributes
+id-sat-ipm-entry-type ID ::= {id-sat 0}
+
+id-sat-ipm-synopsis ID ::= {id-sat 1}
+
+id-sat-body-parts-summary ID ::= {id-sat 2}
+
+id-sat-ipm-auto-discarded ID ::= {id-sat 3}
+
+-- Heading attributes
+id-hat-heading ID ::= {id-hat 0}
+
+id-hat-this-ipm ID ::= {id-hat 1}
+
+id-hat-originator ID ::= {id-hat 2}
+
+id-hat-replied-to-IPM ID ::= {id-hat 3}
+
+id-hat-subject ID ::= {id-hat 4}
+
+id-hat-expiry-time ID ::= {id-hat 5}
+
+id-hat-reply-time ID ::= {id-hat 6}
+
+id-hat-importance ID ::= {id-hat 7}
+
+id-hat-sensitivity ID ::= {id-hat 8}
+
+id-hat-auto-forwarded ID ::= {id-hat 9}
+
+id-hat-authorizing-users ID ::= {id-hat 10}
+
+id-hat-primary-recipients ID ::= {id-hat 11}
+
+id-hat-copy-recipients ID ::= {id-hat 12}
+
+id-hat-blind-copy-recipients ID ::= {id-hat 13}
+
+id-hat-obsoleted-IPMs ID ::= {id-hat 14}
+
+id-hat-related-IPMs ID ::= {id-hat 15}
+
+id-hat-reply-recipients ID ::= {id-hat 16}
+
+id-hat-incomplete-copy ID ::= {id-hat 17}
+
+id-hat-languages ID ::= {id-hat 18}
+
+id-hat-rn-requestors ID ::= {id-hat 19}
+
+id-hat-nrn-requestors ID ::= {id-hat 20}
+
+id-hat-reply-requestors ID ::= {id-hat 21}
+
+id-hat-auto-submitted ID ::= {id-hat 22}
+
+id-hat-body-part-signatures ID ::= {id-hat 23}
+
+id-hat-ipm-security-label ID ::= {id-hat 24}
+
+id-hat-body-part-security-label ID ::= {id-hat 25}
+
+id-hat-body-part-encryption-token ID ::= {id-hat 26}
+
+id-hat-authorization-time ID ::= {id-hat 27}
+
+id-hat-circulation-list-recipients ID ::= {id-hat 28}
+
+id-hat-distribution-codes ID ::= {id-hat 29}
+
+id-hat-extended-subject ID ::= {id-hat 30}
+
+id-hat-information-category ID ::= {id-hat 31}
+
+id-hat-manual-handling-instructions ID ::= {id-hat 32}
+
+id-hat-originators-reference ID ::= {id-hat 33}
+
+id-hat-precedence-policy-id ID ::= {id-hat 34}
+
+id-hat-forwarded-content-token ID ::= {id-hat 35}
+
+id-hat-forwarding-token ID ::= {id-hat 36}
+
+id-hat-precedence ID ::= {id-hat 37}
+
+id-hat-body-part-signature-verification-status ID ::= {id-hat 38}
+
+-- Body attributes
+id-bat-body ID ::= {id-bat 0}
+
+id-bat-ia5-text-body-parts ID ::= {id-bat 1}
+
+id-bat-g3-facsimile-body-parts ID ::= {id-bat 3}
+
+id-bat-g4-class1-body-parts ID ::= {id-bat 4}
+
+id-bat-teletex-body-parts ID ::= {id-bat 5}
+
+id-bat-videotex-body-parts ID ::= {id-bat 6}
+
+id-bat-encrypted-body-parts ID ::= {id-bat 7}
+
+id-bat-message-body-parts ID ::= {id-bat 8}
+
+id-bat-mixed-mode-body-parts ID ::= {id-bat 9}
+
+id-bat-bilaterally-defined-body-parts ID ::= {id-bat 10}
+
+id-bat-nationally-defined-body-parts ID ::= {id-bat 11}
+
+id-bat-extended-body-part-types ID ::= {id-bat 12}
+
+id-bat-ia5-text-parameters ID ::= {id-bat 13}
+
+id-bat-g3-facsimile-parameters ID ::= {id-bat 15}
+
+id-bat-teletex-parameters ID ::= {id-bat 16}
+
+id-bat-videotex-parameters ID ::= {id-bat 17}
+
+id-bat-encrypted-parameters ID ::= {id-bat 18}
+
+id-bat-message-parameters ID ::= {id-bat 19}
+
+id-bat-ia5-text-data ID ::= {id-bat 20}
+
+id-bat-g3-facsimile-data ID ::= {id-bat 22}
+
+id-bat-teletex-data ID ::= {id-bat 23}
+
+id-bat-videotex-data ID ::= {id-bat 24}
+
+id-bat-encrypted-data ID ::= {id-bat 25}
+
+id-bat-message-data ID ::= {id-bat 26}
+
+-- Notification attributes
+id-nat-subject-ipm ID ::= {id-nat 0}
+
+id-nat-ipn-originator ID ::= {id-nat 1}
+
+id-nat-ipm-intended-recipient ID ::= {id-nat 2}
+
+id-nat-conversion-eits ID ::= {id-nat 3}
+
+id-nat-non-receipt-reason ID ::= {id-nat 4}
+
+id-nat-discard-reason ID ::= {id-nat 5}
+
+id-nat-auto-forward-comment ID ::= {id-nat 6}
+
+id-nat-returned-ipm ID ::= {id-nat 7}
+
+id-nat-receipt-time ID ::= {id-nat 8}
+
+id-nat-acknowledgment-mode ID ::= {id-nat 9}
+
+id-nat-suppl-receipt-info ID ::= {id-nat 10}
+
+id-nat-notification-extensions ID ::= {id-nat 11}
+
+id-nat-nrn-extensions ID ::= {id-nat 12}
+
+id-nat-rn-extensions ID ::= {id-nat 13}
+
+id-nat-other-notification-type-fields ID ::= {id-nat 14}
+
+-- Correlation attributes
+id-cat-correlated-delivered-ipns ID ::= {id-cat 0}
+
+id-cat-correlated-delivered-replies ID ::= {id-cat 1}
+
+id-cat-delivered-ipn-summary ID ::= {id-cat 2}
+
+id-cat-delivered-replies-summary ID ::= {id-cat 3}
+
+id-cat-forwarded-ipms ID ::= {id-cat 4}
+
+id-cat-forwarding-ipms ID ::= {id-cat 5}
+
+id-cat-ipm-recipients ID ::= {id-cat 6}
+
+id-cat-obsoleted-ipms ID ::= {id-cat 7}
+
+id-cat-obsoleting-ipms ID ::= {id-cat 8}
+
+id-cat-related-ipms ID ::= {id-cat 9}
+
+id-cat-relating-ipms ID ::= {id-cat 10}
+
+id-cat-replied-to-ipm ID ::= {id-cat 11}
+
+id-cat-replying-ipms ID ::= {id-cat 12}
+
+id-cat-revised-reply-time ID ::= {id-cat 13}
+
+id-cat-submitted-ipn-status ID ::= {id-cat 14}
+
+id-cat-submitted-ipns ID ::= {id-cat 15}
+
+id-cat-submitted-reply-status ID ::= {id-cat 16}
+
+id-cat-subject-ipm ID ::= {id-cat 17}
+
+id-cat-recipient-category ID ::= {id-cat 18}
+
+-- Message content types (for use by MS and Directory)
+id-mct-p2-1984 ID ::=
+ {id-mct 0} -- P2 1984
+
+id-mct-p2-1988 ID ::= {id-mct 1} -- P2 1988
+
+-- Extended body part parameters
+id-ep-ia5-text ID ::= {id-ep 0}
+
+id-ep-g3-facsimile ID ::= {id-ep 2}
+
+id-ep-teletex ID ::= {id-ep 4}
+
+id-ep-videotex ID ::= {id-ep 5}
+
+id-ep-encrypted ID ::= {id-ep 6}
+
+id-ep-message ID ::= {id-ep 7}
+
+id-ep-general-text ID ::= {id-ep 11}
+
+id-ep-file-transfer ID ::= {id-ep 12}
+
+-- Value {id-ep 13} is no longer defined
+id-ep-notification ID ::= {id-ep 15}
+
+id-ep-voice ID ::= {id-ep 16}
+
+id-ep-content ID ::=
+ {id-ep 17} -- This value is not used directly, only as a prefix
+
+-- Encoded Information Types
+id-eit-file-transfer ID ::= {id-eit 0}
+
+id-eit-voice ID ::= {id-eit 1}
+
+-- Voice Encoded Information Types
+id-voice-11khz-sample ID ::=
+ {id-eit-voice 0}
+
+id-voice-22khz-sample ID ::= {id-eit-voice 1}
+
+id-voice-cd-quality ID ::= {id-eit-voice 2}
+
+id-voice-g711-mu-law ID ::= {id-eit-voice 3}
+
+id-voice-g726-32k-adpcm ID ::= {id-eit-voice 4}
+
+id-voice-g728-16k-ld-celp ID ::= {id-eit-voice 5}
+
+-- Matching-rules
+id-mr-ipm-identifier ID ::= {id-mr 0}
+
+id-mr-or-descriptor ID ::= {id-mr 1}
+
+id-mr-or-descriptor-elements ID ::= {id-mr 2}
+
+id-mr-or-descriptor-substring-elements ID ::= {id-mr 3}
+
+id-mr-recipient-specifier ID ::= {id-mr 4}
+
+id-mr-recipient-specifier-elements ID ::= {id-mr 5}
+
+id-mr-recipient-specifier-substring-elements ID ::= {id-mr 6}
+
+id-mr-ipm-location ID ::= {id-mr 7}
+
+id-mr-or-descriptor-single-element ID ::= {id-mr 8}
+
+id-mr-recipient-specifier-single-element ID ::= {id-mr 9}
+
+id-mr-circulation-member ID ::= {id-mr 10}
+
+id-mr-circulation-member-elements ID ::= {id-mr 11}
+
+id-mr-circulation-member-substring-elements ID ::= {id-mr 12}
+
+id-mr-circulation-member-single-element ID ::= {id-mr 13}
+
+id-mr-circulation-member-checkmark ID ::= {id-mr 14}
+
+id-mr-distribution-code ID ::= {id-mr 15}
+
+id-mr-information-category ID ::= {id-mr 16}
+
+-- Auto-actions
+id-aa-ipm-auto-acknowledgement ID ::= {id-aa 0}
+
+id-aa-ipm-auto-correlate ID ::= {id-aa 1}
+
+id-aa-ipm-auto-discard ID ::= {id-aa 2}
+
+id-aa-ipm-auto-advise ID ::= {id-aa 3}
+
+-- Auto-action-errors
+id-aae-auto-discard-error ID ::= {id-aae 0}
+
+id-aae-auto-forwarding-loop ID ::= {id-aae 1}
+
+id-aae-duplicate-ipn ID ::= {id-aae 2}
+
+-- Message Store types
+id-mst-invalid-assembly-instructions ID ::= {id-mst 0}
+
+id-mst-invalid-ipn ID ::= {id-mst 1}
+
+id-mst-assembly-instructions ID ::= {id-mst 2}
+
+id-mst-suspend-auto-acknowledgement ID ::= {id-mst 3}
+
+id-mst-prevent-nrn-generation ID ::= {id-mst 4}
+
+id-mst-originator-body-part-encryption-token ID ::= {id-mst 5}
+
+id-mst-originator-forwarded-content-token ID ::= {id-mst 6}
+
+id-mst-assembly-capability ID ::= {id-mst 7}
+
+-- Security extensions
+id-sec-ipm-security-request ID ::= {id-sec 0}
+
+id-sec-security-common-fields ID ::= {id-sec 1}
+
+-- Other notification types
+id-on-absence-advice ID ::= {id-on 0}
+
+id-on-change-of-address-advice ID ::= {id-on 1}
+
+-- Recipient extensions
+id-rex-circulation-list-indicator ID ::= {id-rex 0}
+
+id-rex-precedence ID ::= {id-rex 1}
+
+END -- of IPMSObjectIdentifiers
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSObjectIdentifiers2.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSObjectIdentifiers2.asn1
new file mode 100644
index 0000000000..2b46b27b3e
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSObjectIdentifiers2.asn1
@@ -0,0 +1,33 @@
+-- Module IPMSObjectIdentifiers2 (X.420:06/1999)
+IPMSObjectIdentifiers2 {iso standard mhs(10021) ipms(7) modules(0)
+ object-identifiers(0)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS -- nothing -- ;
+
+ID ::= OBJECT IDENTIFIER
+
+-- Interpersonal Messaging (ISO/IEC extensions)
+id-iso-ipms ID ::=
+ {iso standard mhs(10021) ipms(7)}
+
+-- Categories
+id-iso-mod ID ::= {id-iso-ipms 0} -- modules; not definitive
+
+id-iso-cs ID ::= {id-iso-ipms 1} -- character sets
+
+-- Modules
+id-mod-object-identifiers-2 ID ::= {id-iso-mod 0} -- not definitive
+
+id-mod-extended-body-part-types-2 ID ::= {id-iso-mod 1} -- not definitive
+
+-- Registration Authority for General Text Character Set EITs
+id-cs-eit-authority ID ::=
+ {id-iso-cs 0}
+
+END -- of IPMSObjectIdentifiers2
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSSecurityExtensions.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSSecurityExtensions.asn1
new file mode 100644
index 0000000000..8c692ccb31
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSSecurityExtensions.asn1
@@ -0,0 +1,143 @@
+-- Module IPMSSecurityExtensions (X.420:06/1999)
+IPMSSecurityExtensions {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ ipm-security-extensions(14) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS
+ -- MTS Abstract Service
+ Certificates, Content, ContentIntegrityCheck, ExtendedCertificates,
+ EXTENSION, MessageOriginAuthenticationCheck, MessageToken, EncryptionKey
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- IPMS Information Objects
+ IPMS-EXTENSION
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Heading Extensions
+ BodyPartNumber
+ --==
+ FROM IPMSHeadingExtensions {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ heading-extensions(6) version-1999(1)}
+ -- Directory Authentication Framework
+ AlgorithmIdentifier, ENCRYPTED{}
+ --==
+ FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
+ authenticationFramework(7) 3}
+ -- Directory Certificate Extensions
+ CertificateAssertion
+ --==
+ FROM CertificateExtensions {joint-iso-itu-t ds(5) module(1)
+ certificateExtensions(26) 0}
+ -- IPMS Object Identifiers
+ id-sec-ipm-security-request, id-sec-security-common-fields
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- Recipient Security Request
+recipient-security-request IPMS-EXTENSION ::= {
+ VALUE RecipientSecurityRequest,
+ IDENTIFIED BY id-sec-ipm-security-request
+}
+
+RecipientSecurityRequest ::= BIT STRING {
+ content-non-repudiation(0), content-proof(1), ipn-non-repudiation(2),
+ ipn-proof(3)}
+
+-- IPN Security Response
+ipn-security-response IPMS-EXTENSION ::= {
+ VALUE IpnSecurityResponse,
+ IDENTIFIED BY id-sec-security-common-fields
+}
+
+IpnSecurityResponse ::= SET {
+ content-or-arguments
+ CHOICE {original-content OriginalContent,
+ original-security-arguments
+ SET {original-content-integrity-check
+ [0] OriginalContentIntegrityCheck OPTIONAL,
+ original-message-origin-authentication-check
+ [1] OriginalMessageOriginAuthenticationCheck OPTIONAL,
+ original-message-token
+ [2] OriginalMessageToken OPTIONAL}},
+ security-diagnostic-code SecurityDiagnosticCode OPTIONAL
+}
+
+-- MTS security fields
+OriginalContent ::= Content
+
+OriginalContentIntegrityCheck ::= ContentIntegrityCheck
+
+OriginalMessageOriginAuthenticationCheck ::= MessageOriginAuthenticationCheck
+
+OriginalMessageToken ::= MessageToken
+
+-- Security Diagnostic Codes
+SecurityDiagnosticCode ::= INTEGER {
+ integrity-failure-on-subject-message(0),
+ integrity-failure-on-forwarded-message(1),
+ moac-failure-on-subject-message(2), unsupported-security-policy(3),
+ unsupported-algorithm-identifier(4), decryption-failed(5), token-error(6),
+ unable-to-sign-notification(7), unable-to-sign-message-receipt(8),
+ authentication-failure-on-subject-message(9),
+ security-context-failure-message(10), message-sequence-failure(11),
+ message-security-labelling-failure(12), repudiation-failure-of-message(13),
+ failure-of-proof-of-message(14), signature-key-unobtainable(15),
+ decryption-key-unobtainable(16), key-failure(17),
+ unsupported-request-for-security-service(18),
+ inconsistent-request-for-security-service(19),
+ ipn-non-repudiation-provided-instead-of-content-proof(20),
+ token-decryption-failed(21), double-enveloping-message-restoring-failure(22),
+ unauthorised-dl-member(23), reception-security-failure(24),
+ unsuitable-alternate-recipient(25), security-services-refusal(26),
+ unauthorised-recipient(27), unknown-certification-authority-name(28),
+ unknown-dl-name(29), unknown-originator-name(30), unknown-recipient-name(31),
+ security-policy-violation(32)}
+
+-- Security Envelope Extensions
+body-part-encryption-token EXTENSION ::= {
+ BodyPartTokens,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:43
+}
+
+BodyPartTokens ::=
+ SET OF
+ SET {body-part-number BodyPartNumber,
+ body-part-choice
+ CHOICE {encryption-token EncryptionToken,
+ message-or-content-body-part [0] BodyPartTokens}
+ }
+
+EncryptionToken ::= SET {
+ encryption-algorithm-identifier AlgorithmIdentifier,
+ encrypted-key ENCRYPTED{EncryptionKey},
+ recipient-certificate-selector [0] CertificateAssertion OPTIONAL,
+ recipient-certificate [1] Certificates OPTIONAL,
+ originator-certificate-selector [2] CertificateAssertion OPTIONAL,
+ originator-certificates [3] ExtendedCertificates OPTIONAL,
+ ...
+}
+
+forwarded-content-token EXTENSION ::= {
+ ForwardedContentToken,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:44
+}
+
+ForwardedContentToken ::=
+ SET OF
+ SET {body-part-number BodyPartNumber,
+ body-part-choice
+ CHOICE {forwarding-token MessageToken,
+ message-or-content-body-part ForwardedContentToken
+ }}
+
+END -- of IPMSSecurityExtensions
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSUpperBounds.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSUpperBounds.asn1
new file mode 100644
index 0000000000..27324f614f
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/IPMSUpperBounds.asn1
@@ -0,0 +1,46 @@
+-- Module IPMSUpperBounds (X.420:06/1999)
+IPMSUpperBounds {joint-iso-itu-t mhs(6) ipms(1) modules(0) upper-bounds(10)
+ version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS -- nothing -- ;
+
+-- Upper bounds
+ub-alpha-code-length INTEGER ::= 16
+
+ub-auto-forward-comment INTEGER ::= 256
+
+ub-circulation-list-members INTEGER ::= 256
+
+ub-distribution-codes INTEGER ::= 16
+
+ub-extended-subject-length INTEGER ::= 256
+
+ub-free-form-name INTEGER ::= 64
+
+ub-information-categories INTEGER ::= 16
+
+ub-information-category-length INTEGER ::= 64
+
+ub-ipm-identifier-suffix INTEGER ::= 2
+
+ub-local-ipm-identifier INTEGER ::= 64
+
+ub-manual-handling-instruction-length INTEGER ::= 128
+
+ub-manual-handling-instructions INTEGER ::= 16
+
+ub-originators-reference-length INTEGER ::= 64
+
+ub-precedence INTEGER ::= 127
+
+ub-subject-field INTEGER ::= 128
+
+ub-telephone-number INTEGER ::= 32
+
+END -- of IPMSUpperBounds
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/ISO-STANDARD-9541-FONT-ATTRIBUTE-SET.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/ISO-STANDARD-9541-FONT-ATTRIBUTE-SET.asn1
new file mode 100644
index 0000000000..b7efd7417e
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/ISO-STANDARD-9541-FONT-ATTRIBUTE-SET.asn1
@@ -0,0 +1,459 @@
+-- Module ISO-STANDARD-9541-FONT-ATTRIBUTE-SET (ISO:1991)
+--
+-- Copyright � ISO/IEC 1991. This version of
+-- this ASN.1 module is part of ISO|IEC 9541-2:1991;
+-- see the ISO|IEC text itself for full legal notices.
+--
+ISO-STANDARD-9541-FONT-ATTRIBUTE-SET {1 0 9541 2 2} DEFINITIONS ::=
+BEGIN
+
+EXPORTS Font-Attribute-Set;
+
+IMPORTS Structured-Name
+ FROM ISO9541-SN {1 0 9541 2 3};
+
+Font-Attribute-Set ::= SEQUENCE {
+ name-prefixes [0] IMPLICIT SET OF Name-Prefix OPTIONAL,
+ iso-standard-9541-fontname [1] IMPLICIT Global-Name OPTIONAL,
+ iso-standard-9541-fontdescription [2] IMPLICIT Font-Description OPTIONAL,
+ iso-standard-9541-wrmodes [3] IMPLICIT Writing-Modes OPTIONAL,
+ non-iso-properties [5] IMPLICIT Property-List OPTIONAL
+}
+
+Font-Description ::= SET {
+ iso-standard-9541-dataversion [0] IMPLICIT Data-Version OPTIONAL,
+ iso-standard-9541-Standardversion [1] IMPLICIT Cardinal OPTIONAL,
+ iso-standard-9541-datasource [2] IMPLICIT Global-Name OPTIONAL,
+ iso-standard-9541-datacopyright [3] Message OPTIONAL,
+ iso-standard-9541-dsnsource [4] IMPLICIT Global-Name OPTIONAL,
+ iso-standard-9541-dsncopyright [5] Message OPTIONAL,
+ iso-standard-9541-relunits [6] IMPLICIT Cardinal DEFAULT 1,
+ iso-standard-9541-typeface [7] Message OPTIONAL,
+ iso-standard-9541-fontfamily [8] Match-String OPTIONAL,
+ iso-standard-9541-posture [9] IMPLICIT Posture-Code OPTIONAL,
+ iso-standard-9541-postureangle [10] IMPLICIT Angle OPTIONAL,
+ iso-standard-9541-weight [11] IMPLICIT Weight-Code OPTIONAL,
+ iso-standard-9541-propwidth [12] IMPLICIT Width-Code OPTIONAL,
+ iso-standard-9541-glyphcomp [13] IMPLICIT Glyph-Complement OPTIONAL,
+ iso-standard-9541-nomwrmode [14] IMPLICIT Global-Name OPTIONAL,
+ iso-standard-9541-dsnsize [15] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-minsize [16] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-maxsize [17] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-capheight [18] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-lcheight [19] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-dsngroup [20] IMPLICIT Design-Group OPTIONAL,
+ iso-standard-9541-structure [21] IMPLICIT Structure-Code OPTIONAL,
+ iso-standard-9541-minfeatsz [22] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-nomcapstemwidth [23] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-nomlcstemwidth [24] IMPLICIT Rel-Rational OPTIONAL,
+ non-iso-properties [25] IMPLICIT Property-List OPTIONAL
+}
+
+Name-Prefix ::= SEQUENCE {
+ --see NOTE 3 at the end of 6.1
+ index [0] IMPLICIT Code,
+ prefix [1] IMPLICIT Structured-Name
+}
+
+Data-Version ::= SEQUENCE {
+ major [0] IMPLICIT Cardinal OPTIONAL,
+ minor [1] IMPLICIT Cardinal OPTIONAL,
+ timestamp [2] IMPLICIT UTCTime OPTIONAL
+}
+
+Posture-Code ::= INTEGER {
+ not-applicable(0), upright(1), oblique-forward(2), oblique-backward(3),
+ italic-forward(4), italic-backward(5), other(6)}
+
+Weight-Code ::= INTEGER {
+ not-applicable(0), ultra-light(1), extra-light(2), light(3), semi-light(4),
+ medium(5), semi-bold(6), bold(7), extra-bold(8), ultra-bold(9)}
+
+Width-Code ::= INTEGER {
+ not-applicable(0), ultra-condensed(1), extra-condensed(2), condensed(3),
+ semi-condensed(4), medium(5), semi-expanded(6), expanded(7),
+ extra-expanded(8), ultra-expanded(9)}
+
+Glyph-Complement ::= SEQUENCE {
+ -- at least one included glyph list or at least one
+ -- included glyph collection list is mandatory
+ iso-standard-9541-numglyphs [0] IMPLICIT Cardinal OPTIONAL,
+ iso-standard-9541-incglyphcols [1] IMPLICIT SET OF Global-Name OPTIONAL,
+ -- at least one is required
+ iso-standard-9541-excglyphcols [2] IMPLICIT SET OF Global-Name OPTIONAL,
+ -- at least one is required
+ iso-standard-9541-incglyphs [3] IMPLICIT SET OF Global-Name OPTIONAL,
+ -- at least one is required
+ iso-standard-9541-excglyphs [4] IMPLICIT SET OF Global-Name OPTIONAL,
+ -- at least one is required
+ non-iso-properties [5] IMPLICIT Property-List OPTIONAL
+}
+
+Design-Group ::= SEQUENCE {
+ -- see 9541-1 Annex-A for code values
+ group-code [0] IMPLICIT Code,
+ subgroup-code [1] IMPLICIT Code,
+ specific-group-code [2] IMPLICIT Code
+}
+
+Structure-Code ::= INTEGER {not-applicable(0), solid(1), outline(2)}
+
+Writing-Modes ::= SET {
+ iso-standard-9541-wrmode [0] IMPLICIT SET OF Writing-Mode OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Writing-Mode ::= SEQUENCE {
+ iso-standard-9541-wrmodename [0] IMPLICIT Global-Name,
+ wrmode-properties [1] IMPLICIT Modal-Properties
+}
+
+Modal-Properties ::= SET {
+ iso-standard-9541-nomescdir [0] IMPLICIT Angle OPTIONAL,
+ iso-standard-9541-escclass [1] IMPLICIT Esc-Class-Code OPTIONAL,
+ iso-standard-9541-avgescx [2] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-avgescy [3] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-avglcescx [4] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-avglcescy [5] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-avgcapescx [6] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-avgcapescy [7] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-tabescx [8] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-tabescy [9] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-maxfontext [10] IMPLICIT Max-Extents OPTIONAL,
+ iso-standard-9541-sectors [11] IMPLICIT Sectors OPTIONAL,
+ iso-standard-9541-escadjs [12] IMPLICIT SET OF Adjusts OPTIONAL,
+ iso-standard-9541-minescadjsze [13] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-maxescadjsze [14] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-scores [15] IMPLICIT Scores OPTIONAL,
+ iso-standard-9541-vscripts [16] IMPLICIT Variant-Scripts OPTIONAL,
+ iso-standard-9541-minlinesp [17] IMPLICIT Alignment-Spacing OPTIONAL,
+ iso-standard-9541-minanascale [18] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-maxanascale [19] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-nomalign [20] IMPLICIT Global-Name OPTIONAL,
+ iso-standard-9541-alignmodes [21] IMPLICIT Alignment-Modes OPTIONAL,
+ iso-standard-9541-copyfits [22] IMPLICIT Copyfits OPTIONAL,
+ iso-standard-9541-dsnwordadd [23] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-dsnwordampl [24] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-minwordadd [25] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-minwordampl [26] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-maxwordadd [27] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-maxwordampl [28] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-dsnletteradd [29] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-dsnletterampl [30] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-minletteradd [31] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-minletterampl [32] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-maxletteradd [33] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-maxletterampl [34] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-glyphmetrics [35] IMPLICIT Glyph-Metrics OPTIONAL,
+ non-iso-properties [36] IMPLICIT Property-List OPTIONAL
+}
+
+Esc-Class-Code ::= INTEGER {not-applicable(0), monospace(1), proportional(2)}
+
+Max-Extents ::= SEQUENCE {
+ max-minx [0] IMPLICIT Rel-Rational,
+ max-miny [1] IMPLICIT Rel-Rational,
+ max-maxx [2] IMPLICIT Rel-Rational,
+ max-maxy [3] IMPLICIT Rel-Rational
+}
+
+Sectors ::= SET {
+ iso-standard-9541-sector [0] IMPLICIT SEQUENCE OF Sector OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Sector ::= SEQUENCE {
+ sector-left [0] IMPLICIT Rel-Rational,
+ sector-right [1] IMPLICIT Rel-Rational
+}
+
+Adjusts ::= SET {
+ iso-standard-9541-adjust [0] IMPLICIT SET OF Adjust,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Adjust ::= SET {
+ iso-standard-9541-escadjname [0] IMPLICIT Global-Name,
+ adjust-properties [1] IMPLICIT Adjust-Properties
+}
+
+Adjust-Properties ::= SET {
+ iso-standard-9541-cpea [0] IMPLICIT CPEA-Properties OPTIONAL,
+ iso-standard-9541-sec [1] IMPLICIT SEC-Properties OPTIONAL,
+ non-iso-properties [2] IMPLICIT Property-List OPTIONAL
+}
+
+CPEA-Properties ::= SET {
+ iso-standard-9541-ncpeaforwd [0] IMPLICIT Cardinal,
+ iso-standard-9541-ncpeabackwd [1] IMPLICIT Cardinal,
+ iso-standard-9541-cpeax [2] SEQUENCE OF Rel-Rational OPTIONAL,
+ -- at least one required
+ iso-standard-9541-cpeay [3] SEQUENCE OF Rel-Rational OPTIONAL,
+ non-iso-properties [4] IMPLICIT Property-List OPTIONAL
+}
+
+SEC-Properties ::= SET {
+ iso-standard-9541-secx
+ [0] SEQUENCE OF
+ SEQUENCE {-- at least one required
+ rational [0] IMPLICIT Rational,
+ rel-rational [1] IMPLICIT Rel-Rational} OPTIONAL,
+ iso-standard-9541-secy
+ [1] SEQUENCE OF
+ SEQUENCE {-- at least one required
+ rational [0] IMPLICIT Rational,
+ rel-rational [1] IMPLICIT Rel-Rational} OPTIONAL,
+ non-iso-properties [2] IMPLICIT Property-List OPTIONAL
+}
+
+Scores ::= SET {
+ iso-standard-9541-Score [0] IMPLICIT SET OF Score OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Score ::= SEQUENCE {
+ iso-standard-9541-scorename [0] IMPLICIT Global-Name,
+ score-property-list [1] IMPLICIT Score-Properties
+}
+
+Score-Properties ::= SET {
+ iso-standard-9541-scoreoffsetx [0] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-scoreoffsety [1] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-scorethick [2] IMPLICIT Rel-Rational OPTIONAL,
+ non-iso-properties [3] IMPLICIT Property-List OPTIONAL
+}
+
+Variant-Scripts ::= SET {
+ iso-standard-9541-vscript [0] IMPLICIT SET OF Vscript OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Vscript ::= SEQUENCE {
+ iso-standard-9541-vsname [0] IMPLICIT Global-Name,
+ vscript-property-list [1] IMPLICIT Vscript-Properties
+}
+
+Vscript-Properties ::= SET {
+ iso-standard-9541-vsoffsetx [0] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-vsoffsety [1] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-vsscalex [2] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-vsscaley [3] IMPLICIT Rational OPTIONAL,
+ non-iso-properties [4] IMPLICIT Property-List OPTIONAL
+}
+
+Alignment-Spacing ::= SEQUENCE {
+ minlinesp-left [0] IMPLICIT Rel-Rational,
+ minlinesp-right [1] IMPLICIT Rel-Rational
+}
+
+Alignment-Modes ::= SET {
+ iso-standard-9541-align [0] IMPLICIT SET OF Alignment OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Alignment ::= SEQUENCE {
+ iso-standard-9541-alignname [0] IMPLICIT Global-Name,
+ alignment-property-list [1] IMPLICIT Align-Properties
+}
+
+Align-Properties ::= SET {
+ iso-standard-9541-alignoffsetx [0] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-alignoffsety [1] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-alignscalex [2] IMPLICIT Rational OPTIONAL,
+ iso-standard-9541-alignscaley [3] IMPLICIT Rational OPTIONAL,
+ non-iso-properties [4] IMPLICIT Property-List OPTIONAL
+}
+
+Copyfits ::= SET {
+ iso-standard-9541-copyfit [0] IMPLICIT SET OF Copyfit OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Copyfit ::= SEQUENCE {
+ iso-standard-9541-copyfitname [0] IMPLICIT Global-Name,
+ copyfit-properties [1] IMPLICIT Copyfit-Properties
+}
+
+Copyfit-Properties ::= SET {
+ iso-standard-9541-copyfitmeasure [0] IMPLICIT Rational OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Glyph-Metrics ::= SET {
+ iso-standard-9541-gmetric [0] IMPLICIT SET OF Glyph-Property-List,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Glyph-Property-List ::= SEQUENCE {
+ iso-standard-9541-gname [0] IMPLICIT Global-Name,
+ glyph-properties [1] IMPLICIT Glyph-Properties
+}
+
+Glyph-Properties ::= SET {
+ iso-standard-9541-px [0] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-py [1] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-ex [2] IMPLICIT Rel-Rational,
+ iso-standard-9541-ey [3] IMPLICIT Rel-Rational,
+ iso-standard-9541-ext [4] IMPLICIT Extents,
+ iso-standard-9541-lgs [5] IMPLICIT Ligatures OPTIONAL,
+ iso-standard-9541-peas [6] IMPLICIT P-Adjusts OPTIONAL,
+ iso-standard-9541-cpeai [7] IMPLICIT C-Indicator OPTIONAL,
+ iso-standard-9541-eai [8] IMPLICIT E-Code OPTIONAL,
+ iso-standard-9541-minex [9] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-miney [10] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-maxex [11] IMPLICIT Rel-Rational OPTIONAL,
+ iso-standard-9541-maxey [12] IMPLICIT Rel-Rational OPTIONAL,
+ non-iso-properties [13] IMPLICIT Property-List OPTIONAL
+}
+
+Extents ::= SET {
+ minx [0] IMPLICIT Rel-Rational OPTIONAL,
+ miny [1] IMPLICIT Rel-Rational OPTIONAL,
+ maxx [2] IMPLICIT Rel-Rational OPTIONAL,
+ maxy [3] IMPLICIT Rel-Rational OPTIONAL
+}
+
+Ligatures ::= SET {
+ iso-standard-9541-lg [0] IMPLICIT SET OF Ligature OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+Ligature ::= SET {
+ iso-standard-9541-lgn [0] IMPLICIT Global-Name,
+ iso-standard-9541-lgsn [1] SEQUENCE OF Global-Name
+}
+
+P-Adjusts ::= SET {
+ iso-standard-9541-pea [0] IMPLICIT SET OF P-Adjust OPTIONAL,
+ non-iso-properties [1] IMPLICIT Property-List OPTIONAL
+}
+
+P-Adjust ::= SEQUENCE {
+ iso-standard-9541-pean [0] IMPLICIT Global-Name,
+ p-adjust-property-list [1] IMPLICIT P-Adjust-Properties
+}
+
+P-Adjust-Properties ::= SET {
+ iso-standard-9541-peax
+ [0] SEQUENCE OF
+ SEQUENCE {-- at least one required
+ global-name [0] IMPLICIT Global-Name,
+ rel-rational [1] IMPLICIT Rel-Rational} OPTIONAL,
+ iso-standard-9541-peay
+ [1] SEQUENCE OF
+ SEQUENCE {-- at least one required
+ global-name [0] IMPLICIT Global-Name,
+ rel-rational [1] IMPLICIT Rel-Rational} OPTIONAL,
+ iso-standard-9541-speaforwdx [2] SEQUENCE OF Rel-Rational OPTIONAL,
+ iso-standard-9541-speaforwdy [3] SEQUENCE OF Rel-Rational OPTIONAL,
+ iso-standard-9541-speabackwdx [4] SEQUENCE OF Rel-Rational OPTIONAL,
+ iso-standard-9541-speabackwdy [5] SEQUENCE OF Rel-Rational OPTIONAL,
+ non-iso-properties [6] IMPLICIT Property-List OPTIONAL
+}
+
+C-Indicator ::= SEQUENCE {
+ c-forward [0] IMPLICIT Cardinal,
+ c-backward [1] IMPLICIT Cardinal
+}
+
+E-Code ::= INTEGER {
+ not-applicable(0), letter-space(1), word-space(2), no-adjust(3)}
+
+-- The following Data Types are used in the above structures
+-- The following Data Types are used in the above structures
+Property ::= SEQUENCE {
+ property-name [0] Global-Name,
+ property-value [1] Property-Value
+}
+
+Property-Value ::= CHOICE {
+ value [0] Value,
+ value-list [1] Value-List,
+ ordered-value-list [2] Ordered-Value-List,
+ property-list [3] Property-List,
+ ordered-property-list [4] Ordered-Property-List
+}
+
+Value-List ::= SET OF Value
+
+Ordered-Value-List ::= SEQUENCE OF Value
+
+Property-List ::= SET OF Property
+
+Ordered-Property-List ::= SEQUENCE OF Property
+
+Value ::= CHOICE {
+ global-Name [0] Global-Name,
+ match-String [1] Match-String,
+ message [2] Message,
+ octetString [3] OCTET STRING,
+ boolean [4] BOOLEAN,
+ integer [5] Integer,
+ cardinal [6] Cardinal,
+ code [7] Code,
+ rational [8] Rational,
+ rel-Rational [9] Rel-Rational,
+ angle [10] Angle,
+ proprietary-Data [11] Proprietary-Data
+}
+
+Global-Name ::= SEQUENCE {
+ -- see global name note at the end of clause 6.1
+ prefix-index [0] IMPLICIT Code OPTIONAL,
+ name-value [1] IMPLICIT Structured-Name
+}
+
+Match-String ::= CHOICE {
+ numeric [0] NumericString,
+ printable [1] PrintableString,
+ teletex [2] TeletexString,
+ videotex [3] VideotexString,
+ visible [4] VisibleString,
+ ia5 [5] IA5String,
+ graphic [6] GraphicString,
+ general [7] GeneralString
+}
+
+Message ::= CHOICE {
+ numeric [0] NumericString,
+ printable [1] PrintableString,
+ teletex [2] TeletexString,
+ videotex [3] VideotexString,
+ visible [4] VisibleString,
+ ia5 [5] IA5String,
+ graphic [6] GraphicString,
+ general [7] GeneralString
+}
+
+Integer ::= INTEGER {first(-2147483648), last(2147483647)}
+
+Cardinal ::= INTEGER {first(0), last(4294967295)}
+
+Code ::= INTEGER {first(0), last(255)}
+
+Rational ::= SEQUENCE {
+ numerator [0] IMPLICIT INTEGER,
+ denominator [1] IMPLICIT INTEGER {first(1), last(2147483647)} OPTIONAL
+}
+
+-- denominator defaults to 1
+Rel-Rational ::= Rational
+
+-- expresses glyph coordinate units
+-- denominator defaults to relunits
+Angle ::=
+ Rational
+
+-- expresses units of degrees, with a
+-- value range of -360 to +360
+-- denominator defaults to 1
+Proprietary-Data ::= SEQUENCE {
+ prop-data-message [0] Message OPTIONAL,
+ prop-data-key [1] IMPLICIT OCTET STRING OPTIONAL,
+ prop-data [2] IMPLICIT OCTET STRING
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/ISO8571-FTAM.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/ISO8571-FTAM.asn1
new file mode 100644
index 0000000000..a57a276704
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/ISO8571-FTAM.asn1
@@ -0,0 +1,1453 @@
+-- Module ISO8571-FTAM (ISO 8571-4:1988)
+-- See also the README file
+-- See also the index of all ASN.1 assignments needed in this Recommendation
+
+--
+-- Copyright ? ISO/IEC 1988. This version of
+-- this ASN.1 module is part of ISO/IEC 8571-4:1988;
+-- see the ISO|IEC text itself for full legal notices.
+--
+ISO8571-FTAM {iso standard 8571 application-context(1) iso-ftam(1)} DEFINITIONS
+::=
+BEGIN
+
+PDU ::= CHOICE {
+ fTAM-Regime-PDU FTAM-Regime-PDU,
+ file-PDU File-PDU,
+ bulk-Data-PDU Bulk-Data-PDU,
+ fSM-PDU FSM-PDU
+}
+
+FTAM-Regime-PDU ::= CHOICE {
+ f-initialize-request [0] IMPLICIT F-INITIALIZE-request,
+ f-initialize-response [1] IMPLICIT F-INITIALIZE-response,
+ f-terminate-request [2] IMPLICIT F-TERMINATE-request,
+ f-terminate-response [3] IMPLICIT F-TERMINATE-response,
+ f-u-abort-request [4] IMPLICIT F-U-ABORT-request,
+ f-p-abort-request [5] IMPLICIT F-P-ABORT-request
+}
+
+F-INITIALIZE-request ::= SEQUENCE {
+ protocol-Version Protocol-Version DEFAULT {version-1},
+ implementation-information Implementation-Information OPTIONAL,
+ presentation-tontext-management [2] IMPLICIT BOOLEAN DEFAULT FALSE,
+ service-class Service-Class DEFAULT {transfer-class},
+ -- Only the valid combinations as specified in ISO 8571-3 are allowed.
+ functional-units Functional-Units,
+ attribute-groups Attribute-Groups DEFAULT {},
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ ftam-quality-of-Service FTAM-Quality-of-Service,
+ contents-type-list Contents-Type-List OPTIONAL,
+ initiator-identity User-Identity OPTIONAL,
+ account Account OPTIONAL,
+ filestore-password Password OPTIONAL,
+ checkpoint-window [8] IMPLICIT INTEGER DEFAULT 1
+}
+
+-- lf the recovery or restart data transfer functional units are
+-- not available, the Checkpoint-window Parameter shall not be sent.
+F-INITIALIZE-response ::= SEQUENCE {
+ state-result State-Result DEFAULT success,
+ action-result Action-Result DEFAULT success,
+ protocol-Version Protocol-Version DEFAULT {version-1},
+ implementation-information Implementation-Information OPTIONAL,
+ presentation-tontext-management [2] IMPLICIT BOOLEAN DEFAULT FALSE,
+ service-class Service-Class DEFAULT {transfer-class},
+ -- Only the valid combinations as specified in ISO 8571-3 are allowed.
+ functional-units Functional-Units,
+ attribute-groups Attribute-Groups DEFAULT {},
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ ftam-quality-of-Service FTAM-Quality-of-Service,
+ contents-type-list Contents-Type-List OPTIONAL,
+ diagnostic Diagnostic OPTIONAL,
+ checkpoint-window [8] IMPLICIT INTEGER DEFAULT 1
+}
+
+-- If the recovery or restart data transfer functional units are
+-- not available, the Checkpoint-window Parameter shall not be sent.
+Protocol-Version ::= [0] IMPLICIT BIT STRING {version-1(0), version-2(1)
+}
+
+Implementation-Information ::= [1] IMPLICIT GraphicString
+
+-- This Parameter is provided solely for the convenience of implementors
+-- needing to distinguish between implernentations of a specific version number
+-- of different equipment, it shall not be the subject of conformance test.
+Service-Class ::= [3] IMPLICIT BIT STRING {
+ unconstrained-class(0), management-class(1), transfer-class(2),
+ transfer-and-management-class(3), access-class(4)}
+
+Functional-Units ::= [4] IMPLICIT BIT STRING {
+ read(2), write(3), file-access(4), limited-file-management(5),
+ enhanced-file-management(6), grouping(7), fadu-locking(8), recovery(9),
+ restart-data-transfer(10), limited-filestore-management(11),
+ enhanced-filestore-management(12), object-manipulation(13),
+ group-manipulation(14), consecutive-access(15), concurrent-access(16)
+}
+
+-- Values 2 to 14 are Chosen to align with numbering scheme used in ISO 8571-3.
+Attribute-Groups ::= [5] IMPLICIT BIT STRING {
+ storage(0), security(1), private(2), extension(3)}
+
+-- The extension bit is defined if and only if the limited-filestore-management
+-- or the group-manipulation functional units are available.
+FTAM-Quality-of-Service ::= [6] IMPLICIT INTEGER {
+ no-recovery(0), class-1-recovery(1), class-2-recovery(2), class-3-recovery(3)
+}
+
+Contents-Type-List ::=
+ [7] IMPLICIT
+ SEQUENCE OF
+ CHOICE {document-type-name Document-Type-Name,
+ abstract-Syntax-name Abstract-Syntax-Name}
+
+F-TERMINATE-request ::= SEQUENCE {
+ shared-ASE-information Shared-ASE-Information OPTIONAL
+}
+
+F-TERMINATE-response ::= SEQUENCE {
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ charging Charging OPTIONAL
+}
+
+F-U-ABORT-request ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-P-ABORT-request ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ diagnostic Diagnostic OPTIONAL
+}
+
+File-PDU ::= CHOICE {
+ f-select-request [6] IMPLICIT F-SELECT-request,
+ f-select-response [7] IMPLICIT F-SELECT-response,
+ f-deselect-request [8] IMPLICIT F-DESELECT-request,
+ f-deselect-response [9] IMPLICIT F-DESELECT-response,
+ f-create-request [10] IMPLICIT F-CREATE-request,
+ f-create-response [11] IMPLICIT F-CREATE-response,
+ f-delete-request [12] IMPLICIT F-DELETE-request,
+ f-delete-response [13] IMPLICIT F-DELETE-response,
+ f-read-attrib-request [14] IMPLICIT F-READ-ATTRIB-request,
+ f-read-attrib-response [15] IMPLICIT F-READ-ATTRIB-response,
+ f-Change-attrib-reques [16] IMPLICIT F-CHANGE-ATTRIB-request,
+ f-Change-attrib-respon [17] IMPLICIT F-CHANGE-ATTRIB-response,
+ f-open-request [18] IMPLICIT F-OPEN-request,
+ f-open-response [19] IMPLICIT F-OPEN-response,
+ f-close-request [20] IMPLICIT F-CLOSE-request,
+ f-close-response [21] IMPLICIT F-CLOSE-response,
+ f-begin-group-request [22] IMPLICIT F-BEGIN-GROUP-request,
+ f-begin-group-response [23] IMPLICIT F-BEGIN-GROUP-response,
+ f-end-group-request [24] IMPLICIT F-END-GROUP-request,
+ f-end-group-response [25] IMPLICIT F-END-GROUP-response,
+ f-recover-request [26] IMPLICIT F-RECOVER-request,
+ f-recover-response [27] IMPLICIT F-RECOVER-response,
+ f-locate-request [28] IMPLICIT F-LOCATE-request,
+ f-locate-response [29] IMPLICIT F-LOCATE-response,
+ f-erase-request [30] IMPLICIT F-ERASE-request,
+ f-erase-response [31] IMPLICIT F-ERASE-response
+}
+
+F-SELECT-request ::= SEQUENCE {
+ attributes Select-Attributes,
+ requested-access Access-Request,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ -- This Parameter tan only be sent when the
+ -- limited-filestore-management or the object-manipulation or
+ -- the group-manipulation functional units are available.
+ concurrency-control Concurrency-Control OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ account Account OPTIONAL
+}
+
+F-SELECT-response ::= SEQUENCE {
+ state-result State-Result DEFAULT success,
+ action-result Action-Result DEFAULT success,
+ attributes Select-Attributes,
+ referent-indicator Referent-Indicator OPTIONAL,
+ -- This Parameter tan only be sent when the
+ -- limited-filestore-management functional unit is available.
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-DESELECT-request ::= SEQUENCE {
+ shared-ASE-information Shared-ASE-Information OPTIONAL
+}
+
+F-DESELECT-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ charging Charging OPTIONAL,
+ -- Present if and only if the account field was present on
+ -- the PDU which established the selection regime.
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-CREATE-request ::= SEQUENCE {
+ override [0] IMPLICIT Override DEFAULT create-failure,
+ initial-attributes Create-Attributes,
+ create-password Password OPTIONAL,
+ requested-access Access-Request,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ -- This Parameter tan only be sent when the
+ -- limited-filestore-management or the Object-manipulation or
+ -- the group-manipulation functional units are available.
+ concurrency-control Concurrency-Control OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ account Account OPTIONAL
+}
+
+F-CREATE-response ::= SEQUENCE {
+ state-result State-Result DEFAULT success,
+ action-result Action-Result DEFAULT success,
+ initial-attributes Create-Attributes,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-DELETE-request ::= SEQUENCE {
+ shared-ASE-information Shared-ASE-Information OPTIONAL
+}
+
+F-DELETE-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ charging Charging OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-READ-ATTRIB-request ::= SEQUENCE {
+ attribute-names [0] IMPLICIT Attribute-Names,
+ attribute-extension-names [1] IMPLICIT Attribute-Extension-Names OPTIONAL
+}
+
+-- This Parameter tan only be sent when the
+-- limited-filestore-management functional unit is available.
+F-READ-ATTRIB-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ attributes Read-Attributes OPTIONAL,
+ -- Password values within the access control tan not be read by means
+ -- of the read attribute action. Whether other Parts of the access
+ -- control Object attribute tan be read by means of the read
+ -- attribute action is decided locally by the responding entity, and
+ -- it shall not be the subject of conformance test.
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-CHANGE-ATTRIB-request ::= SEQUENCE {attributes Change-Attributes
+}
+
+F-CHANGE-ATTRIB-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ attributes Change-Attributes OPTIONAL,
+ -- Password values within access control attribute are never returned.
+ -- Other attributes are retumed as an implementation choice.
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-OPEN-request ::= SEQUENCE {
+ processing-mode
+ [0] IMPLICIT BIT STRING {f-read(0), f-insert(1), f-replace(2), f-extend(3),
+ f-erase(4)} DEFAULT {f-read},
+ contents-type
+ [1] CHOICE {unknown [0] IMPLICIT NULL,
+ proposed [1] Contents-Type-Attribute},
+ concurrency-control Concurrency-Control OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ enable-fadu-locking [2] IMPLICIT BOOLEAN DEFAULT FALSE,
+ activity-identifier Activity-Identifier OPTIONAL,
+ -- Only used in the recovery functional unit.
+ recovery-mode
+ [3] IMPLICIT INTEGER {none(0), at-start-of-file(1),
+ at-any-active-Checkpoint(2)} DEFAULT none,
+ remove-contexts [4] IMPLICIT SET OF Abstract-Syntax-Name OPTIONAL,
+ define-contexts [5] IMPLICIT SET OF Abstract-Syntax-Name OPTIONAL,
+ -- The following are conditional on the negotiation of the consecutive overlap or
+ -- concurrent overlap functional units.
+ degree-of-overlap Degree-Of-Overlap OPTIONAL,
+ transfer-window [7] IMPLICIT INTEGER OPTIONAL
+}
+
+F-OPEN-response ::= SEQUENCE {
+ state-result State-Result DEFAULT success,
+ action-result Action-Result DEFAULT success,
+ contents-type [1] Contents-Type-Attribute,
+ concurrency-control Concurrency-Control OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL,
+ recovery-mode
+ [3] IMPLICIT INTEGER {none(0), at-start-of-file(1),
+ at-any-active-Checkpoint(2)} DEFAULT none,
+ presentation-action [6] IMPLICIT BOOLEAN DEFAULT FALSE,
+ -- This flag is set if the responder is going to follow this response
+ -- by a P-ALTER-CONTEXT exchange.
+ --The following are conditional on the negotiation of the concecutive access
+ -- or concurent access functional units.
+ degree-of-overlap Degree-Of-Overlap OPTIONAL,
+ transfer-window [7] IMPLICIT INTEGER OPTIONAL
+}
+
+F-CLOSE-request ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-CLOSE-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-BEGIN-GROUP-request ::= SEQUENCE {threshold [0] IMPLICIT INTEGER
+}
+
+F-BEGIN-GROUP-response ::= SEQUENCE {
+}
+
+-- No elements defined, shall be empty.
+F-END-GROUP-request ::= SEQUENCE {
+}
+
+-- No elements defined, shall be empty.
+F-END-GROUP-response ::= SEQUENCE {
+}
+
+-- No elements defined, shall be empty.
+F-RECOVER-request ::= SEQUENCE {
+ activity-identifier Activity-Identifier,
+ bulk-transfer-number [0] IMPLICIT INTEGER,
+ -- If concurrent access was in use then this parameter indicates the read bulk
+ -- transfer.
+ requested-access Access-Request,
+ access-passwords Access-Passwords OPTIONAL,
+ recovefy-Point [2] IMPLICIT INTEGER DEFAULT 0,
+ -- Zero indicates beginning of file
+ -- Point after last Checkpoint indicates end of file
+ remove-contexts
+ [3] IMPLICIT SET OF Abstract-Syntax-Name OPTIONAL,
+ define-contexts
+ [4] IMPLICIT SET OF Abstract-Syntax-Name OPTIONAL,
+ -- The following are conditional on the negotiation of overlapped access.
+ concurrent-bulk-transfer-number [7] IMPLICIT INTEGER OPTIONAL,
+ -- conditional on use of concurrent access
+ concurrent-recovery-point [8] IMPLICIT INTEGER OPTIONAL,
+ -- conditional on use of concurrent access. Zero indicates beginning of file
+ -- point after last checkpoint indicates end of file
+ last-transfer-end-read-response [9] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-response [10] IMPLICIT INTEGER OPTIONAL
+}
+
+F-RECOVER-response ::= SEQUENCE {
+ state-result State-Result DEFAULT success,
+ action-result Action-Result DEFAULT success,
+ contents-type [1] Contents-Type-Attribute,
+ recovety-Point [2] IMPLICIT INTEGER DEFAULT 0,
+ -- Zero indicates beginning of file.
+ -- Point after last Checkpoint indicates end of file.
+ diagnostic Diagnostic OPTIONAL,
+ presentation-action [6] IMPLICIT BOOLEAN DEFAULT FALSE,
+ -- This flag is set if the responder is going to follow this response
+ -- by a P-ALTER-CONTEXT exchange.
+ -- The following are conditional on the negotiation of overlapped access.
+ concurrent-recovery-point [8] IMPLICIT INTEGER OPTIONAL,
+ -- conditional on use of concurrent access. Zero indicates beginning of file; point after
+ -- last checkpoint indicates end of file
+ last-transfer-end-read-request [9] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-request [10] IMPLICIT INTEGER OPTIONAL
+}
+
+F-LOCATE-request ::= SEQUENCE {
+ file-access-data-unit-identity FADU-Identity,
+ fadu-lock FADU-Lock OPTIONAL
+}
+
+F-LOCATE-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ file-access-data-unit-identity FADU-Identity OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-ERASE-request ::= SEQUENCE {file-access-data-unit-identity FADU-Identity
+}
+
+F-ERASE-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ diagnostic Diagnostic OPTIONAL
+}
+
+Bulk-Data-PDU ::= CHOICE {
+ f-read-request [32] IMPLICIT F-READ-request,
+ f-write-request [33] IMPLICIT F-WRITE-request,
+ -- There is no F-DATA FPDU, the contents of a file
+ -- are transferred in a different presentation context
+ -- and there is therefore no need to define the types
+ -- of file contents in the FTAM PCI abstract Syntax.
+ -- File contents data are carried in values of the
+ -- data type Data-Element as defined in ISO 8571-2.
+ f-data-end-request [34] IMPLICIT F-DATA-END-request,
+ f-transfer-end-request [35] IMPLICIT F-TRANSFER-END-request,
+ f-transfer-end-response [36] IMPLICIT F-TRANSFER-END-response,
+ f-cancel-request [37] IMPLICIT F-CANCEL-request,
+ f-cancel-response [38] IMPLICIT F-CANCEL-response,
+ -- There is no F-CHECK PDU.
+ f-restart-request [39] IMPLICIT F-RESTART-request,
+ f-restart-response [40] IMPLICIT F-RESTART-response
+}
+
+F-READ-request ::= SEQUENCE {
+ file-access-data-unit-identity FADU-Identity,
+ access-context Access-Context,
+ fadu-lock FADU-Lock OPTIONAL,
+ -- The following is conditional on the negotiation of consecutive of concurrent access.
+ transfer-number [0] IMPLICIT INTEGER OPTIONAL
+}
+
+F-WRITE-request ::= SEQUENCE {
+ file-access-data-unit-Operation
+ [0] IMPLICIT INTEGER {insert(0), replace(1), extend(2)},
+ file-access-data-unit-identity FADU-Identity,
+ fadu-lock FADU-Lock OPTIONAL,
+ -- The following is conditional on the negotiation of consecutive or concurrent access.
+ transfer-number [1] IMPLICIT INTEGER OPTIONAL
+}
+
+F-DATA-END-request ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-TRANSFER-END-request ::= SEQUENCE {
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ -- The following are conditional on the negotiation of consecutive or concurrent access.
+ request-type Request-Type OPTIONAL,
+ transfer-number [0] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-read-response [1] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-response [2] IMPLICIT INTEGER OPTIONAL
+}
+
+F-TRANSFER-END-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL,
+ -- The following are conditional on the negotiation of consecutive or concurrent access.
+ request-type Request-Type OPTIONAL,
+ transfer-number [0] IMPLICIT INTEGER OPTIONAL
+}
+
+F-CANCEL-request ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL,
+ -- The following are conditional on the negotiation of consecutive or concurrent access.
+ request-type Request-Type,
+ transfer-number [0] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-read-request [1] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-read-response [2] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-request [3] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-response [4] IMPLICIT INTEGER OPTIONAL
+}
+
+F-CANCEL-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL,
+ -- The following are conditional on the negotiation of consecutive or concurrent access.
+ request-type Request-Type OPTIONAL,
+ transfer-number [0] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-read-request [1] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-read-response [2] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-request [3] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-response [4] IMPLICIT INTEGER OPTIONAL
+}
+
+F-CHECK-request ::= SEQUENCE {
+ checkpoint-identifier [0] IMPLICIT INTEGER,
+ transfer-number [1] IMPLICIT INTEGER
+}
+
+F-CHECK-response ::= SEQUENCE {
+ checkpoint-identifier [0] IMPLICIT INTEGER,
+ transfer-number [1] IMPLICIT INTEGER
+}
+
+F-RESTART-request ::= SEQUENCE {
+ checkpoint-identifier [0] IMPLICIT INTEGER,
+ -- The following are conditional on the negotiation of consecutive or concurrent access.
+ request-type Request-Type OPTIONAL,
+ transfer-number [1] IMPLICIT INTEGER,
+ last-transfer-end-read-request [2] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-read-response [3] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-request [4] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-response [5] IMPLICIT INTEGER OPTIONAL
+}
+
+F-RESTART-response ::= SEQUENCE {
+ checkpoint-identifier [0] IMPLICIT INTEGER,
+ -- The following are conditional on the negotiation of consecutive or concurrent access.
+ request-type Request-Type OPTIONAL,
+ transfer-number [1] IMPLICIT INTEGER,
+ last-transfer-end-read-request [2] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-read-response [3] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-request [4] IMPLICIT INTEGER OPTIONAL,
+ last-transfer-end-write-response [5] IMPLICIT INTEGER OPTIONAL
+}
+
+Degree-Of-Overlap ::= [APPLICATION 30] IMPLICIT INTEGER {
+ normal(0), consecutive(1), concurrent(2)}
+
+Request-Type ::= [APPLICATION 31] IMPLICIT INTEGER {read(0), write(1)}
+
+Abstract-Syntax-Name ::= [APPLICATION 0] IMPLICIT OBJECT IDENTIFIER
+
+Access-Context ::= [APPLICATION 1] IMPLICIT SEQUENCE {
+ access-context
+ [0] IMPLICIT INTEGER {hierarchical-all-data-units(0),--HA--
+ hierarchical-no-data-units(1),--HN--
+ flat-all-data-units(2),--FA--
+ flat-one-level-data-unit(3),--FL--
+ flat-Single-data-unit(4),--FS--
+ unstructured-all-data-units(5),--UA--
+ unstructured-Single-data-unit(6)}, --US
+ level-number [1] IMPLICIT INTEGER OPTIONAL
+}
+
+-- Present if and only if flat-one-level-data-units
+-- (access context FL) is selected.
+-- As defined in ISO 8571-2.
+Access-Passwords ::= [APPLICATION 2] IMPLICIT SEQUENCE {
+ read-password [0] Password,
+ insert-password [1] Password,
+ replace-password [2] Password,
+ extend-password [3] Password,
+ erase-password [4] Password,
+ read-attribute-password [5] Password,
+ change-attribute-password [6] Password,
+ delete-password [7] Password,
+ pass-passwords [8] IMPLICIT Pass-Passwords OPTIONAL,
+ link-password [9] Password OPTIONAL
+}
+
+-- The pass-passwords and the link-password must be included in the
+-- access-passwords if and only if the limited-filestore-management
+-- or the Object-manipulation or the group-manipulation functional
+-- units are available.
+Access-Request ::= [APPLICATION 3] IMPLICIT BIT STRING {
+ read(0), insert(1), replace(2), extend(3), erase(4), read-attribute(5),
+ change-attribute(6), delete-Object(7)}
+
+Account ::= [APPLICATION 4] IMPLICIT GraphicString
+
+Action-Result ::= [APPLICATION 5] IMPLICIT INTEGER {
+ success(0), transient-error(1), permanent-error(2)}
+
+Activity-Identifier ::= [APPLICATION 6] IMPLICIT INTEGER
+
+Application-Entity-Title ::= [APPLICATION 7] AE-title
+
+-- As defined in ISO 8650.
+Change-Attributes ::= [APPLICATION 8] IMPLICIT SEQUENCE {
+ -- Kerne1 Group
+ pathname Pathname-Attribute OPTIONAL,
+ -- Storage group
+ storage-account [3] Account-Attribute OPTIONAL,
+ object-availability [12] Object-Availability-Attribute OPTIONAL,
+ future-Object-size [14] Object-Size-Attribute OPTIONAL,
+ -- Security group
+ access-control [15] Access-Control-Change-Attribute OPTIONAL,
+ path-access-control [21] Access-Control-Change-Attribute OPTIONAL,
+ -- This Parameter tan only be sent when the
+ -- enhanced-filestore-management functional unit is available.
+ legal-qualification [16] Legal-Qualification-Attribute OPTIONAL,
+ -- Private group
+ private-use [17] Private-Use-Attribute OPTIONAL,
+ -- Attribute Extensions group
+ attribute-extensions [22] IMPLICIT Attribute-Extensions OPTIONAL
+}
+
+-- This Parameter tan only be sent when the
+-- enhanced-filestore-management functional unit is available.
+-- Atleast one attribute shall be present in the Change-Attributes
+-- Parameter on the request PDU.
+Charging ::=
+ [APPLICATION 9] IMPLICIT
+ SEQUENCE OF
+ SEQUENCE {resource-identifier [0] IMPLICIT GraphicString,
+ charging-unit [1] IMPLICIT GraphicString,
+ charging-value [2] IMPLICIT INTEGER}
+
+Concurrency-Control ::= [APPLICATION 10] IMPLICIT SEQUENCE {
+ read [0] IMPLICIT Lock,
+ insert [1] IMPLICIT Lock,
+ replace [2] IMPLICIT Lock,
+ extend [3] IMPLICIT Lock,
+ erase [4] IMPLICIT Lock,
+ read-attribute [5] IMPLICIT Lock,
+ change-attribute [6] IMPLICIT Lock,
+ delete-Object [7] IMPLICIT Lock
+}
+
+Lock ::= INTEGER {not-required(0), shared(1), exclusive(2), no-access(3)}
+
+Constraint-Set-Name ::= [APPLICATION 11] IMPLICIT OBJECT IDENTIFIER
+
+Create-Attributes ::= [APPLICATION 12] IMPLICIT SEQUENCE {
+ -- Kerne1 Group
+ pathname Pathname-Attribute,
+ object-type [18] IMPLICIT Object-Type-Attribute DEFAULT file,
+ -- This Parameter tan be sent if and only if the
+ -- limited-filestore-management functional unit is available.
+ permitted-actions [1] IMPLICIT Permitted-Actions-Attribute,
+ contents-type [2] Contents-Type-Attribute,
+ -- Storage group
+ storage-account [3] Account-Attribute OPTIONAL,
+ object-availability [12] Object-Availability-Attribute OPTIONAL,
+ future-Object-size [14] Object-Size-Attribute OPTIONAL,
+ -- Security group
+ access-control [15] Access-Control-Attribute OPTIONAL,
+ path-access-control [21] Access-Control-Attribute OPTIONAL,
+ -- This Parameter tan be sent if and only if the
+ -- enhanced-filestore-management functional unit is available.
+ legal-qualification [16] Legal-Qualification-Attribute OPTIONAL,
+ -- Private group
+ private-use [17] Private-Use-Attribute OPTIONAL,
+ -- Attribute Extensions group
+ attribute-extensions [22] IMPLICIT Attribute-Extensions OPTIONAL
+}
+
+-- This Parameter tan only be sent when the
+-- limited-filestore-management functional unit is available.
+Diagnostic ::=
+ [APPLICATION 13] IMPLICIT
+ SEQUENCE OF
+ SEQUENCE {diagnostic-type
+ [0] IMPLICIT INTEGER {informative(0), transient(1),
+ permanent(2)},
+ error-identifier [1] IMPLICIT INTEGER,
+ -- As defined in ISO 8571-3.
+ error-observer [2] IMPLICIT Entity-Reference,
+ error-Source [3] IMPLICIT Entity-Reference,
+ suggested-delay [4] IMPLICIT INTEGER OPTIONAL,
+ further-details [5] IMPLICIT GraphicString OPTIONAL
+ }
+
+Entity-Reference ::= INTEGER {
+ no-categorization-possible(0), initiating-file-service-user(1),
+ initiating-file-protocol-machine(2),
+ service-supporting-the-file-protocol-machine(3),
+ responding-file-protocol-machine(4), responding-file-service-user(5)
+}
+
+--NOTE
+-- 1. The values 0 and 3 are only valid as values in error-source.
+-- 2. The value 5 corresponds to the virtual filestore.
+Document-Type-Name ::= [APPLICATION 14] IMPLICIT OBJECT IDENTIFIER
+
+FADU-Identity ::= [APPLICATION 15] CHOICE {
+ first-last [0] IMPLICIT INTEGER {first(0), last(1)},
+ relative [1] IMPLICIT INTEGER {previous(0), current(1), next(2)},
+ begin-end [2] IMPLICIT INTEGER {begin(0), end(1)},
+ single-name [3] IMPLICIT Node-Name,
+ name-list [4] IMPLICIT SEQUENCE OF Node-Name,
+ fadu-number [5] IMPLICIT INTEGER
+}
+
+-- As defined in ISO 8571-2.
+Node-Name ::= EXTERNAL
+
+-- The type to be used for Node-Name is defined in IS08571-FADU.
+FADU-Lock ::= [APPLICATION 16] IMPLICIT INTEGER {off(0), on(1)}
+
+Password ::= [APPLICATION 17] CHOICE {
+ graphicString GraphicString,
+ octetString OCTET STRING
+}
+
+Read-Attributes ::= [APPLICATION 18] IMPLICIT SEQUENCE {
+ -- Kerne1 Group
+ pathname Pathname-Attribute OPTIONAL,
+ object-type
+ [18] IMPLICIT Object-Type-Attribute OPTIONAL,
+ -- This Parameter tan be sent if and only if
+ -- the limited-filestore-management functional unit is available.
+ permitted-actions
+ [1] IMPLICIT Permitted-Actions-Attribute OPTIONAL,
+ contents-type
+ [2] Contents-Type-Attribute OPTIONAL,
+ linked-Object
+ [19] Pathname-Attribute OPTIONAL,
+ -- This Parameter tan be sent if and only if
+ -- the limited-filestore-management functional unit is available.
+ child-objects
+ [23] Child-Objects-Attribute OPTIONAL,
+ -- This Parameter tan be sent if and only if
+ -- the limited-filestore-management functional unit is available.
+ -- Storage group
+ primaty-pathname
+ [20] Pathname-Attribute OPTIONAL,
+ storage-account [3] Account-Attribute OPTIONAL,
+ date-and-time-of-creation
+ [4] Date-and-Time-Attribute OPTIONAL,
+ date-and-time-of-last-modification
+ [5] Date-and-Time-Attribute OPTIONAL,
+ date-and-time-of-last-read-access
+ [6] Date-and-Time-Attribute OPTIONAL,
+ date-and-time-of-last-attribute-modification
+ [7] Date-and-Time-Attribute OPTIONAL,
+ identity-of-creator
+ [8] User-Identity-Attribute OPTIONAL,
+ identity-of-last-modifier
+ [9] User-Identity-Attribute OPTIONAL,
+ identity-of-last-reader
+ [10] User-Identity-Attribute OPTIONAL,
+ identity-last-attribute-modifier
+ [11] User-Identity-Attribute OPTIONAL,
+ object-availability
+ [12] Object-Availability-Attribute OPTIONAL,
+ object-size
+ [13] Object-Size-Attribute OPTIONAL,
+ future-Object-size
+ [14] Object-Size-Attribute OPTIONAL,
+ -- Security group
+ access-control
+ [15] Access-Control-Attribute OPTIONAL,
+ path-access-control
+ [21] Access-Control-Attribute OPTIONAL,
+ -- This Parameter tan be sent if and only if
+ -- the limited-filestore-management functional unit is available.
+ legal-qualification
+ [16] Legal-Qualification-Attribute OPTIONAL,
+ -- Private group
+ private-use
+ [17] Private-Use-Attribute OPTIONAL,
+ -- Attribute Extensions group
+ attribute-extensions
+ [22] IMPLICIT Attribute-Extensions OPTIONAL
+}
+
+-- This Parameter tan be sent if and only if
+-- the limited-filestore-management functional unit is available.
+Select-Attributes ::= [APPLICATION 19] IMPLICIT SEQUENCE {
+ -- Kerne1 Group
+ pathname Pathname-Attribute
+}
+
+Shared-ASE-Information ::= [APPLICATION 20] IMPLICIT EXTERNAL
+
+-- This field may be used to convey commitment control as described
+-- in ISO 8571-3.
+State-Result ::= [APPLICATION 21] IMPLICIT INTEGER {success(0), failure(1)
+}
+
+User-Identity ::= [APPLICATION 22] IMPLICIT GraphicString
+
+Access-Control-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ actual-values [1] IMPLICIT SET OF Access-Control-Element
+}
+
+-- The semantics of this attribute is described in ISO 8571-2.
+Access-Control-Change-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ actual-values
+ [1] IMPLICIT SEQUENCE {insert-values
+ [0] IMPLICIT SET OF Access-Control-Element
+ OPTIONAL,
+ -- This field is used by the Change attribute actions to indicate
+ -- new values to be inserted in the access control Object attribute.
+ delete-values
+ [1] IMPLICIT SET OF Access-Control-Element
+ OPTIONAL}
+}
+
+-- This field is used by the Change attribute action to indicate
+-- old values to be removed from the access control Object
+-- attribute.
+-- The semantics of this attribute is described in ISO 8571-2.
+Access-Control-Element ::= SEQUENCE {
+ action-list [0] IMPLICIT Access-Request,
+ concurrency-access [1] IMPLICIT Concurrency-Access OPTIONAL,
+ identity [2] IMPLICIT User-Identity OPTIONAL,
+ passwords [3] IMPLICIT Access-Passwords OPTIONAL,
+ location [4] IMPLICIT Application-Entity-Title OPTIONAL
+}
+
+Concurrency-Access ::= SEQUENCE {
+ read [0] IMPLICIT Concurrency-Key,
+ insert [1] IMPLICIT Concurrency-Key,
+ replace [2] IMPLICIT Concurrency-Key,
+ extend [3] IMPLICIT Concurrency-Key,
+ erase [4] IMPLICIT Concurrency-Key,
+ read-attribute [5] IMPLICIT Concurrency-Key,
+ change-attribute [6] IMPLICIT Concurrency-Key,
+ delete-Object [7] IMPLICIT Concurrency-Key
+}
+
+Concurrency-Key ::= BIT STRING {
+ not-required(0), shared(1), exclusive(2), no-access(3)}
+
+Account-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ actual-values Account
+}
+
+Contents-Type-Attribute ::= CHOICE {
+ document-type
+ [0] IMPLICIT SEQUENCE {document-type-name Document-Type-Name,
+ parameter
+ [0] TYPE-IDENTIFIER.&Type OPTIONAL},
+ -- The actual types to be used for values of the Parameter field
+ -- are defined in the named document type.
+ constraint-set-and-abstract-Syntax
+ [1] IMPLICIT SEQUENCE {constraint-set-name Constraint-Set-Name,
+ abstract-Syntax-name Abstract-Syntax-Name
+ }
+}
+
+Date-and-Time-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ actual-values [1] IMPLICIT GeneralizedTime
+}
+
+Object-Availability-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ actual-values
+ [1] IMPLICIT INTEGER {immediate-availability(0), deferred-availability(1)}
+}
+
+Pathname-Attribute ::= CHOICE {
+ incomplete-pathname [0] IMPLICIT Pathname,
+ complete-pathname [APPLICATION 23] IMPLICIT Pathname
+}
+
+Object-Size-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ actual-values [1] IMPLICIT INTEGER
+}
+
+Legal-Qualification-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ actual-values [1] IMPLICIT GraphicString
+}
+
+Permitted-Actions-Attribute ::= BIT STRING -- Actions available
+ {
+ read(0), insert(1), replace(2), extend(3), erase(4), read-attribute(5),
+ change-attribute(6), delete-Object(7), pass(11),
+ link(12),
+ -- FADU-Identity groups available
+ traversal(8), reverse-traversal(9), random-Order(10)}
+
+Private-Use-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ abstract-Syntax-not-supported [1] IMPLICIT NULL,
+ -- Indicates that abstract Syntax is not available.
+ actual-values [2] IMPLICIT EXTERNAL
+}
+
+Object-Type-Attribute ::= INTEGER {file(0), file-directory(1), reference(2)}
+
+User-Identity-Attribute ::= CHOICE {
+ no-value-available [0] IMPLICIT NULL,
+ -- Indicates partial support of this attribute.
+ -- This value shall only appear in response PDUs.
+ actual-values User-Identity
+}
+
+Child-Objects-Attribute ::= SET OF GraphicString
+
+FSM-PDU ::= CHOICE {
+ f-Change-prefix-request [41] IMPLICIT F-CHANGE-PREFIX-request,
+ f-Change-prefix-response [42] IMPLICIT F-CHANGE-PREFIX-response,
+ f-list-request [43] IMPLICIT F-LIST-request,
+ f-list-response [44] IMPLICIT F-LIST-response,
+ f-group-select-request [45] IMPLICIT F-GROUP-SELECT-request,
+ f-group-select-response [46] IMPLICIT F-GROUP-SELECT-response,
+ f-group-delete-request [47] IMPLICIT F-GROUP-DELETE-request,
+ f-group-delete-response [48] IMPLICIT F-GROUP-DELETE-response,
+ f-group-move-request [49] IMPLICIT F-GROUP-MOVE-request,
+ f-group-move-response [50] IMPLICIT F-GROUP-MOVE-response,
+ f-group-copy-request [51] IMPLICIT F-GROUP-COPY-request,
+ f-group-copy-response [52] IMPLICIT F-GROUP-COPY-response,
+ f-group-list-request [53] IMPLICIT F-GROUP-LIST-request,
+ f-group-list-response [54] IMPLICIT F-GROUP-LIST-response,
+ f-group-Change-attrib-request [55] IMPLICIT F-GROUP-CHANGE-ATTRIB-request,
+ f-group-Change-attrib-response [56] IMPLICIT F-GROUP-CHANGE-ATTRIB-response,
+ f-select-another-request [57] IMPLICIT F-SELECT-ANOTHER-request,
+ f-select-another-response [58] IMPLICIT F-SELECT-ANOTHER-response,
+ f-create-directory-request [59] IMPLICIT F-CREATE-DIRECTORY-request,
+ f-create-directory-response [60] IMPLICIT F-CREATE-DIRECTORY-response,
+ f-link-request [61] IMPLICIT F-LINK-request,
+ f-link-response [62] IMPLICIT F-LINK-response,
+ f-unlink-request [63] IMPLICIT F-UNLINK-request,
+ f-unlink-response [64] IMPLICIT F-UNLINK-response,
+ f-read-link-attrib-request [65] IMPLICIT F-READ-LINK-ATTRIB-request,
+ f-read-link-attrib-response [66] IMPLICIT F-READ-LINK-ATTRIB-response,
+ f-Change-link-attrib-request [67] IMPLICIT F-CHANGE-LINK-ATTRIB-request,
+ f-Change-Iink-attrib-response [68] IMPLICIT F-CHANGE-LINK-ATTRIB-response,
+ f-move-request [69] IMPLICIT F-MOVE-request,
+ f-move-response [70] IMPLICIT F-MOVE-response,
+ f-copy-request [71] IMPLICIT F-COPY-request,
+ f-copy-response [72] IMPLICIT F-COPY-response
+}
+
+F-CHANGE-PREFIX-request ::= SEQUENCE {
+ reset [0] IMPLICIT BOOLEAN DEFAULT FALSE,
+ destination-file-directory Destination-File-Directory,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL
+}
+
+F-CHANGE-PREFIX-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ destination-file-directory Destination-File-Directory OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-LIST-request ::= SEQUENCE {
+ attribute-value-asset-tions Attribute-Value-Assertions,
+ scope Scope,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ attribute-names [0] IMPLICIT Attribute-Names,
+ attribute-extension-names [1] IMPLICIT Attribute-Extension-Names OPTIONAL
+}
+
+F-LIST-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ objects-attributes-list Objects-Attributes-List OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-GROUP-SELECT-request ::= SEQUENCE {
+ attribute-value-assertions Attribute-Value-Assertions,
+ requested-access Access-Request,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ concurrency-control Concurrency-Control OPTIONAL,
+ maximum-set-size [0] IMPLICIT INTEGER DEFAULT 0,
+ -- 0 implies no limit.
+ scope Scope,
+ account Account OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL
+}
+
+F-GROUP-SELECT-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-GROUP-DELETE-request ::= SEQUENCE {
+ request-Operation-result Request-Operation-Result OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL
+}
+
+F-GROUP-DELETE-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ charging Charging OPTIONAL,
+ operation-result Operation-Result OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-GROUP-MOVE-request ::= SEQUENCE {
+ destination-file-directory Destination-File-Directory,
+ override [0] IMPLICIT Override DEFAULT create-failure,
+ -- Only the values create-failure (0}
+ -- and delete-and-create-with-new-attributes (3) are allowed.
+ error-action [11] IMPLICIT Error-Action,
+ create-password Password OPTIONAL,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ request-Operation-result Request-Operation-Result OPTIONAL,
+ attributes Change-Attributes OPTIONAL
+}
+
+F-GROUP-MOVE-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ destination-file-directory Destination-File-Directory OPTIONAL,
+ operation-result Operation-Result OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-GROUP-COPY-request ::= SEQUENCE {
+ destination-file-directory Destination-File-Directory,
+ override [0] IMPLICIT Override DEFAULT create-failure,
+ -- Only the values create-failure (0)
+ -- and delete-and-create-with-new-attributes (3) are allowed.
+ error-action [1] IMPLICIT Error-Action,
+ create-password Password OPTIONAL,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ request-Operation-result Request-Operation-Result OPTIONAL,
+ attributes Change-Attributes OPTIONAL
+}
+
+F-GROUP-COPY-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ destination-file-directory Destination-File-Directory OPTIONAL,
+ operation-result Operation-Result OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-GROUP-LIST-request ::= SEQUENCE {
+ attribute-names [0] IMPLICIT Attribute-Names,
+ attribute-extension-names [2] IMPLICIT Attribute-Extension-Names OPTIONAL
+}
+
+F-GROUP-LIST-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ objects-attributes-list Objects-Attributes-List OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-GROUP-CHANGE-ATTRIB-request ::= SEQUENCE {
+ attributes Change-Attributes,
+ error-action [1] IMPLICIT Error-Action,
+ request-Operation-result Request-Operation-Result OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL
+}
+
+F-GROUP-CHANGE-ATTRIB-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ operation-result Operation-Result OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-SELECT-ANOTHER-request ::= SEQUENCE {
+ shared-ASE-information Shared-ASE-Information OPTIONAL
+}
+
+F-SELECT-ANOTHER-response ::= SEQUENCE {
+ state-result State-Result DEFAULT success,
+ action-result Action-Result DEFAULT success,
+ last-member-indicator [0] IMPLICIT BOOLEAN DEFAULT FALSE,
+ referent-indicator Referent-Indicator OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-CREATE-DIRECTORY-request ::= SEQUENCE {
+ initial-attributes Create-Attributes,
+ create-password Password OPTIONAL,
+ requested-access Access-Request,
+ shared-ASE-infonnation Shared-ASE-Information OPTIONAL,
+ account Account OPTIONAL
+}
+
+F-CREATE-DIRECTORY-response ::= SEQUENCE {
+ state-result State-Result DEFAULT success,
+ action-result Action-Result DEFAULT success,
+ initial-attributes Create-Attributes,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-LINK-request ::= SEQUENCE {
+ initial-attributes Create-Attributes,
+ target-object Pathname-Attribute,
+ create-password Password OPTIONAL,
+ requested-access Access-Request,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ concurrency-control Concurrency-Control OPTIONAL,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ account Account OPTIONAL
+}
+
+F-LINK-response ::= SEQUENCE {
+ state-result State-Result DEFAULT success,
+ action-result Action-Result DEFAULT success,
+ initial-attributes Create-Attributes,
+ target-Object Pathname-Attribute,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-UNLINK-request ::= SEQUENCE {
+ shared-ASE-information Shared-ASE-Information OPTIONAL
+}
+
+F-UNLINK-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ shared-ASE-information Shared-ASE-Information OPTIONAL,
+ charging Charging OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-READ-LINK-ATTRIB-request ::= SEQUENCE {
+ attribute-names [0] IMPLICIT Attribute-Names,
+ attribute-extension-names [1] IMPLICIT Attribute-Extension-Names OPTIONAL
+}
+
+F-READ-LINK-ATTRIB-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ attributes Read-Attributes OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-CHANGE-LINK-ATTRIB-request ::= SEQUENCE {attributes Change-Attributes
+}
+
+F-CHANGE-LINK-ATTRIB-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ attributes Change-Attributes OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-MOVE-request ::= SEQUENCE {
+ destination-file-directory Destination-File-Directory,
+ override [0] IMPLICIT Override DEFAULT create-failure,
+ -- Only the values create-failure (0)
+ -- and delete-and-create-with-new-attributes (3) are ailowed.
+ create-password Password OPTIONAL,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ attributes Change-Attributes OPTIONAL
+}
+
+F-MOVE-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ destination-file-directory Destination-File-Directory OPTIONAL,
+ attributes Change-Attributes OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+F-COPY-request ::= SEQUENCE {
+ destination-file-directory Destination-File-Directory,
+ override [0] IMPLICIT Override DEFAULT create-failure,
+ -- Only the values create-failure (0)
+ -- and delete-and-create-with-new-attributes (3) are allowed.
+ create-password Password OPTIONAL,
+ access-passwords Access-Passwords OPTIONAL,
+ path-access-passwords Path-Access-Passwords OPTIONAL,
+ attributes Change-Attributes OPTIONAL
+}
+
+F-COPY-response ::= SEQUENCE {
+ action-result Action-Result DEFAULT success,
+ destination-file-directory Destination-File-Directory OPTIONAL,
+ attributes Change-Attributes OPTIONAL,
+ diagnostic Diagnostic OPTIONAL
+}
+
+Attribute-Extension-Names ::= SEQUENCE OF Attribute-Extension-Set-Name
+
+Attribute-Extension-Set-Name ::= SEQUENCE {
+ extension-set-identifier [0] IMPLICIT Extension-Set-Identifier,
+ extension-attribute-names [1] SEQUENCE OF Extension-Attribute-identifier
+}
+
+Attribute-Extensions ::= SEQUENCE OF Attribute-Extension-Set
+
+Attribute-Extension-Set ::= SEQUENCE {
+ extension-set-identifier [0] IMPLICIT Extension-Set-Identifier,
+ extension-set-attributes [1] SEQUENCE OF Extension-Attribute
+}
+
+Extension-Attribute ::= SEQUENCE {
+ extension-attribute-identifier
+ TYPE-IDENTIFIER.&id({Extension-Attributes}),
+ extension-attribute
+ TYPE-IDENTIFIER.&Type
+ ({Extension-Attributes}{@extension-attribute-identifier})
+}
+
+Extension-Attributes TYPE-IDENTIFIER ::=
+ {...} -- dynamically extensible
+
+Extension-Set-Identifier ::= OBJECT IDENTIFIER
+
+Extension-Attribute-identifier ::= OBJECT IDENTIFIER
+
+Attribute-Value-Assertions ::= [APPLICATION 26] IMPLICIT OR-Set
+
+Scope ::=
+ [APPLICATION 28] IMPLICIT
+ SEQUENCE OF
+ SEQUENCE {root-directory [0] Pathname-Attribute OPTIONAL,
+ retrieval-scope [1] IMPLICIT INTEGER {child(0), all(1)}
+ }
+
+OR-Set ::= SEQUENCE OF AND-Set
+
+AND-Set ::=
+ SEQUENCE OF
+ CHOICE {-- Kernel group
+ pathname-Pattern
+ [0] IMPLICIT Pathname-Pattern,
+ object-type-Pattern
+ [18] IMPLICIT Integer-Pattern,
+ permitted-actions-Pattern
+ [1] IMPLICIT Bitstring-Pattern,
+ contents-type-Pattern
+ [2] Contents-Type-Pattern,
+ linked-Object-Pattern
+ [19] IMPLICIT Pathname-Pattern,
+ child-objects-Pattern
+ [23] IMPLICIT Pathname-Pattern,
+ -- Storage group
+ primaty-pathname-Pattern
+ [20] IMPLICIT Pathname-Pattern,
+ storage-account-Pattern
+ [3] IMPLICIT String-Pattern,
+ date-and-time-of-creation-Pattern
+ [4] IMPLICIT Date-and-Time-Pattern,
+ date-and-time-of-last-modification-Pattern
+ [5] IMPLICIT Date-and-Time-Pattern,
+ date-and-time-of-last-read-access-Pattern
+ [6] IMPLICIT Date-and-Time-Pattern,
+ date-and-time-of-last-attribute-modification-Pattern
+ [7] IMPLICIT Date-and-Time-Pattern,
+ identity-of-creator-Pattern
+ [8] IMPLICIT User-Identity-Pattern,
+ identity-of-last-modifier-Pattern
+ [9] IMPLICIT User-Identity-Pattern,
+ identity-of-last-reader-Pattern
+ [10] IMPLICIT User-Identity-Pattern,
+ identity-of-last-attribute-modifier-Pattern
+ [11] IMPLICIT User-Identity-Pattern,
+ object-availabiiity-Pattern
+ [12] IMPLICIT Boolean-Pattern,
+ object-size-Pattern
+ [13] IMPLICIT Integer-Pattern,
+ future-object-size-Pattern
+ [14] IMPLICIT Integer-Pattern,
+ -- Security group
+ -- Access control searches are disallowed.
+ legal-quailfication-Pattern
+ [16] IMPLICIT String-Pattern,
+ -- Private group
+ -- Private use searches are disallowed.
+ -- Attribute Extensions group
+ attribute-extensions-pattern
+ [22] IMPLICIT Attribute-Extensions-Pattern}
+
+User-Identity-Pattern ::= String-Pattern
+
+Equality-Comparision ::= BIT STRING {
+ no-value-available-matches(0),
+ -- Set impies ?No Value Available? matches the test.
+ -- Clear implies ?No Value Availabie? fails the test.
+ equals-matches(1)
+
+-- Set implies equal items match the test.
+-- Clear implies equal items fail the test.
+}
+
+Relational-Comparision ::= BIT STRING {
+ no-value-available-matches(0),
+ -- Set impies ?No Value Available? matches the test.
+ -- Clear implies ?No Value Available? fails the test.
+ equals-matches(1),
+ -- Set implies equal items match the test.?
+ -- Clear implies equal items fail the test.
+ less-than-matches(2),
+ -- Set implies a value less than the test cke matches.
+ -- Clear implies a value less than the test case fails.
+ greater-than-matches(3)
+
+-- Set implies a value greater than the test case matches.
+-- Clear implies a value greater than the test case fails.
+}
+
+-- Bits 1 through 3 shall not all have the Same value.
+Pathname-Pattern ::= SEQUENCE {
+ equality-comparision [0] IMPLICIT Equality-Comparision,
+ pathname-value
+ [1] IMPLICIT SEQUENCE OF
+ CHOICE {string-match [2] IMPLICIT String-Pattern,
+ any-match [3] IMPLICIT NULL}
+}
+
+String-Pattern ::= SEQUENCE {
+ equality-comparision [0] IMPLICIT Equality-Comparision,
+ string-value
+ [1] IMPLICIT SEQUENCE OF
+ CHOICE {substring-match
+ [2] IMPLICIT GraphicString,
+ any-match [3] IMPLICIT NULL,
+ number-of-characters-match [4] IMPLICIT INTEGER
+ }
+}
+
+Bitstring-Pattern ::= SEQUENCE {
+ equality-comparision [0] IMPLICIT Equality-Comparision,
+ match-bitstring [1] IMPLICIT BIT STRING,
+ significance-bitstring [2] IMPLICIT BIT STRING
+}
+
+Date-and-Time-Pattern ::= SEQUENCE {
+ relational-camparision [0] IMPLICIT Equality-Comparision,
+ time-and-date-value [1] IMPLICIT GeneralizedTime
+}
+
+Integer-Pattern ::= SEQUENCE {
+ relational-comparision [0] IMPLICIT Relational-Comparision,
+ integer-value [1] IMPLICIT INTEGER
+}
+
+Object-Identifier-Pattern ::= SEQUENCE {
+ equality-comparision [0] IMPLICIT Equality-Comparision,
+ object-identifier-value [1] IMPLICIT OBJECT IDENTIFIER
+}
+
+Boolean-Pattern ::= SEQUENCE {
+ equality-comparision [0] IMPLICIT Equality-Comparision,
+ boolean-value [1] IMPLICIT BOOLEAN
+}
+
+Other-Pattern ::= Equality-Comparision
+
+-- Matches against ?No Value Available?.
+Contents-Type-Pattern ::= CHOICE {
+ document-type-Pattern
+ [0] IMPLICIT Object-Identifier-Pattern,
+ constraint-set-abstract-Syntax-Pattern
+ [1] IMPLICIT SEQUENCE {constraint-Set-Pattern
+ [2] IMPLICIT Object-Identifier-Pattern OPTIONAL,
+ -- Absent implies any Object Identifier is equal.
+ abstract-Syntax-Pattern
+ [3] IMPLICIT Object-Identifier-Pattern OPTIONAL
+ -- Absent implies any Object identifier is equal.
+ }
+}
+
+Attribute-Extensions-Pattern ::=
+ SEQUENCE OF
+ SEQUENCE {extension-set-identifier
+ [0] IMPLICIT Extension-Set-Identifier,
+ extension-set-attribute-Patterns
+ [1] IMPLICIT SEQUENCE OF
+ SEQUENCE {extension-attribute-identifier
+ TYPE-IDENTIFIER.&id
+ ({Extension-attribute-Patterns}),
+ extension-attribute-Pattern
+ TYPE-IDENTIFIER.&Type
+ ({Extension-attribute-Patterns}
+ {@.extension-attribute-identifier})
+ }}
+
+-- conjunction with the extention attribute in Order to
+-- perform Pattern matthing operations on it. it may be
+-- defined in terms of other Patterns within this
+-- Standard.
+Extension-attribute-Patterns TYPE-IDENTIFIER ::=
+ {...} -- dynamically extensible information object set
+
+Destination-File-Directory ::= [APPLICATION 24] Pathname-Attribute
+
+Objects-Attributes-List ::=
+ [APPLICATION 25] IMPLICIT SEQUENCE OF Read-Attributes
+
+Override ::= INTEGER {
+ create-failure(0), select-old-Object(1),
+ delete-and-create-with-old-attributes(2),
+ delete-and-create-with-new-attributes(3)}
+
+Error-Action ::= INTEGER {terminate(0), continue(1)}
+
+Operation-Result ::= [APPLICATION 30] CHOICE {
+ success-Object-count [0] IMPLICIT INTEGER,
+ success-Object-names [1] IMPLICIT SEQUENCE OF Pathname
+}
+
+Pathname ::= SEQUENCE OF GraphicString
+
+Pass-Passwords ::= SEQUENCE OF Password
+
+-- There is a one-to-one correspondence between the elements of
+-- Pass-Passwords and the non-terminal elements of the specified
+-- Pathname.
+Path-Access-Passwords ::=
+ [APPLICATION 27] IMPLICIT
+ SEQUENCE OF
+ SEQUENCE {read-password [0] Password,
+ insert-password [1] Password,
+ replace-password [2] Password,
+ extend-password [3] Password,
+ erase-password [4] Password,
+ read-attribute-password [5] Password,
+ change-attribute-password [6] Password,
+ delete-password [7] Password,
+ pass-passwords [8] IMPLICIT Pass-Passwords,
+ link-password [9] Password}
+
+-- There is a one-to-one correspondence between the elements of
+-- Path-Access-Passwords and the non-terminal elements sf the
+-- specified Pathname.
+Request-Operation-Result ::= [APPLICATION 31] IMPLICIT INTEGER {
+ summary(0), fiii-list(1)}
+
+Attribute-Names ::= BIT STRING -- Kernel group
+ {
+ read-pathname(0), read-Object-type(18), read-permitted-actions(1),
+ read-contents-type(2), read-linked-Object(19),
+ read-Child-objects(23),
+ -- Storage group
+ read-primary-pathname(20), read-storage-account(3),
+ read-date-and-time-of-creation(4),
+ read-date-and-time-of-last-modification(5),
+ read-date-and-time-of-last-read-access(6),
+ read-date-and-time-of-last-attribute-modification(7),
+ read-identity-of-creator(8), read-identity-of-last-modifier(9),
+ read-identity-of-last-reader(10),
+ read-identity-of-last-attribute-modifier(11), read-Object-availability(12),
+ read-Object-size(13),
+ read-future-Object-size(14),
+ -- Security group
+ read-access-control(15), read-path-access-control(21),
+ read-l8gal-qualifiCatiOnS(16),
+ -- Private group
+ read-private-use(17)}
+
+-- Bits 19 through 23 arc defined if and only if the limited-fil8Store-manag8m8nt
+-- or group-manipulation functionat units are available.
+Referent-Indicator ::= [APPLICATION 29] IMPLICIT BOOLEAN
+
+-- dw: definition of AE-title, as defined in ISO 8650:1988/Cor.1:1990
+-- dw: defined in-line here so we don't need to import it, original comments
+-- dw: are as they appear in the 8650:1988 Annex E
+AP-title ::= TYPE-IDENTIFIER.&Type
+
+-- The exact definition and values used for AP-title
+-- should be chosen taking into account the ongoing
+-- work in areas of naming, the Directory, and the
+-- Registration Authority procedures for AE titles,
+-- AE titles, and AE qualifiers
+AE-qualifier ::= TYPE-IDENTIFIER.&Type
+
+-- The exact definition and values used for AE-qualifier
+-- should be chosen taking into account the ongoing
+-- work in areas of naming, the Directory, and the
+-- Registration Authority procedures for AE titles,
+-- AE titles, and AE qualifiers
+AE-title ::= SEQUENCE {ap AP-title,
+ ae AE-qualifier
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/ISO9541-SN.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/ISO9541-SN.asn1
new file mode 100644
index 0000000000..0149602040
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/ISO9541-SN.asn1
@@ -0,0 +1,51 @@
+-- Module ISO9541-SN (ISO:1991)
+--
+-- Copyright � ISO/IEC 1991. This version of
+-- this ASN.1 module is part of ISO|IEC 9541-2:1991;
+-- see the ISO|IEC text itself for full legal notices.
+--
+ISO9541-SN {1 0 9541 2 3} DEFINITIONS ::=
+BEGIN
+
+EXPORTS Structured-Name, Owner-Name, Object-Name-Component;
+
+Structured-Name ::= SEQUENCE {
+ owner-name [0] IMPLICIT Owner-Name OPTIONAL,
+ -- length restricted to 120 characters
+ owner-description [1] Message OPTIONAL,
+ object-name [2] SEQUENCE OF Object-Name-Component OPTIONAL,
+ -- length restricted to 100 characters
+ object-description [3] Message OPTIONAL
+}
+
+Owner-Name ::= SEQUENCE {
+ objectIdentifier [0] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
+ ownerNameComponent [1] SEQUENCE OF Owner-Name-Component OPTIONAL
+}
+
+Owner-Name-Component ::= [0] VisibleString
+
+-- except for "//" and "::"
+Object-Name-Component ::= [0] VisibleString
+
+-- only characters from the following
+-- repertoire: "A-Z", "a-z", "0-9",
+-- Hyphen, and Period. If the name
+-- component is a numeric value,
+-- the first digit is in the range
+-- of 1 to 9
+Message ::= CHOICE {
+ numeric [0] NumericString,
+ printable [1] PrintableString,
+ teletex [2] TeletexString,
+ videotex [3] VideotexString,
+ visible [4] VisibleString,
+ ia5 [5] IA5String,
+ graphic [6] GraphicString,
+ general [7] GeneralString
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Identifiers-and-Expressions.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Identifiers-and-Expressions.asn1
new file mode 100644
index 0000000000..bd1d8d3c48
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Identifiers-and-Expressions.asn1
@@ -0,0 +1,126 @@
+-- Module Identifiers-and-Expressions (T.415:03/1993)
+
+Identifiers-and-Expressions {2 8 1 5 7} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Content-Portion-Identifier, Object-or-Class-Identifier, Style-Identifier,
+ Protected-Part-Identifier, Category-Name, Resource-Name, Binding-Name,
+ Construction-Expression, Object-Id-Expression, Numeric-Expression,
+ String-Expression;
+
+IMPORTS
+ Layout-Object-Type
+ FROM Layout-Descriptors -- see 7.9
+
+ Logical-Object-Type
+ FROM Logical-Descriptors; -- see 7.10
+
+Content-Portion-Identifier ::= [APPLICATION 0] IMPLICIT PrintableString
+
+-- only digits and space are used in the present version
+-- of this Specification; other characters are reserved for extensions
+Object-or-Class-Identifier ::= [APPLICATION 1] IMPLICIT PrintableString
+
+-- only digits and space are used in the present version
+-- of this Specification; other characters are reserved for extensions;
+-- a 'null' value is represented by an empty string
+Style-Identifier ::= [APPLICATION 5] IMPLICIT PrintableString
+
+-- only digits and space are used in the present version
+-- of this Specification; other characters are reserved for extensions;
+-- a 'null' value is represented by an empty string
+Protected-Part-Identifier ::= [APPLICATION 7] IMPLICIT PrintableString
+
+-- only digits and space are used in the present version
+-- of this Specification; other characters are reserved for extensions;
+-- a 'null' value is represented by an empty string
+Category-Name ::= PrintableString
+
+-- a 'null' value is represented by an empty string
+Resource-Name ::= PrintableString
+
+Binding-Name ::= PrintableString
+
+Construction-Expression ::= CHOICE {
+ construction-type Construction-Type,
+ single-term-construction [3] Construction-Term
+}
+
+Construction-Type ::= CHOICE {
+ sequence-construction [0] IMPLICIT Term-Sequence,
+ aggregate-construction [1] IMPLICIT Term-Sequence,
+ choice-construction [2] IMPLICIT Term-Sequence
+}
+
+Term-Sequence ::= SEQUENCE OF Construction-Term
+
+Construction-Term ::= CHOICE {
+ required-construction-factor [0] Construction-Factor,
+ optional-construction-factor [1] Construction-Factor,
+ repetitive-construction-factor [2] Construction-Factor,
+ optional-repetitive-factor [3] Construction-Factor
+}
+
+Construction-Factor ::= CHOICE {
+ object-class-identifier Object-or-Class-Identifier,
+ construction-type Construction-Type
+}
+
+Object-Id-Expression ::= CHOICE {
+ current-object-function [0] IMPLICIT NULL,
+ preceding-object-function [1] Object-Id-Expression,
+ superior-object-function [3] Object-Id-Expression,
+ current-instance-function [4] Current-Instance-Function
+}
+
+Numeric-Expression ::= CHOICE {
+ numeric-literal [0] IMPLICIT INTEGER,
+ increment-application [1] Numeric-Expression,
+ decrement-application [2] Numeric-Expression,
+ ordinal-application
+ [3] CHOICE {identifier Object-or-Class-Identifier,
+ expression Object-Id-Expression},
+ binding-reference [4] IMPLICIT Binding-Reference
+}
+
+Binding-Reference ::= SET {
+ object-reference
+ CHOICE {identifier Object-or-Class-Identifier,
+ expression Binding-Selection-Function},
+ binding-identifier Binding-Name
+}
+
+Binding-Selection-Function ::= CHOICE {
+ current-object-function [0] IMPLICIT NULL,
+ preceding-function [1] Object-Id-Expression,
+ superior-function [3] Object-Id-Expression,
+ current-instance-function [4] Current-Instance-Function
+}
+
+Current-Instance-Function ::= SEQUENCE {
+ first-parameter
+ CHOICE {identifier [0] IMPLICIT Object-or-Class-Identifier,
+ layout-object-type [1] IMPLICIT Layout-Object-Type,
+ logical-object-type [2] IMPLICIT Logical-Object-Type},
+ second-parameter
+ CHOICE {identifier Object-or-Class-Identifier,
+ expression Object-Id-Expression}
+}
+
+String-Expression ::= SEQUENCE OF Atomic-String-Expression
+
+Atomic-String-Expression ::= CHOICE {
+ string-literal [0] IMPLICIT OCTET STRING,
+ binding-reference [2] IMPLICIT Binding-Reference,
+ make-string-application [3] Numeric-Expression,
+ upper-alpha-application [4] Numeric-Expression,
+ lower-alpha-application [5] Numeric-Expression,
+ upper-roman-application [6] Numeric-Expression,
+ lower-roman-application [7] Numeric-Expression
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/InformationFramework.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/InformationFramework.asn1
new file mode 100644
index 0000000000..813ac9c6a0
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/InformationFramework.asn1
@@ -0,0 +1,868 @@
+-- Module InformationFramework (X.501:08/1997)
+InformationFramework {joint-iso-itu-t ds(5) module(1) informationFramework(1)
+ 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All -
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ id-oc, id-at, id-mr, id-oa, id-sc, id-ar, id-nf, selectedAttributeTypes,
+ directoryAbstractService, upperBounds
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ commonName, generalizedTimeMatch, generalizedTimeOrderingMatch, booleanMatch,
+ integerMatch, integerOrderingMatch, objectIdentifierFirstComponentMatch,
+ integerFirstComponentMatch, DirectoryString{}
+ FROM SelectedAttributeTypes selectedAttributeTypes
+ TypeAndContextAssertion, ServiceControlOptions, SearchControlOptions,
+ HierarchySelections, FamilyGrouping, FamilyReturn
+ FROM DirectoryAbstractService directoryAbstractService
+ ub-search
+ FROM UpperBounds upperBounds;
+
+-- attribute data types
+Attribute ::= SEQUENCE {
+ type ATTRIBUTE.&id({SupportedAttributes}),
+ values
+ SET SIZE (0..MAX) OF ATTRIBUTE.&Type({SupportedAttributes}{@type}),
+ valuesWithContext
+ SET SIZE (1..MAX) OF
+ SEQUENCE {value ATTRIBUTE.&Type({SupportedAttributes}{@type}),
+ contextList SET SIZE (1..MAX) OF Context} OPTIONAL
+}
+
+AttributeType ::= ATTRIBUTE.&id
+
+AttributeValue ::= ATTRIBUTE.&Type
+
+Context ::= SEQUENCE {
+ contextType CONTEXT.&id({SupportedContexts}),
+ contextValues
+ SET SIZE (1..MAX) OF CONTEXT.&Type({SupportedContexts}{@contextType}),
+ fallback BOOLEAN DEFAULT FALSE
+}
+
+AttributeValueAssertion ::= SEQUENCE {
+ type ATTRIBUTE.&id({SupportedAttributes}),
+ assertion
+ ATTRIBUTE.&equality-match.&AssertionType({SupportedAttributes}{@type}),
+ assertedContexts
+ CHOICE {allContexts [0] NULL,
+ selectedContexts [1] SET SIZE (1..MAX) OF ContextAssertion
+ } OPTIONAL
+}
+
+ContextAssertion ::= SEQUENCE {
+ contextType CONTEXT.&id({SupportedContexts}),
+ contextValues
+ SET SIZE (1..MAX) OF CONTEXT.&Assertion({SupportedContexts}{@contextType})
+}
+
+AttributeTypeAssertion ::= SEQUENCE {
+ type ATTRIBUTE.&id({SupportedAttributes}),
+ assertedContexts SEQUENCE SIZE (1..MAX) OF ContextAssertion OPTIONAL
+}
+
+-- Definition of the following information object set is deferred, perhaps to standardized
+-- profiles or to protocol implementation conformance statements. The set is required to
+-- specify a table constraint on the values component of Attribute, the value component
+-- of AttributeTypeAndValue, and the assertion component of AttributeValueAssertion.
+SupportedAttributes ATTRIBUTE ::=
+ {objectClass | aliasedEntryName, ...}
+
+-- Definition of the following information object set is deferred, perhaps to standardized
+-- profiles or to protocol implementation conformance statements. The set is required to
+-- specify a table constraint on the context specifications
+SupportedContexts CONTEXT ::=
+ {...}
+
+-- naming data types
+Name ::= CHOICE { -- only one possibility for now --rdnSequence RDNSequence
+}
+
+RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
+
+DistinguishedName ::= RDNSequence
+
+RelativeDistinguishedName ::=
+ SET SIZE (1..MAX) OF AttributeTypeAndDistinguishedValue
+
+AttributeTypeAndDistinguishedValue ::= SEQUENCE {
+ type ATTRIBUTE.&id({SupportedAttributes}),
+ value ATTRIBUTE.&Type({SupportedAttributes}{@type}),
+ primaryDistinguished BOOLEAN DEFAULT TRUE,
+ valuesWithContext
+ SET SIZE (1..MAX) OF
+ SEQUENCE {distingAttrValue
+ [0] ATTRIBUTE.&Type({SupportedAttributes}{@type}) OPTIONAL,
+ contextList SET SIZE (1..MAX) OF Context} OPTIONAL
+}
+
+-- subtree data types
+SubtreeSpecification ::= SEQUENCE {
+ base [0] LocalName DEFAULT {},
+ COMPONENTS OF ChopSpecification,
+ specificationFilter [4] Refinement OPTIONAL
+}
+
+-- empty sequence specifies whole administrative area
+LocalName ::= RDNSequence
+
+ChopSpecification ::= SEQUENCE {
+ specificExclusions
+ [1] SET SIZE (1..MAX) OF
+ CHOICE {chopBefore [0] LocalName,
+ chopAfter [1] LocalName} OPTIONAL,
+ minimum [2] BaseDistance DEFAULT 0,
+ maximum [3] BaseDistance OPTIONAL
+}
+
+BaseDistance ::= INTEGER(0..MAX)
+
+Refinement ::= CHOICE {
+ item [0] OBJECT-CLASS.&id,
+ and [1] SET OF Refinement,
+ or [2] SET OF Refinement,
+ not [3] Refinement
+}
+
+-- OBJECT-CLASS information object class specification
+OBJECT-CLASS ::= CLASS {
+ &Superclasses OBJECT-CLASS OPTIONAL,
+ &kind ObjectClassKind DEFAULT structural,
+ &MandatoryAttributes ATTRIBUTE OPTIONAL,
+ &OptionalAttributes ATTRIBUTE OPTIONAL,
+ &id OBJECT IDENTIFIER UNIQUE
+}
+WITH SYNTAX {
+ [SUBCLASS OF &Superclasses]
+ [KIND &kind]
+ [MUST CONTAIN &MandatoryAttributes]
+ [MAY CONTAIN &OptionalAttributes]
+ ID &id
+}
+
+ObjectClassKind ::= ENUMERATED {abstract(0), structural(1), auxiliary(2)}
+
+-- object classes
+top OBJECT-CLASS ::= {
+ KIND abstract
+ MUST CONTAIN {objectClass}
+ ID id-oc-top
+}
+
+alias OBJECT-CLASS ::= {
+ SUBCLASS OF {top}
+ MUST CONTAIN {aliasedEntryName}
+ ID id-oc-alias
+}
+
+parent OBJECT-CLASS ::= {KIND abstract
+ ID id-oc-parent
+}
+
+child OBJECT-CLASS ::= {KIND auxiliary
+ ID id-oc-child
+}
+
+-- ATTRIBUTE information object class specification
+ATTRIBUTE ::= CLASS {
+ &derivation ATTRIBUTE OPTIONAL,
+ &Type OPTIONAL, -- either &Type or &derivation required
+ &equality-match MATCHING-RULE OPTIONAL,
+ &ordering-match MATCHING-RULE OPTIONAL,
+ &substrings-match MATCHING-RULE OPTIONAL,
+ &single-valued BOOLEAN DEFAULT FALSE,
+ &collective BOOLEAN DEFAULT FALSE,
+ -- operational extensions
+ &no-user-modification BOOLEAN DEFAULT FALSE,
+ &usage AttributeUsage DEFAULT userApplications,
+ &id OBJECT IDENTIFIER UNIQUE
+}
+WITH SYNTAX {
+ [SUBTYPE OF &derivation]
+ [WITH SYNTAX &Type]
+ [EQUALITY MATCHING RULE &equality-match]
+ [ORDERING MATCHING RULE &ordering-match]
+ [SUBSTRINGS MATCHING RULE &substrings-match]
+ [SINGLE VALUE &single-valued]
+ [COLLECTIVE &collective]
+ [NO USER MODIFICATION &no-user-modification]
+ [USAGE &usage]
+ ID &id
+}
+
+AttributeUsage ::= ENUMERATED {
+ userApplications(0), directoryOperation(1), distributedOperation(2),
+ dSAOperation(3)}
+
+-- attributes
+objectClass ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ ID id-at-objectClass
+}
+
+aliasedEntryName ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ SINGLE VALUE TRUE
+ ID id-at-aliasedEntryName
+}
+
+-- MATCHING-RULE information object class specification
+MATCHING-RULE ::= CLASS {
+ &ParentMatchingRules MATCHING-RULE.&id OPTIONAL,
+ &AssertionType OPTIONAL,
+ &uniqueMatchIndicator ATTRIBUTE.&id OPTIONAL,
+ &id OBJECT IDENTIFIER UNIQUE
+}
+WITH SYNTAX {
+ [PARENT &ParentMatchingRules]
+ [SYNTAX &AssertionType]
+ [UNIQUE-MATCH-INDICATOR &uniqueMatchIndicator]
+ ID &id
+}
+
+-- matching rules
+objectIdentifierMatch MATCHING-RULE ::= {
+ SYNTAX OBJECT IDENTIFIER
+ ID id-mr-objectIdentifierMatch
+}
+
+distinguishedNameMatch MATCHING-RULE ::= {
+ SYNTAX DistinguishedName
+ ID id-mr-distinguishedNameMatch
+}
+
+MAPPING-BASED-MATCHING{SelectedBy, BOOLEAN:combinable, MappingResult,
+ OBJECT IDENTIFIER:matchingRule} ::= CLASS {
+ &selectBy SelectedBy OPTIONAL,
+ &ApplicableTo ATTRIBUTE,
+ &subtypesIncluded BOOLEAN DEFAULT TRUE,
+ &combinable BOOLEAN(combinable),
+ &mappingResults MappingResult OPTIONAL,
+ &userControl BOOLEAN DEFAULT FALSE,
+ &exclusive BOOLEAN DEFAULT TRUE,
+ &matching-rule MATCHING-RULE.&id(matchingRule),
+ &id OBJECT IDENTIFIER UNIQUE
+}
+WITH SYNTAX {
+ [SELECT BY &selectBy]
+ APPLICABLE TO &ApplicableTo
+ [SUBTYPES INCLUDED &subtypesIncluded]
+ COMBINABLE &combinable
+ [MAPPING RESULTS &mappingResults]
+ [USER CONTROL &userControl]
+ [EXCLUSIVE &exclusive]
+ MATCHING RULE &matching-rule
+ ID &id
+}
+
+-- NAME-FORM information object class specification
+NAME-FORM ::= CLASS {
+ &namedObjectClass OBJECT-CLASS,
+ &MandatoryAttributes ATTRIBUTE,
+ &OptionalAttributes ATTRIBUTE OPTIONAL,
+ &id OBJECT IDENTIFIER UNIQUE
+}
+WITH SYNTAX {
+ NAMES &namedObjectClass
+ WITH ATTRIBUTES &MandatoryAttributes
+ [AND OPTIONALLY &OptionalAttributes]
+ ID &id
+}
+
+-- STRUCTURE-RULE class and DIT structure rule data types
+STRUCTURE-RULE ::= CLASS {
+ &nameForm NAME-FORM,
+ &SuperiorStructureRules STRUCTURE-RULE OPTIONAL,
+ &id RuleIdentifier
+}
+WITH SYNTAX {
+ NAME FORM &nameForm
+ [SUPERIOR RULES &SuperiorStructureRules]
+ ID &id
+}
+
+DITStructureRule ::= SEQUENCE {
+ ruleIdentifier RuleIdentifier,
+ -- must be unique within the scope of the subschema
+ nameForm NAME-FORM.&id,
+ superiorStructureRules SET SIZE (1..MAX) OF RuleIdentifier OPTIONAL
+}
+
+RuleIdentifier ::= INTEGER
+
+-- CONTENT-RULE class and DIT content rule data types
+CONTENT-RULE ::= CLASS {
+ &structuralClass OBJECT-CLASS.&id UNIQUE,
+ &Auxiliaries OBJECT-CLASS OPTIONAL,
+ &Mandatory ATTRIBUTE OPTIONAL,
+ &Optional ATTRIBUTE OPTIONAL,
+ &Precluded ATTRIBUTE OPTIONAL
+}
+WITH SYNTAX {
+ STRUCTURAL OBJECT-CLASS &structuralClass
+ [AUXILIARY OBJECT-CLASSES &Auxiliaries]
+ [MUST CONTAIN &Mandatory]
+ [MAY CONTAIN &Optional]
+ [MUST-NOT CONTAIN &Precluded]
+}
+
+DITContentRule ::= SEQUENCE {
+ structuralObjectClass OBJECT-CLASS.&id,
+ auxiliaries SET SIZE (1..MAX) OF OBJECT-CLASS.&id OPTIONAL,
+ mandatory [1] SET SIZE (1..MAX) OF ATTRIBUTE.&id OPTIONAL,
+ optional [2] SET SIZE (1..MAX) OF ATTRIBUTE.&id OPTIONAL,
+ precluded [3] SET SIZE (1..MAX) OF ATTRIBUTE.&id OPTIONAL
+}
+
+CONTEXT ::= CLASS {
+ &Type ,
+ &Assertion OPTIONAL,
+ &id OBJECT IDENTIFIER UNIQUE
+}WITH SYNTAX {WITH SYNTAX &Type
+ [ASSERTED AS &Assertion]
+ ID &id
+}
+
+DITContextUse ::= SEQUENCE {
+ attributeType ATTRIBUTE.&id,
+ mandatoryContexts [1] SET SIZE (1..MAX) OF CONTEXT.&id OPTIONAL,
+ optionalContexts [2] SET SIZE (1..MAX) OF CONTEXT.&id OPTIONAL
+}
+
+DIT-CONTEXT-USE-RULE ::= CLASS {
+ &attributeType ATTRIBUTE.&id UNIQUE,
+ &Mandatory CONTEXT OPTIONAL,
+ &Optional CONTEXT OPTIONAL
+}
+WITH SYNTAX {
+ ATTRIBUTE TYPE &attributeType
+ [MANDATORY CONTEXTS &Mandatory]
+ [OPTIONAL CONTEXTS &Optional]
+}
+
+-- system schema information objects
+-- object classes
+subentry OBJECT-CLASS ::= {
+ SUBCLASS OF {top}
+ KIND structural
+ MUST CONTAIN {commonName | subtreeSpecification}
+ ID id-sc-subentry
+}
+
+subentryNameForm NAME-FORM ::= {
+ NAMES subentry
+ WITH ATTRIBUTES {commonName}
+ ID id-nf-subentryNameForm
+}
+
+accessControlSubentry OBJECT-CLASS ::= {
+ KIND auxiliary
+ ID id-sc-accessControlSubentry
+}
+
+collectiveAttributeSubentry OBJECT-CLASS ::= {
+ KIND auxiliary
+ ID id-sc-collectiveAttributeSubentry
+}
+
+contextAssertionSubentry OBJECT-CLASS ::= {
+ KIND auxiliary
+ MUST CONTAIN {contextAssertionDefaults}
+ ID id-sc-contextAssertionSubentry
+}
+
+serviceAdminSubentry OBJECT-CLASS ::= {
+ KIND auxiliary
+ MUST CONTAIN {searchRules}
+ ID id-sc-serviceAdminSubentry
+}
+
+-- attributes
+createTimestamp ATTRIBUTE ::= {
+ WITH SYNTAX GeneralizedTime
+ -- as per 41.3 b) or c) of ITU-T Rec. X.680 | ISO/IEC 8824-1
+ EQUALITY MATCHING RULE generalizedTimeMatch
+ ORDERING MATCHING RULE generalizedTimeOrderingMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-createTimestamp
+}
+
+modifyTimestamp ATTRIBUTE ::= {
+ WITH SYNTAX GeneralizedTime
+ -- as per 41.3 b) or c) of ITU-T Rec. X.680 | ISO/IEC 8824-1
+ EQUALITY MATCHING RULE generalizedTimeMatch
+ ORDERING MATCHING RULE generalizedTimeOrderingMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-modifyTimestamp
+}
+
+subschemaTimestamp ATTRIBUTE ::= {
+ WITH SYNTAX GeneralizedTime
+ -- as per 41.3 b) or c) of ITU-T Rec.X. 680 | ISO/IEC 8824-1
+ EQUALITY MATCHING RULE generalizedTimeMatch
+ ORDERING MATCHING RULE generalizedTimeOrderingMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-subschemaTimestamp
+}
+
+creatorsName ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-creatorsName
+}
+
+modifiersName ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-modifiersName
+}
+
+subschemaSubentryList ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-subschemaSubentryList
+}
+
+accessControlSubentryList ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-accessControlSubentryList
+}
+
+collectiveAttributeSubentryList ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-collectiveAttributeSubentryList
+}
+
+contextDefaultSubentryList ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-contextDefaultSubentryList
+}
+
+serviceAdminSubentryList ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-serviceAdminSubentryList
+}
+
+hasSubordinates ATTRIBUTE ::= {
+ WITH SYNTAX BOOLEAN
+ EQUALITY MATCHING RULE booleanMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-hasSubordinates
+}
+
+administrativeRole ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT-CLASS.&id
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ USAGE directoryOperation
+ ID id-oa-administrativeRole
+}
+
+subtreeSpecification ATTRIBUTE ::= {
+ WITH SYNTAX SubtreeSpecification
+ USAGE directoryOperation
+ ID id-oa-subtreeSpecification
+}
+
+collectiveExclusions ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ USAGE directoryOperation
+ ID id-oa-collectiveExclusions
+}
+
+contextAssertionDefaults ATTRIBUTE ::= {
+ WITH SYNTAX TypeAndContextAssertion
+ EQUALITY MATCHING RULE objectIdentifierFirstComponentMatch
+ USAGE directoryOperation
+ ID id-oa-contextAssertionDefault
+}
+
+searchRules ATTRIBUTE ::= {
+ WITH SYNTAX SearchRuleDescription
+ EQUALITY MATCHING RULE integerFirstComponentMatch
+ USAGE directoryOperation
+ ID id-oa-searchRules
+}
+
+SearchRuleDescription ::= SEQUENCE {
+ COMPONENTS OF SearchRule,
+ name [28] SET SIZE (1..MAX) OF DirectoryString{ub-search} OPTIONAL,
+ description [29] DirectoryString{ub-search} OPTIONAL,
+ obsolete [30] BOOLEAN DEFAULT FALSE
+}
+
+hierarchyLevel ATTRIBUTE ::= {
+ WITH SYNTAX INTEGER
+ EQUALITY MATCHING RULE integerMatch
+ ORDERING MATCHING RULE integerOrderingMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-hierarchyLevel
+}
+
+hierarchyBelow ATTRIBUTE ::= {
+ WITH SYNTAX BOOLEAN
+ EQUALITY MATCHING RULE booleanMatch
+ SINGLE VALUE TRUE
+ NO USER MODIFICATION TRUE
+ USAGE directoryOperation
+ ID id-oa-hierarchyBelow
+}
+
+hierarchyParent ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ SINGLE VALUE TRUE
+ USAGE directoryOperation
+ ID id-oa-hierarchyParent
+}
+
+SearchRule ::= SEQUENCE {
+ COMPONENTS OF SearchRuleId,
+ serviceType [1] OBJECT IDENTIFIER OPTIONAL,
+ userClass [2] INTEGER OPTIONAL,
+ inputAttributeTypes
+ [3] SEQUENCE SIZE (1..MAX) OF RequestAttribute OPTIONAL,
+ attributeCombination [4] AttributeCombination DEFAULT and:{},
+ outputAttributeTypes [5] SEQUENCE SIZE (1..MAX) OF ResultAttribute OPTIONAL,
+ defaultControls [6] ControlOptions OPTIONAL,
+ mandatoryControls [7] ControlOptions OPTIONAL,
+ searchRuleControls [8] ControlOptions OPTIONAL,
+ familyGrouping [9] FamilyGrouping OPTIONAL,
+ familyReturn [10] FamilyReturn OPTIONAL,
+ relaxation [11] RelaxationPolicy OPTIONAL,
+ additionalControl [12] SEQUENCE SIZE (1..MAX) OF AttributeType OPTIONAL,
+ allowedSubset [13] AllowedSubset DEFAULT '111'B,
+ imposedSubset [14] ImposedSubset OPTIONAL,
+ entryLimit [15] EntryLimit OPTIONAL
+}
+
+SearchRuleId ::= SEQUENCE {id INTEGER,
+ dmdId [0] OBJECT IDENTIFIER
+}
+
+AllowedSubset ::= BIT STRING {baseObject(0), oneLevel(1), wholeSubtree(2)}
+
+ImposedSubset ::= ENUMERATED {baseObject(0), oneLevel(1), wholeSubtree(2)}
+
+RequestAttribute ::= SEQUENCE {
+ attributeType ATTRIBUTE.&id({SupportedAttributes}),
+ includeSubtypes [0] BOOLEAN DEFAULT FALSE,
+ selectedValues
+ [1] SEQUENCE SIZE (0..MAX) OF
+ ATTRIBUTE.&Type({SupportedAttributes}{@attributeType}) OPTIONAL,
+ defaultValues
+ [2] SEQUENCE SIZE (0..MAX) OF
+ SEQUENCE {entryType OBJECT-CLASS.&id OPTIONAL,
+ values
+ SEQUENCE OF
+ ATTRIBUTE.&Type({SupportedAttributes}{@attributeType})
+ } OPTIONAL,
+ contexts [3] SEQUENCE SIZE (0..MAX) OF ContextProfile OPTIONAL,
+ contextCombination [4] ContextCombination DEFAULT and:{},
+ matchingUse [5] SEQUENCE SIZE (1..MAX) OF MatchingUse OPTIONAL
+}
+
+ContextProfile ::= SEQUENCE {
+ contextType CONTEXT.&id({SupportedContexts}),
+ contextValue
+ SEQUENCE SIZE (1..MAX) OF
+ CONTEXT.&Assertion({SupportedContexts}{@contextType}) OPTIONAL
+}
+
+ContextCombination ::= CHOICE {
+ context [0] CONTEXT.&id,
+ and [1] SEQUENCE OF ContextCombination,
+ or [2] SEQUENCE OF ContextCombination,
+ not [3] ContextCombination
+}
+
+MatchingUse ::= SEQUENCE {
+ restrictionType MATCHING-RESTRICTION.&id({SupportedMatchingRestrictions}),
+ restrictionValue
+ MATCHING-RESTRICTION.&Restriction
+ ({SupportedMatchingRestrictions}{@restrictionType})
+}
+
+-- Definition of the following information object set is deferred, perhaps to standardized
+-- profiles or to protocol implementation conformance statements. The set is required to
+-- specify a table constraint on the components of SupportedMatchingRestrictions
+SupportedMatchingRestrictions MATCHING-RESTRICTION ::=
+ {...}
+
+AttributeCombination ::= CHOICE {
+ attribute [0] AttributeType,
+ and [1] SEQUENCE OF AttributeCombination,
+ or [2] SEQUENCE OF AttributeCombination,
+ not [3] AttributeCombination
+}
+
+ResultAttribute ::= SEQUENCE {
+ attributeType ATTRIBUTE.&id({SupportedAttributes}),
+ outputValues
+ CHOICE {selectedValues
+ SEQUENCE SIZE (1..MAX) OF
+ ATTRIBUTE.&Type({SupportedAttributes}{@attributeType}),
+ matchedValuesOnly NULL} OPTIONAL,
+ contexts [0] SEQUENCE SIZE (1..MAX) OF ContextProfile OPTIONAL
+}
+
+OutputValues ::= CHOICE {
+ selectedValues
+ SEQUENCE SIZE (1..MAX) OF ATTRIBUTE.&Type({SupportedAttributes}),
+ matchedValuesOnly NULL
+}
+
+ControlOptions ::= SEQUENCE {
+ serviceControls [0] ServiceControlOptions DEFAULT {},
+ searchOptions [1] SearchControlOptions DEFAULT {searchAliases},
+ hierarchyOptions [2] HierarchySelections OPTIONAL
+}
+
+EntryLimit ::= SEQUENCE {default INTEGER,
+ max INTEGER
+}
+
+RelaxationPolicy ::= SEQUENCE {
+ basic [0] MRMapping DEFAULT {},
+ tightenings [1] SEQUENCE SIZE (1..MAX) OF MRMapping OPTIONAL,
+ relaxations [2] SEQUENCE SIZE (1..MAX) OF MRMapping OPTIONAL,
+ maximum [3] INTEGER OPTIONAL, -- mandatory if tightenings is present
+ minimum [4] INTEGER DEFAULT 1
+}
+
+MRMapping ::= SEQUENCE {
+ mapping [0] SEQUENCE SIZE (1..MAX) OF Mapping OPTIONAL,
+ substitution [1] SEQUENCE SIZE (1..MAX) OF MRSubstitution OPTIONAL
+}
+
+Mapping ::= SEQUENCE {
+ mappingFunction
+ OBJECT IDENTIFIER
+ (CONSTRAINED BY {-- shall be an--
+
+ -- object identifier of a mapping-based matching algorithm -- }),
+ level INTEGER DEFAULT 0
+}
+
+MRSubstitution ::= SEQUENCE {
+ attribute AttributeType,
+ oldMatchingRule [0] MATCHING-RULE.&id OPTIONAL,
+ newMatchingRule [1] MATCHING-RULE.&id OPTIONAL
+}
+
+SEARCH-RULE ::= CLASS {
+ &dmdId OBJECT IDENTIFIER,
+ &serviceType OBJECT IDENTIFIER OPTIONAL,
+ &userClass INTEGER OPTIONAL,
+ &InputAttributeTypes REQUEST-ATTRIBUTE OPTIONAL,
+ &combination AttributeCombination OPTIONAL,
+ &OutputAttributeTypes RESULT-ATTRIBUTE OPTIONAL,
+ &defaultControls ControlOptions OPTIONAL,
+ &mandatoryControls ControlOptions OPTIONAL,
+ &searchRuleControls ControlOptions OPTIONAL,
+ &familyGrouping FamilyGrouping OPTIONAL,
+ &familyReturn FamilyReturn OPTIONAL,
+ &additionalControl AttributeType OPTIONAL,
+ &relaxation RelaxationPolicy OPTIONAL,
+ &entryLimit EntryLimit OPTIONAL,
+ &allowedSubset AllowedSubset DEFAULT '111'B,
+ &imposedSubset ImposedSubset OPTIONAL,
+ &id INTEGER UNIQUE
+}
+WITH SYNTAX {
+ DMD ID &dmdId
+ [SERVICE-TYPE &serviceType]
+ [USER-CLASS &userClass]
+ [INPUT ATTRIBUTES &InputAttributeTypes]
+ [COMBINATION &combination]
+ [OUTPUT ATTRIBUTES &OutputAttributeTypes]
+ [DEFAULT CONTROL &defaultControls]
+ [MANDATORY CONTROL &mandatoryControls]
+ [SEARCH-RULE CONTROL &searchRuleControls]
+ [FAMILY-GROUPING &familyGrouping]
+ [FAMILY-RETURN &familyReturn]
+ [ADDITIONAL CONTROL &additionalControl]
+ [RELAXATION &relaxation]
+ [ALLOWED SUBSET &allowedSubset]
+ [IMPOSED SUBSET &imposedSubset]
+ [ENTRY LIMIT &entryLimit]
+ ID &id
+}
+
+REQUEST-ATTRIBUTE ::= CLASS {
+ &attributeType ATTRIBUTE.&id,
+ &SelectedValues ATTRIBUTE.&Type OPTIONAL,
+ &DefaultValues SEQUENCE {entryType OBJECT-CLASS.&id OPTIONAL,
+ values SEQUENCE OF ATTRIBUTE.&Type
+ } OPTIONAL,
+ &contexts SEQUENCE OF ContextProfile OPTIONAL,
+ &contextCombination ContextCombination OPTIONAL,
+ &MatchingUse MatchingUse OPTIONAL,
+ &includeSubtypes BOOLEAN DEFAULT FALSE
+}
+WITH SYNTAX {
+ ATTRIBUTE TYPE &attributeType
+ [SELECTED VALUES &SelectedValues]
+ [DEFAULT VALUES &DefaultValues]
+ [CONTEXTS &contexts]
+ [CONTEXT COMBINATION &contextCombination]
+ [MATCHING USE &MatchingUse]
+ [INCLUDE SUBTYPES &includeSubtypes]
+}
+
+RESULT-ATTRIBUTE ::= CLASS {
+ &attributeType ATTRIBUTE.&id,
+ &outputValues OutputValues OPTIONAL,
+ &contexts ContextProfile OPTIONAL
+}
+WITH SYNTAX {
+ ATTRIBUTE TYPE &attributeType
+ [OUTPUT VALUES &outputValues]
+ [CONTEXTS &contexts]
+}
+
+MATCHING-RESTRICTION ::= CLASS {
+ &Restriction ,
+ &Rules MATCHING-RULE.&id,
+ &id OBJECT IDENTIFIER UNIQUE
+}WITH SYNTAX {RESTRICTION &Restriction
+ RULES &Rules
+ ID &id
+}
+
+-- object identifier assignments
+-- object classes
+id-oc-top OBJECT IDENTIFIER ::=
+ {id-oc 0}
+
+id-oc-alias OBJECT IDENTIFIER ::= {id-oc 1}
+
+id-oc-parent OBJECT IDENTIFIER ::= {id-oc 28}
+
+id-oc-child OBJECT IDENTIFIER ::= {id-oc 29}
+
+-- attributes
+id-at-objectClass OBJECT IDENTIFIER ::= {id-at 0}
+
+id-at-aliasedEntryName OBJECT IDENTIFIER ::= {id-at 1}
+
+-- matching rules
+id-mr-objectIdentifierMatch OBJECT IDENTIFIER ::= {id-mr 0}
+
+id-mr-distinguishedNameMatch OBJECT IDENTIFIER ::= {id-mr 1}
+
+-- operational attributes
+id-oa-excludeAllCollectiveAttributes OBJECT IDENTIFIER ::=
+ {id-oa 0}
+
+id-oa-createTimestamp OBJECT IDENTIFIER ::= {id-oa 1}
+
+id-oa-modifyTimestamp OBJECT IDENTIFIER ::= {id-oa 2}
+
+id-oa-creatorsName OBJECT IDENTIFIER ::= {id-oa 3}
+
+id-oa-modifiersName OBJECT IDENTIFIER ::= {id-oa 4}
+
+id-oa-administrativeRole OBJECT IDENTIFIER ::= {id-oa 5}
+
+id-oa-subtreeSpecification OBJECT IDENTIFIER ::= {id-oa 6}
+
+id-oa-collectiveExclusions OBJECT IDENTIFIER ::= {id-oa 7}
+
+id-oa-subschemaTimestamp OBJECT IDENTIFIER ::= {id-oa 8}
+
+id-oa-hasSubordinates OBJECT IDENTIFIER ::= {id-oa 9}
+
+id-oa-subschemaSubentryList OBJECT IDENTIFIER ::= {id-oa 10}
+
+id-oa-accessControlSubentryList OBJECT IDENTIFIER ::= {id-oa 11}
+
+id-oa-collectiveAttributeSubentryList OBJECT IDENTIFIER ::= {id-oa 12}
+
+id-oa-contextDefaultSubentryList OBJECT IDENTIFIER ::= {id-oa 13}
+
+id-oa-contextAssertionDefault OBJECT IDENTIFIER ::= {id-oa 14}
+
+id-oa-serviceAdminSubentryList OBJECT IDENTIFIER ::= {id-oa 15}
+
+id-oa-searchRules OBJECT IDENTIFIER ::= {id-oa 16}
+
+id-oa-hierarchyLevel OBJECT IDENTIFIER ::= {id-oa 17}
+
+id-oa-hierarchyBelow OBJECT IDENTIFIER ::= {id-oa 18}
+
+id-oa-hierarchyParent OBJECT IDENTIFIER ::= {id-oa 19}
+
+-- subentry classes
+id-sc-subentry OBJECT IDENTIFIER ::= {id-sc 0}
+
+id-sc-accessControlSubentry OBJECT IDENTIFIER ::= {id-sc 1}
+
+id-sc-collectiveAttributeSubentry OBJECT IDENTIFIER ::= {id-sc 2}
+
+id-sc-contextAssertionSubentry OBJECT IDENTIFIER ::= {id-sc 3}
+
+id-sc-serviceAdminSubentry OBJECT IDENTIFIER ::= {id-sc 4}
+
+-- Name forms
+id-nf-subentryNameForm OBJECT IDENTIFIER ::= {id-nf 16}
+
+-- administrative roles
+id-ar-autonomousArea OBJECT IDENTIFIER ::= {id-ar 1}
+
+id-ar-accessControlSpecificArea OBJECT IDENTIFIER ::= {id-ar 2}
+
+id-ar-accessControlInnerArea OBJECT IDENTIFIER ::= {id-ar 3}
+
+id-ar-subschemaAdminSpecificArea OBJECT IDENTIFIER ::= {id-ar 4}
+
+id-ar-collectiveAttributeSpecificArea OBJECT IDENTIFIER ::= {id-ar 5}
+
+id-ar-collectiveAttributeInnerArea OBJECT IDENTIFIER ::= {id-ar 6}
+
+id-ar-contextDefaultSpecificArea OBJECT IDENTIFIER ::= {id-ar 7}
+
+id-ar-serviceSpecificArea OBJECT IDENTIFIER ::= {id-ar 8}
+
+END -- InformationFramework
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Interchange-Data-Elements.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Interchange-Data-Elements.asn1
new file mode 100644
index 0000000000..2c78360b7b
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Interchange-Data-Elements.asn1
@@ -0,0 +1,57 @@
+-- Module Interchange-Data-Elements (T.415:03/1993)
+
+Interchange-Data-Elements {2 8 1 5 5} DEFINITIONS ::=
+BEGIN
+
+EXPORTS Interchange-Data-Element;
+
+IMPORTS
+ Document-Profile-Descriptor
+ FROM Document-Profile-Descriptor -- see 7.7
+
+ Layout-Class-Descriptor, Layout-Object-Descriptor
+ FROM Layout-Descriptors -- see 7.9
+
+ Logical-Class-Descriptor, Logical-Object-Descriptor
+ FROM Logical-Descriptors -- see 7.10
+
+ Presentation-Style-Descriptor, Layout-Style-Descriptor
+ FROM Style-Descriptors -- see 7.11
+
+ Text-Unit
+ FROM Text-Units -- see 7.13
+
+ Sealed-Doc-Prof-Descriptor, Enciphered-Doc-Prof-Descriptor,
+ Preenciphered-Bodypart-Descriptor, Postenciphered-Bodypart-Descriptor
+ FROM Protected-Part-Descriptors -- see 7.15
+
+ Link-Class-Descriptor, Link-Descriptor, Enciphered-Link-Descriptor
+ FROM Link-Descriptors {2 8 1 14 3};
+
+-- See ITU-T Rec. T.424 | ISO/IEC 8613-14
+Interchange-Data-Element ::= CHOICE {
+ document-profile [0] IMPLICIT Document-Profile-Descriptor,
+ layout-object-class [1] IMPLICIT Layout-Class-Descriptor,
+ layout-object [2] IMPLICIT Layout-Object-Descriptor,
+ content-portion [3] IMPLICIT Text-Unit,
+ logical-object-class [5] IMPLICIT Logical-Class-Descriptor,
+ logical-object [6] IMPLICIT Logical-Object-Descriptor,
+ presentation-style
+ [7] IMPLICIT Presentation-Style-Descriptor,
+ layout-style [8] IMPLICIT Layout-Style-Descriptor,
+ sealed-doc-prof-descriptor [9] IMPLICIT Sealed-Doc-Prof-Descriptor,
+ enciphered-doc-prof-descriptor
+ [10] IMPLICIT Enciphered-Doc-Prof-Descriptor,
+ preenciphered-bodypart-descriptor
+ [11] IMPLICIT Preenciphered-Bodypart-Descriptor,
+ postenciphered-bodypart-descriptor
+ [12] IMPLICIT Postenciphered-Bodypart-Descriptor,
+ link-class [13] IMPLICIT Link-Class-Descriptor,
+ link [14] IMPLICIT Link-Descriptor,
+ enciphered-link-descriptor [15] IMPLICIT Enciphered-Link-Descriptor
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Layout-Descriptors.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Layout-Descriptors.asn1
new file mode 100644
index 0000000000..92c887bb06
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Layout-Descriptors.asn1
@@ -0,0 +1,268 @@
+-- Module Layout-Descriptors (T.415:03/1993)
+
+Layout-Descriptors {2 8 1 5 8} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Layout-Object-Descriptor, Layout-Class-Descriptor, Layout-Object-Type,
+ Transparency, Comment-String, Binding-Pair, One-Of-Four-Angles,
+ Measure-Pair, Dimension-Pair, Medium-Type, Colour, Border,
+ Content-Background-Colour, Content-Foreground-Colour, Enciphered,
+ Sealed;
+
+IMPORTS
+ Object-or-Class-Identifier, Style-Identifier, Protected-Part-Identifier,
+ Category-Name, Resource-Name, Binding-Name, Construction-Expression,
+ Object-Id-Expression, Numeric-Expression, String-Expression
+ FROM Identifiers-and-Expressions -- see 7.8
+
+ Presentation-Attributes
+ FROM Style-Descriptors -- see 7.11
+
+ Default-Value-Lists-Layout
+ FROM Default-Value-Lists -- see 7.12
+
+ Colour-Expression, Colour-Table
+ FROM Colour-Attributes -- see 7.14
+
+ Presentation-Time
+ FROM Temporal-Relationships {2 8 1 14 0};
+
+-- See ITU-T Rec. T.424 | ISO/IEC 8613-14
+Position-Spec ::= SET {
+ offset
+ [0] IMPLICIT SET {leading [0] IMPLICIT INTEGER OPTIONAL,
+ trailing [1] IMPLICIT INTEGER OPTIONAL,
+ left-hand [2] IMPLICIT INTEGER OPTIONAL,
+ right-hand [3] IMPLICIT INTEGER OPTIONAL} OPTIONAL,
+ separation
+ [1] IMPLICIT SET {leading [0] IMPLICIT INTEGER OPTIONAL,
+ trailing [1] IMPLICIT INTEGER OPTIONAL,
+ centre [2] IMPLICIT INTEGER OPTIONAL} OPTIONAL,
+ alignment
+ [2] IMPLICIT INTEGER {right-hand(0), centred(1), left-hand(2)} OPTIONAL,
+ fill-order [3] IMPLICIT INTEGER {normal(0), reverse(1)} OPTIONAL
+}
+
+Dimension-Pair ::= SEQUENCE {
+ horizontal
+ CHOICE {fixed [0] IMPLICIT INTEGER,
+ not-present [4] IMPLICIT NULL},
+ vertical
+ CHOICE {fixed [0] IMPLICIT INTEGER,
+ variable [1] IMPLICIT INTEGER,
+ not-present [4] IMPLICIT NULL}
+}
+
+-- the choice 'not-present' indicates that the parameter is not present
+Dimension-Spec ::= SEQUENCE {horizontal Dimension,
+ vertical Dimension
+}
+
+Dimension ::= CHOICE {
+ fixed [0] IMPLICIT INTEGER,
+ rule-a
+ [1] IMPLICIT SET {minimum [0] IMPLICIT INTEGER OPTIONAL,
+ maximum [1] IMPLICIT INTEGER OPTIONAL},
+ rule-b
+ [2] IMPLICIT SET {minimum [0] IMPLICIT INTEGER OPTIONAL,
+ maximum [1] IMPLICIT INTEGER OPTIONAL},
+ maximum-size [3] IMPLICIT NULL,
+ not-present [4] IMPLICIT NULL
+}
+
+-- the choice 'not-present' indicates that the parameter is not present
+Transparency ::= INTEGER {transparent(0), opaque(1)}
+
+Comment-String ::= OCTET STRING
+
+-- string of characters from the sets designated by
+-- the document profile attribute "comments character sets",
+-- plus code extension control functions,
+-- space, carriage return and line feed
+Binding-Pair ::= SET {
+ binding-identifier [0] IMPLICIT Binding-Name,
+ binding-value
+ CHOICE {a [1] Object-Id-Expression,
+ b [2] Numeric-Expression,
+ c [3] String-Expression,
+ d [4] IMPLICIT Object-or-Class-Identifier,
+ e [5] IMPLICIT INTEGER,
+ f [6] IMPLICIT OCTET STRING}
+}
+
+One-Of-Four-Angles ::= INTEGER {d0(0), d90(1), d180(2), d270(3)}
+
+Measure-Pair ::= SEQUENCE {
+ horizontal
+ CHOICE {fixed [0] IMPLICIT INTEGER,
+ not-present [4] IMPLICIT NULL},
+ vertical
+ CHOICE {fixed [0] IMPLICIT INTEGER,
+ not-present [4] IMPLICIT NULL}
+}
+
+-- the choice 'not-present' indicates that the parameter is not present
+Medium-Type ::= SEQUENCE {
+ nominal-page-size Measure-Pair OPTIONAL,
+ side-of-sheet INTEGER {unspecified(0), recto(1), verso(2)} OPTIONAL,
+ colour-of-medium [3] Colour-Of-Medium OPTIONAL
+}
+
+Colour ::= INTEGER {colour-of-media(0), coloured(1)}
+
+Border ::= SET {
+ left-hand-edge [0] IMPLICIT Border-Edge OPTIONAL,
+ right-hand-edge [1] IMPLICIT Border-Edge OPTIONAL,
+ trailing-edge [2] IMPLICIT Border-Edge OPTIONAL,
+ leading-edge [3] IMPLICIT Border-Edge OPTIONAL
+}
+
+Border-Edge ::= SET {
+ line-width [0] IMPLICIT INTEGER OPTIONAL,
+ line-type
+ [1] IMPLICIT INTEGER {invisible(0), solid(1), dashed(2), dot(3),
+ dash-dot(4), dash-dot-dot(5)} OPTIONAL,
+ freespace-width [2] IMPLICIT INTEGER OPTIONAL,
+ border-line-colour [3] Border-Line-Colour OPTIONAL
+}
+
+-- a 'null' border edge is represented by an empty set
+Colour-Of-Medium ::= CHOICE {
+ unspecified-colour [3] IMPLICIT NULL,
+ specified-colour Colour-Expression
+}
+
+Border-Line-Colour ::= CHOICE {
+ implementation-defined [3] IMPLICIT NULL,
+ colour-expression Colour-Expression
+}
+
+Content-Background-Colour ::= CHOICE {
+ content-background-transparency [2] IMPLICIT NULL,
+ colour-expression Colour-Expression
+}
+
+Content-Foreground-Colour ::= CHOICE {
+ implementation-defined [3] IMPLICIT NULL,
+ content-foreground-transparency [2] IMPLICIT NULL,
+ colour-expression Colour-Expression
+}
+
+Enciphered ::= SEQUENCE {
+ enciphered-subordinates
+ CHOICE {none-all [0] IMPLICIT INTEGER {none(0), all(1)},
+ partial [1] IMPLICIT SEQUENCE OF NumericString},
+ protected-part-id [2] IMPLICIT Protected-Part-Identifier OPTIONAL
+}
+
+Sealed ::= SEQUENCE {
+ sealed-status [0] IMPLICIT INTEGER {no(0), yes(1)},
+ seal-ids [1] IMPLICIT SET OF INTEGER OPTIONAL
+}
+
+Layout-Object-Descriptor ::= SEQUENCE {
+ object-type Layout-Object-Type OPTIONAL,
+ descriptor-body Layout-Object-Descriptor-Body OPTIONAL
+}
+
+Layout-Object-Type ::= INTEGER {
+ document-layout-root(0), page-set(1), page(2), frame(3), block(4)}
+
+Layout-Object-Descriptor-Body ::= SET {
+ object-identifier Object-or-Class-Identifier OPTIONAL,
+ subordinates [0] IMPLICIT SEQUENCE OF NumericString OPTIONAL,
+ content-portions [1] IMPLICIT SEQUENCE OF NumericString OPTIONAL,
+ object-class
+ [2] IMPLICIT Object-or-Class-Identifier OPTIONAL,
+ position [3] IMPLICIT Measure-Pair OPTIONAL,
+ dimensions [4] IMPLICIT Dimension-Pair OPTIONAL,
+ transparency [5] IMPLICIT Transparency OPTIONAL,
+ presentation-attributes [6] IMPLICIT Presentation-Attributes OPTIONAL,
+ default-value-lists
+ [7] IMPLICIT Default-Value-Lists-Layout OPTIONAL,
+ user-readable-comments [8] IMPLICIT Comment-String OPTIONAL,
+ bindings [9] IMPLICIT SET OF Binding-Pair OPTIONAL,
+ layout-path [11] IMPLICIT One-Of-Four-Angles OPTIONAL,
+ imaging-order
+ [12] IMPLICIT SEQUENCE OF NumericString OPTIONAL,
+ layout-stream-categories [36] IMPLICIT SET OF Category-Name OPTIONAL,
+ layout-stream-sub-categories [37] IMPLICIT SET OF Category-Name OPTIONAL,
+ permitted-categories [13] IMPLICIT SET OF Category-Name OPTIONAL,
+ -- a 'null' value is represented by an empty set
+ user-visible-name [14] IMPLICIT Comment-String OPTIONAL,
+ page-position [15] IMPLICIT Measure-Pair OPTIONAL,
+ medium-type [16] IMPLICIT Medium-Type OPTIONAL,
+ presentation-style [17] IMPLICIT Style-Identifier OPTIONAL,
+ balance
+ [21] IMPLICIT SEQUENCE OF Object-or-Class-Identifier OPTIONAL,
+ -- a 'null' value is represented by an empty sequence
+ colour [22] IMPLICIT Colour OPTIONAL,
+ colour-of-layout-object [29] Colour-Expression OPTIONAL,
+ object-colour-table [30] IMPLICIT Colour-Table OPTIONAL,
+ content-background-colour [31] Content-Background-Colour OPTIONAL,
+ content-foreground-colour [32] Content-Foreground-Colour OPTIONAL,
+ content-colour-table [33] IMPLICIT Colour-Table OPTIONAL,
+ border [23] IMPLICIT Border OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL,
+ primary
+ [27] IMPLICIT Object-or-Class-Identifier OPTIONAL,
+ alternative
+ [28] IMPLICIT Object-or-Class-Identifier OPTIONAL,
+ enciphered [34] IMPLICIT Enciphered OPTIONAL,
+ sealed [35] IMPLICIT Sealed OPTIONAL,
+ presentation-time [52] IMPLICIT Presentation-Time OPTIONAL
+}
+
+Layout-Class-Descriptor ::= SEQUENCE {
+ object-type Layout-Object-Type,
+ descriptor-body Layout-Class-Descriptor-Body
+}
+
+Layout-Class-Descriptor-Body ::= SET {
+ object-class-identifier Object-or-Class-Identifier,
+ generator-for-subordinates [0] Construction-Expression OPTIONAL,
+ content-portions [1] IMPLICIT SEQUENCE OF NumericString OPTIONAL,
+ position
+ CHOICE {fixed-position [3] IMPLICIT Measure-Pair,
+ variable-position [26] IMPLICIT Position-Spec} OPTIONAL,
+ dimensions [4] IMPLICIT Dimension-Spec OPTIONAL,
+ transparency [5] IMPLICIT Transparency OPTIONAL,
+ presentation-attributes [6] IMPLICIT Presentation-Attributes OPTIONAL,
+ default-value-lists
+ [7] IMPLICIT Default-Value-Lists-Layout OPTIONAL,
+ user-readable-comments [8] IMPLICIT Comment-String OPTIONAL,
+ bindings [9] IMPLICIT SET OF Binding-Pair OPTIONAL,
+ content-generator [10] IMPLICIT String-Expression OPTIONAL,
+ layout-path [11] IMPLICIT One-Of-Four-Angles OPTIONAL,
+ layout-stream-categories [36] IMPLICIT SET OF Category-Name OPTIONAL,
+ layout-stream-sub-categories [37] IMPLICIT SET OF Category-Name OPTIONAL,
+ permitted-categories [13] IMPLICIT SET OF Category-Name OPTIONAL,
+ -- a 'null' value is represented by an empty set
+ user-visible-name [14] IMPLICIT Comment-String OPTIONAL,
+ page-position [15] IMPLICIT Measure-Pair OPTIONAL,
+ medium-type [16] IMPLICIT Medium-Type OPTIONAL,
+ presentation-style [17] IMPLICIT Style-Identifier OPTIONAL,
+ logical-source
+ [18] IMPLICIT Object-or-Class-Identifier OPTIONAL,
+ balance
+ [21] IMPLICIT SEQUENCE OF Object-or-Class-Identifier OPTIONAL,
+ -- a 'null' value is represented by an empty sequence
+ colour [22] IMPLICIT Colour OPTIONAL,
+ colour-of-layout-object [29] Colour-Expression OPTIONAL,
+ object-colour-table [30] IMPLICIT Colour-Table OPTIONAL,
+ content-background-colour [31] Content-Background-Colour OPTIONAL,
+ content-foreground-colour [32] Content-Foreground-Colour OPTIONAL,
+ content-colour-table [33] IMPLICIT Colour-Table OPTIONAL,
+ border [23] IMPLICIT Border OPTIONAL,
+ resource [24] IMPLICIT Resource-Name OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL,
+ enciphered [34] IMPLICIT Enciphered OPTIONAL,
+ sealed [35] IMPLICIT Sealed OPTIONAL,
+ presentation-time [52] IMPLICIT Presentation-Time OPTIONAL
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Link-Descriptors.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Link-Descriptors.asn1
new file mode 100644
index 0000000000..64fc4436e4
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Link-Descriptors.asn1
@@ -0,0 +1,80 @@
+-- Module Link-Descriptors (T.424:07/1996)
+
+Link-Descriptors {2 8 1 14 3} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Link-Class-Descriptor, Link-Descriptor, Link-or-Link-Class-Identifier,
+ Enciphered-Link-Descriptor;
+
+IMPORTS
+ Reference-Name
+ FROM External-References {2 8 1 12 1}
+ -- see ITU-T Rec. T.422 | ISO/IEC 8613-12
+ Location-Expression
+ FROM Location-Expressions {2 8 1 12 0}
+ -- see ITU-T Rec. T.422 | ISO/IEC 8613-12
+ Style-Identifier, Protected-Part-Identifier
+ FROM Identifiers-and-Expressions {2 8 1 5 7}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+ Comment-String, Sealed
+ FROM Layout-Descriptors {2 8 1 5 8}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+ Temporal-Relations, Presentation-Time
+ FROM Temporal-Relationships;
+
+-- see 7.5
+Link-or-Link-Class-Identifier ::= [APPLICATION 9] IMPLICIT PrintableString
+
+-- only digits and space are used in the present version of this Recommendation | International Standard;
+-- other characters are reserved for extensions
+Link-Class-Descriptor ::= SET {
+ link-class-identifier Link-or-Link-Class-Identifier,
+ link-roles [1] SEQUENCE OF Link-Role OPTIONAL,
+ user-readable-comments [2] IMPLICIT Comment-String OPTIONAL,
+ user-visible-name [3] IMPLICIT Comment-String OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL,
+ sealed [35] IMPLICIT Sealed OPTIONAL,
+ temporal-relations [38] IMPLICIT Temporal-Relations OPTIONAL,
+ presentation-time [39] IMPLICIT Presentation-Time OPTIONAL
+}
+
+Link-Descriptor ::= SET {
+ link-identifier Link-or-Link-Class-Identifier,
+ link-class [0] IMPLICIT Link-or-Link-Class-Identifier OPTIONAL,
+ link-roles [1] SEQUENCE OF Link-Role OPTIONAL,
+ user-readable-comments [2] IMPLICIT Comment-String OPTIONAL,
+ user-visible-name [3] IMPLICIT Comment-String OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL,
+ sealed [35] IMPLICIT Sealed OPTIONAL,
+ temporal-relations [38] IMPLICIT Temporal-Relations OPTIONAL,
+ presentation-time [39] IMPLICIT Presentation-Time OPTIONAL
+}
+
+Link-Role ::= SET {
+ link-ends SET OF Link-End,
+ user-readable-comments [2] IMPLICIT Comment-String OPTIONAL,
+ user-visible-name [3] IMPLICIT Comment-String OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL
+}
+
+Link-End ::= SET {
+ reference
+ SET {reference-name [0] Reference-Name OPTIONAL,
+ reference-qualifier [1] Location-Expression OPTIONAL},
+ user-readable-comments [2] IMPLICIT Comment-String OPTIONAL,
+ user-visible-name [3] IMPLICIT Comment-String OPTIONAL,
+ presentation-style [17] IMPLICIT Style-Identifier OPTIONAL,
+ layout-style [19] IMPLICIT Style-Identifier OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL
+}
+
+Enciphered-Link-Descriptor ::= SEQUENCE {
+ protected-part-identifier Protected-Part-Identifier,
+ enciphered-information OCTET STRING
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Location-Expressions.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Location-Expressions.asn1
new file mode 100644
index 0000000000..5de6491621
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Location-Expressions.asn1
@@ -0,0 +1,338 @@
+-- Module Location-Expressions (T.422:08/1995)
+
+Location-Expressions {2 8 1 12 0} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+EXPORTS Location-Expression, Basic-Location-Expression, Constituent-Locator;
+
+IMPORTS
+ Object-or-Class-Identifier, Content-Portion-Identifier, Style-Identifier
+ FROM Identifiers-and-Expressions {2 8 1 5 7}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+ Layout-Class-Descriptor, Layout-Object-Descriptor
+ FROM Layout-Descriptors {2 8 1 5 8}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+ Logical-Class-Descriptor, Logical-Object-Descriptor
+ FROM Logical-Descriptors {2 8 1 5 9}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+ Presentation-Style-Descriptor, Layout-Style-Descriptor
+ FROM Style-Descriptors {2 8 1 5 10}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+ Text-Unit
+ FROM Text-Units {2 8 1 5 12}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+ Subprofile-Descriptor, Subprofile-Identifier
+ FROM Subprofiles {2 8 1 12 2}
+ -- see 9.3
+ Link-Class-Descriptor, Link-Descriptor, Link-or-Link-Class-Identifier
+ FROM Link-Descriptors {2 8 1 14 3};
+
+-- see ITU-T Rec. T.424 | ISO/IEC 8613-14
+-- Location expression
+Location-Expression ::= CHOICE {
+ basic [0] Basic-Location-Expression,
+ composite [1] Composite-Location-Expression
+}
+
+Composite-Location-Expression ::= CHOICE {
+ complement [0] Location-Expression,
+ intersection [1] SEQUENCE OF Location-Expression,
+ union [2] SEQUENCE OF Location-Expression
+}
+
+Basic-Location-Expression ::= CHOICE {
+ region [0] Region-Locator,
+ subtree [1] Subtree-Locator,
+ constituent [2] Constituent-Locator
+}
+
+Region-Locator ::= SEQUENCE {
+ start [0] Start-End-Object-Locator,
+ end [1] Start-End-Object-Locator
+}
+
+Start-End-Object-Locator ::= SEQUENCE {
+ object [0] Object-Locator,
+ not-included [1] BOOLEAN DEFAULT TRUE
+}
+
+Subtree-Locator ::= Object-Locator
+
+Constituent-Locator ::= CHOICE {
+ documentProfile [0] NULL,
+ subprofile [1] Subprofile-Locator,
+ component [2] Component-Locator,
+ contentPortion [3] Content-Portion-Locator,
+ style [4] Style-Locator,
+ link-or-link-class [5] Link-or-Link-Class-Locator,
+ constituent-of-type [6] Constituent-Type
+}
+
+Constituent-Type ::= ENUMERATED {
+ layout-object-class(1), layout-object(2), content-portion(3),
+ logical-object-class(5), logical-object(6), presentation-style(7),
+ layout-style(8), sealed-doc-prof-descriptor(9),
+ enciphered-doc-prof-descriptor(10), preenciphered-bodypart-descriptor(11),
+ postenciphered-bodypart-descriptor(12), link-class(13), link(14),
+ enciphered-link-descriptor(15), subprofile(16)}
+
+-- Subprofile
+Subprofile-Locator ::= CHOICE {
+ subprofile [0] Subprofile-Identifier,
+ subprofile-of [1] Subprofile-of-argument,
+ subprofile-with [2] Subprofile-with-argument
+}
+
+Subprofile-of-argument ::= Constituent-Locator
+
+Subprofile-with-argument ::=
+ AttributeValue-Subprofile-Specification -- The "attribute" and "value"
+
+-- arguments are grouped together
+-- Component locator
+Component-Locator ::= CHOICE {
+ objectClass [0] Object-Class-Locator,
+ object [1] Object-Locator
+}
+
+Object-Class-Locator ::= CHOICE {
+ objectClass [0] Object-or-Class-Identifier,
+ object-class-of [1] Object-Class-of-argument,
+ object-class-with [2] Object-Class-with-argument
+}
+
+Object-Class-of-argument ::= Object-Locator
+
+Object-Class-with-argument ::= SEQUENCE {
+ attributeValueObject [0] AttributeValue-Class-Specification, -- The "attribute" and "value"
+
+ -- arguments are grouped together
+ defaulting [1] BOOLEAN DEFAULT FALSE
+}
+
+-- Object locator
+Object-Locator ::= CHOICE {
+ object [0] Object-or-Class-Identifier,
+ subord [1] Subord-argument,
+ object-with [2] Object-with-argument
+}
+
+Subord-argument ::= SEQUENCE {
+ object [0] Object-Locator,
+ counters [1] CountersType OPTIONAL
+}
+
+Object-with-argument ::= SEQUENCE {
+ attributeValueObject [0] AttributeValue-Object-Specification, -- The "attribute" and "value"
+
+ -- arguments are grouped together
+ object [1] Object-Locator OPTIONAL,
+ counters [2] CountersType OPTIONAL,
+ not-defaulting [3] BOOLEAN DEFAULT FALSE
+}
+
+-- Links
+Link-or-Link-Class-Locator ::= CHOICE {
+ linkClass [0] Link-Class-Locator,
+ link [1] Link-Locator
+}
+
+Link-Class-Locator ::= CHOICE {
+ link [0] Link-or-Link-Class-Identifier,
+ link-class-of [1] Link-Class-of-argument,
+ link-class-with [2] Link-Class-with-arguments
+}
+
+Link-Class-of-argument ::= Link-Locator
+
+Link-Class-with-arguments ::=
+ AttributeValue-Link-Class-Specification -- The "attribute" and "value"
+
+-- arguments are grouped together
+Link-Locator ::= CHOICE {
+ link [0] Link-or-Link-Class-Identifier,
+ link-with [1] Link-with-arguments
+}
+
+Link-with-arguments ::= SEQUENCE {
+ attributeValueLink [0] AttributeValue-Link-Specification, -- The "attribute" and "value"
+
+ -- arguments are grouped together
+ not-defaulting [1] BOOLEAN DEFAULT FALSE
+}
+
+-- Content portion locator
+Content-Portion-Locator ::= CHOICE {
+ contentPortion [0] Content-Portion-Identifier,
+ assoc [1] Assoc-argument,
+ content-with [2] Content-with-argument
+}
+
+Assoc-argument ::= SEQUENCE {
+ component [0] Component-Locator,
+ counters [1] CountersType OPTIONAL
+}
+
+Content-with-argument ::= SEQUENCE {
+ attributeValueContent [0] AttributeValue-Content-Specification, -- The "attribute" and "value"
+
+ -- arguments are grouped together
+ component [1] Component-Locator OPTIONAL,
+ counters [2] CountersType OPTIONAL,
+ not-defaulting [3] BOOLEAN DEFAULT FALSE
+}
+
+-- Styles
+Style-Locator ::= CHOICE {
+ style [0] Style-Identifier,
+ layout-style-of [1] Layout-Style-of-argument,
+ presentation-style-of [2] Presentation-Style-of-argument,
+ layout-style-with [3] Layout-Style-with-argument,
+ presentation-style-with [4] Presentation-Style-with-argument
+}
+
+Layout-Style-of-argument ::= Component-Locator
+
+Presentation-Style-of-argument ::= Component-Locator
+
+Layout-Style-with-argument ::= SEQUENCE {
+ attributeValueLayoutStyle [0] AttributeValue-LayoutStyle-Specification, -- The "attribute" and
+
+ -- "value" arguments are grouped together
+ not-defaulting [1] BOOLEAN DEFAULT FALSE
+}
+
+Presentation-Style-with-argument ::= SEQUENCE {
+ attributeValuePresentationStyle
+ [0] AttributeValue-PresentationStyle-Specification,
+ -- The "attribute" and
+ -- "value" arguments are grouped together
+ not-defaulting [1] BOOLEAN DEFAULT FALSE
+}
+
+-- Counters
+CountersType ::= SEQUENCE {
+ start [0] INTEGER OPTIONAL,
+ end [1] INTEGER OPTIONAL
+}
+
+-- Attribute-Value specifications
+-- Classes
+AttributeValue-Class-Specification ::= CHOICE {
+ value [0] Simple-AttributeValue-Class-Specification,
+ range
+ [1] SEQUENCE {start
+ [0] Simple-AttributeValue-Class-Specification OPTIONAL,
+ end
+ [1] Simple-AttributeValue-Class-Specification OPTIONAL
+ }
+}
+
+Simple-AttributeValue-Class-Specification ::= CHOICE {
+ layout [0] Layout-Class-Descriptor,
+ logical [1] Logical-Class-Descriptor
+}
+
+-- Objects
+AttributeValue-Object-Specification ::= CHOICE {
+ value [0] Simple-AttributeValue-Object-Specification,
+ range
+ [1] SEQUENCE {start
+ [0] Simple-AttributeValue-Object-Specification OPTIONAL,
+ end
+ [1] Simple-AttributeValue-Object-Specification OPTIONAL
+ }
+}
+
+Simple-AttributeValue-Object-Specification ::= CHOICE {
+ layout [0] Layout-Object-Descriptor,
+ logical [1] Logical-Object-Descriptor
+}
+
+-- Link classes
+AttributeValue-Link-Class-Specification ::= CHOICE {
+ value [0] Simple-AttributeValue-Link-Class-Specification,
+ range
+ [1] SEQUENCE {start
+ [0] Simple-AttributeValue-Link-Class-Specification
+ OPTIONAL,
+ end
+ [1] Simple-AttributeValue-Link-Class-Specification
+ OPTIONAL}
+}
+
+Simple-AttributeValue-Link-Class-Specification ::= Link-Class-Descriptor
+
+-- Links
+AttributeValue-Link-Specification ::= CHOICE {
+ value [0] Simple-AttributeValue-Link-Specification,
+ range
+ [1] SEQUENCE {start
+ [0] Simple-AttributeValue-Link-Specification OPTIONAL,
+ end
+ [1] Simple-AttributeValue-Link-Specification OPTIONAL
+ }
+}
+
+Simple-AttributeValue-Link-Specification ::= Link-Descriptor
+
+-- Contents
+AttributeValue-Content-Specification ::= CHOICE {
+ value [0] Simple-AttributeValue-Content-Specification,
+ range
+ [1] SEQUENCE {start
+ [0] Simple-AttributeValue-Content-Specification OPTIONAL,
+ end
+ [1] Simple-AttributeValue-Content-Specification OPTIONAL
+ }
+}
+
+Simple-AttributeValue-Content-Specification ::= Text-Unit
+
+-- Layout Styles
+AttributeValue-LayoutStyle-Specification ::= CHOICE {
+ value [0] Simple-AttributeValue-LayoutStyle-Specification,
+ range
+ [1] SEQUENCE {start
+ [0] Simple-AttributeValue-LayoutStyle-Specification
+ OPTIONAL,
+ end
+ [1] Simple-AttributeValue-LayoutStyle-Specification
+ OPTIONAL}
+}
+
+Simple-AttributeValue-LayoutStyle-Specification ::= Layout-Style-Descriptor
+
+-- Presentation Styles
+AttributeValue-PresentationStyle-Specification ::= CHOICE {
+ value [0] Simple-AttributeValue-PresentationStyle-Specification,
+ range
+ [1] SEQUENCE {start
+ [0] Simple-AttributeValue-PresentationStyle-Specification
+ OPTIONAL,
+ end
+ [1] Simple-AttributeValue-PresentationStyle-Specification
+ OPTIONAL}
+}
+
+Simple-AttributeValue-PresentationStyle-Specification ::=
+ Presentation-Style-Descriptor
+
+-- Subprofiles
+AttributeValue-Subprofile-Specification ::= CHOICE {
+ value [0] Simple-AttributeValue-Subprofile-Specification,
+ range
+ [1] SEQUENCE {start
+ [0] Simple-AttributeValue-Subprofile-Specification
+ OPTIONAL,
+ end
+ [1] Simple-AttributeValue-Subprofile-Specification
+ OPTIONAL}
+}
+
+Simple-AttributeValue-Subprofile-Specification ::= Subprofile-Descriptor
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Logical-Descriptors.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Logical-Descriptors.asn1
new file mode 100644
index 0000000000..fab36bf12a
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Logical-Descriptors.asn1
@@ -0,0 +1,95 @@
+-- Module Logical-Descriptors (T.415:03/1993)
+
+Logical-Descriptors {2 8 1 5 9} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Logical-Object-Descriptor, Logical-Class-Descriptor, Logical-Object-Type,
+ Protection;
+
+IMPORTS
+ Object-or-Class-Identifier, Style-Identifier, Resource-Name,
+ Construction-Expression, String-Expression
+ FROM Identifiers-and-Expressions -- see 7.8
+
+ Comment-String, Binding-Pair, Enciphered, Sealed
+ FROM Layout-Descriptors -- see 7.9
+
+ Presentation-Attributes
+ FROM Style-Descriptors -- see 7.11
+
+ Default-Value-Lists-Logical
+ FROM Default-Value-Lists -- see 7.12
+
+ Temporal-Relations
+ FROM Temporal-Relationships {2 8 1 14 0};
+
+-- See ITU-T Rec. T.424 | ISO/IEC 8613-14
+Logical-Object-Descriptor ::= SEQUENCE {
+ object-type Logical-Object-Type OPTIONAL,
+ descriptor-body Logical-Object-Descriptor-Body OPTIONAL
+}
+
+Logical-Object-Type ::= INTEGER {
+ document-logical-root(0), composite-logical-object(1),
+ basic-logical-object(2)}
+
+Logical-Object-Descriptor-Body ::= SET {
+ object-identifier Object-or-Class-Identifier OPTIONAL,
+ subordinates [0] IMPLICIT SEQUENCE OF NumericString OPTIONAL,
+ content-portions [1] IMPLICIT SEQUENCE OF NumericString OPTIONAL,
+ object-class [2] IMPLICIT Object-or-Class-Identifier OPTIONAL,
+ presentation-attributes [6] IMPLICIT Presentation-Attributes OPTIONAL,
+ -- only for use for the attribute content-architecture-class;
+ -- the content architecture specific attributes can only be referenced by
+ -- use of presentation style
+ default-value-lists [7] IMPLICIT Default-Value-Lists-Logical OPTIONAL,
+ user-readable-comments [8] IMPLICIT Comment-String OPTIONAL,
+ bindings [9] IMPLICIT SET OF Binding-Pair OPTIONAL,
+ content-generator [10] IMPLICIT String-Expression OPTIONAL,
+ user-visible-name [14] IMPLICIT Comment-String OPTIONAL,
+ presentation-style [17] IMPLICIT Style-Identifier OPTIONAL,
+ layout-style [19] IMPLICIT Style-Identifier OPTIONAL,
+ protection [20] IMPLICIT Protection OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL,
+ primary [27] IMPLICIT Object-or-Class-Identifier OPTIONAL,
+ alternative [28] IMPLICIT Object-or-Class-Identifier OPTIONAL,
+ enciphered [34] IMPLICIT Enciphered OPTIONAL,
+ sealed [35] IMPLICIT Sealed OPTIONAL,
+ temporal-relations [36] IMPLICIT Temporal-Relations OPTIONAL
+}
+
+Logical-Class-Descriptor ::= SEQUENCE {
+ object-type Logical-Object-Type,
+ descriptor-body Logical-Class-Descriptor-Body
+}
+
+Logical-Class-Descriptor-Body ::= SET {
+ object-class-identifier Object-or-Class-Identifier,
+ generator-for-subordinates [0] Construction-Expression OPTIONAL,
+ content-portions [1] IMPLICIT SEQUENCE OF NumericString OPTIONAL,
+ presentation-attributes [6] IMPLICIT Presentation-Attributes OPTIONAL,
+ -- only for use for the attribute content-architecture-class;
+ -- the content architecture specific attributes can only be referenced by
+ -- use of presentation style
+ default-value-lists [7] IMPLICIT Default-Value-Lists-Logical OPTIONAL,
+ user-readable-comments [8] IMPLICIT Comment-String OPTIONAL,
+ bindings [9] IMPLICIT SET OF Binding-Pair OPTIONAL,
+ content-generator [10] IMPLICIT String-Expression OPTIONAL,
+ user-visible-name [14] IMPLICIT Comment-String OPTIONAL,
+ presentation-style [17] IMPLICIT Style-Identifier OPTIONAL,
+ layout-style [19] IMPLICIT Style-Identifier OPTIONAL,
+ protection [20] IMPLICIT Protection OPTIONAL,
+ resource [24] IMPLICIT Resource-Name OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL,
+ enciphered [34] IMPLICIT Enciphered OPTIONAL,
+ sealed [35] IMPLICIT Sealed OPTIONAL,
+ temporal-relations [36] IMPLICIT Temporal-Relations OPTIONAL
+}
+
+Protection ::= INTEGER {unprotected(0), protected(1)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MHSObjectIdentifiers.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MHSObjectIdentifiers.asn1
new file mode 100644
index 0000000000..187c3c8ad4
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MHSObjectIdentifiers.asn1
@@ -0,0 +1,187 @@
+-- Module MHSObjectIdentifiers (X.402:06/1999)
+MHSObjectIdentifiers {joint-iso-itu-t mhs(6) arch(5) modules(0)
+ object-identifiers(0) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything.
+IMPORTS -- nothing -- ;
+
+ID ::= OBJECT IDENTIFIER
+
+-- MHS Aspects
+id-mhs-protocols ID ::= {joint-iso-itu-t mhs(6) protocols(0)}
+
+-- MHS Application Contexts and Protocols
+-- See ITU-T Rec. X.419 | ISO/IEC 10021-6.
+id-ipms ID ::=
+ {joint-iso-itu-t mhs(6) ipms(1)}
+
+-- Interpersonal Messaging
+-- See ITU-T Rec. X.420 | ISO/IEC 10021-7.
+-- Value {joint-iso-itu-t mhs(6) 2} is no longer defined
+id-mts ID ::=
+ {joint-iso-itu-t mhs(6) mts(3)}
+
+-- Message Transfer System
+-- See ITU-T Rec. X.411 | ISO/IEC 10021-4.
+id-ms ID ::=
+ {joint-iso-itu-t mhs(6) ms(4)}
+
+-- Message Store
+-- See ITU-T Rec. X.413 | ISO/IEC 10021-5.
+id-arch ID ::=
+ {joint-iso-itu-t mhs(6) arch(5)}
+
+-- Overall Architecture
+-- See this Specification.
+id-group ID ::=
+ {joint-iso-itu-t mhs(6) group(6)}
+
+-- Reserved.
+id-edims ID ::= {joint-iso-itu-t mhs(6) edims(7)}
+
+-- EDI Messaging
+-- See ITU-T Rec. X.435 | ISO/IEC 10021-9.
+id-management ID ::=
+ {joint-iso-itu-t mhs(6) management(9)}
+
+-- MHS Management
+-- See ITU-T Recs. X.460 - X.467 | ISO/IEC 11588.
+id-routing ID ::=
+ {joint-iso-itu-t mhs(6) routing(10)}
+
+-- MHS Routing
+-- See ITU-T Rec. X.412 | ISO/IEC 10021-10.
+-- Categories
+id-mod ID ::=
+ {id-arch 0} -- modules; not definitive
+
+id-oc ID ::= {id-arch 1} -- object classes
+
+id-at ID ::= {id-arch 2} -- attribute types
+
+-- Value {id-arch 3} is no longer defined
+id-mr ID ::=
+ {id-arch 4} -- matching rules
+
+id-con ID ::= {id-arch 5} -- contexts
+
+id-san ID ::= {id-arch 6} -- certificate subject alternative names
+
+-- Modules
+id-object-identifiers ID ::= {id-mod 0} -- not definitive
+
+id-directory-objects-and-attributes ID ::= {id-mod 1} -- not definitive
+
+-- Object classes
+id-oc-mhs-distribution-list ID ::= {id-oc 0}
+
+id-oc-mhs-message-store ID ::= {id-oc 1}
+
+id-oc-mhs-message-transfer-agent ID ::= {id-oc 2}
+
+id-oc-mhs-user ID ::= {id-oc 3}
+
+id-oc-mhs-user-agent ID ::= {id-oc 4}
+
+-- Attributes
+id-at-mhs-maximum-content-length ID ::= {id-at 0}
+
+id-at-mhs-deliverable-content-types ID ::= {id-at 1}
+
+id-at-mhs-exclusively-acceptable-eits ID ::= {id-at 2}
+
+id-at-mhs-dl-members ID ::= {id-at 3}
+
+id-at-mhs-dl-submit-permissions ID ::= {id-at 4}
+
+id-at-mhs-message-store-dn ID ::= {id-at 5}
+
+id-at-mhs-or-addresses ID ::= {id-at 6}
+
+-- Value {id-at 7} is no longer defined
+id-at-mhs-supported-automatic-actions ID ::=
+ {id-at 8}
+
+id-at-mhs-supported-content-types ID ::= {id-at 9}
+
+id-at-mhs-supported-attributes ID ::= {id-at 10}
+
+id-at-mhs-supported-matching-rules ID ::= {id-at 11}
+
+id-at-mhs-dl-archive-service ID ::= {id-at 12}
+
+id-at-mhs-dl-policy ID ::= {id-at 13}
+
+id-at-mhs-dl-related-lists ID ::= {id-at 14}
+
+id-at-mhs-dl-subscription-service ID ::= {id-at 15}
+
+id-at-mhs-or-addresses-with-capabilities ID ::= {id-at 16}
+
+id-at-mhs-acceptable-eits ID ::= {id-at 17}
+
+id-at-mhs-unacceptable-eits ID ::= {id-at 18}
+
+id-at-mhs-deliverable-classes ID ::= {id-at 19}
+
+id-at-encrypted-mhs-maximum-content-length ID ::= {id-at 0 2}
+
+id-at-encrypted-mhs-deliverable-content-types ID ::= {id-at 1 2}
+
+id-at-encrypted-mhs-exclusively-acceptable-eits ID ::= {id-at 2 2}
+
+id-at-encrypted-mhs-dl-members ID ::= {id-at 3 2}
+
+id-at-encrypted-mhs-dl-submit-permissions ID ::= {id-at 4 2}
+
+id-at-encrypted-mhs-message-store-dn ID ::= {id-at 5 2}
+
+id-at-encrypted-mhs-or-addresses ID ::= {id-at 6 2}
+
+id-at-encrypted-mhs-supported-automatic-actions ID ::= {id-at 8 2}
+
+id-at-encrypted-mhs-supported-content-types ID ::= {id-at 9 2}
+
+id-at-encrypted-mhs-supported-attributes ID ::= {id-at 10 2}
+
+id-at-encrypted-mhs-supported-matching-rules ID ::= {id-at 11 2}
+
+id-at-encrypted-mhs-dl-archive-service ID ::= {id-at 12 2}
+
+id-at-encrypted-mhs-dl-policy ID ::= {id-at 13 2}
+
+id-at-encrypted-mhs-dl-related-lists ID ::= {id-at 14 2}
+
+id-at-encrypted-mhs-dl-subscription-service ID ::= {id-at 15 2}
+
+id-at-encrypted-mhs-or-addresses-with-capabilities ID ::= {id-at 16 2}
+
+id-at-encrypted-mhs-acceptable-eits ID ::= {id-at 17 2}
+
+id-at-encrypted-mhs-unacceptable-eits ID ::= {id-at 18 2}
+
+id-at-encrypted-mhs-deliverable-classes ID ::= {id-at 19 2}
+
+-- Matching Rules
+id-mr-orname-exact-match ID ::= {id-mr 0}
+
+id-mr-address-capabilities-match ID ::= {id-mr 1}
+
+id-mr-capability-match ID ::= {id-mr 2}
+
+-- Contexts
+id-con-dl-administrator-annotation ID ::= {id-con 0}
+
+id-con-dl-nested-dl ID ::= {id-con 1}
+
+id-con-dl-reset-originator ID ::= {id-con 2}
+
+-- Certificate subject alternative names
+id-san-mta-name ID ::= {id-san 0}
+
+END -- of MHSObjectIdentifiers
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MHSProtocolObjectIdentifiers.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MHSProtocolObjectIdentifiers.asn1
new file mode 100644
index 0000000000..40f53b9458
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MHSProtocolObjectIdentifiers.asn1
@@ -0,0 +1,112 @@
+-- Module MHSProtocolObjectIdentifiers (X.419:06/1999)
+
+MHSProtocolObjectIdentifiers {joint-iso-itu-t mhs(6) protocols(0) modules(0)
+ object-identifiers(0) version-1994(0)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports Everything
+IMPORTS -- nothing -- ;
+
+ID ::= OBJECT IDENTIFIER
+
+-- MHS Protocols
+id-mhs-protocols ID ::=
+ {joint-iso-itu-t mhs(6) protocols(0)} -- not definitive
+
+-- Categories of Object Identifiers
+id-mod ID ::=
+ {id-mhs-protocols 0} -- modules
+
+id-ac ID ::= {id-mhs-protocols 1} -- application contexts
+
+id-as ID ::= {id-mhs-protocols 2} -- abstract syntaxes
+
+id-ase ID ::= {id-mhs-protocols 3} -- application service elements (obsolete)
+
+-- Modules
+id-mod-object-identifiers ID ::= {id-mod 0} -- not definitive
+
+id-mod-mts-access-protocol ID ::= {id-mod 1} -- not definitive
+
+id-mod-ms-access-protocol ID ::= {id-mod 2} -- not definitive
+
+id-mod-mts-transfer-protocol ID ::= {id-mod 3} -- not definitive
+
+-- Application Contexts
+-- MTS Access Protocol
+id-ac-mts-access-88 ID ::=
+ {id-ac 0}
+
+id-ac-mts-forced-access-88 ID ::= {id-ac 1}
+
+id-ac-mts-reliable-access-88 ID ::= {id-ac 2}
+
+id-ac-mts-forced-reliable-access-88 ID ::= {id-ac 3}
+
+id-ac-mts-access-94 ID ::= {id-ac 7}
+
+id-ac-mts-forced-access-94 ID ::= {id-ac 8}
+
+id-ac-mts-reliable-access-94 ID ::= {id-ac 9}
+
+id-ac-mts-forced-reliable-access-94 ID ::= {id-ac 10}
+
+-- MS Access Protocol
+id-ac-ms-access-88 ID ::= {id-ac 4}
+
+id-ac-ms-reliable-access-88 ID ::= {id-ac 5}
+
+id-ac-ms-access-94 ID ::= {id-ac 11}
+
+id-ac-ms-reliable-access-94 ID ::= {id-ac 12}
+
+-- MTS Transfer Protocol
+id-ac-mts-transfer ID ::= {id-ac 6}
+
+-- Abstract Syntaxes
+id-as-msse ID ::= {id-as 1}
+
+id-as-mdse-88 ID ::= {id-as 2}
+
+id-as-mrse-88 ID ::= {id-as 5}
+
+id-as-mase-88 ID ::= {id-as 6}
+
+id-as-mtse ID ::= {id-as 7}
+
+id-as-mts-rtse ID ::= {id-as 8}
+
+id-as-ms-88 ID ::= {id-as 9}
+
+id-as-ms-rtse ID ::= {id-as 10}
+
+id-as-mts ID ::= {id-as 11}
+
+id-as-mta-rtse ID ::= {id-as 12}
+
+id-as-ms-msse ID ::= {id-as 13}
+
+id-as-mdse-94 ID ::= {id-as 14}
+
+id-as-mrse-94 ID ::= {id-as 15}
+
+id-as-mase-94 ID ::= {id-as 16}
+
+id-as-ms-94 ID ::= {id-as 17}
+
+-- Application Service Elements
+id-ase-msse ID ::= {id-ase 0}
+
+id-ase-mdse ID ::= {id-ase 1}
+
+id-ase-mrse ID ::= {id-ase 2}
+
+id-ase-mase ID ::= {id-ase 3}
+
+id-ase-mtse ID ::= {id-ase 4}
+
+END --of MHSProtocolObjectIdentifiers
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MSAbstractService.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MSAbstractService.asn1
new file mode 100644
index 0000000000..052b3b2041
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MSAbstractService.asn1
@@ -0,0 +1,1085 @@
+-- Module MSAbstractService (X.413:06/1999)
+MSAbstractService {joint-iso-itu-t mhs(6) ms(4) modules(0) abstract-service(1)
+ version-1999(1)} DEFINITIONS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS
+ -- MTS information object classes
+ operationObject1, ABSTRACT-ERROR, ABSTRACT-OPERATION, EXTENSION, MHS-OBJECT,
+ PORT,
+ -- MTS objects and ports
+ administration, delivery, mts-user,
+ submission,
+ -- MTS abstract-operations and abstract-errors
+ cancel-deferred-delivery, element-of-service-not-subscribed,
+ inconsistent-request, new-credentials-unacceptable,
+ old-credentials-incorrectly-specified, originator-invalid,
+ recipient-improperly-specified, remote-bind-error, security-error,
+ submission-control, submission-control-violated,
+ unsupported-critical-function,
+ -- MTS abstract-service data-types
+ CertificateSelectors, Credentials, InitiatorCredentials,
+ MessageSubmissionArgument, MessageSubmissionResult, MessageToken,
+ ORAddressAndOrDirectoryName, ProbeSubmissionArgument,
+ ProbeSubmissionResult, ResponderCredentials, SecurityContext, SecurityLabel
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- MTS abstract-service 1988 ports
+ administration-88
+ --==
+ FROM MTSAbstractService88 {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1988(1988)}
+ -- MTS abstract-service upper bounds
+ ub-content-types, ub-encoded-information-types, ub-labels-and-redirections
+ --==
+ FROM MTSUpperBounds {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ upper-bounds(3) version-1999(1)}
+ -- MS X413ATTRIBUTE table
+ AttributeTable
+ --==
+ FROM MSGeneralAttributeTypes {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-attribute-types(2) version-1999(1)}
+ -- MS matching rule table
+ MatchingRuleTable
+ --==
+ FROM MSMatchingRules {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-matching-rules(5) version-1999(1)}
+ -- MS auto-action-table and auto-action-error table
+ AutoActionTable, AutoActionErrorTable
+ --==
+ FROM MSGeneralAutoActionTypes {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-auto-action-types(3) version-1994(0)}
+ -- MS object-identifiers
+ id-cp-ms-connection, id-crt-ms-access-88, id-crt-ms-access-94,
+ id-ext-modify-capability, id-ext-modify-retrieval-status-capability,
+ id-ext-originator-token, id-ext-originator-certificate-selectors-override,
+ id-ext-protected-change-credentials,
+ id-ext-protected-change-credentials-capability, id-ot-ms, id-ot-ms-user,
+ id-pt-retrieval-88, id-pt-retrieval-94, id-pt-ms-submission
+ --==
+ FROM MSObjectIdentifiers {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- MS Access abstract-operation and error codes
+ err-attribute-error, err-auto-action-request-error, err-ms-extension-error,
+ err-delete-error, err-entry-class-error, err-fetch-restriction-error,
+ err-invalid-parameters-error, err-message-group-error, err-modify-error,
+ err-range-error, err-security-error, err-sequence-number-error,
+ err-service-error, err-register-ms-error, op-alert, op-delete, op-fetch,
+ op-list, op-modify, op-ms-message-submission, op-ms-probe-submission,
+ op-register-ms, op-summarize
+ --==
+ FROM MSAccessProtocol {joint-iso-itu-t mhs(6) protocols(0) modules(0)
+ ms-access-protocol(2) version-1999(1)}
+ -- MS abstract-service upper bounds
+ ub-attributes-supported, ub-attribute-values, ub-auto-action-errors,
+ ub-auto-actions, ub-auto-registrations, ub-default-registrations,
+ ub-entry-classes, ub-error-reasons, ub-extensions, ub-group-depth,
+ ub-group-descriptor-length, ub-group-part-length, ub-matching-rules,
+ ub-message-groups, ub-messages, ub-modifications, ub-per-entry,
+ ub-per-auto-action, ub-service-information-length, ub-summaries,
+ ub-supplementary-info-length, ub-ua-registration-identifier-length,
+ ub-ua-registrations, ub-restrictions
+ --==
+ FROM MSUpperBounds {joint-iso-itu-t mhs(6) ms(4) modules(0) upper-bounds(4)
+ version-1994(0)}
+ -- MATCHING-RULE information object class
+ MATCHING-RULE
+ --==
+ FROM InformationFramework
+
+ -- Remote Operations
+ CONTRACT, CONNECTION-PACKAGE
+ --==
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ emptyUnbind
+ FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
+ remote-operations(4) useful-definitions(7) version1(0)};
+
+-- MS Abstract Objects
+ms MHS-OBJECT ::= {
+ IS {mts-user}
+ RESPONDS {ms-access-contract-88 | ms-access-contract-94}
+ ID id-ot-ms
+}
+
+ms-user MHS-OBJECT ::= {
+ INITIATES {ms-access-contract-88 | ms-access-contract-94}
+ ID id-ot-ms-user
+}
+
+-- Contracts
+ms-access-contract-94 CONTRACT ::= {
+ CONNECTION ms-connect
+ INITIATOR CONSUMER OF {retrieval | ms-submission | administration}
+ ID id-crt-ms-access-94
+}
+
+ms-access-contract-88 CONTRACT ::= {
+ CONNECTION ms-connect -- with all 1994 extensions omitted
+ INITIATOR CONSUMER OF {retrieval-88 | submission | administration-88}
+ ID id-crt-ms-access-88
+}
+
+-- Connection-package
+ms-connect CONNECTION-PACKAGE ::= {
+ BIND ms-bind
+ UNBIND ms-unbind
+ ID id-cp-ms-connection
+}
+
+-- MS Ports
+retrieval PORT ::= {
+ OPERATIONS {operationObject1, ...}
+ CONSUMER INVOKES
+ {summarize | list | fetch | delete | register-MS,
+ ... -- 1994 extension addition --, modify}
+ SUPPLIER INVOKES {alert}
+ ID id-pt-retrieval-94
+}
+
+retrieval-88 PORT ::= {
+ -- With all 1994 extensions to the abstract-operations absent
+ OPERATIONS {operationObject1, ...}
+ CONSUMER INVOKES {summarize | list | fetch | delete | register-MS}
+ SUPPLIER INVOKES {alert}
+ ID id-pt-retrieval-88
+}
+
+ms-submission PORT ::= {
+ OPERATIONS {operationObject1, ...}
+ CONSUMER INVOKES
+ {ms-message-submission | ms-probe-submission | ms-cancel-deferred-delivery}
+ SUPPLIER INVOKES {ms-submission-control}
+ ID id-pt-ms-submission
+}
+
+-- X413ATTRIBUTE information object class
+X413ATTRIBUTE ::= CLASS {
+ &id AttributeType UNIQUE,
+ &Type ,
+ &equalityMatch MATCHING-RULE OPTIONAL,
+ &substringsMatch MATCHING-RULE OPTIONAL,
+ &orderingMatch MATCHING-RULE OPTIONAL,
+ &numeration ENUMERATED {single-valued(0), multi-valued(1)},
+ -- 1994 extension
+ &OtherMatches MATCHING-RULE OPTIONAL
+}
+WITH SYNTAX {
+ WITH ATTRIBUTE-SYNTAX &Type,
+ [EQUALITY MATCHING-RULE &equalityMatch,]
+ [SUBSTRINGS MATCHING-RULE &substringsMatch,]
+ [ORDERING MATCHING-RULE &orderingMatch,]
+ [OTHER MATCHING-RULES &OtherMatches,]
+ NUMERATION &numeration,
+ ID &id
+}
+
+Attribute ::= SEQUENCE {
+ attribute-type X413ATTRIBUTE.&id({AttributeTable}),
+ attribute-values
+ SEQUENCE SIZE (1..ub-attribute-values) OF
+ X413ATTRIBUTE.&Type({AttributeTable}{@attribute-type})
+}
+
+AttributeType ::= OBJECT IDENTIFIER
+
+-- AUTO-ACTION information object class
+AUTO-ACTION ::= CLASS {
+ &id AutoActionType UNIQUE,
+ &RegistrationParameter OPTIONAL,
+ &Errors AUTO-ACTION-ERROR OPTIONAL
+}
+WITH SYNTAX {
+ [REGISTRATION PARAMETER IS &RegistrationParameter]
+ [ERRORS &Errors]
+ IDENTIFIED BY &id
+}
+
+AutoActionType ::= OBJECT IDENTIFIER
+
+AutoActionRegistration ::= SEQUENCE {
+ auto-action-type AUTO-ACTION.&id({AutoActionTable}),
+ registration-identifier [0] INTEGER(1..ub-per-auto-action) DEFAULT 1,
+ registration-parameter
+ [1] AUTO-ACTION.&RegistrationParameter
+ ({AutoActionTable}{@auto-action-type}) OPTIONAL
+}
+
+-- AUTO-ACTION-ERROR information object class
+AUTO-ACTION-ERROR ::=
+ ABSTRACT-ERROR
+
+AutoActionError ::= SET {
+ error-code [0] AUTO-ACTION-ERROR.&errorCode({AutoActionErrorTable}),
+ error-parameter
+ [1] AUTO-ACTION-ERROR.&ParameterType({AutoActionErrorTable}{@error-code})
+ OPTIONAL
+}
+
+-- MS-EXTENSION information object class
+MS-EXTENSION ::= TYPE-IDENTIFIER
+
+MSExtensionItem ::= INSTANCE OF MS-EXTENSION
+
+MSExtensions ::= SEQUENCE SIZE (1..ub-extensions) OF MSExtensionItem
+
+-- Common data-types related to the information model
+EntryClass ::= INTEGER {
+ delivery(0),
+ -- 1994 extensions
+ submission(1), draft(2), stored-message(3), delivery-log(4),
+ submission-log(5), message-log(6), auto-action-log(7)}(0..ub-entry-classes)
+
+EntryType ::= INTEGER {
+ delivered-message(0), delivered-report(1),
+ returned-content(2),
+ -- 1994 extensions
+ submitted-message(3), submitted-probe(4), draft-message(5),
+ auto-action-event(6)}
+
+SequenceNumber ::= INTEGER(0..ub-messages)
+
+RetrievalStatus ::= INTEGER {new(0), listed(1), processed(2)}
+
+MessageGroupName ::= SEQUENCE SIZE (1..ub-group-depth) OF GroupNamePart
+
+GroupNamePart ::= GeneralString(SIZE (1..ub-group-part-length))
+
+-- MS-bind abstract-operation
+ms-bind ABSTRACT-OPERATION ::= {
+ ARGUMENT MSBindArgument
+ RESULT MSBindResult
+ ERRORS {ms-bind-error}
+}
+
+MSBindArgument ::= SET {
+ initiator-name ORAddressAndOrDirectoryName,
+ initiator-credentials [2] InitiatorCredentials,
+ security-context [3] IMPLICIT SecurityContext OPTIONAL,
+ fetch-restrictions [4] Restrictions OPTIONAL -- default is none--,
+ ms-configuration-request [5] BOOLEAN DEFAULT FALSE,
+ -- 1994 extensions
+ ua-registration-identifier [6] RegistrationIdentifier OPTIONAL,
+ bind-extensions [7] MSExtensions OPTIONAL
+}
+
+Restrictions ::= SET {
+ allowed-content-types
+ [0] SET SIZE (1..ub-content-types) OF OBJECT IDENTIFIER OPTIONAL--default is no restriction--,
+ allowed-EITs [1] MS-EITs OPTIONAL --default is no restriction--,
+ maximum-attribute-length [2] INTEGER OPTIONAL --default is no restriction--
+}
+
+MS-EITs ::= SET SIZE (1..ub-encoded-information-types) OF MS-EIT
+
+MS-EIT ::= OBJECT IDENTIFIER
+
+RegistrationIdentifier ::=
+ PrintableString(SIZE (1..ub-ua-registration-identifier-length))
+
+MSBindResult ::= SET {
+ responder-credentials [2] ResponderCredentials,
+ available-auto-actions
+ [3] SET SIZE (1..ub-auto-actions) OF AUTO-ACTION.&id({AutoActionTable})
+ OPTIONAL,
+ available-attribute-types
+ [4] SET SIZE (1..ub-attributes-supported) OF
+ X413ATTRIBUTE.&id({AttributeTable}) OPTIONAL,
+ alert-indication [5] BOOLEAN DEFAULT FALSE,
+ content-types-supported
+ [6] SET SIZE (1..ub-content-types) OF OBJECT IDENTIFIER OPTIONAL,
+ -- 1994 extensions
+ entry-classes-supported
+ [7] SET SIZE (1..ub-entry-classes) OF EntryClass OPTIONAL,
+ matching-rules-supported
+ [8] SET SIZE (1..ub-matching-rules) OF OBJECT IDENTIFIER OPTIONAL,
+ bind-result-extensions [9] MSExtensions OPTIONAL,
+ message-group-depth [10] INTEGER(1..ub-group-depth) OPTIONAL,
+ auto-action-error-indication [11] AutoActionErrorIndication OPTIONAL,
+ unsupported-extensions
+ [12] SET SIZE (1..ub-extensions) OF OBJECT IDENTIFIER OPTIONAL,
+ ua-registration-id-unknown [13] BOOLEAN DEFAULT FALSE,
+ service-information
+ [14] GeneralString(SIZE (1..ub-service-information-length)) OPTIONAL
+}
+
+modify-capability MS-EXTENSION ::= {
+ NULL
+ IDENTIFIED BY id-ext-modify-capability
+}
+
+modify-retrieval-status-capability MS-EXTENSION ::= {
+ NULL
+ IDENTIFIED BY id-ext-modify-retrieval-status-capability
+}
+
+protected-change-credentials-capability MS-EXTENSION ::= {
+ ChangeCredentialsAlgorithms
+ IDENTIFIED BY id-ext-protected-change-credentials-capability
+}
+
+ChangeCredentialsAlgorithms ::= SET OF OBJECT IDENTIFIER
+
+AutoActionErrorIndication ::= CHOICE {
+ indication-only [0] NULL,
+ auto-action-log-entry [1] SequenceNumber
+}
+
+ms-bind-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ CHOICE {unqualified-error BindProblem,
+ -- 1994 extension
+ qualified-error
+ SET {bind-problem [0] BindProblem,
+ supplementary-information
+ [1] GeneralString(SIZE (1..ub-supplementary-info-length))
+ OPTIONAL,
+ bind-extension-errors
+ [2] SET SIZE (1..ub-extensions) OF OBJECT IDENTIFIER
+ OPTIONAL}}
+}
+
+BindProblem ::= ENUMERATED {
+ authentication-error(0), unacceptable-security-context(1),
+ unable-to-establish-association(2), ... -- 1994 extension addition --,
+ bind-extension-problem(3), inadequate-association-confidentiality(4)
+}
+
+-- MS Unbind abstract-operation
+ms-unbind ABSTRACT-OPERATION ::= emptyUnbind
+
+-- Common data-types
+Range ::= CHOICE {
+ sequence-number-range [0] NumberRange,
+ creation-time-range [1] TimeRange
+}
+
+NumberRange ::= SEQUENCE {
+ from [0] SequenceNumber OPTIONAL -- omitted means no lower bound--,
+ to [1] SequenceNumber OPTIONAL -- omitted means no upper bound--
+}
+
+TimeRange ::= SEQUENCE {
+ from [0] CreationTime OPTIONAL -- omitted means no lower bound--,
+ to [1] CreationTime OPTIONAL -- omitted means no upper bound--
+}
+
+CreationTime ::= UTCTime
+
+Filter ::= CHOICE {
+ item [0] FilterItem,
+ and [1] SET OF Filter,
+ or [2] SET OF Filter,
+ not [3] Filter
+}
+
+FilterItem ::= CHOICE {
+ equality [0] AttributeValueAssertion,
+ substrings
+ [1] SEQUENCE {type X413ATTRIBUTE.&id({AttributeTable}),
+ strings
+ SEQUENCE OF
+ CHOICE {initial
+ [0] X413ATTRIBUTE.&Type
+ ({AttributeTable}{@substrings.type}),
+ any
+ [1] X413ATTRIBUTE.&Type
+ ({AttributeTable}{@substrings.type}),
+ final
+ [2] X413ATTRIBUTE.&Type
+ ({AttributeTable}{@substrings.type})
+ }},
+ greater-or-equal [2] AttributeValueAssertion,
+ less-or-equal [3] AttributeValueAssertion,
+ present [4] X413ATTRIBUTE.&id({AttributeTable}),
+ approximate-match [5] AttributeValueAssertion,
+ -- 1994 extension
+ other-match [6] MatchingRuleAssertion
+}
+
+MatchingRuleAssertion ::= SEQUENCE {
+ matching-rule [0] MATCHING-RULE.&id({MatchingRuleTable}),
+ attribute-type [1] X413ATTRIBUTE.&id,
+ match-value
+ [2] MATCHING-RULE.&AssertionType({MatchingRuleTable}{@matching-rule})
+}
+
+AttributeValueAssertion ::= SEQUENCE {
+ attribute-type X413ATTRIBUTE.&id({AttributeTable}),
+ attribute-value X413ATTRIBUTE.&Type({AttributeTable}{@attribute-type})
+}
+
+Selector ::= SET {
+ child-entries [0] BOOLEAN DEFAULT FALSE,
+ range [1] Range OPTIONAL -- default is unbounded --,
+ filter
+ [2] Filter
+ OPTIONAL -- default is all entries within the specified range --,
+ limit [3] INTEGER(1..ub-messages) OPTIONAL,
+ override [4] OverrideRestrictions OPTIONAL -- by default, --
+ -- any fetch-restrictions in force apply
+}
+
+OverrideRestrictions ::= BIT STRING {
+ override-content-types-restriction(0), override-EITs-restriction(1),
+ override-attribute-length-restriction(2)}(SIZE (1..ub-restrictions))
+
+EntryInformationSelection ::= SET SIZE (0..ub-per-entry) OF AttributeSelection
+
+AttributeSelection ::= SET {
+ type X413ATTRIBUTE.&id({AttributeTable}),
+ from
+ [0] INTEGER(1..ub-attribute-values)
+ OPTIONAL --used if type is multi valued--,
+ count
+ [1] INTEGER(0..ub-attribute-values)
+ OPTIONAL --used if type is multi valued--
+}
+
+EntryInformation ::= SEQUENCE {
+ sequence-number SequenceNumber,
+ attributes SET SIZE (1..ub-per-entry) OF Attribute OPTIONAL,
+ -- 1994 extension
+ value-count-exceeded
+ [0] SET SIZE (1..ub-per-entry) OF AttributeValueCount OPTIONAL
+}
+
+AttributeValueCount ::= SEQUENCE {
+ type [0] X413ATTRIBUTE.&id({AttributeTable}),
+ total [1] INTEGER
+}
+
+MSSubmissionOptions ::= SET {
+ object-entry-class
+ [0] EntryClass(submission | submission-log | draft) OPTIONAL,
+ disable-auto-modify [1] BOOLEAN DEFAULT FALSE,
+ add-message-group-names
+ [2] SET SIZE (1..ub-message-groups) OF MessageGroupName OPTIONAL,
+ ms-submission-extensions [3] MSExtensions OPTIONAL
+}
+
+originator-token MS-EXTENSION ::= {
+ OriginatorToken
+ IDENTIFIED BY id-ext-originator-token
+}
+
+OriginatorToken ::=
+ MessageToken
+ (CONSTRAINED BY {
+
+ -- Must contain an asymmetric-token with an encrypted-data component --})
+
+originator-certificate-selectors-override MS-EXTENSION ::= {
+ CertificateSelectors
+ (WITH COMPONENTS {
+ ...,
+ message-origin-authentication ABSENT
+ })
+ IDENTIFIED BY id-ext-originator-certificate-selectors-override
+}
+
+CommonSubmissionResults ::= SET {
+ created-entry [0] SequenceNumber OPTIONAL,
+ auto-action-error-indication [1] AutoActionErrorIndication OPTIONAL,
+ ms-submission-result-extensions [2] MSExtensions OPTIONAL
+}
+
+-- Retrieval Port abstract-operations
+summarize ABSTRACT-OPERATION ::= {
+ ARGUMENT SummarizeArgument
+ RESULT SummarizeResult
+ ERRORS
+ {attribute-error | invalid-parameters-error | range-error | security-error
+ | service-error, ... -- 1994 extension additions --, entry-class-error |
+ ms-extension-error}
+ LINKED {operationObject1, ...}
+ CODE op-summarize
+}
+
+SummarizeArgument ::= SET {
+ entry-class [0] EntryClass DEFAULT delivery,
+ selector [1] Selector,
+ summary-requests
+ [2] SEQUENCE SIZE (1..ub-summaries) OF X413ATTRIBUTE.&id({AttributeTable})
+ OPTIONAL -- absent if no summaries are requested--,
+ -- 1994 extension
+ summarize-extensions [3] MSExtensions OPTIONAL
+}
+
+SummarizeResult ::= SET {
+ next [0] SequenceNumber OPTIONAL,
+ count
+ [1] INTEGER(0..ub-messages)-- of the entries selected-- ,
+ span [2] Span OPTIONAL -- of the entries selected,---- omitted if count is zero --,
+ summaries
+ [3] SEQUENCE SIZE (1..ub-summaries) OF Summary OPTIONAL,
+ -- 1994 extension
+ summarize-result-extensions [4] MSExtensions OPTIONAL
+}
+
+Span ::= SEQUENCE {lowest [0] SequenceNumber,
+ highest [1] SequenceNumber
+}
+
+Summary ::= SET {
+ absent
+ [0] INTEGER(1..ub-messages)
+ OPTIONAL --count of entries where X413ATTRIBUTE is absent--,
+ present
+ [1] SET SIZE (1..ub-attribute-values)
+ OF--one for each X413ATTRIBUTE value present--
+ SEQUENCE {type X413ATTRIBUTE.&id({AttributeTable}),
+ value X413ATTRIBUTE.&Type({AttributeTable}{@.type}),
+ count INTEGER(1..ub-messages)} OPTIONAL
+}
+
+--
+list ABSTRACT-OPERATION ::= {
+ ARGUMENT ListArgument
+ RESULT ListResult
+ ERRORS
+ {attribute-error | invalid-parameters-error | range-error | security-error
+ | service-error, ... -- 1994 extension additions --, entry-class-error |
+ ms-extension-error}
+ LINKED {operationObject1, ...}
+ CODE op-list
+}
+
+ListArgument ::= SET {
+ entry-class [0] EntryClass DEFAULT delivery,
+ selector [1] Selector,
+ requested-attributes [3] EntryInformationSelection OPTIONAL,
+ -- 1994 extension
+ list-extensions [4] MSExtensions OPTIONAL
+}
+
+ListResult ::= SET {
+ next [0] SequenceNumber OPTIONAL,
+ requested
+ [1] SEQUENCE SIZE (1..ub-messages) OF EntryInformation OPTIONAL--omitted if none found--,
+ -- 1994 extension
+ list-result-extensions [2] MSExtensions OPTIONAL
+}
+
+--
+fetch ABSTRACT-OPERATION ::= {
+ ARGUMENT FetchArgument
+ RESULT FetchResult
+ ERRORS
+ {attribute-error | fetch-restriction-error | invalid-parameters-error |
+ range-error | security-error | sequence-number-error | service-error,
+ ... -- 1994 extension additions --, entry-class-error |
+ ms-extension-error}
+ LINKED {operationObject1, ...}
+ CODE op-fetch
+}
+
+FetchArgument ::= SET {
+ entry-class [0] EntryClass DEFAULT delivery,
+ item
+ CHOICE {search [1] Selector,
+ precise [2] SequenceNumber},
+ requested-attributes [3] EntryInformationSelection OPTIONAL,
+ -- 1994 extension
+ fetch-extensions [4] MSExtensions OPTIONAL
+}
+
+FetchResult ::= SET {
+ entry-information
+ [0] EntryInformation OPTIONAL --if an entry was selected--,
+ list
+ [1] SEQUENCE SIZE (1..ub-messages) OF SequenceNumber OPTIONAL,
+ next [2] SequenceNumber OPTIONAL,
+ -- 1994 extension
+ fetch-result-extensions [3] MSExtensions OPTIONAL
+}
+
+--
+delete ABSTRACT-OPERATION ::= {
+ ARGUMENT DeleteArgument
+ RESULT DeleteResult
+ ERRORS
+ {delete-error | invalid-parameters-error | range-error | security-error |
+ sequence-number-error | service-error,
+ ... -- 1994 extension additions --, entry-class-error |
+ ms-extension-error}
+ LINKED {operationObject1, ...}
+ CODE op-delete
+}
+
+DeleteArgument ::= SET {
+ entry-class [0] EntryClass DEFAULT delivery,
+ items
+ CHOICE {selector [1] Selector,
+ sequence-numbers [2] SET SIZE (1..ub-messages) OF SequenceNumber
+ },
+ -- 1994 extension
+ delete-extensions [3] MSExtensions OPTIONAL
+}
+
+DeleteResult ::= CHOICE {
+ delete-result-88 NULL,
+ -- 1994 extension
+ delete-result-94
+ SET {entries-deleted
+ [0] SEQUENCE SIZE (1..ub-messages) OF SequenceNumber OPTIONAL,
+ delete-result-extensions [1] MSExtensions OPTIONAL}
+}
+
+--
+register-MS ABSTRACT-OPERATION ::= {
+ ARGUMENT Register-MSArgument
+ RESULT Register-MSResult
+ ERRORS
+ {attribute-error | auto-action-request-error | invalid-parameters-error |
+ security-error | service-error | old-credentials-incorrectly-specified |
+ new-credentials-unacceptable, ... -- 1994 extension additions --,
+ message-group-error | ms-extension-error | register-ms-error}
+ LINKED {operationObject1, ...}
+ CODE op-register-ms
+}
+
+Register-MSArgument ::= SET {
+ auto-action-registrations
+ [0] SET SIZE (1..ub-auto-registrations) OF AutoActionRegistration OPTIONAL,
+ auto-action-deregistrations
+ [1] SET SIZE (1..ub-auto-registrations) OF AutoActionDeregistration
+ OPTIONAL,
+ list-attribute-defaults
+ [2] SET SIZE (0..ub-default-registrations) OF
+ X413ATTRIBUTE.&id({AttributeTable}) OPTIONAL,
+ fetch-attribute-defaults
+ [3] SET SIZE (0..ub-default-registrations) OF
+ X413ATTRIBUTE.&id({AttributeTable}) OPTIONAL,
+ change-credentials
+ [4] SEQUENCE {old-credentials
+ [0] Credentials(WITH COMPONENTS {
+ simple
+ }),
+ new-credentials
+ [1] Credentials(WITH COMPONENTS {
+ simple
+ })} OPTIONAL,
+ user-security-labels
+ [5] SET SIZE (1..ub-labels-and-redirections) OF SecurityLabel OPTIONAL,
+ -- 1994 extensions
+ ua-registrations
+ [6] SET SIZE (1..ub-ua-registrations) OF UARegistration OPTIONAL,
+ submission-defaults [7] MSSubmissionOptions OPTIONAL,
+ message-group-registrations [8] MessageGroupRegistrations OPTIONAL,
+ registration-status-request [9] RegistrationTypes OPTIONAL,
+ register-ms-extensions [10] MSExtensions OPTIONAL
+}
+
+AutoActionDeregistration ::= SEQUENCE {
+ auto-action-type AUTO-ACTION.&id({AutoActionTable}),
+ registration-identifier [0] INTEGER(1..ub-per-auto-action) DEFAULT 1
+}
+
+UARegistration ::= SET {
+ ua-registration-identifier [0] RegistrationIdentifier,
+ ua-list-attribute-defaults
+ [1] SET SIZE (0..ub-default-registrations) OF
+ X413ATTRIBUTE.&id({AttributeTable}) OPTIONAL,
+ ua-fetch-attribute-defaults
+ [2] SET SIZE (0..ub-default-registrations) OF
+ X413ATTRIBUTE.&id({AttributeTable}) OPTIONAL,
+ ua-submission-defaults [3] MSSubmissionOptions OPTIONAL,
+ content-specific-defaults [4] MSExtensions OPTIONAL
+}
+
+MessageGroupRegistrations ::=
+ SEQUENCE SIZE (1..ub-default-registrations) OF
+ CHOICE {register-group [0] MessageGroupNameAndDescriptor,
+ deregister-group [1] MessageGroupName,
+ change-descriptors [2] MessageGroupNameAndDescriptor}
+
+MessageGroupNameAndDescriptor ::= SET {
+ message-group-name [0] MessageGroupName,
+ message-group-descriptor
+ [1] GeneralString(SIZE (1..ub-group-descriptor-length)) OPTIONAL
+}
+
+RegistrationTypes ::= SET {
+ registrations
+ [0] BIT STRING {auto-action-registrations(0), list-attribute-defaults(1),
+ fetch-attribute-defaults(2), ua-registrations(3),
+ submission-defaults(4), message-group-registrations(5)}
+ OPTIONAL,
+ extended-registrations [1] SET OF MS-EXTENSION.&id OPTIONAL,
+ restrict-message-groups [2] MessageGroupsRestriction OPTIONAL
+}
+
+MessageGroupsRestriction ::= SET {
+ parent-group [0] MessageGroupName OPTIONAL,
+ immediate-descendants-only [1] BOOLEAN DEFAULT TRUE,
+ omit-descriptors [2] BOOLEAN DEFAULT TRUE
+}
+
+protected-change-credentials MS-EXTENSION ::= {
+ ProtectedChangeCredentials
+ IDENTIFIED BY id-ext-protected-change-credentials
+}
+
+ProtectedChangeCredentials ::= SEQUENCE {
+ algorithm-identifier [0] IMPLICIT OBJECT IDENTIFIER,
+ old-credentials
+ InitiatorCredentials(WITH COMPONENTS {
+ protected PRESENT
+ }),
+ password-delta [2] IMPLICIT BIT STRING
+}
+
+Register-MSResult ::= CHOICE {
+ no-status-information NULL,
+ -- 1994 extension
+ registered-information
+ SET {auto-action-registrations
+ [0] SET SIZE (1..ub-auto-registrations) OF AutoActionRegistration
+ OPTIONAL,
+ list-attribute-defaults
+ [1] SET SIZE (1..ub-default-registrations) OF
+ X413ATTRIBUTE.&id({AttributeTable}) OPTIONAL,
+ fetch-attribute-defaults
+ [2] SET SIZE (1..ub-default-registrations) OF
+ X413ATTRIBUTE.&id({AttributeTable}) OPTIONAL,
+ ua-registrations
+ [3] SET SIZE (1..ub-ua-registrations) OF UARegistration OPTIONAL,
+ submission-defaults [4] MSSubmissionOptions OPTIONAL,
+ message-group-registrations
+ [5] SET SIZE (1..ub-message-groups) OF
+ MessageGroupNameAndDescriptor OPTIONAL,
+ register-ms-result-extensions [6] MSExtensions OPTIONAL}
+}
+
+--
+alert ABSTRACT-OPERATION ::= {
+ ARGUMENT AlertArgument
+ RESULT AlertResult
+ ERRORS {security-error}
+ LINKED {operationObject1, ...}
+ CODE op-alert
+}
+
+AlertArgument ::= SET {
+ alert-registration-identifier [0] INTEGER(1..ub-auto-actions),
+ new-entry [2] EntryInformation OPTIONAL
+}
+
+AlertResult ::= NULL
+
+--
+modify ABSTRACT-OPERATION ::= {
+ ARGUMENT ModifyArgument
+ RESULT ModifyResult
+ ERRORS
+ {attribute-error | invalid-parameters-error | security-error |
+ sequence-number-error | service-error | modify-error |
+ message-group-error | entry-class-error | ms-extension-error,
+ ... -- For future extension additions --}
+ LINKED {operationObject1, ...}
+ CODE op-modify
+}
+
+ModifyArgument ::= SET {
+ entry-class [0] EntryClass DEFAULT delivery,
+ entries
+ CHOICE {selector [1] Selector,
+ specific-entries
+ [2] SEQUENCE SIZE (1..ub-messages) OF SequenceNumber},
+ modifications
+ [3] SEQUENCE SIZE (1..ub-modifications) OF EntryModification,
+ modify-extensions [4] MSExtensions OPTIONAL
+}
+
+EntryModification ::= SET {
+ strict [0] BOOLEAN DEFAULT FALSE,
+ modification
+ CHOICE {add-attribute [1] Attribute,
+ remove-attribute [2] X413ATTRIBUTE.&id({AttributeTable}),
+ add-values [3] OrderedAttribute,
+ remove-values [4] OrderedAttribute}
+}
+
+OrderedAttribute ::= SEQUENCE {
+ attribute-type X413ATTRIBUTE.&id({AttributeTable}),
+ attribute-values
+ SEQUENCE SIZE (1..ub-attribute-values) OF
+ SEQUENCE {-- at least one must be specified
+ value
+ [0] X413ATTRIBUTE.&Type({AttributeTable}{@attribute-type})
+ OPTIONAL,
+ position [1] INTEGER(1..ub-attribute-values) OPTIONAL
+ }
+}
+
+ModifyResult ::= SET {
+ entries-modified
+ [0] SEQUENCE SIZE (1..ub-messages) OF SequenceNumber OPTIONAL,
+ modify-result-extensions [1] MSExtensions OPTIONAL
+}
+
+-- MS-submission Port abstract-operations
+ms-message-submission ABSTRACT-OPERATION ::= {
+ ARGUMENT MSMessageSubmissionArgument
+ RESULT MSMessageSubmissionResult
+ ERRORS
+ {submission-control-violated | element-of-service-not-subscribed |
+ originator-invalid | recipient-improperly-specified |
+ inconsistent-request | security-error | unsupported-critical-function |
+ remote-bind-error, ... -- 1994 extension additions --, ms-extension-error
+ | message-group-error | entry-class-error | service-error}
+ LINKED {operationObject1, ...}
+ CODE op-ms-message-submission
+}
+
+MSMessageSubmissionArgument ::= SEQUENCE {
+ COMPONENTS OF
+ MessageSubmissionArgument -- This imported type has IMPLICIT tags --,
+ -- 1994 extension
+ submission-options [4] MSSubmissionOptions OPTIONAL
+}
+
+forwarding-request EXTENSION ::= {
+ SequenceNumber,
+ IDENTIFIED BY standard-extension:36
+}
+
+MSMessageSubmissionResult ::= CHOICE {
+ mts-result
+ SET {COMPONENTS OF
+ MessageSubmissionResult-- This imported type has IMPLICIT tags -- ,
+ -- 1994 extension
+ ms-message-result [4] CommonSubmissionResults OPTIONAL},
+ -- 1994 extension
+ store-draft-result [4] CommonSubmissionResults
+}
+
+--
+ms-probe-submission ABSTRACT-OPERATION ::= {
+ ARGUMENT MSProbeSubmissionArgument
+ RESULT MSProbeSubmissionResult
+ ERRORS
+ {submission-control-violated | element-of-service-not-subscribed |
+ originator-invalid | recipient-improperly-specified |
+ inconsistent-request | security-error | unsupported-critical-function |
+ remote-bind-error, ... -- 1994 extension additions --, ms-extension-error
+ | message-group-error | entry-class-error | service-error}
+ LINKED {operationObject1, ...}
+ CODE op-ms-probe-submission
+}
+
+MSProbeSubmissionArgument ::= SET {
+ COMPONENTS OF
+ ProbeSubmissionArgument -- This imported type has IMPLICIT tags --,
+ -- 1994 extension
+ submission-options [4] MSSubmissionOptions OPTIONAL
+}
+
+MSProbeSubmissionResult ::= SET {
+ COMPONENTS OF
+ ProbeSubmissionResult -- This imported type has IMPLICIT tags --,
+ -- 1994 extension
+ ms-probe-result [4] CommonSubmissionResults OPTIONAL
+}
+
+ms-cancel-deferred-delivery ABSTRACT-OPERATION ::= cancel-deferred-delivery
+
+ms-submission-control ABSTRACT-OPERATION ::= submission-control
+
+-- Abstract-errors
+attribute-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ SET {problems
+ [0] SET SIZE (1..ub-per-entry) OF
+ SET {problem [0] AttributeProblem,
+ type [1] X413ATTRIBUTE.&id({AttributeTable}),
+ value
+ [2] X413ATTRIBUTE.&Type({AttributeTable}{@.type})
+ OPTIONAL}}
+ CODE err-attribute-error
+}
+
+AttributeProblem ::= INTEGER {
+ invalid-attribute-value(0), unavailable-attribute-type(1),
+ inappropriate-matching(2), attribute-type-not-subscribed(3),
+ inappropriate-for-operation(4),
+ -- 1994 extensions
+ inappropriate-modification(5), single-valued-attribute(6)
+}(0..ub-error-reasons)
+
+--
+auto-action-request-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ SET {problems
+ [0] SET SIZE (1..ub-auto-registrations) OF
+ SET {problem [0] AutoActionRequestProblem,
+ type [1] AUTO-ACTION.&id({AutoActionTable})
+ }}
+ CODE err-auto-action-request-error
+}
+
+AutoActionRequestProblem ::= INTEGER {
+ unavailable-auto-action-type(0),
+ auto-action-type-not-subscribed(1),
+ -- 1994 extension
+ not-willing-to-perform(2)}(0..ub-error-reasons)
+
+--
+delete-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ SET {problems
+ [0] SET SIZE (1..ub-messages) OF
+ SET {problem [0] DeleteProblem,
+ sequence-number [1] SequenceNumber},
+ -- 1994 extension
+ entries-deleted
+ [1] SET SIZE (1..ub-messages) OF SequenceNumber OPTIONAL}
+ CODE err-delete-error
+}
+
+DeleteProblem ::= INTEGER {
+ child-entry-specified(0),
+ delete-restriction-problem(1),
+ -- 1994 extensions
+ new-entry-specified(2), entry-class-restriction(3), stored-message-exists(4)
+}(0..ub-error-reasons)
+
+--
+fetch-restriction-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ SET {problems
+ [0] SET SIZE (1..ub-default-registrations) OF
+ SET {problem [3] FetchRestrictionProblem,
+ restriction
+ CHOICE {content-type [0] OBJECT IDENTIFIER,
+ eit [1] MS-EITs,
+ attribute-length [2] INTEGER}}}
+ CODE err-fetch-restriction-error
+}
+
+FetchRestrictionProblem ::= INTEGER {
+ content-type-problem(1), eit-problem(2), maximum-length-problem(3)
+}(0..ub-error-reasons)
+
+--
+invalid-parameters-error ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-invalid-parameters-error
+}
+
+--
+range-error ABSTRACT-ERROR ::= {
+ PARAMETER SET {problem [0] RangeProblem}
+ CODE err-range-error
+}
+
+RangeProblem ::= INTEGER {reversed(0)}(0..ub-error-reasons)
+
+--
+sequence-number-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ SET {problems
+ [1] SET SIZE (1..ub-messages) OF
+ SET {problem [0] SequenceNumberProblem,
+ sequence-number [1] SequenceNumber}}
+ CODE err-sequence-number-error
+}
+
+SequenceNumberProblem ::= INTEGER {no-such-entry(0)}(0..ub-error-reasons)
+
+--
+service-error ABSTRACT-ERROR ::= {
+ PARAMETER ServiceErrorParameter
+ CODE err-service-error
+}
+
+ServiceErrorParameter ::= SET {
+ problem [0] ServiceProblem,
+ -- 1994 extension
+ supplementary-information
+ [1] GeneralString(SIZE (1..ub-supplementary-info-length)) OPTIONAL
+}
+
+ServiceProblem ::= INTEGER {busy(0), unavailable(1), unwilling-to-perform(2)
+}(0..ub-error-reasons)
+
+--
+message-group-error ABSTRACT-ERROR ::= {
+ PARAMETER MessageGroupErrorParameter
+ CODE err-message-group-error
+}
+
+MessageGroupErrorParameter ::= SET {
+ problem [0] MessageGroupProblem,
+ name [1] MessageGroupName
+}
+
+MessageGroupProblem ::= INTEGER {
+ name-not-registered(0), name-already-registered(1), parent-not-registered(2),
+ group-not-empty(3), name-in-use(4), child-group-registered(5),
+ group-depth-exceeded(6)}(0..ub-error-reasons)
+
+--
+ms-extension-error ABSTRACT-ERROR ::= {
+ PARAMETER MSExtensionErrorParameter
+ CODE err-ms-extension-error
+}
+
+MSExtensionErrorParameter ::= CHOICE {
+ ms-extension-problem [0] MSExtensionItem,
+ unknown-ms-extension [1] OBJECT IDENTIFIER
+}
+
+--
+register-ms-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ SET {problem [0] RegistrationProblem,
+ registration-type [1] RegistrationTypes}
+ CODE err-register-ms-error
+}
+
+RegistrationProblem ::= ENUMERATED {
+ registration-not-supported(0), registration-improperly-specified(1),
+ registration-limit-exceeded(2), ... -- For future extension additions --
+ }
+
+--
+modify-error ABSTRACT-ERROR ::= {
+ PARAMETER ModifyErrorParameter
+ CODE err-modify-error
+}
+
+ModifyErrorParameter ::= SET {
+ entries-modified
+ [0] SEQUENCE SIZE (1..ub-messages) OF SequenceNumber OPTIONAL,
+ failing-entry [1] SequenceNumber,
+ modification-number [2] INTEGER,
+ problem [3] ModifyProblem
+}
+
+ModifyProblem ::= INTEGER {
+ attribute-not-present(0), value-not-present(1),
+ attribute-or-value-already-exists(2), invalid-position(3),
+ modify-restriction-problem(4)}(0..ub-error-reasons)
+
+--
+entry-class-error ABSTRACT-ERROR ::= {
+ PARAMETER EntryClassErrorParameter
+ CODE err-entry-class-error
+}
+
+EntryClassErrorParameter ::= SET {
+ entry-class [0] EntryClass,
+ problem
+ [1] BIT STRING {unsupported-entry-class(0), entry-class-not-subscribed(1),
+ inappropriate-entry-class(2)}
+}
+
+END -- of MS Abstract Service
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MSAccessProtocol.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MSAccessProtocol.asn1
new file mode 100644
index 0000000000..b69d72b3ed
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MSAccessProtocol.asn1
@@ -0,0 +1,259 @@
+-- Module MSAccessProtocol (X.419:06/1999)
+
+MSAccessProtocol {joint-iso-itu-t mhs(6) protocols(0) modules(0)
+ ms-access-protocol(2) version-1999(1)} DEFINITIONS ::=
+BEGIN
+
+-- Prologue
+IMPORTS
+ -- MS Abstract Service
+ ms-access-contract-88, ms-access-contract-94, ms-submission, retrieval,
+ retrieval-88
+ --==
+ FROM MSAbstractService {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ abstract-service(1) version-1999(1)}
+ -- Remote Operations
+ APPLICATION-CONTEXT
+ --==
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)}
+ Code
+ --==
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ Bind{}, InvokeId, Unbind{}
+ --==
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ ROS-SingleAS{}
+ --==
+ FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
+ remote-operations(4) useful-definitions(7) version1(0)}
+ acse, association-by-RTSE, pData, transfer-by-RTSE
+ --==
+ FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
+ realizations(9) version1(0)}
+ acse-abstract-syntax
+ --==
+ FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
+ remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)}
+ -- Reliable Transfer
+ RTORQapdu, RTOACapdu, RTORJapdu
+ FROM Reliable-Transfer-APDU {joint-iso-itu-t reliable-transfer(3) apdus(0)}
+ -- MTS Access Protocol
+ message-administration-abstract-syntax-88,
+ message-administration-abstract-syntax-94,
+ message-submission-abstract-syntax
+ --==
+ FROM MTSAccessProtocol {joint-iso-itu-t mhs(6) protocols(0) modules(0)
+ mts-access-protocol(1) version-1999(1)}
+ -- Object Identifiers
+ id-ac-ms-access-88, id-ac-ms-access-94, id-ac-ms-reliable-access-88,
+ id-ac-ms-reliable-access-94, id-as-ms-msse, id-as-mase-88, id-as-mase-94,
+ id-as-mdse-88, id-as-mdse-94, id-as-mrse-88, id-as-mrse-94, id-as-ms-88,
+ id-as-ms-94, id-as-ms-rtse, id-as-msse
+ --==
+ FROM MHSProtocolObjectIdentifiers {joint-iso-itu-t mhs(6) protocols(0)
+ modules(0) object-identifiers(0) version-1994(0)};
+
+-- Definitions from X.228(11/1988) --
+RTSE-apdus ::= CHOICE {
+ rtorq-apdu [16] IMPLICIT RTORQapdu,
+ rtoac-apdu [17] IMPLICIT RTOACapdu,
+ rtorj-apdu [18] IMPLICIT RTORJapdu,
+ rttp-apdu RTTPapdu,
+ rttr-apdu RTTRapdu,
+ rtab-apdu [22] IMPLICIT RTABapdu
+}
+
+RTTPapdu ::= -- priority-- INTEGER
+
+RTTRapdu ::= OCTET STRING
+
+RTABapdu ::= SET {
+ abortReason [0] IMPLICIT AbortReason OPTIONAL,
+ reflectedParameter [1] IMPLICIT BIT STRING OPTIONAL,
+ -- 8 bits maximum, only if abortReason is invalidParameter
+ userdataAB
+ [2] TYPE-IDENTIFIER.&Type
+ OPTIONAL -- only in normal mode and if abortReason--
+ -- is userError
+}
+
+AbortReason ::= INTEGER {
+ localSystemProblem(0),
+ invalidParameter(1), -- reflectedParameter supplied
+ unrecognizedActivity(2),
+ temporaryProblem(3),
+ -- the RTSE cannot accept a session for a period of time
+ protocolError(4), -- RTSE level protocol error
+ permanentProblem(5), --provider-abort solely in normal mode
+ userError(6), -- user-abort solely in normal mode
+ transferCompleted(7) -- activity can't be discarded--}
+-- end of definitions from X.228 (11/1988) --
+
+-- APPLICATION-CONTEXTS
+-- 1994 Application Context omitting RTSE
+ms-access-94 APPLICATION-CONTEXT ::= {
+ CONTRACT ms-access-contract-94
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | ms-message-submission-abstract-syntax |
+ message-retrieval-abstract-syntax-94 |
+ message-administration-abstract-syntax-94 |
+ ms-bind-unbind-abstract-syntax-94}
+ APPLICATION CONTEXT NAME id-ac-ms-access-94
+}
+
+-- 1994 Application Context including RTSE
+ms-reliable-access-94 APPLICATION-CONTEXT ::= {
+ CONTRACT ms-access-contract-94
+ ESTABLISHED BY association-by-RTSE
+ INFORMATION TRANSFER BY transfer-by-RTSE
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | ms-message-submission-abstract-syntax |
+ message-retrieval-abstract-syntax-94 |
+ message-administration-abstract-syntax-94 |
+ ms-bind-unbind-rtse-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-ms-reliable-access-94
+}
+
+-- 1988 Application Context omitting RTSE
+ms-access-88 APPLICATION-CONTEXT ::= {
+ CONTRACT ms-access-contract-88
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-retrieval-abstract-syntax-88 |
+ message-administration-abstract-syntax-88 |
+ ms-bind-unbind-abstract-syntax-88}
+ APPLICATION CONTEXT NAME id-ac-ms-access-88
+}
+
+-- 1988 Application Context including RTSE
+ms-reliable-access-88 APPLICATION-CONTEXT ::= {
+ CONTRACT ms-access-contract-88
+ ESTABLISHED BY association-by-RTSE
+ INFORMATION TRANSFER BY transfer-by-RTSE
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-retrieval-abstract-syntax-88 |
+ message-administration-abstract-syntax-88 |
+ ms-bind-unbind-rtse-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-ms-reliable-access-88
+}
+
+-- ABSTRACT SYNTAXES
+-- Abstract-syntax for 1994 MS-bind and MS-unbind
+ms-bind-unbind-abstract-syntax-94 ABSTRACT-SYNTAX ::= {
+ MSBindUnbindPDUs94
+ IDENTIFIED BY id-as-ms-94
+}
+
+MSBindUnbindPDUs94 ::= CHOICE {
+ bind Bind{ms-access-contract-94.&connection.&bind},
+ unbind Unbind{ms-access-contract-94.&connection.&unbind}
+}
+
+-- Abstract-syntax for 1988 MS-bind and MS-unbind
+ms-bind-unbind-abstract-syntax-88 ABSTRACT-SYNTAX ::= {
+ MSBindUnbindPDUs88
+ IDENTIFIED BY id-as-ms-88
+}
+
+MSBindUnbindPDUs88 ::= CHOICE {
+ bind Bind{ms-access-contract-88.&connection.&bind},
+ unbind Unbind{ms-access-contract-88.&connection.&unbind}
+}
+
+-- Abstract-syntax for MS-bind and MS-unbind with RTSE
+ms-bind-unbind-rtse-abstract-syntax ABSTRACT-SYNTAX ::= {
+ RTSE-apdus -- With MS-bind and MS-unbind --
+ IDENTIFIED BY id-as-ms-rtse
+}
+
+-- Abstract Syntax for MS Message Submission Service Element
+ms-message-submission-abstract-syntax ABSTRACT-SYNTAX ::= {
+ MSMessageSubmissionPDUs
+ IDENTIFIED BY id-as-ms-msse
+}
+
+MSMessageSubmissionPDUs ::= ROS-SingleAS{{MSInvokeIds}, ms-submission}
+
+MSInvokeIds ::= InvokeId(ALL EXCEPT absent:NULL)
+
+-- Abstract Syntax for Message Retrieval Service Element 1994
+message-retrieval-abstract-syntax-94 ABSTRACT-SYNTAX ::= {
+ MessageRetrievalPDUs
+ IDENTIFIED BY id-as-mrse-94
+}
+
+-- Abstract Syntax for Message Retrieval Service Element 1988
+MessageRetrievalPDUs ::=
+ ROS-SingleAS{{MSInvokeIds}, retrieval}
+
+message-retrieval-abstract-syntax-88 ABSTRACT-SYNTAX ::= {
+ MessageRetrievalPDUs88
+ IDENTIFIED BY id-as-mrse-88
+}
+
+MessageRetrievalPDUs88 ::= ROS-SingleAS{{MSInvokeIds}, retrieval-88}
+
+-- Remote Operations
+op-ms-submission-control Code ::= local:2
+
+op-ms-message-submission Code ::= local:3
+
+op-ms-probe-submission Code ::= local:4
+
+op-ms-cancel-deferred-delivery Code ::= local:7
+
+op-summarize Code ::= local:20
+
+op-list Code ::= local:21
+
+op-fetch Code ::= local:22
+
+op-delete Code ::= local:23
+
+op-register-ms Code ::= local:24
+
+op-alert Code ::= local:25
+
+op-modify Code ::= local:26
+
+-- Remote Errors
+err-attribute-error Code ::= local:21
+
+err-auto-action-request-error Code ::= local:22
+
+err-delete-error Code ::= local:23
+
+err-fetch-restriction-error Code ::= local:24
+
+err-range-error Code ::= local:25 -- 1988 Application Contexts only
+
+err-security-error Code ::= local:26
+
+err-service-error Code ::= local:27
+
+err-sequence-number-error Code ::= local:28
+
+err-invalid-parameters-error Code ::= local:29
+
+err-message-group-error Code ::= local:30
+
+err-ms-extension-error Code ::= local:31
+
+err-register-ms-error Code ::= local:32
+
+err-modify-error Code ::= local:33
+
+err-entry-class-error Code ::= local:34
+
+END -- of MSAccessProtocol
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MSGeneralAttributeTypes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MSGeneralAttributeTypes.asn1
new file mode 100644
index 0000000000..99d34b2883
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MSGeneralAttributeTypes.asn1
@@ -0,0 +1,830 @@
+-- Module MSGeneralAttributeTypes (X.413:06/1999)
+MSGeneralAttributeTypes {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-attribute-types(2) version-1999(1)} DEFINITIONS ::=
+BEGIN
+
+-- Prologue
+IMPORTS
+ -- X413ATTRIBUTE information object class
+ X413ATTRIBUTE,
+ -- MS abstract-service data-types
+ AutoActionError, AutoActionType, CreationTime, EntryClassErrorParameter,
+ EntryType, MessageGroupName, MessageGroupErrorParameter, MS-EIT,
+ MSExtensionErrorParameter, RetrievalStatus, SequenceNumber,
+ ServiceErrorParameter
+ FROM MSAbstractService {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ abstract-service(1) version-1999(1)}
+ -- General-attribute-type Object Identifiers
+ id-att-ac-correlated-report-list, id-att-ac-report-subject-entry,
+ id-att-ac-report-summary, id-att-ac-uncorrelated-report-list,
+ id-att-auto-action-error, id-att-auto-action-registration-identifier,
+ id-att-auto-action-subject-entry, id-att-auto-action-type,
+ id-att-certificate-selectors, id-att-child-sequence-numbers,
+ id-att-content, id-att-content-confidentiality-algorithm-identifier,
+ id-att-content-correlator, id-att-content-identifier,
+ id-att-content-integrity-check, id-att-content-length,
+ id-att-content-returned, id-att-content-type,
+ id-att-conversion-with-loss-prohibited, id-att-converted-EITs,
+ id-att-creation-time, id-att-deferred-delivery-cancellation-time,
+ id-att-deferred-delivery-time, id-att-deletion-time, id-att-delivered-EITs,
+ id-att-delivery-flags, id-att-dl-exempted-recipients,
+ id-att-dl-expansion-history, id-att-dl-expansion-prohibited,
+ id-att-entry-type, id-att-internal-trace-information,
+ id-att-latest-delivery-time, id-att-locally-originated,
+ id-att-marked-for-deletion, id-att-message-delivery-envelope,
+ id-att-message-delivery-time, id-att-message-group-name,
+ id-att-message-identifier, id-att-message-notes,
+ id-att-message-origin-authentication-check, id-att-message-security-label,
+ id-att-message-submission-envelope, id-att-message-submission-time,
+ id-att-message-token, id-att-ms-originated, id-att-ms-submission-error,
+ id-att-multiple-originator-certificates, id-att-original-EITs,
+ id-att-originally-intended-recipient-name,
+ id-att-originating-MTA-certificate, id-att-originator-certificate,
+ id-att-originator-name, id-att-originator-report-request,
+ id-att-originator-return-address, id-att-other-recipient-names,
+ id-att-parent-sequence-number, id-att-per-message-indicators,
+ id-att-per-recipient-message-submission-fields,
+ id-att-per-recipient-probe-submission-fields,
+ id-att-per-recipient-report-delivery-fields, id-att-priority,
+ id-att-probe-origin-authentication-check, id-att-probe-submission-envelope,
+ id-att-proof-of-delivery-request, id-att-proof-of-submission,
+ id-att-recipient-certificate, id-att-recipient-names,
+ id-att-recipient-reassignment-prohibited, id-att-redirection-history,
+ id-att-report-delivery-envelope, id-att-reporting-DL-name,
+ id-att-reporting-MTA-certificate,
+ id-att-report-origin-authentication-check, id-att-retrieval-status,
+ id-att-security-classification, id-att-sequence-number,
+ id-att-signature-verification-status, id-att-storage-period,
+ id-att-storage-time, id-att-subject-submission-identifier,
+ id-att-this-recipient-name, id-att-trace-information
+ FROM MSObjectIdentifiers {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- Message Store matching-rules
+ bitStringMatch, contentCorrelatorMatch, contentIdentifierMatch,
+ mSSingleSubstringListElementsMatch, mSSingleSubstringListMatch,
+ mSSingleSubstringMatch, mSSubstringsMatch, mSStringCaseSensitiveMatch,
+ mSStringListElementsMatch, mSStringListMatch, mSStringMatch,
+ mSStringOrderingMatch, mTSIdentifierMatch, oRAddressElementsMatch,
+ oRAddressMatch, oRAddressSubstringElementsMatch, oRNameElementsMatch,
+ oRNameMatch, oRNameSingleElementMatch, oRNameSubstringElementsMatch,
+ redirectionOrDLExpansionElementsMatch, redirectionOrDLExpansionMatch,
+ redirectionOrDLExpansionSingleElementMatch,
+ redirectionOrDLExpansionSubstringElementsMatch, redirectionReasonMatch,
+ valueCountMatch
+ FROM MSMatchingRules {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-matching-rules(5) version-1999(1)}
+ -- MS abstract-service upper bounds
+ ub-entry-types, ub-message-notes-length
+ FROM MSUpperBounds {joint-iso-itu-t mhs(6) ms(4) modules(0) upper-bounds(4)
+ version-1994(0)}
+ -- MTS abstract-service data-types
+ CertificateSelectors, Content, ContentCorrelator, ContentIdentifier,
+ ContentIntegrityCheck, ContentLength, ConversionWithLossProhibited,
+ DeferredDeliveryTime, DeliveryFlags, DLExpansion, DLExpansionProhibited,
+ ExtendedCertificates, ImproperlySpecifiedRecipients, LatestDeliveryTime,
+ MessageDeliveryEnvelope, MessageDeliveryTime,
+ MessageOriginAuthenticationCheck, MessageSecurityLabel,
+ MessageSubmissionEnvelope, MessageSubmissionTime, MessageToken,
+ MTSIdentifier, OriginatingMTACertificate, OriginatorCertificate,
+ OriginatorReportRequest, OriginatorReturnAddress, ORName,
+ PerMessageIndicators, PerRecipientMessageSubmissionFields,
+ PerRecipientProbeSubmissionFields, PerRecipientReportDeliveryFields,
+ Priority, ProbeOriginAuthenticationCheck, ProbeSubmissionEnvelope,
+ ProofOfDeliveryRequest, ProofOfSubmission, RecipientReassignmentProhibited,
+ Redirection, ReportDeliveryEnvelope, ReportingDLName,
+ ReportingMTACertificate, ReportOriginAuthenticationCheck,
+ SecurityClassification, SecurityProblem, SubjectSubmissionIdentifier
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- MTS abstract-service upper bound
+ ub-recipients
+ FROM MTSUpperBounds {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ upper-bounds(3) version-1999(1)}
+ -- MTA abstract-service data-types
+ InternalTraceInformationElement, TraceInformationElement
+ FROM MTAAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mta-abstract-service(2) version-1999(1)}
+ -- Directory matching-rules
+ booleanMatch, integerMatch, integerOrderingMatch, uTCTimeMatch,
+ uTCTimeOrderingMatch
+ FROM SelectedAttributeTypes
+ objectIdentifierMatch
+ FROM InformationFramework
+
+ -- Authentication-service data-types
+ AlgorithmIdentifier
+ FROM AuthenticationFramework;
+
+-- X413ATTRIBUTE table
+AttributeTable X413ATTRIBUTE ::=
+ {GeneralAttributes | ContentSpecificAttributes}
+
+GeneralAttributes X413ATTRIBUTE ::=
+ {ms-child-sequence-numbers | mt-content |
+ mt-content-confidentiality-algorithm-identifier | mt-content-correlator |
+ mt-content-identifier | mt-content-integrity-check | ms-content-length |
+ ms-content-returned | mt-content-type | mt-conversion-with-loss-prohibited |
+ mt-converted-EITs | ms-creation-time | ms-delivered-EITs | mt-delivery-flags
+ | mt-dl-expansion-history | ms-entry-type | mt-message-delivery-envelope |
+ mt-message-delivery-time | mt-message-identifier |
+ mt-message-origin-authentication-check | mt-message-security-label |
+ mt-message-submission-time | mt-message-token | mt-original-EITs |
+ mt-originally-intended-recipient-name | mt-originator-certificate |
+ mt-originator-name | mt-other-recipient-names | ms-parent-sequence-number |
+ mt-per-recipient-report-delivery-fields | mt-priority |
+ mt-proof-of-delivery-request | mt-redirection-history |
+ mt-report-delivery-envelope | mt-reporting-DL-name |
+ mt-reporting-MTA-certificate | mt-report-origin-authentication-check |
+ ms-retrieval-status | mt-security-classification | ms-sequence-number |
+ mt-subject-submission-identifier | mt-this-recipient-name,
+ ... -- 1994 extension additions --, ms-ac-correlated-report-list |
+ ms-ac-report-subject-entry | ms-ac-report-summary |
+ ms-ac-uncorrelated-report-list | ms-auto-action-error |
+ ms-auto-action-registration-identifier | ms-auto-action-subject-entry |
+ ms-auto-action-type | mt-certificate-selectors |
+ ms-deferred-delivery-cancellation-time | mt-deferred-delivery-time |
+ ms-deletion-time | mt-dl-exempted-recipients | mt-dl-expansion-prohibited |
+ mt-internal-trace-information | mt-latest-delivery-time |
+ ms-locally-originated | ms-marked-for-deletion | ms-message-group-name |
+ ms-message-notes | mt-message-submission-envelope |
+ mt-multiple-originator-certificates | ms-originated | ms-submission-error |
+ mt-originating-MTA-certificate | mt-originator-report-request |
+ mt-originator-return-address | mt-per-message-indicators |
+ mt-per-recipient-message-submission-fields |
+ mt-per-recipient-probe-submission-fields |
+ mt-probe-origin-authentication-check | mt-probe-submission-envelope |
+ mt-proof-of-submission | mt-recipient-certificate | ms-recipient-names |
+ mt-recipient-reassignment-prohibited | ms-signature-verification-status |
+ ms-storage-period | ms-storage-time | mt-trace-information}
+
+ContentSpecificAttributes X413ATTRIBUTE ::=
+ {...}
+
+-- Attribute-types
+ms-ac-correlated-report-list X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReportLocation,
+ NUMERATION multi-valued,
+ ID id-att-ac-correlated-report-list
+}
+
+ReportLocation ::= CHOICE {
+ no-correlated-reports [0] NULL,
+ location [1] SEQUENCE OF PerRecipientReport
+}
+
+PerRecipientReport ::= SEQUENCE {
+ report-entry [0] SequenceNumber,
+ position [1] INTEGER(1..ub-recipients) DEFAULT 1
+}
+
+ms-ac-report-subject-entry X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-ac-report-subject-entry
+}
+
+ms-ac-report-summary X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReportSummary,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION multi-valued,
+ ID id-att-ac-report-summary
+}
+
+ReportSummary ::= ENUMERATED {
+ no-report-requested(0) -- non-delivery report suppressed --,
+ no-report-received(1) -- non-delivery report requested --,
+ report-outstanding(2) -- delivery report requested --, delivery-cancelled(3),
+ delivery-report-from-another-recipient(4),
+ non-delivery-report-from-another-recipient(5),
+ delivery-report-from-intended-recipient(6),
+ non-delivery-report-from-intended-recipient(7)}
+
+ms-ac-uncorrelated-report-list X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX PerRecipientReport,
+ NUMERATION multi-valued,
+ ID id-att-ac-uncorrelated-report-list
+}
+
+ms-auto-action-error X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AutoActionError,
+ NUMERATION single-valued,
+ ID id-att-auto-action-error
+}
+
+ms-auto-action-registration-identifier X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX INTEGER,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-auto-action-registration-identifier
+}
+
+ms-auto-action-subject-entry X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-auto-action-subject-entry
+}
+
+ms-auto-action-type X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AutoActionType,
+ EQUALITY MATCHING-RULE objectIdentifierMatch,
+ NUMERATION single-valued,
+ ID id-att-auto-action-type
+}
+
+mt-certificate-selectors X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX CertificateSelectors,
+ NUMERATION single-valued,
+ ID id-att-certificate-selectors
+}
+
+ms-child-sequence-numbers X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ NUMERATION multi-valued,
+ ID id-att-child-sequence-numbers
+}
+
+mt-content X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX Content,
+ NUMERATION single-valued,
+ ID id-att-content
+}
+
+mt-content-confidentiality-algorithm-identifier X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX AlgorithmIdentifier,
+ NUMERATION single-valued,
+ ID id-att-content-confidentiality-algorithm-identifier
+}
+
+mt-content-correlator X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ContentCorrelator,
+ EQUALITY MATCHING-RULE contentCorrelatorMatch,
+ NUMERATION single-valued,
+ ID id-att-content-correlator
+}
+
+mt-content-identifier X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ContentIdentifier,
+ EQUALITY MATCHING-RULE contentIdentifierMatch,
+ NUMERATION single-valued,
+ ID id-att-content-identifier
+}
+
+mt-content-integrity-check X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ContentIntegrityCheck,
+ NUMERATION single-valued,
+ ID id-att-content-integrity-check
+}
+
+ms-content-length X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ContentLength,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-content-length
+}
+
+ms-content-returned X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX BOOLEAN,
+ EQUALITY MATCHING-RULE booleanMatch,
+ NUMERATION single-valued,
+ ID id-att-content-returned
+}
+
+mt-content-type X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX OBJECT IDENTIFIER,
+ EQUALITY MATCHING-RULE objectIdentifierMatch,
+ NUMERATION single-valued,
+ ID id-att-content-type
+}
+
+mt-conversion-with-loss-prohibited X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ConversionWithLossProhibited,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-att-conversion-with-loss-prohibited
+}
+
+mt-converted-EITs X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MS-EIT,
+ EQUALITY MATCHING-RULE objectIdentifierMatch,
+ NUMERATION multi-valued,
+ ID id-att-converted-EITs
+}
+
+ms-creation-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX CreationTime,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-creation-time
+}
+
+ms-deferred-delivery-cancellation-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DeferredDeliveryCancellationTime,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-deferred-delivery-cancellation-time
+}
+
+DeferredDeliveryCancellationTime ::= UTCTime
+
+mt-deferred-delivery-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DeferredDeliveryTime,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-deferred-delivery-time
+}
+
+ms-deletion-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DeletionTime,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-deletion-time
+}
+
+DeletionTime ::= UTCTime
+
+ms-delivered-EITs X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MS-EIT,
+ EQUALITY MATCHING-RULE objectIdentifierMatch,
+ NUMERATION multi-valued,
+ ID id-att-delivered-EITs
+}
+
+mt-delivery-flags X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DeliveryFlags,
+ EQUALITY MATCHING-RULE bitStringMatch,
+ NUMERATION single-valued,
+ ID id-att-delivery-flags
+}
+
+mt-dl-exempted-recipients X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORName,
+ EQUALITY MATCHING-RULE oRNameMatch,
+ OTHER MATCHING-RULES
+ {oRNameElementsMatch | oRNameSubstringElementsMatch |
+ oRNameSingleElementMatch, ...},
+ NUMERATION multi-valued,
+ ID id-att-dl-exempted-recipients
+}
+
+mt-dl-expansion-history X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DLExpansion,
+ OTHER MATCHING-RULES
+ {redirectionOrDLExpansionMatch | redirectionOrDLExpansionElementsMatch |
+ redirectionOrDLExpansionSubstringElementsMatch |
+ redirectionOrDLExpansionSingleElementMatch, ...},
+ NUMERATION multi-valued,
+ ID id-att-dl-expansion-history
+}
+
+mt-dl-expansion-prohibited X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX DLExpansionProhibited,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-att-dl-expansion-prohibited
+}
+
+ms-entry-type X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX EntryType,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE
+ integerOrderingMatch, -- rule not defined in 1988 Application Contexts
+
+ NUMERATION single-valued,
+ ID id-att-entry-type
+}
+
+mt-internal-trace-information X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX InternalTraceInformationElement,
+ NUMERATION multi-valued,
+ ID id-att-internal-trace-information
+}
+
+mt-latest-delivery-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX LatestDeliveryTime,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-latest-delivery-time
+}
+
+ms-locally-originated X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX NULL,
+ NUMERATION single-valued,
+ ID id-att-locally-originated
+}
+
+ms-marked-for-deletion X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX NULL,
+ NUMERATION single-valued,
+ ID id-att-marked-for-deletion
+}
+
+mt-message-delivery-envelope X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageDeliveryEnvelope,
+ NUMERATION single-valued,
+ ID id-att-message-delivery-envelope
+}
+
+mt-message-delivery-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageDeliveryTime,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-message-delivery-time
+}
+
+ms-message-group-name X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageGroupName,
+ EQUALITY MATCHING-RULE mSStringListMatch,
+ OTHER MATCHING-RULES
+ {mSSingleSubstringListMatch | mSStringListElementsMatch |
+ mSSingleSubstringListElementsMatch | valueCountMatch, ...},
+ NUMERATION multi-valued,
+ ID id-att-message-group-name
+}
+
+mt-message-identifier X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MTSIdentifier,
+ EQUALITY MATCHING-RULE
+ mTSIdentifierMatch, -- rule not defined in 1988 Application Contexts
+
+ NUMERATION single-valued,
+ ID id-att-message-identifier
+}
+
+ms-message-notes X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX GeneralString(SIZE (1..ub-message-notes-length)),
+ EQUALITY MATCHING-RULE mSStringMatch,
+ SUBSTRINGS MATCHING-RULE mSSubstringsMatch,
+ NUMERATION multi-valued,
+ ID id-att-message-notes
+}
+
+mt-message-origin-authentication-check X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageOriginAuthenticationCheck,
+ NUMERATION single-valued,
+ ID id-att-message-origin-authentication-check
+}
+
+mt-message-security-label X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageSecurityLabel,
+ NUMERATION single-valued,
+ ID id-att-message-security-label
+}
+
+mt-message-submission-envelope X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageSubmissionEnvelope,
+ NUMERATION single-valued,
+ ID id-att-message-submission-envelope
+}
+
+mt-message-submission-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageSubmissionTime,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-message-submission-time
+}
+
+mt-message-token X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MessageToken,
+ NUMERATION single-valued,
+ ID id-att-message-token
+}
+
+ms-originated X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX NULL,
+ NUMERATION single-valued,
+ ID id-att-ms-originated
+}
+
+ms-submission-error X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SubmissionError,
+ NUMERATION single-valued,
+ ID id-att-ms-submission-error
+}
+
+SubmissionError ::= CHOICE {
+ submission-control-violated [1] NULL,
+ originator-invalid [2] NULL,
+ recipient-improperly-specified [3] ImproperlySpecifiedRecipients,
+ element-of-service-not-subscribed [4] NULL,
+ inconsistent-request [11] NULL,
+ security-error [12] SecurityProblem,
+ unsupported-critical-function [13] NULL,
+ remote-bind-error [15] NULL,
+ service-error [27] ServiceErrorParameter,
+ message-group-error [30] MessageGroupErrorParameter,
+ ms-extension-error [31] MSExtensionErrorParameter,
+ entry-class-error [34] EntryClassErrorParameter
+}
+
+mt-multiple-originator-certificates X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ExtendedCertificates,
+ NUMERATION single-valued,
+ ID id-att-multiple-originator-certificates
+}
+
+mt-original-EITs X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX MS-EIT,
+ EQUALITY MATCHING-RULE objectIdentifierMatch,
+ NUMERATION multi-valued,
+ ID id-att-original-EITs
+}
+
+mt-originally-intended-recipient-name X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORName,
+ EQUALITY MATCHING-RULE oRNameMatch,
+ OTHER MATCHING-RULES
+ {oRNameElementsMatch | oRNameSubstringElementsMatch |
+ oRNameSingleElementMatch, ...},
+ NUMERATION single-valued,
+ ID id-att-originally-intended-recipient-name
+}
+
+mt-originating-MTA-certificate X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX OriginatingMTACertificate,
+ NUMERATION single-valued,
+ ID id-att-originating-MTA-certificate
+}
+
+mt-originator-certificate X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX OriginatorCertificate,
+ NUMERATION single-valued,
+ ID id-att-originator-certificate
+}
+
+mt-originator-name X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORName,
+ EQUALITY MATCHING-RULE oRNameMatch,
+ OTHER MATCHING-RULES
+ {oRNameElementsMatch | oRNameSubstringElementsMatch |
+ oRNameSingleElementMatch, ...},
+ NUMERATION single-valued,
+ ID id-att-originator-name
+}
+
+mt-originator-report-request X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX OriginatorReportRequest,
+ NUMERATION multi-valued,
+ ID id-att-originator-report-request
+}
+
+mt-originator-return-address X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX OriginatorReturnAddress,
+ NUMERATION single-valued,
+ ID id-att-originator-return-address
+}
+
+mt-other-recipient-names X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORName,
+ EQUALITY MATCHING-RULE oRNameMatch,
+ OTHER MATCHING-RULES
+ {oRNameElementsMatch | oRNameSubstringElementsMatch |
+ oRNameSingleElementMatch, ...},
+ NUMERATION multi-valued,
+ ID id-att-other-recipient-names
+}
+
+ms-parent-sequence-number X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-parent-sequence-number
+}
+
+mt-per-message-indicators X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX PerMessageIndicators,
+ EQUALITY MATCHING-RULE bitStringMatch,
+ NUMERATION single-valued,
+ ID id-att-per-message-indicators
+}
+
+mt-per-recipient-message-submission-fields X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX PerRecipientMessageSubmissionFields,
+ NUMERATION multi-valued,
+ ID id-att-per-recipient-message-submission-fields
+}
+
+mt-per-recipient-probe-submission-fields X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX PerRecipientProbeSubmissionFields,
+ NUMERATION multi-valued,
+ ID id-att-per-recipient-probe-submission-fields
+}
+
+mt-per-recipient-report-delivery-fields X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX PerRecipientReportDeliveryFields,
+ NUMERATION multi-valued,
+ ID id-att-per-recipient-report-delivery-fields
+}
+
+mt-priority X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX Priority,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE
+ integerOrderingMatch, -- rule not defined in 1988 Application Contexts
+
+ NUMERATION single-valued,
+ ID id-att-priority
+}
+
+mt-probe-origin-authentication-check X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ProbeOriginAuthenticationCheck,
+ NUMERATION single-valued,
+ ID id-att-probe-origin-authentication-check
+}
+
+mt-probe-submission-envelope X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ProbeSubmissionEnvelope,
+ NUMERATION single-valued,
+ ID id-att-probe-submission-envelope
+}
+
+mt-proof-of-delivery-request X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ProofOfDeliveryRequest,
+ EQUALITY MATCHING-RULE
+ integerMatch, -- rule not defined in 1988 Application Contexts
+
+ NUMERATION single-valued,
+ ID id-att-proof-of-delivery-request
+}
+
+mt-proof-of-submission X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ProofOfSubmission,
+ NUMERATION single-valued,
+ ID id-att-proof-of-submission
+}
+
+mt-recipient-certificate X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ExtendedCertificates,
+ NUMERATION single-valued,
+ ID id-att-recipient-certificate
+}
+
+ms-recipient-names X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORName,
+ EQUALITY MATCHING-RULE oRNameMatch,
+ OTHER MATCHING-RULES
+ {oRNameElementsMatch | oRNameSubstringElementsMatch |
+ oRNameSingleElementMatch, ...},
+ NUMERATION multi-valued,
+ ID id-att-recipient-names
+}
+
+mt-recipient-reassignment-prohibited X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX RecipientReassignmentProhibited,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-att-recipient-reassignment-prohibited
+}
+
+mt-redirection-history X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX Redirection,
+ OTHER MATCHING-RULES
+ {redirectionOrDLExpansionMatch | redirectionOrDLExpansionElementsMatch |
+ redirectionOrDLExpansionSubstringElementsMatch |
+ redirectionOrDLExpansionSingleElementMatch | redirectionReasonMatch,
+ ...},
+ NUMERATION multi-valued,
+ ID id-att-redirection-history
+}
+
+mt-report-delivery-envelope X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReportDeliveryEnvelope,
+ NUMERATION single-valued,
+ ID id-att-report-delivery-envelope
+}
+
+mt-reporting-DL-name X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReportingDLName,
+ EQUALITY MATCHING-RULE
+ oRNameMatch, -- rule not defined in 1988 Application Contexts
+
+ OTHER MATCHING-RULES
+ {oRNameElementsMatch | oRNameSubstringElementsMatch |
+ oRNameSingleElementMatch, ...},
+ NUMERATION single-valued,
+ ID id-att-reporting-DL-name
+}
+
+mt-reporting-MTA-certificate X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReportingMTACertificate,
+ NUMERATION single-valued,
+ ID id-att-reporting-MTA-certificate
+}
+
+mt-report-origin-authentication-check X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ReportOriginAuthenticationCheck,
+ NUMERATION single-valued,
+ ID id-att-report-origin-authentication-check
+}
+
+ms-retrieval-status X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX RetrievalStatus,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-att-retrieval-status
+}
+
+mt-security-classification X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SecurityClassification,
+ EQUALITY MATCHING-RULE integerMatch,
+ NUMERATION single-valued,
+ ID id-att-security-classification
+}
+
+ms-sequence-number X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SequenceNumber,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-sequence-number
+}
+
+ms-signature-verification-status X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SignatureVerificationStatus,
+ NUMERATION single-valued,
+ ID id-att-signature-verification-status
+}
+
+SignatureVerificationStatus ::= SET {
+ content-integrity-check
+ [0] SignatureStatus DEFAULT signature-absent,
+ message-origin-authentication-check
+ [1] SignatureStatus DEFAULT signature-absent,
+ message-token
+ [2] SignatureStatus DEFAULT signature-absent,
+ report-origin-authentication-check
+ [3] SignatureStatus DEFAULT signature-absent,
+ proof-of-delivery
+ [4] SignatureStatus DEFAULT signature-absent,
+ proof-of-submission
+ [5] SignatureStatus DEFAULT signature-absent
+}
+
+SignatureStatus ::= INTEGER {
+ signature-absent(0), verification-in-progress(1), verification-succeeded(2),
+ verification-not-possible(3), content-converted(4), signature-encrypted(5),
+ algorithm-not-supported(6), certificate-not-obtainable(7),
+ verification-failed(8)}
+
+ms-storage-period X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX StoragePeriod,
+ EQUALITY MATCHING-RULE integerMatch,
+ ORDERING MATCHING-RULE integerOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-storage-period
+}
+
+StoragePeriod ::= INTEGER -- seconds
+
+ms-storage-time X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX StorageTime,
+ EQUALITY MATCHING-RULE uTCTimeMatch,
+ ORDERING MATCHING-RULE uTCTimeOrderingMatch,
+ NUMERATION single-valued,
+ ID id-att-storage-time
+}
+
+StorageTime ::= UTCTime
+
+mt-subject-submission-identifier X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX SubjectSubmissionIdentifier,
+ EQUALITY MATCHING-RULE
+ mTSIdentifierMatch, -- rule not defined in 1988 Application Contexts
+
+ NUMERATION single-valued,
+ ID id-att-subject-submission-identifier
+}
+
+mt-this-recipient-name X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX ORName,
+ EQUALITY MATCHING-RULE oRNameMatch,
+ OTHER MATCHING-RULES
+ {oRNameElementsMatch | oRNameSubstringElementsMatch |
+ oRNameSingleElementMatch, ...},
+ NUMERATION single-valued,
+ ID id-att-this-recipient-name
+}
+
+mt-trace-information X413ATTRIBUTE ::= {
+ WITH ATTRIBUTE-SYNTAX TraceInformationElement,
+ NUMERATION multi-valued,
+ ID id-att-trace-information
+}
+
+END -- of MSGeneralAttributeTypes
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MSGeneralAutoActionTypes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MSGeneralAutoActionTypes.asn1
new file mode 100644
index 0000000000..eceae4ab44
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MSGeneralAutoActionTypes.asn1
@@ -0,0 +1,118 @@
+-- Module MSGeneralAutoActionTypes (X.413:06/1999)
+MSGeneralAutoActionTypes {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-auto-action-types(3) version-1994(0)} DEFINITIONS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS
+ -- AUTO-ACTION and AUTO-ACTION-ERROR information object classes
+ AUTO-ACTION,
+ AUTO-ACTION-ERROR,
+ -- MS abstract-service data-types and abstract-errors
+ EntryClass, EntryInformationSelection, EntryModification, Filter,
+ message-group-error, modify-error, service-error, SequenceNumber
+ --==
+ FROM MSAbstractService {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ abstract-service(1) version-1999(1)}
+ -- MS Object Identifiers
+ id-aae-auto-alert-error, id-act-auto-alert, id-act-auto-correlate-reports,
+ id-act-auto-delete, id-act-auto-modify
+ --==
+ FROM MSObjectIdentifiers {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- MS abstract-service upper bounds
+ ub-alert-addresses, ub-modifications, ub-supplementary-info-length
+ --==
+ FROM MSUpperBounds {joint-iso-itu-t mhs(6) ms(4) modules(0) upper-bounds(4)
+ version-1994(0)}
+ -- MTS abstract-service
+ security-error
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)};
+
+-- Auto-action table information object set
+AutoActionTable AUTO-ACTION ::=
+ {GeneralAutoActions | ContentSpecificAutoActions}
+
+GeneralAutoActions AUTO-ACTION ::=
+ {auto-alert, ... -- 1994 extension additions --, auto-modify |
+ auto-correlate-reports | auto-delete}
+
+ContentSpecificAutoActions AUTO-ACTION ::=
+ {...}
+
+-- Auto-action error table information object set
+AutoActionErrorTable AUTO-ACTION-ERROR ::=
+ {GeneralAutoActionErrors | ContentSpecificAutoActionErrors}
+
+GeneralAutoActionErrors AUTO-ACTION-ERROR ::=
+ {auto-alert-error | modify-error | service-error | security-error |
+ message-group-error, ... -- For future extension additions --}
+
+ContentSpecificAutoActionErrors AUTO-ACTION-ERROR ::=
+ {...}
+
+-- Auto-action-types
+auto-alert AUTO-ACTION ::= {
+ REGISTRATION PARAMETER IS AutoAlertRegistrationParameter
+ ERRORS {auto-alert-error}
+ IDENTIFIED BY id-act-auto-alert
+}
+
+AutoAlertRegistrationParameter ::= SET {
+ filter [0] Filter OPTIONAL,
+ alert-destinations
+ [1] SEQUENCE SIZE (1..ub-alert-addresses) OF AlertDestination OPTIONAL,
+ requested-attributes [2] EntryInformationSelection OPTIONAL,
+ -- 1994 extension
+ suppress-alert-destinations [3] BOOLEAN DEFAULT TRUE
+}
+
+AlertDestination ::= SEQUENCE {
+ alert-address EXTERNAL,
+ alert-qualifier OCTET STRING OPTIONAL
+}
+
+--
+auto-modify AUTO-ACTION ::= {
+ REGISTRATION PARAMETER IS AutoModifyRegistrationParameter
+ ERRORS
+ {security-error | service-error | modify-error | message-group-error}
+ IDENTIFIED BY id-act-auto-modify
+}
+
+AutoModifyRegistrationParameter ::= SET {
+ entry-class [0] EntryClass DEFAULT delivery,
+ filter [1] Filter OPTIONAL,
+ modifications [2] SEQUENCE SIZE (1..ub-modifications) OF EntryModification
+}
+
+--
+auto-correlate-reports AUTO-ACTION ::= {
+ IDENTIFIED BY id-act-auto-correlate-reports
+}
+
+--
+auto-delete AUTO-ACTION ::= {
+ ERRORS {security-error}
+ IDENTIFIED BY id-act-auto-delete
+}
+
+-- Auto-action errors
+auto-alert-error AUTO-ACTION-ERROR ::= {
+ PARAMETER SEQUENCE SIZE (1..ub-alert-addresses) OF AutoAlertErrorIndication
+ CODE global:id-aae-auto-alert-error
+}
+
+AutoAlertErrorIndication ::= SET {
+ failing-alert-destination [0] AlertDestination OPTIONAL,
+ supplementary-information
+ [1] GeneralString(SIZE (1..ub-supplementary-info-length)) OPTIONAL
+}
+
+END -- of MSGeneralAutoActionTypes
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MSMatchingRules.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MSMatchingRules.asn1
new file mode 100644
index 0000000000..37c894da86
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MSMatchingRules.asn1
@@ -0,0 +1,225 @@
+-- Module MSMatchingRules (X.413:06/1999)
+MSMatchingRules {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ general-matching-rules(5) version-1999(1)} DEFINITIONS ::=
+BEGIN
+
+-- Prologue
+--Exports everything
+IMPORTS
+ -- MATCHING-RULE information object class and Directory matching-rules
+ MATCHING-RULE, objectIdentifierMatch
+ --==
+ FROM InformationFramework
+ bitStringMatch, booleanMatch, generalizedTimeMatch,
+ generalizedTimeOrderingMatch, integerMatch, integerOrderingMatch,
+ uTCTimeMatch, uTCTimeOrderingMatch
+ --==
+ FROM SelectedAttributeTypes
+
+ -- Matching-rule Object Identifiers
+ id-mr-content-correlator-match, id-mr-content-identifier-match,
+ id-mr-ms-single-substring-list-elements-match,
+ id-mr-ms-single-substring-list-match, id-mr-ms-single-substring-match,
+ id-mr-ms-substrings-match, id-mr-msstring-case-sensitive-match,
+ id-mr-msstring-list-elements-match, id-mr-msstring-list-match,
+ id-mr-msstring-match, id-mr-msstring-ordering-match,
+ id-mr-mts-identifier-match, id-mr-oraddress-elements-match,
+ id-mr-oraddress-match, id-mr-oraddress-substring-elements-match,
+ id-mr-orname-elements-match, id-mr-orname-match,
+ id-mr-orname-single-element-match, id-mr-orname-substring-elements-match,
+ id-mr-redirection-or-dl-expansion-elements-match,
+ id-mr-redirection-or-dl-expansion-match,
+ id-mr-redirection-or-dl-expansion-single-element-match,
+ id-mr-redirection-or-dl-expansion-substring-elements-match,
+ id-mr-redirection-reason-match, id-mr-value-count-match
+ --==
+ FROM MSObjectIdentifiers {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- MS upper bounds
+ ub-attribute-values, ub-msstring-match
+ --==
+ FROM MSUpperBounds {joint-iso-itu-t mhs(6) ms(4) modules(0) upper-bounds(4)
+ version-1994(0)}
+ -- MTS abstract service
+ ContentCorrelator, ContentIdentifier, MTSIdentifier, ORAddress,
+ ORAddressAndOptionalDirectoryName, ORName, RedirectionReason
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)};
+
+-- Matching rule table information object set
+MatchingRuleTable MATCHING-RULE ::=
+ {GeneralMatchingRules | ContentSpecificMatchingRules}
+
+GeneralMatchingRules MATCHING-RULE ::=
+ {bitStringMatch | booleanMatch | contentIdentifierMatch | integerMatch |
+ integerOrderingMatch | mSStringCaseSensitiveMatch | objectIdentifierMatch |
+ oRNameMatch | uTCTimeMatch | uTCTimeOrderingMatch,
+ ... -- 1994 extension additions --, contentCorrelatorMatch |
+ generalizedTimeMatch | generalizedTimeOrderingMatch | mSSingleSubstringMatch
+ | mSStringCaseSensitiveMatch | mSStringListElementsMatch | mSStringListMatch
+ | mSStringMatch | mSStringOrderingMatch | mSSingleSubstringListElementsMatch
+ | mSSingleSubstringListMatch | mSSubstringsMatch | mTSIdentifierMatch |
+ oRAddressElementsMatch | oRAddressMatch | oRAddressSubstringElementsMatch |
+ oRNameElementsMatch | oRNameMatch | oRNameSingleElementMatch |
+ oRNameSubstringElementsMatch | redirectionOrDLExpansionElementsMatch |
+ redirectionOrDLExpansionMatch | redirectionOrDLExpansionSingleElementMatch |
+ redirectionOrDLExpansionSubstringElementsMatch | redirectionReasonMatch |
+ valueCountMatch}
+
+ContentSpecificMatchingRules MATCHING-RULE ::=
+ {...}
+
+-- MS String assertion-syntax
+MSString{INTEGER:maxSize} ::= CHOICE {
+ printable PrintableString(SIZE (1..maxSize)),
+ teletex TeletexString(SIZE (1..maxSize)),
+ general GeneralString(SIZE (1..maxSize)),
+ universal UniversalString(SIZE (1..maxSize)),
+ bmp BMPString(SIZE (1..maxSize))
+}
+
+-- String matching-rules
+mSStringMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-msstring-match
+}
+
+mSStringOrderingMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-msstring-ordering-match
+}
+
+mSSubstringsMatch MATCHING-RULE ::= {
+ SYNTAX SubstringAssertion
+ ID id-mr-ms-substrings-match
+}
+
+SubstringAssertion ::=
+ SEQUENCE OF
+ CHOICE {initial [0] MSString{ub-msstring-match},
+ any [1] MSString{ub-msstring-match},
+ final [2] MSString{ub-msstring-match}}
+
+-- at most one initial and one final component
+mSSingleSubstringMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-ms-single-substring-match
+}
+
+mSStringCaseSensitiveMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-msstring-case-sensitive-match
+}
+
+mSStringListMatch MATCHING-RULE ::= {
+ SYNTAX SEQUENCE OF MSString{ub-msstring-match}
+ ID id-mr-msstring-list-match
+}
+
+mSStringListElementsMatch MATCHING-RULE ::= {
+ SYNTAX SEQUENCE OF MSString{ub-msstring-match}
+ ID id-mr-msstring-list-elements-match
+}
+
+mSSingleSubstringListMatch MATCHING-RULE ::= {
+ SYNTAX SEQUENCE OF MSString{ub-msstring-match}
+ ID id-mr-ms-single-substring-list-match
+}
+
+mSSingleSubstringListElementsMatch MATCHING-RULE ::= {
+ SYNTAX SEQUENCE OF MSString{ub-msstring-match}
+ ID id-mr-ms-single-substring-list-elements-match
+}
+
+-- Syntax-based matching-rule
+valueCountMatch MATCHING-RULE ::= {
+ SYNTAX INTEGER(1..ub-attribute-values)
+ ID id-mr-value-count-match
+}
+
+-- Matching-rules for complex Message Store attributes
+-- OR-address matching-rules
+oRAddressMatch MATCHING-RULE ::= {
+ SYNTAX ORAddress
+ ID id-mr-oraddress-match
+}
+
+oRAddressElementsMatch MATCHING-RULE ::= {
+ SYNTAX ORAddress
+ ID id-mr-oraddress-elements-match
+}
+
+oRAddressSubstringElementsMatch MATCHING-RULE ::= {
+ SYNTAX ORAddress
+ ID id-mr-oraddress-substring-elements-match
+}
+
+-- OR-name matching-rules
+oRNameMatch MATCHING-RULE ::= {SYNTAX ORName
+ ID id-mr-orname-match
+}
+
+oRNameElementsMatch MATCHING-RULE ::= {
+ SYNTAX ORName
+ ID id-mr-orname-elements-match
+}
+
+oRNameSubstringElementsMatch MATCHING-RULE ::= {
+ SYNTAX ORName
+ ID id-mr-orname-substring-elements-match
+}
+
+oRNameSingleElementMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-orname-single-element-match
+}
+
+-- Redirection or DL-expansion matching rules
+redirectionOrDLExpansionMatch MATCHING-RULE ::= {
+ SYNTAX ORAddressAndOptionalDirectoryName
+ ID id-mr-redirection-or-dl-expansion-match
+}
+
+redirectionOrDLExpansionElementsMatch MATCHING-RULE ::= {
+ SYNTAX ORAddressAndOptionalDirectoryName
+ ID id-mr-redirection-or-dl-expansion-elements-match
+}
+
+redirectionOrDLExpansionSingleElementMatch MATCHING-RULE ::= {
+ SYNTAX MSString {ub-msstring-match}
+ ID id-mr-redirection-or-dl-expansion-single-element-match
+}
+
+redirectionOrDLExpansionSubstringElementsMatch MATCHING-RULE ::= {
+ SYNTAX ORAddressAndOptionalDirectoryName
+ ID id-mr-redirection-or-dl-expansion-substring-elements-match
+}
+
+redirectionReasonMatch MATCHING-RULE ::= {
+ SYNTAX RedirectionReason
+ ID id-mr-redirection-reason-match
+}
+
+-- MTS-identifier matching rule
+mTSIdentifierMatch MATCHING-RULE ::= {
+ SYNTAX MTSIdentifier
+ ID id-mr-mts-identifier-match
+}
+
+-- Content-correlator matching rule
+contentCorrelatorMatch MATCHING-RULE ::= {
+ SYNTAX ContentCorrelator
+ ID id-mr-content-correlator-match
+}
+
+-- Content-identifier matching rule
+contentIdentifierMatch MATCHING-RULE ::= {
+ SYNTAX ContentIdentifier
+ ID id-mr-content-identifier-match
+}
+
+END -- of MSMatchingRules
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MSObjectIdentifiers.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MSObjectIdentifiers.asn1
new file mode 100644
index 0000000000..df194f838c
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MSObjectIdentifiers.asn1
@@ -0,0 +1,322 @@
+-- Module MSObjectIdentifiers (X.413:06/1999)
+MSObjectIdentifiers {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ object-identifiers(0) version-1999(1)} DEFINITIONS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS
+ ID, id-ms
+ --==
+ FROM MHSObjectIdentifiers {joint-iso-itu-t mhs(6) arch(5) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- Categories
+id-mod -- modules -- ID ::= {id-ms 0}
+
+id-ot -- objects -- ID ::= {id-ms 1}
+
+id-pt -- port types -- ID ::= {id-ms 2}
+
+id-att -- attribute types -- ID ::= {id-ms 3}
+
+id-act -- auto-action types -- ID ::= {id-ms 4}
+
+id-crt -- contracts -- ID ::= {id-ms 5}
+
+id-cp -- connection-packages -- ID ::= {id-ms 6}
+
+id-aae -- auto-action-errors-- ID ::= {id-ms 7}
+
+id-mr -- matching-rules -- ID ::= {id-ms 8}
+
+id-ext -- extensions -- ID ::= {id-ms 9}
+
+id-alg -- algorithms -- ID ::= {id-ms 10}
+
+-- Modules
+id-mod-object-identifiers ID ::= {id-mod 0} -- not definitive
+
+id-mod-abstract-service ID ::= {id-mod 1} -- not definitive
+
+id-mod-attribute-types ID ::= {id-mod 2} -- not definitive
+
+id-mod-action-types ID ::= {id-mod 3} -- not definitive
+
+id-mod-upper-bounds ID ::= {id-mod 4} -- not definitive
+
+id-mod-matching-rules ID ::= {id-mod 5} -- not definitive
+
+-- Objects
+id-ot-ms ID ::= {id-ot 0}
+
+id-ot-ms-user ID ::= {id-ot 1}
+
+-- Port types
+id-pt-retrieval-88 ID ::= {id-pt 0}
+
+id-pt-retrieval-94 ID ::= {id-pt 1}
+
+id-pt-ms-submission ID ::= {id-pt 2}
+
+-- Contracts
+id-crt-ms-access-88 ID ::= {id-crt 0}
+
+id-crt-ms-access-94 ID ::= {id-crt 1}
+
+-- Connection-packages
+id-cp-ms-connection ID ::= {id-cp 0}
+
+-- Attribute-types
+id-att-ac-correlated-report-list ID ::= {id-att 42}
+
+id-att-ac-report-subject-entry ID ::= {id-att 76}
+
+id-att-ac-report-summary ID ::= {id-att 43}
+
+id-att-ac-uncorrelated-report-list ID ::= {id-att 44}
+
+id-att-auto-action-error ID ::= {id-att 46}
+
+id-att-auto-action-registration-identifier ID ::= {id-att 47}
+
+id-att-auto-action-subject-entry ID ::= {id-att 48}
+
+id-att-auto-action-type ID ::= {id-att 49}
+
+id-att-certificate-selectors ID ::= {id-att 80}
+
+id-att-child-sequence-numbers ID ::= {id-att 0}
+
+id-att-content ID ::= {id-att 1}
+
+id-att-content-confidentiality-algorithm-identifier ID ::= {id-att 2}
+
+id-att-content-correlator ID ::= {id-att 3}
+
+id-att-content-identifier ID ::= {id-att 4}
+
+id-att-content-integrity-check ID ::= {id-att 5}
+
+id-att-content-length ID ::= {id-att 6}
+
+id-att-content-returned ID ::= {id-att 7}
+
+id-att-content-type ID ::= {id-att 8}
+
+id-att-conversion-with-loss-prohibited ID ::= {id-att 9}
+
+id-att-converted-EITs ID ::= {id-att 10}
+
+id-att-creation-time ID ::= {id-att 11}
+
+id-att-deferred-delivery-cancellation-time ID ::= {id-att 50}
+
+id-att-deferred-delivery-time ID ::= {id-att 51}
+
+id-att-deletion-time ID ::= {id-att 52}
+
+id-att-delivered-EITs ID ::= {id-att 12}
+
+id-att-delivery-flags ID ::= {id-att 13}
+
+id-att-dl-exempted-recipients ID ::= {id-att 78}
+
+id-att-dl-expansion-history ID ::= {id-att 14}
+
+id-att-dl-expansion-prohibited ID ::= {id-att 53}
+
+id-att-entry-type ID ::= {id-att 16}
+
+id-att-internal-trace-information ID ::= {id-att 54}
+
+id-att-latest-delivery-time ID ::= {id-att 55}
+
+id-att-locally-originated ID ::= {id-att 77}
+
+id-att-marked-for-deletion ID ::= {id-att 56}
+
+id-att-message-delivery-envelope ID ::= {id-att 18}
+
+id-att-message-delivery-time ID ::= {id-att 20}
+
+id-att-message-group-name ID ::= {id-att 57}
+
+id-att-message-identifier ID ::= {id-att 19}
+
+id-att-message-notes ID ::= {id-att 58}
+
+id-att-message-origin-authentication-check ID ::= {id-att 21}
+
+id-att-message-security-label ID ::= {id-att 22}
+
+id-att-message-submission-envelope ID ::= {id-att 59}
+
+id-att-message-submission-time ID ::= {id-att 23}
+
+id-att-message-token ID ::= {id-att 24}
+
+id-att-ms-originated ID ::= {id-att 60}
+
+id-att-ms-submission-error ID ::= {id-att 61}
+
+id-att-multiple-originator-certificates ID ::= {id-att 81}
+
+id-att-original-EITs ID ::= {id-att 25}
+
+id-att-originally-intended-recipient-name ID ::= {id-att 17}
+
+id-att-originating-MTA-certificate ID ::= {id-att 62}
+
+id-att-originator-certificate ID ::= {id-att 26}
+
+id-att-originator-name ID ::= {id-att 27}
+
+id-att-originator-report-request ID ::= {id-att 63}
+
+id-att-originator-return-address ID ::= {id-att 64}
+
+id-att-other-recipient-names ID ::= {id-att 28}
+
+id-att-parent-sequence-number ID ::= {id-att 29}
+
+id-att-per-message-indicators ID ::= {id-att 65}
+
+id-att-per-recipient-message-submission-fields ID ::= {id-att 66}
+
+id-att-per-recipient-probe-submission-fields ID ::= {id-att 67}
+
+id-att-per-recipient-report-delivery-fields ID ::= {id-att 30}
+
+id-att-priority ID ::= {id-att 31}
+
+id-att-probe-origin-authentication-check ID ::= {id-att 68}
+
+id-att-probe-submission-envelope ID ::= {id-att 69}
+
+id-att-proof-of-delivery-request ID ::= {id-att 32}
+
+id-att-proof-of-submission ID ::= {id-att 70}
+
+id-att-recipient-certificate ID ::= {id-att 82}
+
+id-att-recipient-names ID ::= {id-att 71}
+
+id-att-recipient-reassignment-prohibited ID ::= {id-att 72}
+
+id-att-redirection-history ID ::= {id-att 33}
+
+id-att-report-delivery-envelope ID ::= {id-att 34}
+
+id-att-reporting-DL-name ID ::= {id-att 35}
+
+id-att-reporting-MTA-certificate ID ::= {id-att 36}
+
+id-att-report-origin-authentication-check ID ::= {id-att 37}
+
+id-att-retrieval-status ID ::= {id-att 15}
+
+id-att-security-classification ID ::= {id-att 38}
+
+id-att-sequence-number ID ::= {id-att 39}
+
+id-att-signature-verification-status ID ::= {id-att 79}
+
+id-att-storage-period ID ::= {id-att 73}
+
+id-att-storage-time ID ::= {id-att 74}
+
+id-att-subject-submission-identifier ID ::= {id-att 40}
+
+id-att-this-recipient-name ID ::= {id-att 41}
+
+id-att-trace-information ID ::= {id-att 75}
+
+-- Auto-action-types
+id-act-ipm-auto-forward ID ::=
+ {id-act 0} -- Reserved for use in
+
+-- ITU-T Rec. X.420 |
+-- ISO/IEC 10021-7
+id-act-auto-alert ID ::= {id-act 1}
+
+id-act-auto-correlate-reports ID ::= {id-act 2}
+
+id-act-auto-delete ID ::= {id-act 3}
+
+id-act-auto-modify ID ::= {id-act 4}
+
+-- Auto-action errors
+id-aae-auto-alert-error ID ::= {id-aae 0}
+
+-- Matching-rules
+id-mr-content-correlator-match ID ::= {id-mr 1}
+
+id-mr-content-identifier-match ID ::= {id-mr 2}
+
+id-mr-ms-single-substring-list-elements-match ID ::= {id-mr 3}
+
+id-mr-ms-single-substring-list-match ID ::= {id-mr 4}
+
+id-mr-ms-single-substring-match ID ::= {id-mr 5}
+
+id-mr-ms-substrings-match ID ::= {id-mr 6}
+
+id-mr-msstring-case-sensitive-match ID ::= {id-mr 7}
+
+id-mr-msstring-list-elements-match ID ::= {id-mr 8}
+
+id-mr-msstring-list-match ID ::= {id-mr 9}
+
+id-mr-msstring-match ID ::= {id-mr 10}
+
+id-mr-msstring-ordering-match ID ::= {id-mr 11}
+
+id-mr-mts-identifier-match ID ::= {id-mr 12}
+
+id-mr-oraddress-elements-match ID ::= {id-mr 13}
+
+id-mr-oraddress-match ID ::= {id-mr 14}
+
+id-mr-oraddress-substring-elements-match ID ::= {id-mr 15}
+
+id-mr-orname-elements-match ID ::= {id-mr 16}
+
+id-mr-orname-match ID ::= {id-mr 17}
+
+id-mr-orname-single-element-match ID ::= {id-mr 18}
+
+id-mr-orname-substring-elements-match ID ::= {id-mr 19}
+
+id-mr-redirection-or-dl-expansion-elements-match ID ::= {id-mr 20}
+
+id-mr-redirection-or-dl-expansion-match ID ::= {id-mr 21}
+
+id-mr-redirection-or-dl-expansion-single-element-match ID ::= {id-mr 25}
+
+id-mr-redirection-or-dl-expansion-substring-elements-match ID ::= {id-mr 22}
+
+id-mr-redirection-reason-match ID ::= {id-mr 23}
+
+id-mr-value-count-match ID ::= {id-mr 24}
+
+-- Extensions
+id-ext-modify-capability ID ::= {id-ext 0}
+
+id-ext-modify-retrieval-status-capability ID ::= {id-ext 1}
+
+id-ext-originator-certificate-selectors-override ID ::= {id-ext 2}
+
+id-ext-originator-token ID ::= {id-ext 3}
+
+id-ext-protected-change-credentials ID ::= {id-ext 4}
+
+id-ext-protected-change-credentials-capability ID ::= {id-ext 5}
+
+-- Algorithms
+id-alg-password-xor ID ::= {id-alg 0}
+
+END -- of MSObjectIdentifiers
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MSUpperBounds.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MSUpperBounds.asn1
new file mode 100644
index 0000000000..6494fbd3ef
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MSUpperBounds.asn1
@@ -0,0 +1,77 @@
+-- Module MSUpperBounds (X.413:06/1999)
+MSUpperBounds {joint-iso-itu-t mhs(6) ms(4) modules(0) upper-bounds(4)
+ version-1994(0)} DEFINITIONS ::=
+BEGIN
+
+-- Exports everything
+IMPORTS -- nothing -- ;
+
+-- Upper Bounds
+ub-alert-addresses INTEGER ::= 16
+
+ub-attribute-values INTEGER ::= 32767 -- (215 - 1) the largest integer
+
+-- representable in 16 bits
+ub-attributes-supported INTEGER ::= 1024
+
+ub-auto-action-errors INTEGER ::= 32767 -- (215 - 1) the largest integer
+
+-- representable in 16 bits
+ub-auto-actions INTEGER ::= 128
+
+ub-auto-registrations INTEGER ::= 1024
+
+ub-default-registrations INTEGER ::= 1024
+
+ub-entry-classes INTEGER ::= 128
+
+ub-entry-types INTEGER ::= 16
+
+ub-error-reasons INTEGER ::= 16
+
+ub-extensions INTEGER ::= 32
+
+ub-group-depth INTEGER ::= 64
+
+ub-group-descriptor-length INTEGER ::= 256
+
+ub-group-part-length INTEGER ::= 128
+
+ub-information-bases INTEGER ::= 16
+
+ub-matching-rules INTEGER ::= 1024
+
+ub-message-groups INTEGER ::= 8192
+
+ub-message-notes-length INTEGER ::= 1024
+
+ub-messages INTEGER ::= 2147483647 -- (231 - 1) the largest integer
+
+-- representable in 32 bits
+ub-modifications INTEGER ::=
+ 32767 -- (215 - 1) the largest integer
+
+-- representable in 16 bits
+ub-msstring-match INTEGER ::= 512
+
+ub-per-auto-action INTEGER ::= 32767 -- (215 - 1) the largest integer
+
+-- representable in 16 bits
+ub-per-entry INTEGER ::= 1024
+
+ub-service-information-length INTEGER ::= 2048
+
+ub-summaries INTEGER ::= 16
+
+ub-supplementary-info-length INTEGER ::= 256
+
+ub-ua-registration-identifier-length INTEGER ::= 32
+
+ub-ua-registrations INTEGER ::= 128
+
+ub-restrictions INTEGER ::= 16
+
+END -- of MSUpperBounds
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MTAAbstractService.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MTAAbstractService.asn1
new file mode 100644
index 0000000000..38035c77ae
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MTAAbstractService.asn1
@@ -0,0 +1,481 @@
+-- Module MTAAbstractService (X.411:06/1999)
+MTAAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mta-abstract-service(2) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS
+ -- Remote Operations
+ CONNECTION-PACKAGE, CONTRACT
+ --==
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ emptyUnbind
+ --==
+ FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
+ remote-operations(4) useful-definitions(7) version1(0)}
+ -- MTS Abstract Service Parameters
+ ABSTRACT-ERROR, ABSTRACT-OPERATION, administration, AdministrationDomainName,
+ certificate-selectors, certificate-selectors-override, Content,
+ ContentIdentifier, ContentLength, ContentType,
+ content-confidentiality-algorithm-identifier, content-correlator,
+ content-integrity-check, conversion-with-loss-prohibited,
+ ConvertedEncodedInformationTypes, CountryName, DeferredDeliveryTime,
+ delivery, dl-exempted-recipients, dl-expansion-history,
+ dl-expansion-prohibited, ExplicitConversion, EXTENSION, ExtensionField{},
+ GlobalDomainIdentifier, InitiatorCredentials, latest-delivery-time,
+ message-origin-authentication-check, message-security-label, message-token,
+ MHS-OBJECT, MTAName, MTSIdentifier, multiple-originator-certificates,
+ ORAddressAndOptionalDirectoryName, OriginalEncodedInformationTypes,
+ originator-and-DL-expansion-history, originator-certificate,
+ originator-return-address, PerMessageIndicators, physical-delivery-modes,
+ physical-delivery-report-request, physical-forwarding-address,
+ physical-forwarding-address-request, physical-forwarding-prohibited,
+ physical-rendition-attributes, PORT, Priority, PrivateDomainIdentifier,
+ PrivateExtensions, probe-origin-authentication-check, proof-of-delivery,
+ proof-of-delivery-request, recipient-certificate,
+ recipient-number-for-advice, recipient-reassignment-prohibited,
+ redirection-history, registered-mail-type, reporting-DL-name,
+ reporting-MTA-certificate, reporting-MTA-name, ReportType,
+ report-origin-authentication-check, requested-delivery-method,
+ ResponderCredentials, SecurityContext, submission,
+ SupplementaryInformation, Time
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- IPM Information Objects
+ IPMPerRecipientEnvelopeExtensions
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- Object Identifiers
+ id-cp-mta-connect, id-ct-mta-transfer, id-ot-mta, id-pt-transfer
+ --==
+ FROM MTSObjectIdentifiers {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- Upper Bounds
+ ub-bit-options, ub-integer-options, ub-recipients, ub-transfers
+ --==
+ FROM MTSUpperBounds {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ upper-bounds(3) version-1999(1)};
+
+-- Objects
+mta MHS-OBJECT ::= {BOTH {mta-transfer}
+ ID id-ot-mta
+}
+
+-- Contracts
+mta-transfer CONTRACT ::= {
+ CONNECTION mta-connect
+ OPERATIONS OF {transfer}
+ ID id-ct-mta-transfer
+}
+
+-- Connection package
+mta-connect CONNECTION-PACKAGE ::= {
+ BIND mta-bind
+ UNBIND mta-unbind
+ ID id-cp-mta-connect
+}
+
+-- Ports
+transfer PORT ::= {
+ OPERATIONS {message-transfer | probe-transfer | report-transfer}
+ ID id-pt-transfer
+}
+
+-- MTA-bind and MTA-unbind
+mta-bind ABSTRACT-OPERATION ::= {
+ ARGUMENT MTABindArgument
+ RESULT MTABindResult
+ ERRORS {mta-bind-error}
+}
+
+mta-unbind ABSTRACT-OPERATION ::= emptyUnbind
+
+MTABindArgument ::= CHOICE {
+ unauthenticated NULL, -- if no authentication is required
+ authenticated
+ [1] SET {-- if authentication is required--initiator-name
+ [0] MTAName,
+ initiator-credentials
+ [1] InitiatorCredentials
+ (WITH COMPONENTS {
+ ...,
+ protected ABSENT
+ }),
+ security-context
+ [2] SecurityContext OPTIONAL
+ }
+}
+
+MTABindResult ::= CHOICE {
+ unauthenticated NULL, -- if no authentication is required
+ authenticated
+ [1] SET {-- if authentication is required--responder-name
+ [0] MTAName,
+ responder-credentials
+ [1] ResponderCredentials
+ (WITH COMPONENTS {
+ ...,
+ protected ABSENT
+ })}
+}
+
+mta-bind-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ INTEGER {busy(0), authentication-error(2), unacceptable-dialogue-mode(3),
+ unacceptable-security-context(4),
+ inadequate-association-confidentiality(5)}(0..ub-integer-options)
+}
+
+-- Transfer Port
+message-transfer ABSTRACT-OPERATION ::= {ARGUMENT Message
+}
+
+probe-transfer ABSTRACT-OPERATION ::= {ARGUMENT Probe
+}
+
+report-transfer ABSTRACT-OPERATION ::= {ARGUMENT Report
+}
+
+Message ::= SEQUENCE {envelope MessageTransferEnvelope,
+ content Content
+}
+
+Probe ::= ProbeTransferEnvelope
+
+Report ::= SEQUENCE {
+ envelope ReportTransferEnvelope,
+ content ReportTransferContent
+}
+
+-- Message Transfer Envelope
+MessageTransferEnvelope ::= SET {
+ COMPONENTS OF PerMessageTransferFields,
+ per-recipient-fields
+ [2] SEQUENCE SIZE (1..ub-recipients) OF PerRecipientMessageTransferFields
+}
+
+PerMessageTransferFields ::= SET {
+ message-identifier MessageIdentifier,
+ originator-name OriginatorName,
+ original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
+ content-type ContentType,
+ content-identifier ContentIdentifier OPTIONAL,
+ priority Priority DEFAULT normal,
+ per-message-indicators PerMessageIndicators DEFAULT {},
+ deferred-delivery-time [0] DeferredDeliveryTime OPTIONAL,
+ per-domain-bilateral-information
+ [1] SEQUENCE SIZE (1..ub-transfers) OF PerDomainBilateralInformation
+ OPTIONAL,
+ trace-information TraceInformation,
+ extensions
+ [3] SET OF ExtensionField{{MessageTransferExtensions}} DEFAULT {}
+}
+
+MessageTransferExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ recipient-reassignment-prohibited | dl-expansion-prohibited |
+ conversion-with-loss-prohibited | latest-delivery-time |
+ originator-return-address | originator-certificate |
+ content-confidentiality-algorithm-identifier |
+ message-origin-authentication-check | message-security-label |
+ content-correlator | dl-exempted-recipients | certificate-selectors |
+ multiple-originator-certificates | dl-expansion-history |
+ internal-trace-information | PrivateExtensions, ...}
+
+PerRecipientMessageTransferFields ::= SET {
+ recipient-name RecipientName,
+ originally-specified-recipient-number
+ [0] OriginallySpecifiedRecipientNumber,
+ per-recipient-indicators [1] PerRecipientIndicators,
+ explicit-conversion [2] ExplicitConversion OPTIONAL,
+ extensions
+ [3] SET OF ExtensionField{{PerRecipientMessageTransferExtensions}}
+ DEFAULT {}
+}
+
+PerRecipientMessageTransferExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ originator-requested-alternate-recipient | requested-delivery-method |
+ physical-forwarding-prohibited | physical-forwarding-address-request |
+ physical-delivery-modes | registered-mail-type | recipient-number-for-advice
+ | physical-rendition-attributes | physical-delivery-report-request |
+ message-token | content-integrity-check | proof-of-delivery-request |
+ certificate-selectors-override | recipient-certificate | redirection-history
+ | IPMPerRecipientEnvelopeExtensions | PrivateExtensions, ...}
+
+-- Probe Transfer Envelope
+ProbeTransferEnvelope ::= SET {
+ COMPONENTS OF PerProbeTransferFields,
+ per-recipient-fields
+ [2] SEQUENCE SIZE (1..ub-recipients) OF PerRecipientProbeTransferFields
+}
+
+PerProbeTransferFields ::= SET {
+ probe-identifier ProbeIdentifier,
+ originator-name OriginatorName,
+ original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
+ content-type ContentType,
+ content-identifier ContentIdentifier OPTIONAL,
+ content-length [0] ContentLength OPTIONAL,
+ per-message-indicators PerMessageIndicators DEFAULT {},
+ per-domain-bilateral-information
+ [1] SEQUENCE SIZE (1..ub-transfers) OF PerDomainBilateralInformation
+ OPTIONAL,
+ trace-information TraceInformation,
+ extensions
+ [3] SET OF ExtensionField{{ProbeTransferExtensions}} DEFAULT {}
+}
+
+ProbeTransferExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ recipient-reassignment-prohibited | dl-expansion-prohibited |
+ conversion-with-loss-prohibited | originator-certificate |
+ message-security-label | content-correlator |
+ probe-origin-authentication-check | internal-trace-information |
+ PrivateExtensions, ...}
+
+PerRecipientProbeTransferFields ::= SET {
+ recipient-name RecipientName,
+ originally-specified-recipient-number
+ [0] OriginallySpecifiedRecipientNumber,
+ per-recipient-indicators [1] PerRecipientIndicators,
+ explicit-conversion [2] ExplicitConversion OPTIONAL,
+ extensions
+ [3] SET OF ExtensionField{{PerRecipientProbeTransferExtensions}}
+ DEFAULT {}
+}
+
+PerRecipientProbeTransferExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ originator-requested-alternate-recipient | requested-delivery-method |
+ physical-rendition-attributes | redirection-history | PrivateExtensions,
+ ...}
+
+-- Report Transfer Envelope
+ReportTransferEnvelope ::= SET {
+ report-identifier ReportIdentifier,
+ report-destination-name ReportDestinationName,
+ trace-information TraceInformation,
+ extensions
+ [1] SET OF ExtensionField{{ReportTransferEnvelopeExtensions}} DEFAULT {}
+}
+
+ReportTransferEnvelopeExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ message-security-label | redirection-history |
+ originator-and-DL-expansion-history | reporting-DL-name |
+ reporting-MTA-certificate | report-origin-authentication-check |
+ internal-trace-information | reporting-MTA-name | PrivateExtensions,
+ ...}
+
+-- Report Transfer Content
+ReportTransferContent ::= SET {
+ COMPONENTS OF PerReportTransferFields,
+ per-recipient-fields
+ [0] SEQUENCE SIZE (1..ub-recipients) OF PerRecipientReportTransferFields
+}
+
+PerReportTransferFields ::= SET {
+ subject-identifier SubjectIdentifier,
+ subject-intermediate-trace-information
+ SubjectIntermediateTraceInformation OPTIONAL,
+ original-encoded-information-types
+ OriginalEncodedInformationTypes OPTIONAL,
+ content-type ContentType OPTIONAL,
+ content-identifier ContentIdentifier OPTIONAL,
+ returned-content [1] Content OPTIONAL,
+ additional-information [2] AdditionalInformation OPTIONAL,
+ extensions
+ [3] SET OF ExtensionField{{ReportTransferContentExtensions}} DEFAULT {}
+}
+
+ReportTransferContentExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ content-correlator | PrivateExtensions, ...}
+
+PerRecipientReportTransferFields ::= SET {
+ actual-recipient-name [0] ActualRecipientName,
+ originally-specified-recipient-number
+ [1] OriginallySpecifiedRecipientNumber,
+ per-recipient-indicators [2] PerRecipientIndicators,
+ last-trace-information [3] LastTraceInformation,
+ originally-intended-recipient-name
+ [4] OriginallyIntendedRecipientName OPTIONAL,
+ supplementary-information [5] SupplementaryInformation OPTIONAL,
+ extensions
+ [6] SET OF ExtensionField{{PerRecipientReportTransferExtensions}}
+ DEFAULT {}
+}
+
+PerRecipientReportTransferExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ redirection-history | physical-forwarding-address | recipient-certificate |
+ proof-of-delivery | PrivateExtensions, ...}
+
+-- Envelope & Report Content Fields
+MessageIdentifier ::= MTSIdentifier
+
+OriginatorName ::= ORAddressAndOptionalDirectoryName
+
+PerDomainBilateralInformation ::= SEQUENCE {
+ COMPONENTS OF BILATERAL.&id,
+ bilateral-information BILATERAL.&Type
+}
+
+BILATERAL ::= CLASS {&id BilateralDomain UNIQUE,
+ &Type
+}WITH SYNTAX {&Type,
+ IDENTIFIED BY &id
+}
+
+BilateralDomain ::= SEQUENCE {
+ country-name CountryName,
+ domain
+ CHOICE {administration-domain-name AdministrationDomainName,
+ private-domain
+ SEQUENCE {administration-domain-name
+ [0] AdministrationDomainName,
+ private-domain-identifier
+ [1] PrivateDomainIdentifier}}
+}
+
+RecipientName ::= ORAddressAndOptionalDirectoryName
+
+OriginallySpecifiedRecipientNumber ::= INTEGER(1..ub-recipients)
+
+PerRecipientIndicators ::= BIT STRING {
+ responsibility(0),
+ -- responsible 'one', not-responsible 'zero'
+ originating-MTA-report(1),
+ originating-MTA-non-delivery-report(2),
+ -- either originating-MTA-report, or originating-MTA-non-delivery-report,
+ -- or both, shall be 'one':
+ -- originating-MTA-report bit 'one' requests a 'report';
+ -- originating-MTA-non-delivery-report bit 'one' requests a 'non-delivery-report';
+ -- both bits 'one' requests an 'audited-report';
+ -- bits 0 - 2 'don't care' for Report Transfer Content
+ originator-report(3),
+ originator-non-delivery-report(4),
+ -- at most one bit shall be 'one':
+ -- originator-report bit 'one' requests a 'report';
+ -- originator-non-delivery-report bit 'one' requests a 'non-delivery-report';
+ -- both bits 'zero' requests 'no-report'
+ reserved-5(5), reserved-6(6), reserved-7(7)
+
+-- reserved- bits 5 - 7 shall be 'zero' --}(SIZE (8..ub-bit-options))
+
+ProbeIdentifier ::= MTSIdentifier
+
+ReportIdentifier ::= MTSIdentifier
+
+ReportDestinationName ::= ORAddressAndOptionalDirectoryName
+
+SubjectIdentifier ::= MessageOrProbeIdentifier
+
+MessageOrProbeIdentifier ::= MTSIdentifier
+
+SubjectIntermediateTraceInformation ::= TraceInformation
+
+-- AdditionalInformation is retained for backwards compatibility only,
+-- and use in new systems is strongly deprecated
+ADDITIONAL ::= CLASS {&Type
+}
+
+AdditionalInformation ::=
+ ADDITIONAL.&Type -- maximum ub-additional-info octets including all encoding
+
+ActualRecipientName ::= ORAddressAndOptionalDirectoryName
+
+LastTraceInformation ::= SET {
+ arrival-time [0] ArrivalTime,
+ converted-encoded-information-types
+ ConvertedEncodedInformationTypes OPTIONAL,
+ report-type [1] ReportType
+}
+
+OriginallyIntendedRecipientName ::= ORAddressAndOptionalDirectoryName
+
+-- Extension Fields
+originator-requested-alternate-recipient EXTENSION ::= {
+ OriginatorRequestedAlternateRecipient,
+ IDENTIFIED BY standard-extension:2
+}
+
+OriginatorRequestedAlternateRecipient ::= ORAddressAndOptionalDirectoryName
+
+trace-information EXTENSION ::= {
+ TraceInformation,
+ IDENTIFIED BY standard-extension:37
+}
+
+internal-trace-information EXTENSION ::= {
+ InternalTraceInformation,
+ IDENTIFIED BY standard-extension:38
+}
+
+InternalTraceInformation ::=
+ SEQUENCE SIZE (1..ub-transfers) OF InternalTraceInformationElement
+
+InternalTraceInformationElement ::= SEQUENCE {
+ global-domain-identifier GlobalDomainIdentifier,
+ mta-name MTAName,
+ mta-supplied-information MTASuppliedInformation
+}
+
+MTASuppliedInformation ::= SET {
+ arrival-time [0] ArrivalTime,
+ routing-action [2] RoutingAction,
+ attempted CHOICE {mta MTAName,
+ domain GlobalDomainIdentifier} OPTIONAL,
+ -- additional-actions --COMPONENTS OF InternalAdditionalActions
+}
+
+InternalAdditionalActions ::= AdditionalActions
+
+-- Common Parameter Types
+TraceInformation ::=
+ [APPLICATION 9] SEQUENCE SIZE (1..ub-transfers) OF TraceInformationElement
+
+TraceInformationElement ::= SEQUENCE {
+ global-domain-identifier GlobalDomainIdentifier,
+ domain-supplied-information DomainSuppliedInformation
+}
+
+DomainSuppliedInformation ::= SET {
+ arrival-time [0] ArrivalTime,
+ routing-action [2] RoutingAction,
+ attempted-domain GlobalDomainIdentifier OPTIONAL,
+ -- additional-actions --COMPONENTS OF AdditionalActions
+}
+
+AdditionalActions ::= SET {
+ deferred-time [1] DeferredTime OPTIONAL,
+ converted-encoded-information-types
+ ConvertedEncodedInformationTypes OPTIONAL,
+ other-actions [3] OtherActions DEFAULT {}
+}
+
+RoutingAction ::= ENUMERATED {relayed(0), rerouted(1)}
+
+DeferredTime ::= Time
+
+ArrivalTime ::= Time
+
+OtherActions ::= BIT STRING {redirected(0), dl-operation(1)
+}(SIZE (0..ub-bit-options))
+
+END -- of MTA Abstract Service
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAbstractService.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAbstractService.asn1
new file mode 100644
index 0000000000..68a5118bc8
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAbstractService.asn1
@@ -0,0 +1,2366 @@
+-- Module MTSAbstractService (X.411:06/1999)
+MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS
+ -- Remote Operations
+ CONNECTION-PACKAGE, CONTRACT, ERROR, OPERATION, OPERATION-PACKAGE,
+ ROS-OBJECT-CLASS
+ --==
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ emptyUnbind
+ --==
+ FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
+ remote-operations(4) useful-definitions(7) version1(0)}
+ -- MTA Abstract Service
+ internal-trace-information, trace-information
+ --==
+ FROM MTAAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mta-abstract-service(2) version-1999(1)}
+ -- MS Abstract Service Extension
+ forwarding-request
+ --==
+ FROM MSAbstractService {joint-iso-itu-t mhs(6) ms(4) modules(0)
+ abstract-service(1) version-1999(1)}
+ -- IPM Information Objects
+ IPMPerRecipientEnvelopeExtensions
+ --==
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- Object Identifiers
+ id-att-physicalRendition-basic, id-cp-mts-connect, id-ct-mts-access,
+ id-ct-mts-forced-access, id-ot-mts, id-ot-mts-user, id-pt-administration,
+ id-pt-delivery, id-pt-submission, id-tok-asymmetricToken
+ --==
+ FROM MTSObjectIdentifiers {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- Operation and Error Codes
+ err-control-violates-registration,
+ err-deferred-delivery-cancellation-rejected, err-delivery-control-violated,
+ err-element-of-service-not-subscribed, err-inconsistent-request,
+ err-message-submission-identifier-invalid,
+ err-new-credentials-unacceptable,
+ err-old-credentials-incorrectly-specified, err-operation-refused,
+ err-originator-invalid, err-recipient-improperly-specified,
+ err-register-rejected, err-remote-bind-error, err-security-error,
+ err-submission-control-violated, err-unsupported-critical-function,
+ op-cancel-deferred-delivery, op-change-credentials, op-delivery-control,
+ op-message-delivery, op-message-submission, op-probe-submission,
+ op-register, op-report-delivery, op-submission-control
+ --==
+ FROM MTSAccessProtocol {joint-iso-itu-t mhs(6) protocols(0) modules(0)
+ mts-access-protocol(1) version-1999(1)}
+ -- Directory Definitions
+ Name
+ --==
+ FROM InformationFramework
+ PresentationAddress
+ --==
+ FROM SelectedAttributeTypes
+ ALGORITHM, AlgorithmIdentifier, Certificates, ENCRYPTED{}, SIGNATURE{},
+ SIGNED{}
+ --==
+ FROM AuthenticationFramework
+
+ -- Certificate Extensions
+ CertificateAssertion
+ --==
+ FROM CertificateExtensions
+
+ -- Upper Bounds
+ ub-bit-options, ub-built-in-content-type,
+ ub-built-in-encoded-information-types, ub-certificates,
+ ub-common-name-length, ub-content-id-length, ub-content-length,
+ ub-content-types, ub-country-name-alpha-length,
+ ub-country-name-numeric-length, ub-deliverable-class, ub-diagnostic-codes,
+ ub-dl-expansions, ub-domain-defined-attributes,
+ ub-domain-defined-attribute-type-length,
+ ub-domain-defined-attribute-value-length, ub-domain-name-length,
+ ub-encoded-information-types, ub-extension-attributes, ub-extension-types,
+ ub-e163-4-number-length, ub-e163-4-sub-address-length,
+ ub-generation-qualifier-length, ub-given-name-length, ub-initials-length,
+ ub-integer-options, ub-local-id-length, ub-mta-name-length,
+ ub-mts-user-types, ub-numeric-user-id-length, ub-organization-name-length,
+ ub-organizational-units, ub-organizational-unit-name-length,
+ ub-orig-and-dl-expansions, ub-password-length, ub-pds-name-length,
+ ub-pds-parameter-length, ub-pds-physical-address-lines,
+ ub-postal-code-length, ub-privacy-mark-length, ub-queue-size,
+ ub-reason-codes, ub-recipients, ub-recipient-number-for-advice-length,
+ ub-redirections, ub-redirection-classes, ub-restrictions,
+ ub-security-categories, ub-security-labels, ub-security-problems,
+ ub-supplementary-info-length, ub-surname-length, ub-terminal-id-length,
+ ub-tsap-id-length, ub-unformatted-address-length,
+ ub-universal-generation-qualifier-length, ub-universal-given-name-length,
+ ub-universal-initials-length, ub-universal-surname-length,
+ ub-x121-address-length
+ --==
+ FROM MTSUpperBounds {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ upper-bounds(3) version-1999(1)};
+
+operationObject1 OPERATION ::= {LINKED {operationObject2}
+}
+
+operationObject2 OPERATION ::= {LINKED {operationObject3}
+}
+
+operationObject3 OPERATION ::= {LINKED {operationObject4}
+}
+
+operationObject4 OPERATION ::= {LINKED {...}
+}
+
+-- Objects
+MHS-OBJECT ::= ROS-OBJECT-CLASS
+
+mts MHS-OBJECT ::= {
+ INITIATES {mts-forced-access-contract}
+ RESPONDS {mts-access-contract}
+ ID id-ot-mts
+}
+
+mts-user MHS-OBJECT ::= {
+ INITIATES {mts-access-contract}
+ RESPONDS {mts-forced-access-contract}
+ ID id-ot-mts-user
+}
+
+-- Contracts
+mts-access-contract CONTRACT ::= {
+ CONNECTION mts-connect
+ INITIATOR CONSUMER OF {submission | delivery | administration}
+ ID id-ct-mts-access
+}
+
+mts-forced-access-contract CONTRACT ::= {
+ CONNECTION mts-connect
+ RESPONDER CONSUMER OF {submission | delivery | administration}
+ ID id-ct-mts-forced-access
+}
+
+-- Connection package
+mts-connect CONNECTION-PACKAGE ::= {
+ BIND mts-bind
+ UNBIND mts-unbind
+ ID id-cp-mts-connect
+}
+
+-- Ports
+PORT ::= OPERATION-PACKAGE
+
+submission PORT ::= {
+ OPERATIONS {operationObject1, ...}
+ CONSUMER INVOKES
+ {message-submission | probe-submission | cancel-deferred-delivery, ...}
+ SUPPLIER INVOKES {submission-control, ...}
+ ID id-pt-submission
+}
+
+delivery PORT ::= {
+ OPERATIONS {operationObject1, ...}
+ CONSUMER INVOKES {delivery-control, ...}
+ SUPPLIER INVOKES {message-delivery | report-delivery, ...}
+ ID id-pt-delivery
+}
+
+administration PORT ::= {
+ OPERATIONS {change-credentials, ...}
+ CONSUMER INVOKES {register, ...}
+ SUPPLIER INVOKES {operationObject1, ...}
+ ID id-pt-administration
+}
+
+-- MTS-bind and MTS-unbind
+ABSTRACT-OPERATION ::= OPERATION
+
+ABSTRACT-ERROR ::= ERROR
+
+mts-bind ABSTRACT-OPERATION ::= {
+ ARGUMENT MTSBindArgument
+ RESULT MTSBindResult
+ ERRORS {mts-bind-error}
+}
+
+MTSBindArgument ::= SET {
+ initiator-name ObjectName,
+ messages-waiting [1] EXPLICIT MessagesWaiting OPTIONAL,
+ initiator-credentials [2] InitiatorCredentials,
+ security-context [3] SecurityContext OPTIONAL,
+ ...,
+ extensions
+ [5] SET OF ExtensionField{{MTSBindExtensions}} DEFAULT {}
+}
+
+MTSBindExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+MTSBindResult ::= SET {
+ responder-name ObjectName,
+ messages-waiting [1] EXPLICIT MessagesWaiting OPTIONAL,
+ responder-credentials [2] ResponderCredentials,
+ ...,
+ extensions
+ [5] SET OF ExtensionField{{MTSBindResultExtensions}} DEFAULT {}
+}
+
+MTSBindResultExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+mts-bind-error ABSTRACT-ERROR ::= {
+ PARAMETER
+ INTEGER {busy(0), authentication-error(2), unacceptable-dialogue-mode(3),
+ unacceptable-security-context(4),
+ inadequate-association-confidentiality(5)}(0..ub-integer-options)
+}
+
+mts-unbind ABSTRACT-OPERATION ::= emptyUnbind
+
+-- Association Control Parameters
+ObjectName ::= CHOICE {
+ user-agent ORAddressAndOptionalDirectoryName,
+ mTA [0] MTAName,
+ message-store [4] ORAddressAndOptionalDirectoryName
+}
+
+MessagesWaiting ::= SET {
+ urgent [0] DeliveryQueue,
+ normal [1] DeliveryQueue,
+ non-urgent [2] DeliveryQueue
+}
+
+DeliveryQueue ::= SET {
+ messages [0] INTEGER(0..ub-queue-size),
+ octets [1] INTEGER(0..ub-content-length) OPTIONAL
+}
+
+InitiatorCredentials ::= Credentials
+
+ResponderCredentials ::= Credentials
+
+Credentials ::= CHOICE {
+ simple Password,
+ strong [0] StrongCredentials,
+ ...,
+ protected [1] ProtectedPassword
+}
+
+Password ::= CHOICE {
+ ia5-string IA5String(SIZE (0..ub-password-length)),
+ octet-string OCTET STRING(SIZE (0..ub-password-length))
+}
+
+StrongCredentials ::= SET {
+ bind-token [0] Token OPTIONAL,
+ certificate [1] Certificates OPTIONAL,
+ ...,
+ certificate-selector [2] CertificateAssertion OPTIONAL
+}
+
+ProtectedPassword ::= SET {
+ signature
+ SIGNATURE{SET {password Password,
+ time1 [0] UTCTime OPTIONAL,
+ time2 [1] UTCTime OPTIONAL,
+ random1 [2] BIT STRING OPTIONAL,
+ random2 [3] BIT STRING OPTIONAL}},
+ time1 [0] UTCTime OPTIONAL,
+ time2 [1] UTCTime OPTIONAL,
+ random1 [2] BIT STRING OPTIONAL,
+ random2 [3] BIT STRING OPTIONAL
+}
+
+SecurityContext ::= SET SIZE (1..ub-security-labels) OF SecurityLabel
+
+-- Submission Port
+message-submission ABSTRACT-OPERATION ::= {
+ ARGUMENT MessageSubmissionArgument
+ RESULT MessageSubmissionResult
+ ERRORS
+ {submission-control-violated | element-of-service-not-subscribed |
+ originator-invalid | recipient-improperly-specified |
+ inconsistent-request | security-error | unsupported-critical-function |
+ remote-bind-error}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {4 | 6 | 7}
+ CODE op-message-submission
+}
+
+MessageSubmissionArgument ::= SEQUENCE {
+ envelope MessageSubmissionEnvelope,
+ content Content
+}
+
+MessageSubmissionResult ::= SET {
+ message-submission-identifier MessageSubmissionIdentifier,
+ message-submission-time [0] MessageSubmissionTime,
+ content-identifier ContentIdentifier OPTIONAL,
+ extensions
+ [1] SET OF ExtensionField{{MessageSubmissionResultExtensions}} DEFAULT {}
+}
+
+MessageSubmissionResultExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ originating-MTA-certificate | proof-of-submission | PrivateExtensions,
+ ...}
+
+probe-submission ABSTRACT-OPERATION ::= {
+ ARGUMENT ProbeSubmissionArgument
+ RESULT ProbeSubmissionResult
+ ERRORS
+ {submission-control-violated | element-of-service-not-subscribed |
+ originator-invalid | recipient-improperly-specified |
+ inconsistent-request | security-error | unsupported-critical-function |
+ remote-bind-error}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {5}
+ CODE op-probe-submission
+}
+
+ProbeSubmissionArgument ::= ProbeSubmissionEnvelope
+
+ProbeSubmissionResult ::= SET {
+ probe-submission-identifier ProbeSubmissionIdentifier,
+ probe-submission-time [0] ProbeSubmissionTime,
+ content-identifier ContentIdentifier OPTIONAL,
+ extensions
+ [1] SET OF ExtensionField{{ProbeResultExtensions}} DEFAULT {}
+}
+
+ProbeResultExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions,
+-- at most one instance of each extension type
+cancel-deferred-delivery ABSTRACT-OPERATION ::= {
+ ARGUMENT CancelDeferredDeliveryArgument
+ RESULT CancelDeferredDeliveryResult
+ ERRORS
+ {deferred-delivery-cancellation-rejected |
+ message-submission-identifier-invalid | remote-bind-error}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {3}
+ CODE op-cancel-deferred-delivery
+}
+
+CancelDeferredDeliveryArgument ::= MessageSubmissionIdentifier
+
+CancelDeferredDeliveryResult ::= NULL
+
+submission-control ABSTRACT-OPERATION ::= {
+ ARGUMENT SubmissionControlArgument
+ RESULT SubmissionControlResult
+ ERRORS {security-error | remote-bind-error}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {3}
+ CODE op-submission-control
+}
+
+SubmissionControlArgument ::= SubmissionControls
+
+SubmissionControlResult ::= Waiting
+
+submission-control-violated ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-submission-control-violated
+}
+
+element-of-service-not-subscribed ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-element-of-service-not-subscribed
+}
+
+deferred-delivery-cancellation-rejected ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-deferred-delivery-cancellation-rejected
+}
+
+originator-invalid ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-originator-invalid
+}
+
+recipient-improperly-specified ABSTRACT-ERROR ::= {
+ PARAMETER ImproperlySpecifiedRecipients
+ CODE err-recipient-improperly-specified
+}
+
+ImproperlySpecifiedRecipients ::=
+ SEQUENCE SIZE (1..ub-recipients) OF RecipientName
+
+message-submission-identifier-invalid ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-message-submission-identifier-invalid
+}
+
+inconsistent-request ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-inconsistent-request
+}
+
+security-error ABSTRACT-ERROR ::= {
+ PARAMETER SecurityProblem
+ CODE err-security-error
+}
+
+SecurityProblem ::= INTEGER {
+ assemby-instructions-conflict-with-security-services(0),
+ authentication-problem(1), authentication-failure-on-subject-message(2),
+ confidentiality-association-problem(3), decryption-failed(4),
+ decryption-key-unobtainable(5), failure-of-proof-of-message(6),
+ forbidden-user-security-label-register(7),
+ incompatible-change-with-original-security-context(8),
+ integrity-failure-on-subject-message(9), invalid-security-label(10),
+ invalid-security-label-update(11), key-failure(12),
+ mandatory-parameter-absence(13), operation-security-failure(14),
+ redirection-prohibited(15), refused-alternate-recipient-name(16),
+ repudiation-failure-of-message(17),
+ responder-credentials-checking-problem(18), security-context-failure(19),
+ security-context-problem(20), security-policy-violation(21),
+ security-services-refusal(22), token-decryption-failed(23), token-error(24),
+ unable-to-aggregate-security-labels(25), unauthorised-dl-name(26),
+ unauthorised-entry-class(27),
+ unauthorised-originally-intended-recipient-name(28),
+ unauthorised-originator-name(29), unauthorised-recipient-name(30),
+ unauthorised-security-label-update(31), unauthorised-user-name(32),
+ unknown-security-label(33), unsupported-algorithm-identifier(34),
+ unsupported-security-policy(35)}(0..ub-security-problems)
+
+unsupported-critical-function ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-unsupported-critical-function
+}
+
+remote-bind-error ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-remote-bind-error
+}
+
+-- Submission Port Parameters
+MessageSubmissionIdentifier ::= MTSIdentifier
+
+MessageSubmissionTime ::= Time
+
+ProbeSubmissionIdentifier ::= MTSIdentifier
+
+ProbeSubmissionTime ::= Time
+
+SubmissionControls ::=
+ Controls
+ (WITH COMPONENTS {
+ ...,
+ permissible-content-types ABSENT,
+ permissible-encoded-information-types ABSENT
+ })
+
+Waiting ::= SET {
+ waiting-operations [0] Operations DEFAULT {},
+ waiting-messages [1] WaitingMessages DEFAULT {},
+ waiting-content-types
+ [2] SET SIZE (0..ub-content-types) OF ContentType DEFAULT {},
+ waiting-encoded-information-types EncodedInformationTypes OPTIONAL
+}
+
+Operations ::= BIT STRING {
+ probe-submission-or-report-delivery(0),
+ message-submission-or-message-delivery(1)}(SIZE (0..ub-bit-options))
+
+-- holding 'one', not-holding 'zero'
+WaitingMessages ::= BIT STRING {
+ long-content(0), low-priority(1), other-security-labels(2)
+}(SIZE (0..ub-bit-options))
+
+-- Delivery Port
+message-delivery ABSTRACT-OPERATION ::= {
+ ARGUMENT MessageDeliveryArgument
+ RESULT MessageDeliveryResult
+ ERRORS
+ {delivery-control-violated | security-error |
+ unsupported-critical-function}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {4 | 6 | 7}
+ CODE op-message-delivery
+}
+
+MessageDeliveryArgument ::= SEQUENCE {
+ COMPONENTS OF MessageDeliveryEnvelope,
+ content Content
+}
+
+MessageDeliveryResult ::= SET {
+ recipient-certificate [0] RecipientCertificate OPTIONAL,
+ proof-of-delivery [1] IMPLICIT ProofOfDelivery OPTIONAL,
+ ...,
+ extensions
+ [2] SET OF ExtensionField{{MessageDeliveryResultExtensions}} DEFAULT {}
+}
+
+MessageDeliveryResultExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+report-delivery ABSTRACT-OPERATION ::= {
+ ARGUMENT ReportDeliveryArgument
+ RESULT ReportDeliveryResult
+ ERRORS
+ {delivery-control-violated | security-error |
+ unsupported-critical-function}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {5}
+ CODE op-report-delivery
+}
+
+ReportDeliveryArgument ::= SET {
+ COMPONENTS OF ReportDeliveryEnvelope,
+ returned-content [0] Content OPTIONAL
+}
+
+ReportDeliveryResult ::= CHOICE {
+ empty-result NULL,
+ ...,
+ extensions
+ SET SIZE (1..MAX) OF ExtensionField{{ReportDeliveryResultExtensions}}
+}
+
+ReportDeliveryResultExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+delivery-control ABSTRACT-OPERATION ::= {
+ ARGUMENT DeliveryControlArgument
+ RESULT DeliveryControlResult
+ ERRORS
+ {control-violates-registration | security-error | operation-refused}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {3}
+ CODE op-delivery-control
+}
+
+DeliveryControlArgument ::= SET {
+ COMPONENTS OF DeliveryControls,
+ extensions
+ [6] SET OF ExtensionField{{DeliveryControlExtensions}} DEFAULT {}
+}
+
+DeliveryControlExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+DeliveryControlResult ::= SET {
+ COMPONENTS OF Waiting,
+ extensions
+ [6] SET OF ExtensionField{{DeliveryControlResultExtensions}} DEFAULT {}
+}
+
+DeliveryControlResultExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+delivery-control-violated ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-delivery-control-violated
+}
+
+control-violates-registration ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-control-violates-registration
+}
+
+operation-refused ABSTRACT-ERROR ::= {
+ PARAMETER RefusedOperation
+ CODE err-operation-refused
+}
+
+RefusedOperation ::= SET {
+ refused-argument
+ CHOICE {built-in-argument [1] RefusedArgument,
+ refused-extension EXTENSION.&id},
+ refusal-reason [2] RefusalReason
+}
+
+RefusedArgument ::= INTEGER {
+ user-name(0), user-address(1), deliverable-content-types(2),
+ deliverable-maximum-content-length(3),
+ deliverable-encoded-information-types-constraints(4),
+ deliverable-security-labels(5), recipient-assigned-redirections(6),
+ restricted-delivery(7),
+ retrieve-registrations(8), -- value 9 reserved for possible future extension to Register arguments
+ restrict(10), permissible-operations(11), permissible-lowest-priority(12),
+ permissible-encoded-information-types(13), permissible-content-types(14),
+ permissible-maximum-content-length(15), permissible-security-context(16)
+}(0..ub-integer-options)
+
+RefusalReason ::= INTEGER {
+ facility-unavailable(0), facility-not-subscribed(1),
+ parameter-unacceptable(2)}(0..ub-integer-options)
+
+-- Delivery Port Parameters
+RecipientCertificate ::= Certificates
+
+ProofOfDelivery ::=
+ SIGNATURE
+ {SEQUENCE {algorithm-identifier
+ ProofOfDeliveryAlgorithmIdentifier,
+ delivery-time MessageDeliveryTime,
+ this-recipient-name ThisRecipientName,
+ originally-intended-recipient-name
+ OriginallyIntendedRecipientName OPTIONAL,
+ content Content,
+ content-identifier ContentIdentifier OPTIONAL,
+ message-security-label
+ MessageSecurityLabel OPTIONAL}}
+
+ProofOfDeliveryAlgorithmIdentifier ::= AlgorithmIdentifier
+
+DeliveryControls ::= Controls
+
+Controls ::= SET {
+ restrict [0] BOOLEAN DEFAULT TRUE,
+ -- update 'TRUE', remove 'FALSE'
+ permissible-operations [1] Operations OPTIONAL,
+ permissible-maximum-content-length [2] ContentLength OPTIONAL,
+ permissible-lowest-priority Priority OPTIONAL,
+ permissible-content-types [4] ContentTypes OPTIONAL,
+ permissible-encoded-information-types
+ PermissibleEncodedInformationTypes OPTIONAL,
+ permissible-security-context [5] SecurityContext OPTIONAL
+}
+
+-- Note - The Tags [0], [1] and [2] are altered for the Register operation only.
+PermissibleEncodedInformationTypes ::=
+ EncodedInformationTypesConstraints
+
+-- Administration Port
+register ABSTRACT-OPERATION ::= {
+ ARGUMENT RegisterArgument
+ RESULT RegisterResult
+ ERRORS
+ {register-rejected | remote-bind-error | operation-refused |
+ security-error}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {5}
+ CODE op-register
+}
+
+RegisterArgument ::= SET {
+ user-name UserName OPTIONAL,
+ user-address [0] UserAddress OPTIONAL,
+ deliverable-class
+ SET SIZE (1..ub-deliverable-class) OF DeliverableClass OPTIONAL,
+ default-delivery-controls [2] EXPLICIT DefaultDeliveryControls OPTIONAL,
+ redirections [3] Redirections OPTIONAL,
+ restricted-delivery [4] RestrictedDelivery OPTIONAL,
+ retrieve-registrations [5] RegistrationTypes OPTIONAL,
+ extensions
+ [6] SET OF ExtensionField{{RegisterExtensions}} DEFAULT {}
+}
+
+RegisterExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+RegisterResult ::= CHOICE {
+ empty-result NULL,
+ non-empty-result
+ SET {registered-information
+ [0] RegisterArgument
+ (WITH COMPONENTS {
+ ...,
+ retrieve-registrations ABSENT
+ }) OPTIONAL,
+ extensions
+ [1] SET OF ExtensionField{{RegisterResultExtensions}} DEFAULT {}
+ }
+}
+
+RegisterResultExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+change-credentials ABSTRACT-OPERATION ::= {
+ ARGUMENT ChangeCredentialsArgument
+ RESULT NULL
+ ERRORS
+ {new-credentials-unacceptable | old-credentials-incorrectly-specified |
+ remote-bind-error | security-error}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {5}
+ CODE op-change-credentials
+}
+
+ChangeCredentialsArgument ::= SET {
+ old-credentials [0] Credentials(WITH COMPONENTS {
+ simple
+ }),
+ new-credentials [1] Credentials(WITH COMPONENTS {
+ simple
+ })
+}
+
+register-rejected ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-register-rejected
+}
+
+new-credentials-unacceptable ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-new-credentials-unacceptable
+}
+
+old-credentials-incorrectly-specified ABSTRACT-ERROR ::= {
+ PARAMETER NULL
+ CODE err-old-credentials-incorrectly-specified
+}
+
+-- Administration Port Parameters
+UserName ::= ORAddressAndOptionalDirectoryName
+
+UserAddress ::= CHOICE {
+ x121
+ [0] SEQUENCE {x121-address
+ NumericString(SIZE (1..ub-x121-address-length)) OPTIONAL,
+ tsap-id
+ PrintableString(SIZE (1..ub-tsap-id-length)) OPTIONAL
+ },
+ presentation [1] PSAPAddress
+}
+
+PSAPAddress ::= PresentationAddress
+
+DeliverableClass ::=
+ MessageClass
+ (WITH COMPONENTS {
+ ...,
+ priority ABSENT,
+ -- The 'objects' component shall always be defaulted.
+ -- objects ABSENT,
+ -- A component with a DEFAULT clause cannot be ABSENT
+ applies-only-to ABSENT
+ })
+
+DefaultDeliveryControls ::=
+ Controls
+ (WITH COMPONENTS {
+ ...,
+
+ -- The 'restrict' component shall always be defaulted.
+ -- restrict ABSENT,
+ -- A component with a DEFAULT clause cannot be ABSENT
+ permissible-security-context ABSENT
+ })
+
+Redirections ::= SEQUENCE SIZE (1..ub-redirections) OF RecipientRedirection
+
+RecipientRedirection ::= SET {
+ redirection-classes
+ [0] SET SIZE (1..ub-redirection-classes) OF RedirectionClass OPTIONAL,
+ recipient-assigned-alternate-recipient
+ [1] RecipientAssignedAlternateRecipient OPTIONAL
+}
+
+RedirectionClass ::= MessageClass
+
+MessageClass ::= SET {
+ content-types [0] ContentTypes OPTIONAL,
+ maximum-content-length [1] ContentLength OPTIONAL,
+ encoded-information-types-constraints
+ [2] EncodedInformationTypesConstraints OPTIONAL,
+ security-labels [3] SecurityContext OPTIONAL,
+ priority [4] SET OF Priority OPTIONAL,
+ objects
+ [5] ENUMERATED {messages(0), reports(1), both(2), ...
+ } DEFAULT both,
+ applies-only-to [6] SEQUENCE OF Restriction OPTIONAL, -- Not considered in the case of Reports
+ extensions
+ [7] SET OF ExtensionField{{MessageClassExtensions}} DEFAULT {}
+}
+
+EncodedInformationTypesConstraints ::= SEQUENCE {
+ unacceptable-eits [0] ExtendedEncodedInformationTypes OPTIONAL,
+ acceptable-eits [1] ExtendedEncodedInformationTypes OPTIONAL,
+ exclusively-acceptable-eits [2] ExtendedEncodedInformationTypes OPTIONAL
+}
+
+MessageClassExtensions EXTENSION ::= {PrivateExtensions, ...}
+
+-- May contain private extensions and future standardised extensions
+RecipientAssignedAlternateRecipient ::=
+ ORAddressAndOrDirectoryName
+
+RestrictedDelivery ::= SEQUENCE SIZE (1..ub-restrictions) OF Restriction
+
+Restriction ::= SET {
+ permitted BOOLEAN DEFAULT TRUE,
+ source-type
+ BIT STRING {originated-by(0), redirected-by(1), dl-expanded-by(2)}
+ DEFAULT {originated-by, redirected-by, dl-expanded-by},
+ source-name ExactOrPattern OPTIONAL
+}
+
+ExactOrPattern ::= CHOICE {
+ exact-match [0] ORName,
+ pattern-match [1] ORName
+}
+
+RegistrationTypes ::= SEQUENCE {
+ standard-parameters
+ [0] BIT STRING {user-name(0), user-address(1), deliverable-class(2),
+ default-delivery-controls(3), redirections(4),
+ restricted-delivery(5)} OPTIONAL,
+ extensions [1] SET OF EXTENSION.&id({RegisterExtensions}) OPTIONAL
+}
+
+-- Message Submission Envelope
+MessageSubmissionEnvelope ::= SET {
+ COMPONENTS OF PerMessageSubmissionFields,
+ per-recipient-fields
+ [1] SEQUENCE SIZE (1..ub-recipients) OF
+ PerRecipientMessageSubmissionFields
+}
+
+PerMessageSubmissionFields ::= SET {
+ originator-name OriginatorName,
+ original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
+ content-type ContentType,
+ content-identifier ContentIdentifier OPTIONAL,
+ priority Priority DEFAULT normal,
+ per-message-indicators PerMessageIndicators DEFAULT {},
+ deferred-delivery-time [0] DeferredDeliveryTime OPTIONAL,
+ extensions
+ [2] SET OF ExtensionField{{PerMessageSubmissionExtensions}} DEFAULT {}
+}
+
+PerMessageSubmissionExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ recipient-reassignment-prohibited | dl-expansion-prohibited |
+ conversion-with-loss-prohibited | latest-delivery-time |
+ originator-return-address | originator-certificate |
+ content-confidentiality-algorithm-identifier |
+ message-origin-authentication-check | message-security-label |
+ proof-of-submission-request | content-correlator | dl-exempted-recipients |
+ certificate-selectors | multiple-originator-certificates |
+ forwarding-request -- for MS Abstract Service only -- | PrivateExtensions,
+ ...}
+
+PerRecipientMessageSubmissionFields ::= SET {
+ recipient-name RecipientName,
+ originator-report-request [0] OriginatorReportRequest,
+ explicit-conversion [1] ExplicitConversion OPTIONAL,
+ extensions
+ [2] SET OF ExtensionField{{PerRecipientMessageSubmissionExtensions}}
+ DEFAULT {}
+}
+
+PerRecipientMessageSubmissionExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ originator-requested-alternate-recipient | requested-delivery-method |
+ physical-forwarding-prohibited | physical-forwarding-address-request |
+ physical-delivery-modes | registered-mail-type | recipient-number-for-advice
+ | physical-rendition-attributes | physical-delivery-report-request |
+ message-token | content-integrity-check | proof-of-delivery-request |
+ certificate-selectors-override | recipient-certificate |
+ IPMPerRecipientEnvelopeExtensions | PrivateExtensions, ...}
+
+-- Probe Submission Envelope
+ProbeSubmissionEnvelope ::= SET {
+ COMPONENTS OF PerProbeSubmissionFields,
+ per-recipient-fields
+ [3] SEQUENCE SIZE (1..ub-recipients) OF PerRecipientProbeSubmissionFields
+}
+
+PerProbeSubmissionFields ::= SET {
+ originator-name OriginatorName,
+ original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
+ content-type ContentType,
+ content-identifier ContentIdentifier OPTIONAL,
+ content-length [0] ContentLength OPTIONAL,
+ per-message-indicators PerMessageIndicators DEFAULT {},
+ extensions
+ [2] SET OF ExtensionField{{PerProbeSubmissionExtensions}} DEFAULT {}
+}
+
+PerProbeSubmissionExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ recipient-reassignment-prohibited | dl-expansion-prohibited |
+ conversion-with-loss-prohibited | originator-certificate |
+ message-security-label | content-correlator |
+ probe-origin-authentication-check | PrivateExtensions, ...}
+
+PerRecipientProbeSubmissionFields ::= SET {
+ recipient-name RecipientName,
+ originator-report-request [0] OriginatorReportRequest,
+ explicit-conversion [1] ExplicitConversion OPTIONAL,
+ extensions
+ [2] SET OF ExtensionField{{PerRecipientProbeSubmissionExtensions}}
+ DEFAULT {}
+}
+
+PerRecipientProbeSubmissionExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ originator-requested-alternate-recipient | requested-delivery-method |
+ physical-rendition-attributes | PrivateExtensions, ...}
+
+-- Message Delivery Envelope
+MessageDeliveryEnvelope ::= SEQUENCE {
+ message-delivery-identifier MessageDeliveryIdentifier,
+ message-delivery-time MessageDeliveryTime,
+ other-fields OtherMessageDeliveryFields
+}
+
+OtherMessageDeliveryFields ::= SET {
+ content-type DeliveredContentType,
+ originator-name DeliveredOriginatorName,
+ original-encoded-information-types
+ [1] OriginalEncodedInformationTypes OPTIONAL,
+ priority Priority DEFAULT normal,
+ delivery-flags [2] DeliveryFlags OPTIONAL,
+ other-recipient-names [3] OtherRecipientNames OPTIONAL,
+ this-recipient-name [4] ThisRecipientName,
+ originally-intended-recipient-name
+ [5] OriginallyIntendedRecipientName OPTIONAL,
+ converted-encoded-information-types
+ [6] ConvertedEncodedInformationTypes OPTIONAL,
+ message-submission-time [7] MessageSubmissionTime,
+ content-identifier [8] ContentIdentifier OPTIONAL,
+ extensions
+ [9] SET OF ExtensionField{{MessageDeliveryExtensions}} DEFAULT {}
+}
+
+MessageDeliveryExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ conversion-with-loss-prohibited | requested-delivery-method |
+ physical-forwarding-prohibited | physical-forwarding-address-request |
+ physical-delivery-modes | registered-mail-type | recipient-number-for-advice
+ | physical-rendition-attributes | originator-return-address |
+ physical-delivery-report-request | originator-certificate | message-token |
+ content-confidentiality-algorithm-identifier | content-integrity-check |
+ message-origin-authentication-check | message-security-label |
+ proof-of-delivery-request | dl-exempted-recipients | certificate-selectors |
+ certificate-selectors-override | multiple-originator-certificates |
+ recipient-certificate | IPMPerRecipientEnvelopeExtensions |
+ redirection-history | dl-expansion-history | trace-information |
+ internal-trace-information | PrivateExtensions, ...}
+
+-- Report Delivery Envelope
+ReportDeliveryEnvelope ::= SET {
+ COMPONENTS OF PerReportDeliveryFields,
+ per-recipient-fields
+ SEQUENCE SIZE (1..ub-recipients) OF PerRecipientReportDeliveryFields
+}
+
+PerReportDeliveryFields ::= SET {
+ subject-submission-identifier SubjectSubmissionIdentifier,
+ content-identifier ContentIdentifier OPTIONAL,
+ content-type ContentType OPTIONAL,
+ original-encoded-information-types OriginalEncodedInformationTypes OPTIONAL,
+ extensions
+ [1] SET OF ExtensionField{{ReportDeliveryExtensions}} DEFAULT {}
+}
+
+ReportDeliveryExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ message-security-label | content-correlator | redirection-history |
+ originator-and-DL-expansion-history | reporting-DL-name |
+ reporting-MTA-certificate | report-origin-authentication-check |
+ trace-information | internal-trace-information | reporting-MTA-name |
+ PrivateExtensions, ...}
+
+PerRecipientReportDeliveryFields ::= SET {
+ actual-recipient-name [0] ActualRecipientName,
+ report-type [1] ReportType,
+ converted-encoded-information-types
+ ConvertedEncodedInformationTypes OPTIONAL,
+ originally-intended-recipient-name
+ [2] OriginallyIntendedRecipientName OPTIONAL,
+ supplementary-information [3] SupplementaryInformation OPTIONAL,
+ extensions
+ [4] SET OF ExtensionField{{PerRecipientReportDeliveryExtensions}}
+ DEFAULT {}
+}
+
+PerRecipientReportDeliveryExtensions EXTENSION ::=
+ {-- May contain the following extensions, private extensions, and future standardised extensions,
+ -- at most one instance of each extension type:
+ redirection-history | physical-forwarding-address | recipient-certificate |
+ proof-of-delivery | PrivateExtensions, ...}
+
+ReportType ::= CHOICE {
+ delivery [0] DeliveryReport,
+ non-delivery [1] NonDeliveryReport
+}
+
+DeliveryReport ::= SET {
+ message-delivery-time [0] MessageDeliveryTime,
+ type-of-MTS-user [1] TypeOfMTSUser DEFAULT public
+}
+
+NonDeliveryReport ::= SET {
+ non-delivery-reason-code [0] NonDeliveryReasonCode,
+ non-delivery-diagnostic-code [1] NonDeliveryDiagnosticCode OPTIONAL
+}
+
+-- Envelope Fields
+OriginatorName ::= ORAddressAndOrDirectoryName
+
+DeliveredOriginatorName ::= ORAddressAndOptionalDirectoryName
+
+OriginalEncodedInformationTypes ::= EncodedInformationTypes
+
+ContentTypes ::= SET SIZE (1..ub-content-types) OF ContentType
+
+ContentType ::= CHOICE {
+ built-in BuiltInContentType,
+ extended ExtendedContentType
+}
+
+BuiltInContentType ::= [APPLICATION 6] INTEGER {
+ unidentified(0),
+ external(1), -- identified by the object-identifier of the EXTERNAL content
+ interpersonal-messaging-1984(2), interpersonal-messaging-1988(22),
+ edi-messaging(35), voice-messaging(40)}(0..ub-built-in-content-type)
+
+ExtendedContentType ::= RELATIVE-OID
+
+DeliveredContentType ::= CHOICE {
+ built-in [0] BuiltInContentType,
+ extended ExtendedContentType
+}
+
+ContentIdentifier ::=
+ [APPLICATION 10] PrintableString(SIZE (1..ub-content-id-length))
+
+PerMessageIndicators ::= [APPLICATION 8] BIT STRING {
+ disclosure-of-other-recipients(0), -- disclosure-of-other-recipients-requested 'one',
+
+ -- disclosure-of-other-recipients-prohibited 'zero';
+ -- ignored for Probe-submission
+ implicit-conversion-prohibited(1), -- implicit-conversion-prohibited 'one',
+
+ -- implicit-conversion-allowed 'zero'
+ alternate-recipient-allowed(2), -- alternate-recipient-allowed 'one',
+
+ -- alternate-recipient-prohibited 'zero'
+ content-return-request(3), -- content-return-requested 'one',
+
+ -- content-return-not-requested 'zero';
+ -- ignored for Probe-submission
+ reserved(4), -- bit reserved by MOTIS 1986
+ bit-5(5),
+ bit-6(6), -- notification type-1 : bit 5 'zero' and bit 6 'one'
+
+ -- notification type-2 : bit 5 'one' and bit 6 'zero'
+ -- notification type-3 : bit 5 'one' and bit 6 'one'
+ -- the mapping between notification type 1, 2, 3
+ -- and the content specific notification types are defined
+ -- in relevant content specifications
+ service-message(7) -- the message content is for service purposes;
+
+
+-- it may be a notification related to a service message;
+-- used only by bilateral agreement --}(SIZE (0..ub-bit-options))
+
+RecipientName ::= ORAddressAndOrDirectoryName
+
+OriginatorReportRequest ::= BIT STRING {report(3), non-delivery-report(4)
+
+-- at most one bit shall be 'one':
+-- report bit 'one' requests a 'report';
+-- non-delivery-report bit 'one' requests a 'non-delivery-report';
+-- both bits 'zero' requests 'no-report' --}(SIZE (0..ub-bit-options))
+
+ExplicitConversion ::= INTEGER {
+ ia5-text-to-teletex(0),
+ -- values 1 to 7 are no longer defined
+ ia5-text-to-g3-facsimile(8), ia5-text-to-g4-class-1(9),
+ ia5-text-to-videotex(10), teletex-to-ia5-text(11),
+ teletex-to-g3-facsimile(12), teletex-to-g4-class-1(13),
+ teletex-to-videotex(14),
+ -- value 15 is no longer defined
+ videotex-to-ia5-text(16), videotex-to-teletex(17)}(0..ub-integer-options)
+
+DeferredDeliveryTime ::= Time
+
+Priority ::= [APPLICATION 7] ENUMERATED {normal(0), non-urgent(1), urgent(2)}
+
+ContentLength ::= INTEGER(0..ub-content-length)
+
+MessageDeliveryIdentifier ::= MTSIdentifier
+
+MessageDeliveryTime ::= Time
+
+DeliveryFlags ::= BIT STRING {
+ implicit-conversion-prohibited(1) -- implicit-conversion-prohibited 'one',
+
+ -- implicit-conversion-allowed 'zero' --}(SIZE (0..ub-bit-options))
+
+OtherRecipientNames ::= SEQUENCE SIZE (1..ub-recipients) OF OtherRecipientName
+
+OtherRecipientName ::= ORAddressAndOptionalDirectoryName
+
+ThisRecipientName ::= ORAddressAndOptionalDirectoryName
+
+OriginallyIntendedRecipientName ::= ORAddressAndOptionalDirectoryName
+
+ConvertedEncodedInformationTypes ::= EncodedInformationTypes
+
+SubjectSubmissionIdentifier ::= MTSIdentifier
+
+ActualRecipientName ::= ORAddressAndOrDirectoryName
+
+TypeOfMTSUser ::= INTEGER {
+ public(0), private(1), ms(2), dl(3), pdau(4), physical-recipient(5), other(6)
+}(0..ub-mts-user-types)
+
+NonDeliveryReasonCode ::= INTEGER {
+ transfer-failure(0), unable-to-transfer(1), conversion-not-performed(2),
+ physical-rendition-not-performed(3), physical-delivery-not-performed(4),
+ restricted-delivery(5), directory-operation-unsuccessful(6),
+ deferred-delivery-not-performed(7), transfer-failure-for-security-reason(8)
+}(0..ub-reason-codes)
+
+NonDeliveryDiagnosticCode ::= INTEGER {
+ unrecognised-OR-name(0), ambiguous-OR-name(1), mts-congestion(2),
+ loop-detected(3), recipient-unavailable(4), maximum-time-expired(5),
+ encoded-information-types-unsupported(6), content-too-long(7),
+ conversion-impractical(8), implicit-conversion-prohibited(9),
+ implicit-conversion-not-subscribed(10), invalid-arguments(11),
+ content-syntax-error(12), size-constraint-violation(13),
+ protocol-violation(14), content-type-not-supported(15),
+ too-many-recipients(16), no-bilateral-agreement(17),
+ unsupported-critical-function(18), conversion-with-loss-prohibited(19),
+ line-too-long(20), page-split(21), pictorial-symbol-loss(22),
+ punctuation-symbol-loss(23), alphabetic-character-loss(24),
+ multiple-information-loss(25), recipient-reassignment-prohibited(26),
+ redirection-loop-detected(27), dl-expansion-prohibited(28),
+ no-dl-submit-permission(29), dl-expansion-failure(30),
+ physical-rendition-attributes-not-supported(31),
+ undeliverable-mail-physical-delivery-address-incorrect(32),
+ undeliverable-mail-physical-delivery-office-incorrect-or-invalid(33),
+ undeliverable-mail-physical-delivery-address-incomplete(34),
+ undeliverable-mail-recipient-unknown(35),
+ undeliverable-mail-recipient-deceased(36),
+ undeliverable-mail-organization-expired(37),
+ undeliverable-mail-recipient-refused-to-accept(38),
+ undeliverable-mail-recipient-did-not-claim(39),
+ undeliverable-mail-recipient-changed-address-permanently(40),
+ undeliverable-mail-recipient-changed-address-temporarily(41),
+ undeliverable-mail-recipient-changed-temporary-address(42),
+ undeliverable-mail-new-address-unknown(43),
+ undeliverable-mail-recipient-did-not-want-forwarding(44),
+ undeliverable-mail-originator-prohibited-forwarding(45),
+ secure-messaging-error(46), unable-to-downgrade(47),
+ unable-to-complete-transfer(48), transfer-attempts-limit-reached(49),
+ incorrect-notification-type(50),
+ dl-expansion-prohibited-by-security-policy(51),
+ forbidden-alternate-recipient(52), security-policy-violation(53),
+ security-services-refusal(54), unauthorised-dl-member(55),
+ unauthorised-dl-name(56),
+ unauthorised-originally-intended-recipient-name(57),
+ unauthorised-originator-name(58), unauthorised-recipient-name(59),
+ unreliable-system(60), authentication-failure-on-subject-message(61),
+ decryption-failed(62), decryption-key-unobtainable(63),
+ double-envelope-creation-failure(64),
+ double-enveloping-message-restoring-failure(65),
+ failure-of-proof-of-message(66), integrity-failure-on-subject-message(67),
+ invalid-security-label(68), key-failure(69), mandatory-parameter-absence(70),
+ operation-security-failure(71), repudiation-failure-of-message(72),
+ security-context-failure(73), token-decryption-failed(74), token-error(75),
+ unknown-security-label(76), unsupported-algorithm-identifier(77),
+ unsupported-security-policy(78)}(0..ub-diagnostic-codes)
+
+SupplementaryInformation ::=
+ PrintableString(SIZE (1..ub-supplementary-info-length))
+
+-- Extension Fields
+EXTENSION ::= CLASS {
+ &id ExtensionType UNIQUE,
+ &Type OPTIONAL,
+ &absent &Type OPTIONAL,
+ &recommended Criticality DEFAULT {}
+}
+WITH SYNTAX {
+ [&Type
+ [IF ABSENT &absent],]
+ [RECOMMENDED CRITICALITY &recommended,]
+ IDENTIFIED BY &id
+}
+
+ExtensionType ::= CHOICE {
+ standard-extension [0] INTEGER(0..ub-extension-types),
+ private-extension [3] OBJECT IDENTIFIER
+}
+
+Criticality ::= BIT STRING {for-submission(0), for-transfer(1), for-delivery(2)
+}(SIZE (0..ub-bit-options)) -- critical 'one', non-critical 'zero'
+
+
+ExtensionField{EXTENSION:ChosenFrom} ::= SEQUENCE {
+ type EXTENSION.&id({ChosenFrom}),
+ criticality [1] Criticality DEFAULT {},
+ value [2] EXTENSION.&Type({ChosenFrom}{@type}) DEFAULT NULL:NULL
+}
+
+PrivateExtensions EXTENSION ::=
+ {-- Any value shall be relayed and delivered if not Critical (see Table 27)
+ -- except those values whose semantics the MTA obeys which are defined to be removed when obeyed.
+ -- Shall be IDENTIFIED BY ExtensionType.private-extension --...}
+
+recipient-reassignment-prohibited EXTENSION ::= {
+ RecipientReassignmentProhibited
+ IF ABSENT recipient-reassignment-allowed,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:1
+}
+
+RecipientReassignmentProhibited ::= ENUMERATED {
+ recipient-reassignment-allowed(0), recipient-reassignment-prohibited(1)
+}
+
+originator-requested-alternate-recipient EXTENSION ::= {
+ OriginatorRequestedAlternateRecipient,
+ RECOMMENDED CRITICALITY {for-submission},
+ IDENTIFIED BY standard-extension:2
+}
+
+OriginatorRequestedAlternateRecipient ::= ORAddressAndOrDirectoryName
+
+-- OriginatorRequestedAlternateRecipient as defined here differs from the field of the same name
+-- defined in Figure 4, since on submission the OR-address need not be present, but on
+-- transfer the OR-address must be present.
+dl-expansion-prohibited EXTENSION ::= {
+ DLExpansionProhibited
+ IF ABSENT dl-expansion-allowed,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:3
+}
+
+DLExpansionProhibited ::= ENUMERATED {
+ dl-expansion-allowed(0), dl-expansion-prohibited(1)}
+
+conversion-with-loss-prohibited EXTENSION ::= {
+ ConversionWithLossProhibited
+ IF ABSENT conversion-with-loss-allowed,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:4
+}
+
+ConversionWithLossProhibited ::= ENUMERATED {
+ conversion-with-loss-allowed(0), conversion-with-loss-prohibited(1)
+}
+
+latest-delivery-time EXTENSION ::= {
+ LatestDeliveryTime,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:5
+}
+
+LatestDeliveryTime ::= Time
+
+requested-delivery-method EXTENSION ::= {
+ RequestedDeliveryMethod
+ IF ABSENT {any-delivery-method},
+ IDENTIFIED BY standard-extension:6
+}
+
+RequestedDeliveryMethod ::=
+ SEQUENCE OF INTEGER { -- each different in order of preference,
+ -- most preferred first
+ any-delivery-method(0), mhs-delivery(1), physical-delivery(2),
+ telex-delivery(3), teletex-delivery(4), g3-facsimile-delivery(5),
+ g4-facsimile-delivery(6), ia5-terminal-delivery(7), videotex-delivery(8),
+ telephone-delivery(9)}(0..ub-integer-options)
+
+physical-forwarding-prohibited EXTENSION ::= {
+ PhysicalForwardingProhibited
+ IF ABSENT physical-forwarding-allowed,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:7
+}
+
+PhysicalForwardingProhibited ::= ENUMERATED {
+ physical-forwarding-allowed(0), physical-forwarding-prohibited(1)}
+
+physical-forwarding-address-request EXTENSION ::= {
+ PhysicalForwardingAddressRequest
+ IF ABSENT physical-forwarding-address-not-requested,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:8
+}
+
+PhysicalForwardingAddressRequest ::= ENUMERATED {
+ physical-forwarding-address-not-requested(0),
+ physical-forwarding-address-requested(1)}
+
+physical-delivery-modes EXTENSION ::= {
+ PhysicalDeliveryModes
+ IF ABSENT {ordinary-mail},
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:9
+}
+
+PhysicalDeliveryModes ::= BIT STRING {
+ ordinary-mail(0), special-delivery(1), express-mail(2),
+ counter-collection(3), counter-collection-with-telephone-advice(4),
+ counter-collection-with-telex-advice(5),
+ counter-collection-with-teletex-advice(6), bureau-fax-delivery(7)
+
+-- bits 0 to 6 are mutually exclusive
+-- bit 7 can be set independently of any of bits 0 to 6 --}
+(SIZE (0..ub-bit-options))
+
+registered-mail-type EXTENSION ::= {
+ RegisteredMailType
+ IF ABSENT non-registered-mail,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:10
+}
+
+RegisteredMailType ::= INTEGER {
+ non-registered-mail(0), registered-mail(1),
+ registered-mail-to-addressee-in-person(2)}(0..ub-integer-options)
+
+recipient-number-for-advice EXTENSION ::= {
+ RecipientNumberForAdvice,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:11
+}
+
+RecipientNumberForAdvice ::=
+ TeletexString(SIZE (1..ub-recipient-number-for-advice-length))
+
+physical-rendition-attributes EXTENSION ::= {
+ PhysicalRenditionAttributes
+ IF ABSENT id-att-physicalRendition-basic,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:12
+}
+
+PhysicalRenditionAttributes ::= OBJECT IDENTIFIER
+
+originator-return-address EXTENSION ::= {
+ OriginatorReturnAddress,
+ IDENTIFIED BY standard-extension:13
+}
+
+OriginatorReturnAddress ::= ORAddress
+
+physical-delivery-report-request EXTENSION ::= {
+ PhysicalDeliveryReportRequest
+ IF ABSENT return-of-undeliverable-mail-by-PDS,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:14
+}
+
+PhysicalDeliveryReportRequest ::= INTEGER {
+ return-of-undeliverable-mail-by-PDS(0), return-of-notification-by-PDS(1),
+ return-of-notification-by-MHS(2), return-of-notification-by-MHS-and-PDS(3)
+}(0..ub-integer-options)
+
+originator-certificate EXTENSION ::= {
+ OriginatorCertificate,
+ IDENTIFIED BY standard-extension:15
+}
+
+OriginatorCertificate ::= Certificates
+
+message-token EXTENSION ::= {
+ MessageToken,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:16
+}
+
+MessageToken ::= Token
+
+content-confidentiality-algorithm-identifier EXTENSION ::= {
+ ContentConfidentialityAlgorithmIdentifier,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:17
+}
+
+ContentConfidentialityAlgorithmIdentifier ::= AlgorithmIdentifier
+
+content-integrity-check EXTENSION ::= {
+ ContentIntegrityCheck,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:18
+}
+
+ContentIntegrityCheck ::=
+ SIGNATURE
+ {SEQUENCE {algorithm-identifier
+ ContentIntegrityAlgorithmIdentifier OPTIONAL,
+ content Content}}
+
+ContentIntegrityAlgorithmIdentifier ::= AlgorithmIdentifier
+
+message-origin-authentication-check EXTENSION ::= {
+ MessageOriginAuthenticationCheck,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:19
+}
+
+MessageOriginAuthenticationCheck ::=
+ SIGNATURE
+ {SEQUENCE {algorithm-identifier
+ MessageOriginAuthenticationAlgorithmIdentifier,
+ content Content,
+ content-identifier ContentIdentifier OPTIONAL,
+ message-security-label MessageSecurityLabel OPTIONAL}}
+
+MessageOriginAuthenticationAlgorithmIdentifier ::= AlgorithmIdentifier
+
+message-security-label EXTENSION ::= {
+ MessageSecurityLabel,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:20
+}
+
+MessageSecurityLabel ::= SecurityLabel
+
+proof-of-submission-request EXTENSION ::= {
+ ProofOfSubmissionRequest
+ IF ABSENT proof-of-submission-not-requested,
+ RECOMMENDED CRITICALITY {for-submission},
+ IDENTIFIED BY standard-extension:21
+}
+
+ProofOfSubmissionRequest ::= ENUMERATED {
+ proof-of-submission-not-requested(0), proof-of-submission-requested(1)
+}
+
+proof-of-delivery-request EXTENSION ::= {
+ ProofOfDeliveryRequest
+ IF ABSENT proof-of-delivery-not-requested,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:22
+}
+
+ProofOfDeliveryRequest ::= ENUMERATED {
+ proof-of-delivery-not-requested(0), proof-of-delivery-requested(1)}
+
+content-correlator EXTENSION ::= {
+ ContentCorrelator,
+ IDENTIFIED BY standard-extension:23
+}
+
+ContentCorrelator ::= CHOICE {ia5text IA5String,
+ octets OCTET STRING
+}
+
+probe-origin-authentication-check EXTENSION ::= {
+ ProbeOriginAuthenticationCheck,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:24
+}
+
+ProbeOriginAuthenticationCheck ::=
+ SIGNATURE
+ {SEQUENCE {algorithm-identifier
+ ProbeOriginAuthenticationAlgorithmIdentifier,
+ content-identifier ContentIdentifier OPTIONAL,
+ message-security-label MessageSecurityLabel OPTIONAL}}
+
+ProbeOriginAuthenticationAlgorithmIdentifier ::= AlgorithmIdentifier
+
+redirection-history EXTENSION ::= {
+ RedirectionHistory,
+ IDENTIFIED BY standard-extension:25
+}
+
+RedirectionHistory ::= SEQUENCE SIZE (1..ub-redirections) OF Redirection
+
+Redirection ::= SEQUENCE {
+ intended-recipient-name IntendedRecipientName,
+ redirection-reason RedirectionReason
+}
+
+IntendedRecipientName ::= SEQUENCE {
+ intended-recipient ORAddressAndOptionalDirectoryName,
+ redirection-time Time
+}
+
+RedirectionReason ::= ENUMERATED {
+ recipient-assigned-alternate-recipient(0),
+ originator-requested-alternate-recipient(1),
+ recipient-MD-assigned-alternate-recipient(2),
+ -- The following values may not be supported by implementations of earlier versions of this Service Definition
+ directory-look-up(3), alias(4), ...
+ }
+
+dl-expansion-history EXTENSION ::= {
+ DLExpansionHistory,
+ IDENTIFIED BY standard-extension:26
+}
+
+DLExpansionHistory ::= SEQUENCE SIZE (1..ub-dl-expansions) OF DLExpansion
+
+DLExpansion ::= SEQUENCE {
+ dl ORAddressAndOptionalDirectoryName,
+ dl-expansion-time Time
+}
+
+physical-forwarding-address EXTENSION ::= {
+ PhysicalForwardingAddress,
+ IDENTIFIED BY standard-extension:27
+}
+
+PhysicalForwardingAddress ::= ORAddressAndOptionalDirectoryName
+
+recipient-certificate EXTENSION ::= {
+ RecipientCertificate,
+ IDENTIFIED BY standard-extension:28
+}
+
+proof-of-delivery EXTENSION ::= {
+ ProofOfDelivery,
+ IDENTIFIED BY standard-extension:29
+}
+
+originator-and-DL-expansion-history EXTENSION ::= {
+ OriginatorAndDLExpansionHistory,
+ IDENTIFIED BY standard-extension:30
+}
+
+OriginatorAndDLExpansionHistory ::=
+ SEQUENCE SIZE (2..ub-orig-and-dl-expansions) OF OriginatorAndDLExpansion
+
+OriginatorAndDLExpansion ::= SEQUENCE {
+ originator-or-dl-name ORAddressAndOptionalDirectoryName,
+ origination-or-expansion-time Time
+}
+
+reporting-DL-name EXTENSION ::= {
+ ReportingDLName,
+ IDENTIFIED BY standard-extension:31
+}
+
+ReportingDLName ::= ORAddressAndOptionalDirectoryName
+
+reporting-MTA-certificate EXTENSION ::= {
+ ReportingMTACertificate,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:32
+}
+
+ReportingMTACertificate ::= Certificates
+
+report-origin-authentication-check EXTENSION ::= {
+ ReportOriginAuthenticationCheck,
+ RECOMMENDED CRITICALITY {for-delivery},
+ IDENTIFIED BY standard-extension:33
+}
+
+ReportOriginAuthenticationCheck ::=
+ SIGNATURE
+ {SEQUENCE {algorithm-identifier
+ ReportOriginAuthenticationAlgorithmIdentifier,
+ content-identifier ContentIdentifier OPTIONAL,
+ message-security-label MessageSecurityLabel OPTIONAL,
+ per-recipient
+ SEQUENCE SIZE (1..ub-recipients) OF PerRecipientReportFields
+ }}
+
+ReportOriginAuthenticationAlgorithmIdentifier ::= AlgorithmIdentifier
+
+PerRecipientReportFields ::= SEQUENCE {
+ actual-recipient-name ActualRecipientName,
+ originally-intended-recipient-name OriginallyIntendedRecipientName OPTIONAL,
+ report-type
+ CHOICE {delivery [0] PerRecipientDeliveryReportFields,
+ non-delivery [1] PerRecipientNonDeliveryReportFields}
+}
+
+PerRecipientDeliveryReportFields ::= SEQUENCE {
+ message-delivery-time MessageDeliveryTime,
+ type-of-MTS-user TypeOfMTSUser,
+ recipient-certificate [0] RecipientCertificate OPTIONAL,
+ proof-of-delivery [1] ProofOfDelivery OPTIONAL
+}
+
+PerRecipientNonDeliveryReportFields ::= SEQUENCE {
+ non-delivery-reason-code NonDeliveryReasonCode,
+ non-delivery-diagnostic-code NonDeliveryDiagnosticCode OPTIONAL
+}
+
+originating-MTA-certificate EXTENSION ::= {
+ OriginatingMTACertificate,
+ IDENTIFIED BY standard-extension:34
+}
+
+OriginatingMTACertificate ::= Certificates
+
+proof-of-submission EXTENSION ::= {
+ ProofOfSubmission,
+ IDENTIFIED BY standard-extension:35
+}
+
+ProofOfSubmission ::=
+ SIGNATURE
+ {SEQUENCE {algorithm-identifier
+ ProofOfSubmissionAlgorithmIdentifier,
+ message-submission-envelope MessageSubmissionEnvelope,
+ content Content,
+ message-submission-identifier MessageSubmissionIdentifier,
+ message-submission-time MessageSubmissionTime}}
+
+ProofOfSubmissionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+reporting-MTA-name EXTENSION ::= {
+ ReportingMTAName,
+ IDENTIFIED BY standard-extension:39
+}
+
+ReportingMTAName ::= SEQUENCE {
+ domain GlobalDomainIdentifier,
+ mta-name MTAName,
+ mta-directory-name [0] Name OPTIONAL
+}
+
+multiple-originator-certificates EXTENSION ::= {
+ ExtendedCertificates,
+ IDENTIFIED BY standard-extension:40
+}
+
+ExtendedCertificates ::= SET SIZE (1..ub-certificates) OF ExtendedCertificate
+
+ExtendedCertificate ::= CHOICE {
+ directory-entry [0] Name, -- Name of a Directory entry where the certificate can be found
+ certificate [1] Certificates
+}
+
+dl-exempted-recipients EXTENSION ::= {
+ DLExemptedRecipients,
+ IDENTIFIED BY standard-extension:42
+}
+
+DLExemptedRecipients ::= SET OF ORAddressAndOrDirectoryName
+
+certificate-selectors EXTENSION ::= {
+ CertificateSelectors,
+ IDENTIFIED BY standard-extension:45
+}
+
+CertificateSelectors ::= SET {
+ encryption-recipient [0] CertificateAssertion OPTIONAL,
+ encryption-originator [1] CertificateAssertion OPTIONAL,
+ content-integrity-check [2] CertificateAssertion OPTIONAL,
+ token-signature [3] CertificateAssertion OPTIONAL,
+ message-origin-authentication [4] CertificateAssertion OPTIONAL
+}
+
+certificate-selectors-override EXTENSION ::= {
+ CertificateSelectors
+ (WITH COMPONENTS {
+ ...,
+ message-origin-authentication ABSENT
+ }),
+ IDENTIFIED BY standard-extension:46
+}
+
+-- Some standard-extensions are defined elsewhere:
+-- 36 (forwarding-request) in ITU-T Rec. X.413 | ISO/IEC 10021-5;
+-- 37 (trace-information), and 38 (internal-trace-information) in Figure 4;
+-- 41 (blind-copy-recipients), 43 (body-part-encryption-token), and 44 (forwarded-content-token) in
+-- ITU-T Rec. X.420 | ISO/IEC 10021-7
+-- Common Parameter Types
+Content ::=
+ OCTET
+ STRING -- when the content-type has the integer value external, the value of the
+
+-- content octet string is the ASN.1 encoding of the external-content;
+-- an external-content is a data type EXTERNAL
+MTSIdentifier ::= [APPLICATION 4] SEQUENCE {
+ global-domain-identifier GlobalDomainIdentifier,
+ local-identifier LocalIdentifier
+}
+
+LocalIdentifier ::= IA5String(SIZE (1..ub-local-id-length))
+
+GlobalDomainIdentifier ::= [APPLICATION 3] SEQUENCE {
+ country-name CountryName,
+ administration-domain-name AdministrationDomainName,
+ private-domain-identifier PrivateDomainIdentifier OPTIONAL
+}
+
+PrivateDomainIdentifier ::= CHOICE {
+ numeric NumericString(SIZE (1..ub-domain-name-length)),
+ printable PrintableString(SIZE (1..ub-domain-name-length))
+}
+
+MTAName ::= IA5String(SIZE (1..ub-mta-name-length))
+
+Time ::= UTCTime
+
+-- OR Names
+ORAddressAndOrDirectoryName ::= ORName
+
+ORAddressAndOptionalDirectoryName ::= ORName
+
+ORName ::= [APPLICATION 0] SEQUENCE {
+ -- address --COMPONENTS OF ORAddress,
+ directory-name [0] Name OPTIONAL
+}
+
+ORAddress ::= SEQUENCE {
+ built-in-standard-attributes BuiltInStandardAttributes,
+ built-in-domain-defined-attributes BuiltInDomainDefinedAttributes OPTIONAL,
+ -- see also teletex-domain-defined-attributes
+ extension-attributes ExtensionAttributes OPTIONAL
+}
+
+-- The OR-address is semantically absent from the OR-name if the built-in-standard-attribute
+-- sequence is empty and the built-in-domain-defined-attributes and extension-attributes are both omitted.
+-- Built-in Standard Attributes
+BuiltInStandardAttributes ::= SEQUENCE {
+ country-name CountryName OPTIONAL,
+ administration-domain-name AdministrationDomainName OPTIONAL,
+ network-address [0] NetworkAddress OPTIONAL,
+ -- see also extended-network-address
+ terminal-identifier [1] TerminalIdentifier OPTIONAL,
+ private-domain-name [2] PrivateDomainName OPTIONAL,
+ organization-name [3] OrganizationName OPTIONAL,
+ -- see also teletex-organization-name
+ numeric-user-identifier [4] NumericUserIdentifier OPTIONAL,
+ personal-name [5] PersonalName OPTIONAL,
+ -- see also teletex-personal-name
+ organizational-unit-names [6] OrganizationalUnitNames OPTIONAL
+ -- see also teletex-organizational-unit-names
+}
+
+CountryName ::= [APPLICATION 1] CHOICE {
+ x121-dcc-code NumericString(SIZE (ub-country-name-numeric-length)),
+ iso-3166-alpha2-code PrintableString(SIZE (ub-country-name-alpha-length))
+}
+
+AdministrationDomainName ::= [APPLICATION 2] CHOICE {
+ numeric NumericString(SIZE (0..ub-domain-name-length)),
+ printable PrintableString(SIZE (0..ub-domain-name-length))
+}
+
+NetworkAddress ::= X121Address
+
+-- see also extended-network-address
+X121Address ::= NumericString(SIZE (1..ub-x121-address-length))
+
+TerminalIdentifier ::= PrintableString(SIZE (1..ub-terminal-id-length))
+
+PrivateDomainName ::= CHOICE {
+ numeric NumericString(SIZE (1..ub-domain-name-length)),
+ printable PrintableString(SIZE (1..ub-domain-name-length))
+}
+
+OrganizationName ::= PrintableString(SIZE (1..ub-organization-name-length))
+
+-- see also teletex-organization-name
+NumericUserIdentifier ::= NumericString(SIZE (1..ub-numeric-user-id-length))
+
+PersonalName ::= SET {
+ surname [0] PrintableString(SIZE (1..ub-surname-length)),
+ given-name
+ [1] PrintableString(SIZE (1..ub-given-name-length)) OPTIONAL,
+ initials
+ [2] PrintableString(SIZE (1..ub-initials-length)) OPTIONAL,
+ generation-qualifier
+ [3] PrintableString(SIZE (1..ub-generation-qualifier-length)) OPTIONAL
+}
+
+-- see also teletex-personal-name
+OrganizationalUnitNames ::=
+ SEQUENCE SIZE (1..ub-organizational-units) OF OrganizationalUnitName
+
+-- see also teletex-organizational-unit-names
+OrganizationalUnitName ::=
+ PrintableString(SIZE (1..ub-organizational-unit-name-length))
+
+-- Built-in Domain-defined Attributes
+BuiltInDomainDefinedAttributes ::=
+ SEQUENCE SIZE (1..ub-domain-defined-attributes) OF
+ BuiltInDomainDefinedAttribute
+
+BuiltInDomainDefinedAttribute ::= SEQUENCE {
+ type PrintableString(SIZE (1..ub-domain-defined-attribute-type-length)),
+ value PrintableString(SIZE (1..ub-domain-defined-attribute-value-length))
+}
+
+-- Extension Attributes
+ExtensionAttributes ::=
+ SET SIZE (1..ub-extension-attributes) OF ExtensionAttribute
+
+ExtensionAttribute ::= SEQUENCE {
+ extension-attribute-type
+ [0] EXTENSION-ATTRIBUTE.&id({ExtensionAttributeTable}),
+ extension-attribute-value
+ [1] EXTENSION-ATTRIBUTE.&Type
+ ({ExtensionAttributeTable}{@extension-attribute-type})
+}
+
+EXTENSION-ATTRIBUTE ::= CLASS {
+ &id INTEGER(0..ub-extension-attributes) UNIQUE,
+ &Type
+}WITH SYNTAX {&Type
+ IDENTIFIED BY &id
+}
+
+ExtensionAttributeTable EXTENSION-ATTRIBUTE ::=
+ {common-name | teletex-common-name | universal-common-name |
+ teletex-organization-name | universal-organization-name |
+ teletex-personal-name | universal-personal-name |
+ teletex-organizational-unit-names | universal-organizational-unit-names |
+ teletex-domain-defined-attributes | universal-domain-defined-attributes |
+ pds-name | physical-delivery-country-name | postal-code |
+ physical-delivery-office-name | universal-physical-delivery-office-name |
+ physical-delivery-office-number | universal-physical-delivery-office-number
+ | extension-OR-address-components |
+ universal-extension-OR-address-components | physical-delivery-personal-name
+ | universal-physical-delivery-personal-name |
+ physical-delivery-organization-name |
+ universal-physical-delivery-organization-name |
+ extension-physical-delivery-address-components |
+ universal-extension-physical-delivery-address-components |
+ unformatted-postal-address | universal-unformatted-postal-address |
+ street-address | universal-street-address | post-office-box-address |
+ universal-post-office-box-address | poste-restante-address |
+ universal-poste-restante-address | unique-postal-name |
+ universal-unique-postal-name | local-postal-attributes |
+ universal-local-postal-attributes | extended-network-address | terminal-type
+ }
+
+-- Extension Standard Attributes
+common-name EXTENSION-ATTRIBUTE ::= {CommonName
+ IDENTIFIED BY 1
+}
+
+CommonName ::= PrintableString(SIZE (1..ub-common-name-length))
+
+teletex-common-name EXTENSION-ATTRIBUTE ::= {TeletexCommonName
+ IDENTIFIED BY 2
+}
+
+TeletexCommonName ::= TeletexString(SIZE (1..ub-common-name-length))
+
+universal-common-name EXTENSION-ATTRIBUTE ::= {
+ UniversalCommonName
+ IDENTIFIED BY 24
+}
+
+UniversalCommonName ::= UniversalOrBMPString{ub-common-name-length}
+
+teletex-organization-name EXTENSION-ATTRIBUTE ::= {
+ TeletexOrganizationName
+ IDENTIFIED BY 3
+}
+
+TeletexOrganizationName ::=
+ TeletexString(SIZE (1..ub-organization-name-length))
+
+universal-organization-name EXTENSION-ATTRIBUTE ::= {
+ UniversalOrganizationName
+ IDENTIFIED BY 25
+}
+
+UniversalOrganizationName ::= UniversalOrBMPString{ub-organization-name-length}
+
+teletex-personal-name EXTENSION-ATTRIBUTE ::= {
+ TeletexPersonalName
+ IDENTIFIED BY 4
+}
+
+TeletexPersonalName ::= SET {
+ surname [0] TeletexString(SIZE (1..ub-surname-length)),
+ given-name
+ [1] TeletexString(SIZE (1..ub-given-name-length)) OPTIONAL,
+ initials
+ [2] TeletexString(SIZE (1..ub-initials-length)) OPTIONAL,
+ generation-qualifier
+ [3] TeletexString(SIZE (1..ub-generation-qualifier-length)) OPTIONAL
+}
+
+universal-personal-name EXTENSION-ATTRIBUTE ::= {
+ UniversalPersonalName
+ IDENTIFIED BY 26
+}
+
+UniversalPersonalName ::= SET {
+ surname [0] UniversalOrBMPString{ub-universal-surname-length},
+ -- If a language is specified within surname, then that language applies to each of the following
+ -- optional components unless the component specifies another language.
+ given-name
+ [1] UniversalOrBMPString{ub-universal-given-name-length} OPTIONAL,
+ initials
+ [2] UniversalOrBMPString{ub-universal-initials-length} OPTIONAL,
+ generation-qualifier
+ [3] UniversalOrBMPString{ub-universal-generation-qualifier-length}
+ OPTIONAL
+}
+
+teletex-organizational-unit-names EXTENSION-ATTRIBUTE ::= {
+ TeletexOrganizationalUnitNames
+ IDENTIFIED BY 5
+}
+
+TeletexOrganizationalUnitNames ::=
+ SEQUENCE SIZE (1..ub-organizational-units) OF TeletexOrganizationalUnitName
+
+TeletexOrganizationalUnitName ::=
+ TeletexString(SIZE (1..ub-organizational-unit-name-length))
+
+universal-organizational-unit-names EXTENSION-ATTRIBUTE ::= {
+ UniversalOrganizationalUnitNames
+ IDENTIFIED BY 27
+}
+
+UniversalOrganizationalUnitNames ::=
+ SEQUENCE SIZE (1..ub-organizational-units) OF UniversalOrganizationalUnitName
+
+-- If a unit name specifies a language, then that language applies to subordinate unit names unless
+-- the subordinate specifies another language.
+UniversalOrganizationalUnitName ::=
+ UniversalOrBMPString{ub-organizational-unit-name-length}
+
+UniversalOrBMPString{INTEGER:ub-string-length} ::= SET {
+ character-encoding
+ CHOICE {two-octets BMPString(SIZE (1..ub-string-length)),
+ four-octets UniversalString(SIZE (1..ub-string-length))},
+ iso-639-language-code PrintableString(SIZE (2 | 5)) OPTIONAL
+}
+
+pds-name EXTENSION-ATTRIBUTE ::= {PDSName
+ IDENTIFIED BY 7
+}
+
+PDSName ::= PrintableString(SIZE (1..ub-pds-name-length))
+
+physical-delivery-country-name EXTENSION-ATTRIBUTE ::= {
+ PhysicalDeliveryCountryName
+ IDENTIFIED BY 8
+}
+
+PhysicalDeliveryCountryName ::= CHOICE {
+ x121-dcc-code NumericString(SIZE (ub-country-name-numeric-length)),
+ iso-3166-alpha2-code PrintableString(SIZE (ub-country-name-alpha-length))
+}
+
+postal-code EXTENSION-ATTRIBUTE ::= {PostalCode
+ IDENTIFIED BY 9
+}
+
+PostalCode ::= CHOICE {
+ numeric-code NumericString(SIZE (1..ub-postal-code-length)),
+ printable-code PrintableString(SIZE (1..ub-postal-code-length))
+}
+
+physical-delivery-office-name EXTENSION-ATTRIBUTE ::= {
+ PhysicalDeliveryOfficeName
+ IDENTIFIED BY 10
+}
+
+PhysicalDeliveryOfficeName ::= PDSParameter
+
+universal-physical-delivery-office-name EXTENSION-ATTRIBUTE ::= {
+ UniversalPhysicalDeliveryOfficeName
+ IDENTIFIED BY 29
+}
+
+UniversalPhysicalDeliveryOfficeName ::= UniversalPDSParameter
+
+physical-delivery-office-number EXTENSION-ATTRIBUTE ::= {
+ PhysicalDeliveryOfficeNumber
+ IDENTIFIED BY 11
+}
+
+PhysicalDeliveryOfficeNumber ::= PDSParameter
+
+universal-physical-delivery-office-number EXTENSION-ATTRIBUTE ::= {
+ UniversalPhysicalDeliveryOfficeNumber
+ IDENTIFIED BY 30
+}
+
+UniversalPhysicalDeliveryOfficeNumber ::= UniversalPDSParameter
+
+extension-OR-address-components EXTENSION-ATTRIBUTE ::= {
+ ExtensionORAddressComponents
+ IDENTIFIED BY 12
+}
+
+ExtensionORAddressComponents ::= PDSParameter
+
+universal-extension-OR-address-components EXTENSION-ATTRIBUTE ::= {
+ UniversalExtensionORAddressComponents
+ IDENTIFIED BY 31
+}
+
+UniversalExtensionORAddressComponents ::= UniversalPDSParameter
+
+physical-delivery-personal-name EXTENSION-ATTRIBUTE ::= {
+ PhysicalDeliveryPersonalName
+ IDENTIFIED BY 13
+}
+
+PhysicalDeliveryPersonalName ::= PDSParameter
+
+universal-physical-delivery-personal-name EXTENSION-ATTRIBUTE ::= {
+ UniversalPhysicalDeliveryPersonalName
+ IDENTIFIED BY 32
+}
+
+UniversalPhysicalDeliveryPersonalName ::= UniversalPDSParameter
+
+physical-delivery-organization-name EXTENSION-ATTRIBUTE ::= {
+ PhysicalDeliveryOrganizationName
+ IDENTIFIED BY 14
+}
+
+PhysicalDeliveryOrganizationName ::= PDSParameter
+
+universal-physical-delivery-organization-name EXTENSION-ATTRIBUTE ::=
+{UniversalPhysicalDeliveryOrganizationName
+ IDENTIFIED BY 33
+}
+
+UniversalPhysicalDeliveryOrganizationName ::= UniversalPDSParameter
+
+extension-physical-delivery-address-components EXTENSION-ATTRIBUTE ::=
+{ExtensionPhysicalDeliveryAddressComponents
+ IDENTIFIED BY 15
+}
+
+ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter
+
+universal-extension-physical-delivery-address-components EXTENSION-ATTRIBUTE
+ ::= {UniversalExtensionPhysicalDeliveryAddressComponents
+ IDENTIFIED BY 34
+}
+
+UniversalExtensionPhysicalDeliveryAddressComponents ::= UniversalPDSParameter
+
+unformatted-postal-address EXTENSION-ATTRIBUTE ::= {
+ UnformattedPostalAddress
+ IDENTIFIED BY 16
+}
+
+UnformattedPostalAddress ::= SET {
+ printable-address
+ SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF
+ PrintableString(SIZE (1..ub-pds-parameter-length)) OPTIONAL,
+ teletex-string
+ TeletexString(SIZE (1..ub-unformatted-address-length)) OPTIONAL
+}
+
+universal-unformatted-postal-address EXTENSION-ATTRIBUTE ::= {
+ UniversalUnformattedPostalAddress
+ IDENTIFIED BY 35
+}
+
+UniversalUnformattedPostalAddress ::=
+ UniversalOrBMPString{ub-unformatted-address-length}
+
+street-address EXTENSION-ATTRIBUTE ::= {StreetAddress
+ IDENTIFIED BY 17
+}
+
+StreetAddress ::= PDSParameter
+
+universal-street-address EXTENSION-ATTRIBUTE ::= {
+ UniversalStreetAddress
+ IDENTIFIED BY 36
+}
+
+UniversalStreetAddress ::= UniversalPDSParameter
+
+post-office-box-address EXTENSION-ATTRIBUTE ::= {
+ PostOfficeBoxAddress
+ IDENTIFIED BY 18
+}
+
+PostOfficeBoxAddress ::= PDSParameter
+
+universal-post-office-box-address EXTENSION-ATTRIBUTE ::= {
+ UniversalPostOfficeBoxAddress
+ IDENTIFIED BY 37
+}
+
+UniversalPostOfficeBoxAddress ::= UniversalPDSParameter
+
+poste-restante-address EXTENSION-ATTRIBUTE ::= {
+ PosteRestanteAddress
+ IDENTIFIED BY 19
+}
+
+PosteRestanteAddress ::= PDSParameter
+
+universal-poste-restante-address EXTENSION-ATTRIBUTE ::= {
+ UniversalPosteRestanteAddress
+ IDENTIFIED BY 38
+}
+
+UniversalPosteRestanteAddress ::= UniversalPDSParameter
+
+unique-postal-name EXTENSION-ATTRIBUTE ::= {UniquePostalName
+ IDENTIFIED BY 20
+}
+
+UniquePostalName ::= PDSParameter
+
+universal-unique-postal-name EXTENSION-ATTRIBUTE ::= {
+ UniversalUniquePostalName
+ IDENTIFIED BY 39
+}
+
+UniversalUniquePostalName ::= UniversalPDSParameter
+
+local-postal-attributes EXTENSION-ATTRIBUTE ::= {
+ LocalPostalAttributes
+ IDENTIFIED BY 21
+}
+
+LocalPostalAttributes ::= PDSParameter
+
+universal-local-postal-attributes EXTENSION-ATTRIBUTE ::= {
+ UniversalLocalPostalAttributes
+ IDENTIFIED BY 40
+}
+
+UniversalLocalPostalAttributes ::= UniversalPDSParameter
+
+PDSParameter ::= SET {
+ printable-string PrintableString(SIZE (1..ub-pds-parameter-length)) OPTIONAL,
+ teletex-string TeletexString(SIZE (1..ub-pds-parameter-length)) OPTIONAL
+}
+
+UniversalPDSParameter ::= UniversalOrBMPString{ub-pds-parameter-length}
+
+extended-network-address EXTENSION-ATTRIBUTE ::= {
+ ExtendedNetworkAddress
+ IDENTIFIED BY 22
+}
+
+ExtendedNetworkAddress ::= CHOICE {
+ e163-4-address
+ SEQUENCE {number
+ [0] NumericString(SIZE (1..ub-e163-4-number-length)),
+ sub-address
+ [1] NumericString(SIZE (1..ub-e163-4-sub-address-length))
+ OPTIONAL},
+ psap-address [0] PresentationAddress
+}
+
+terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType
+ IDENTIFIED BY 23
+}
+
+TerminalType ::= INTEGER {
+ telex(3), teletex(4), g3-facsimile(5), g4-facsimile(6), ia5-terminal(7),
+ videotex(8)}(0..ub-integer-options)
+
+-- Extension Domain-defined Attributes
+teletex-domain-defined-attributes EXTENSION-ATTRIBUTE ::= {
+ TeletexDomainDefinedAttributes
+ IDENTIFIED BY 6
+}
+
+TeletexDomainDefinedAttributes ::=
+ SEQUENCE SIZE (1..ub-domain-defined-attributes) OF
+ TeletexDomainDefinedAttribute
+
+TeletexDomainDefinedAttribute ::= SEQUENCE {
+ type TeletexString(SIZE (1..ub-domain-defined-attribute-type-length)),
+ value TeletexString(SIZE (1..ub-domain-defined-attribute-value-length))
+}
+
+universal-domain-defined-attributes EXTENSION-ATTRIBUTE ::= {
+ UniversalDomainDefinedAttributes
+ IDENTIFIED BY 28
+}
+
+UniversalDomainDefinedAttributes ::=
+ SEQUENCE SIZE (1..ub-domain-defined-attributes) OF
+ UniversalDomainDefinedAttribute
+
+UniversalDomainDefinedAttribute ::= SEQUENCE {
+ type UniversalOrBMPString{ub-domain-defined-attribute-type-length},
+ value UniversalOrBMPString{ub-domain-defined-attribute-value-length}
+}
+
+-- Encoded Information Types
+EncodedInformationTypes ::= [APPLICATION 5] SET {
+ built-in-encoded-information-types [0] BuiltInEncodedInformationTypes,
+ -- non-basic-parameters --COMPONENTS OF NonBasicParameters,
+ extended-encoded-information-types
+ [4] ExtendedEncodedInformationTypes OPTIONAL
+}
+
+-- Built-in Encoded Information Types
+BuiltInEncodedInformationTypes ::= BIT STRING {
+ unknown(0), ia5-text(2), g3-facsimile(3), g4-class-1(4), teletex(5),
+ videotex(6), voice(7), sfd(8), mixed-mode(9)
+}(SIZE (0..ub-built-in-encoded-information-types))
+
+-- Extended Encoded Information Types
+ExtendedEncodedInformationTypes ::=
+ SET SIZE (1..ub-encoded-information-types) OF ExtendedEncodedInformationType
+
+ExtendedEncodedInformationType ::= OBJECT IDENTIFIER
+
+-- Non-basic Parameters
+NonBasicParameters ::= SET {
+ g3-facsimile [1] G3FacsimileNonBasicParameters DEFAULT {},
+ teletex [2] TeletexNonBasicParameters DEFAULT {}
+}
+
+G3FacsimileNonBasicParameters ::= BIT STRING {
+ two-dimensional(8), -- As defined in ITU-T Recommendation T.30
+ fine-resolution(9), --
+ unlimited-length(20), -- These bit values are chosen such that when
+ b4-length(21), -- encoded using ASN.1 Basic Encoding Rules
+ a3-width(22), -- the resulting octets have the same values
+ b4-width(23), -- as for T.30 encoding
+ t6-coding(25), --
+ uncompressed(30), -- Trailing zero bits are not significant.
+ width-middle-864-of-1728(37), -- It is recommended that implementations
+ width-middle-1216-of-1728(38), -- should not encode more than 32 bits unless
+ resolution-type(44), -- higher numbered bits are non-zero.
+ resolution-400x400(45), resolution-300x300(46), resolution-8x15(47),
+ edi(49), dtm(50), bft(51), mixed-mode(58), character-mode(60),
+ twelve-bits(65), preferred-huffmann(66), full-colour(67), jpeg(68),
+ processable-mode-26(71)}
+
+TeletexNonBasicParameters ::= SET {
+ graphic-character-sets [0] TeletexString OPTIONAL,
+ control-character-sets [1] TeletexString OPTIONAL,
+ page-formats [2] OCTET STRING OPTIONAL,
+ miscellaneous-terminal-capabilities [3] TeletexString OPTIONAL,
+ private-use
+ [4] OCTET STRING
+ OPTIONAL -- maximum ub-teletex-private-use-length octets --
+}
+
+-- as defined in CCITT Recommendation T.62
+-- Token
+Token ::= SEQUENCE {
+ token-type-identifier [0] TOKEN.&id({TokensTable}),
+ token
+ [1] TOKEN.&Type({TokensTable}{@token-type-identifier})
+}
+
+TOKEN ::= TYPE-IDENTIFIER
+
+TokensTable TOKEN ::= {asymmetric-token, ...}
+
+asymmetric-token TOKEN ::= {
+ AsymmetricToken
+ IDENTIFIED BY id-tok-asymmetricToken
+}
+
+AsymmetricToken ::=
+ SIGNED
+ {SEQUENCE {signature-algorithm-identifier AlgorithmIdentifier,
+ name
+ CHOICE {recipient-name RecipientName,
+ mta
+ [3] SEQUENCE {global-domain-identifier
+ GlobalDomainIdentifier OPTIONAL,
+ mta-name MTAName
+ }},
+ time Time,
+ signed-data [0] TokenData OPTIONAL,
+ encryption-algorithm-identifier
+ [1] AlgorithmIdentifier OPTIONAL,
+ encrypted-data
+ [2] ENCRYPTED{TokenData} OPTIONAL}}
+
+TokenData ::= SEQUENCE {
+ type [0] TOKEN-DATA.&id({TokenDataTable}),
+ value [1] TOKEN-DATA.&Type({TokenDataTable}{@type})
+}
+
+TOKEN-DATA ::= CLASS {&id INTEGER UNIQUE,
+ &Type
+}WITH SYNTAX {&Type
+ IDENTIFIED BY &id
+}
+
+TokenDataTable TOKEN-DATA ::=
+ {bind-token-signed-data | message-token-signed-data |
+ message-token-encrypted-data | bind-token-encrypted-data, ...}
+
+bind-token-signed-data TOKEN-DATA ::= {BindTokenSignedData
+ IDENTIFIED BY 1
+}
+
+BindTokenSignedData ::= RandomNumber
+
+RandomNumber ::= BIT STRING
+
+message-token-signed-data TOKEN-DATA ::= {
+ MessageTokenSignedData
+ IDENTIFIED BY 2
+}
+
+MessageTokenSignedData ::= SEQUENCE {
+ content-confidentiality-algorithm-identifier
+ [0] ContentConfidentialityAlgorithmIdentifier OPTIONAL,
+ content-integrity-check
+ [1] ContentIntegrityCheck OPTIONAL,
+ message-security-label
+ [2] MessageSecurityLabel OPTIONAL,
+ proof-of-delivery-request
+ [3] ProofOfDeliveryRequest OPTIONAL,
+ message-sequence-number [4] INTEGER OPTIONAL
+}
+
+message-token-encrypted-data TOKEN-DATA ::= {
+ MessageTokenEncryptedData
+ IDENTIFIED BY 3
+}
+
+MessageTokenEncryptedData ::= SEQUENCE {
+ content-confidentiality-key [0] EncryptionKey OPTIONAL,
+ content-integrity-check [1] ContentIntegrityCheck OPTIONAL,
+ message-security-label [2] MessageSecurityLabel OPTIONAL,
+ content-integrity-key [3] EncryptionKey OPTIONAL,
+ message-sequence-number [4] INTEGER OPTIONAL
+}
+
+EncryptionKey ::= BIT STRING
+
+bind-token-encrypted-data TOKEN-DATA ::= {
+ BindTokenEncryptedData
+ IDENTIFIED BY 4
+}
+
+BindTokenEncryptedData ::= EXTERNAL
+
+-- Security Label
+SecurityLabel ::= SET {
+ security-policy-identifier SecurityPolicyIdentifier OPTIONAL,
+ security-classification SecurityClassification OPTIONAL,
+ privacy-mark PrivacyMark OPTIONAL,
+ security-categories SecurityCategories OPTIONAL
+}
+
+SecurityPolicyIdentifier ::= OBJECT IDENTIFIER
+
+SecurityClassification ::= INTEGER {
+ unmarked(0), unclassified(1), restricted(2), confidential(3), secret(4),
+ top-secret(5)}(0..ub-integer-options)
+
+PrivacyMark ::= PrintableString(SIZE (1..ub-privacy-mark-length))
+
+SecurityCategories ::= SET SIZE (1..ub-security-categories) OF SecurityCategory
+
+SecurityCategory ::= SEQUENCE {
+ type [0] SECURITY-CATEGORY.&id({SecurityCategoriesTable}),
+ value [1] SECURITY-CATEGORY.&Type({SecurityCategoriesTable}{@type})
+}
+
+SECURITY-CATEGORY ::= TYPE-IDENTIFIER
+
+SecurityCategoriesTable SECURITY-CATEGORY ::=
+ {...}
+
+END -- of MTSAbstractService
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAbstractService88.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAbstractService88.asn1
new file mode 100644
index 0000000000..f66d117f35
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAbstractService88.asn1
@@ -0,0 +1,150 @@
+-- Module MTSAbstractService88 (X.411:06/1999)
+MTSAbstractService88 {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1988(1988)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS
+ -- Remote Operations
+ CONTRACT
+ --==
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ -- MTS Abstract Service Parameters
+ operationObject1, ABSTRACT-OPERATION, change-credentials, ContentLength,
+ ContentTypes, Controls, control-violates-registration,
+ DefaultDeliveryControls, EncodedInformationTypes, message-delivery,
+ MHS-OBJECT, mts-connect, PORT, RecipientAssignedAlternateRecipient,
+ register-rejected, report-delivery, SecurityLabel, security-error,
+ submission, UserAddress, UserName, Waiting
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- Object Identifiers
+ id-ct-mts-access, id-ct-mts-forced-access, id-ot-mts, id-ot-mts-user,
+ id-pt-administration, id-pt-delivery
+ --==
+ FROM MTSObjectIdentifiers {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ object-identifiers(0) version-1999(1)}
+ -- Operation Codes
+ op-delivery-control, op-register
+ --==
+ FROM MTSAccessProtocol {joint-iso-itu-t mhs(6) protocols(0) modules(0)
+ mts-access-protocol(1) version-1999(1)}
+ -- Upper Bounds
+ ub-content-types, ub-labels-and-redirections
+ --==
+ FROM MTSUpperBounds {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ upper-bounds(3) version-1999(1)};
+
+-- Objects
+mts-88 MHS-OBJECT ::= {
+ INITIATES {mts-forced-access-contract-88}
+ RESPONDS {mts-access-contract-88}
+ ID {id-ot-mts 88}
+}
+
+mts-user-88 MHS-OBJECT ::= {
+ INITIATES {mts-access-contract-88}
+ RESPONDS {mts-forced-access-contract-88}
+ ID {id-ot-mts-user 88}
+}
+
+-- Contracts
+mts-access-contract-88 CONTRACT ::= {
+ CONNECTION mts-connect
+ INITIATOR CONSUMER OF {submission | delivery-88 | administration-88}
+ ID {id-ct-mts-access 88}
+}
+
+mts-forced-access-contract-88 CONTRACT ::= {
+ CONNECTION mts-connect
+ RESPONDER CONSUMER OF {submission | delivery-88 | administration-88}
+ ID {id-ct-mts-forced-access 88}
+}
+
+-- Ports
+delivery-88 PORT ::= {
+ OPERATIONS
+ {operationObject1,
+ ...} -- This IOS needs to be extensible for Forward{} of X.880
+ CONSUMER INVOKES
+ {delivery-control-88,
+ ...} -- This IOS needs to be extensible for Forward{} of X.880
+ SUPPLIER INVOKES
+ {message-delivery | report-delivery,
+ ...} -- This IOS needs to be extensible for Forward{} of X.880
+ ID {id-pt-delivery 88}
+}
+
+administration-88 PORT ::= {
+ OPERATIONS
+ {change-credentials,
+ ...} -- This IOS needs to be extensible for Forward{} of X.880
+ CONSUMER INVOKES
+ {register-88,
+ ...} -- This IOS needs to be extensible for Forward{} of X.880
+ SUPPLIER INVOKES
+ {operationObject1,
+ ...} -- This IOS needs to be extensible for Forward{} of X.880
+ ID {id-pt-administration 88}
+}
+
+-- Delivery Port
+delivery-control-88 ABSTRACT-OPERATION ::= {
+ ARGUMENT DeliveryControls88
+ RESULT Waiting
+ ERRORS {control-violates-registration | security-error}
+ LINKED
+ {operationObject1,
+ ...} -- This IOS needs to be extensible for Forward{} of X.880
+ INVOKE PRIORITY {3}
+ CODE op-delivery-control
+}
+
+DeliveryControls88 ::= SET {
+ COMPONENTS OF
+ Controls
+ (WITH COMPONENTS {
+ ...,
+ permissible-encoded-information-types ABSENT
+ }),
+ permissible-encoded-information-types-88 EncodedInformationTypes OPTIONAL
+}
+
+-- Administration Port
+register-88 ABSTRACT-OPERATION ::= {
+ ARGUMENT Register88
+ RESULT NULL
+ ERRORS {register-rejected}
+ LINKED {operationObject1, ...}
+ INVOKE PRIORITY {5}
+ CODE op-register
+}
+
+Register88 ::= SET {
+ user-name UserName OPTIONAL,
+ user-address [0] UserAddress OPTIONAL,
+ deliverable-encoded-information-types EncodedInformationTypes OPTIONAL,
+ deliverable-maximum-content-length [1] EXPLICIT ContentLength OPTIONAL,
+ default-delivery-controls
+ [2] EXPLICIT DefaultDeliveryControls OPTIONAL,
+ deliverable-content-types [3] ContentTypes OPTIONAL,
+ labels-and-redirections
+ [4] SET SIZE (1..ub-labels-and-redirections) OF LabelAndRedirection
+ OPTIONAL
+}
+
+LabelAndRedirection ::= SET {
+ user-security-label [0] UserSecurityLabel OPTIONAL,
+ recipient-assigned-alternate-recipient
+ [1] RecipientAssignedAlternateRecipient OPTIONAL
+}
+
+UserSecurityLabel ::= SecurityLabel
+
+END -- of MTSAbstractService88
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAccessProtocol.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAccessProtocol.asn1
new file mode 100644
index 0000000000..03181c5951
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSAccessProtocol.asn1
@@ -0,0 +1,321 @@
+-- Module MTSAccessProtocol (X.419:06/1999)
+
+MTSAccessProtocol {joint-iso-itu-t mhs(6) protocols(0) modules(0)
+ mts-access-protocol(1) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+IMPORTS
+ -- MTS Abstract Service
+ administration, delivery, mts-access-contract, mts-connect,
+ mts-forced-access-contract, submission
+ --==
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ -- MTS Abstract Service (1988)
+ administration-88, delivery-88, mts-access-contract-88,
+ mts-forced-access-contract-88
+ --==
+ FROM MTSAbstractService88 {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1988(1988)}
+ -- Remote Operations
+ APPLICATION-CONTEXT
+ --==
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)}
+ Code
+ --==
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ Bind{}, InvokeId, Unbind{}
+ --==
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ ROS-SingleAS{}
+ --==
+ FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
+ remote-operations(4) useful-definitions(7) version1(0)}
+ acse, association-by-RTSE, pData, transfer-by-RTSE
+ --==
+ FROM Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
+ realizations(9) version1(0)}
+ acse-abstract-syntax
+ --==
+ FROM Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t
+ remote-operations(4) remote-operations-abstract-syntaxes(12) version1(0)}
+ -- Reliable Transfer
+ RTORQapdu, RTOACapdu, RTORJapdu
+ FROM Reliable-Transfer-APDU {joint-iso-itu-t reliable-transfer(3) apdus(0)}
+ -- Object Identifiers
+ id-ac-mts-access-88, id-ac-mts-access-94, id-ac-mts-forced-access-88,
+ id-ac-mts-forced-access-94, id-ac-mts-forced-reliable-access-88,
+ id-ac-mts-forced-reliable-access-94, id-ac-mts-reliable-access-88,
+ id-ac-mts-reliable-access-94, id-as-mase-88, id-as-mase-94, id-as-mdse-88,
+ id-as-mdse-94, id-as-msse, id-as-mts, id-as-mts-rtse
+ --==
+ FROM MHSProtocolObjectIdentifiers {joint-iso-itu-t mhs(6) protocols(0)
+ modules(0) object-identifiers(0) version-1994(0)};
+
+RTSE-apdus ::= CHOICE {
+ rtorq-apdu [16] IMPLICIT RTORQapdu,
+ rtoac-apdu [17] IMPLICIT RTOACapdu,
+ rtorj-apdu [18] IMPLICIT RTORJapdu,
+ rttp-apdu RTTPapdu,
+ rttr-apdu RTTRapdu,
+ rtab-apdu [22] IMPLICIT RTABapdu
+}
+
+RTTPapdu ::= -- priority-- INTEGER
+
+RTTRapdu ::= OCTET STRING
+
+RTABapdu ::= SET {
+ abortReason [0] IMPLICIT AbortReason OPTIONAL,
+ reflectedParameter [1] IMPLICIT BIT STRING OPTIONAL,
+ -- 8 bits maximum, only if abortReason is invalidParameter
+ userdataAB
+ [2] TYPE-IDENTIFIER.&Type
+ OPTIONAL -- only in normal mode and if abortReason--
+ -- is userError
+}
+
+AbortReason ::= INTEGER {
+ localSystemProblem(0),
+ invalidParameter(1), -- reflectedParameter supplied
+ unrecognizedActivity(2),
+ temporaryProblem(3),
+ -- the RTSE cannot accept a session for a period of time
+ protocolError(4), -- RTSE level protocol error
+ permanentProblem(5), --provider-abort solely in normal mode
+ userError(6), -- user-abort solely in normal mode
+ transferCompleted(7) -- activity can't be discarded--}
+
+-- APPLICATION CONTEXTS
+-- 1994 Application Contexts omitting RTSE
+-- MTS-user initiated
+mts-access-94 APPLICATION-CONTEXT ::= {
+ CONTRACT mts-access-contract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-delivery-abstract-syntax |
+ message-administration-abstract-syntax-94 |
+ mts-bind-unbind-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-mts-access-94
+}
+
+-- MTS initiated
+mts-forced-access-94 APPLICATION-CONTEXT ::= {
+ CONTRACT mts-forced-access-contract
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-delivery-abstract-syntax |
+ message-administration-abstract-syntax-94 |
+ mts-bind-unbind-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-mts-forced-access-94
+}
+
+-- 1994 Application Contexts including RTSE in normal mode
+-- MTS-user initiated
+mts-reliable-access-94 APPLICATION-CONTEXT ::= {
+ CONTRACT mts-access-contract
+ ESTABLISHED BY association-by-RTSE
+ INFORMATION TRANSFER BY transfer-by-RTSE
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-delivery-abstract-syntax |
+ message-administration-abstract-syntax-94 |
+ mts-bind-unbind-rtse-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-mts-reliable-access-94
+}
+
+-- MTS initiated
+mts-forced-reliable-access-94 APPLICATION-CONTEXT ::= {
+ CONTRACT mts-forced-access-contract
+ ESTABLISHED BY association-by-RTSE
+ INFORMATION TRANSFER BY transfer-by-RTSE
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-delivery-abstract-syntax |
+ message-administration-abstract-syntax-94 |
+ mts-bind-unbind-rtse-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-mts-forced-reliable-access-94
+}
+
+-- 1988 Application Contexts omitting RTSE
+-- MTS-user initiated
+mts-access-88 APPLICATION-CONTEXT ::= {
+ CONTRACT mts-access-contract-88
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-delivery-abstract-syntax-88 |
+ message-administration-abstract-syntax-88 |
+ mts-bind-unbind-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-mts-access-88
+}
+
+-- MTS initiated
+mts-forced-access-88 APPLICATION-CONTEXT ::= {
+ CONTRACT mts-forced-access-contract-88
+ ESTABLISHED BY acse
+ INFORMATION TRANSFER BY pData
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-delivery-abstract-syntax-88 |
+ message-administration-abstract-syntax-88 |
+ mts-bind-unbind-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-mts-forced-access-88
+}
+
+-- 1988 Application Contexts including RTSE in normal mode
+-- MTS-user initiated
+mts-reliable-access-88 APPLICATION-CONTEXT ::= {
+ CONTRACT mts-access-contract-88
+ ESTABLISHED BY association-by-RTSE
+ INFORMATION TRANSFER BY transfer-by-RTSE
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-delivery-abstract-syntax-88 |
+ message-administration-abstract-syntax-88 |
+ mts-bind-unbind-rtse-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-mts-reliable-access-88
+}
+
+-- MTS initiated
+mts-forced-reliable-access-88 APPLICATION-CONTEXT ::= {
+ CONTRACT mts-forced-access-contract-88
+ ESTABLISHED BY association-by-RTSE
+ INFORMATION TRANSFER BY transfer-by-RTSE
+ ABSTRACT SYNTAXES
+ {acse-abstract-syntax | message-submission-abstract-syntax |
+ message-delivery-abstract-syntax-88 |
+ message-administration-abstract-syntax-88 |
+ mts-bind-unbind-rtse-abstract-syntax}
+ APPLICATION CONTEXT NAME id-ac-mts-forced-reliable-access-88
+}
+
+-- ABSTRACT-SYNTAXES
+-- Abstract Syntax for MTS-Bind and MTS-Unbind
+mts-bind-unbind-abstract-syntax ABSTRACT-SYNTAX ::= {
+ MTSBindUnbindPDUs
+ IDENTIFIED BY id-as-mts
+}
+
+MTSBindUnbindPDUs ::= CHOICE {
+ bind Bind{mts-connect.&bind},
+ unbind Unbind{mts-connect.&unbind}
+}
+
+-- Abstract Syntax for MTS-Bind and MTS-Unbind with RTSE
+mts-bind-unbind-rtse-abstract-syntax ABSTRACT-SYNTAX ::= {
+ RTSE-apdus -- With MTS Bind and MTS Unbind --
+ IDENTIFIED BY id-as-mts-rtse
+}
+
+-- Abstract Syntax for Message Submission Service Element
+message-submission-abstract-syntax ABSTRACT-SYNTAX ::= {
+ MessageSubmissionPDUs
+ IDENTIFIED BY id-as-msse
+}
+
+MessageSubmissionPDUs ::= ROS-SingleAS{{MTSInvokeIds}, submission}
+
+MTSInvokeIds ::= InvokeId(ALL EXCEPT absent:NULL)
+
+-- Remote Operations
+op-message-submission Code ::= local:3
+
+op-probe-submission Code ::= local:4
+
+op-cancel-deferred-delivery Code ::= local:7
+
+op-submission-control Code ::= local:2
+
+-- Remote Errors
+err-submission-control-violated Code ::= local:1
+
+err-element-of-service-not-subscribed Code ::= local:4
+
+err-deferred-delivery-cancellation-rejected Code ::= local:8
+
+err-originator-invalid Code ::= local:2
+
+err-recipient-improperly-specified Code ::= local:3
+
+err-message-submission-identifier-invalid Code ::= local:7
+
+err-inconsistent-request Code ::= local:11
+
+err-security-error Code ::= local:12
+
+err-unsupported-critical-function Code ::= local:13
+
+err-remote-bind-error Code ::= local:15
+
+-- Abstract Syntax for Message Delivery Service Element 1994
+message-delivery-abstract-syntax ABSTRACT-SYNTAX ::= {
+ MessageDeliveryPDUs
+ IDENTIFIED BY id-as-mdse-94
+}
+
+MessageDeliveryPDUs ::= ROS-SingleAS{{MTSInvokeIds}, delivery}
+
+-- Abstract Syntax for Message Delivery Service Element 1988
+message-delivery-abstract-syntax-88 ABSTRACT-SYNTAX ::= {
+ MessageDeliveryPDUs88
+ IDENTIFIED BY id-as-mdse-88
+}
+
+MessageDeliveryPDUs88 ::= ROS-SingleAS{{MTSInvokeIds}, delivery-88}
+
+-- Remote Operations
+op-message-delivery Code ::= local:5
+
+op-report-delivery Code ::= local:6
+
+op-delivery-control Code ::= local:2
+
+-- Remote Errors
+err-delivery-control-violated Code ::= local:1
+
+err-control-violates-registration Code ::= local:14
+
+err-operation-refused Code ::= local:16
+
+-- Abstract Syntax for Message Administration Service Element 1994
+message-administration-abstract-syntax-94 ABSTRACT-SYNTAX ::= {
+ MessageAdministrationPDUs
+ IDENTIFIED BY id-as-mase-94
+}
+
+MessageAdministrationPDUs ::= ROS-SingleAS{{MTSInvokeIds}, administration}
+
+-- Abstract Syntax for Message Administration Service Element 1988
+message-administration-abstract-syntax-88 ABSTRACT-SYNTAX ::= {
+ MessageAdministrationPDUs88
+ IDENTIFIED BY id-as-mase-88
+}
+
+MessageAdministrationPDUs88 ::= ROS-SingleAS{{MTSInvokeIds}, administration-88}
+
+-- Remote Operations
+op-register Code ::= local:1
+
+op-change-credentials Code ::= local:8
+
+-- Remote Errors
+err-register-rejected Code ::= local:10
+
+err-new-credentials-unacceptable Code ::= local:6
+
+err-old-credentials-incorrectly-specified Code ::= local:5
+
+END -- of MTSAccessProtocol
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MTSObjectIdentifiers.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSObjectIdentifiers.asn1
new file mode 100644
index 0000000000..1615b241ee
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSObjectIdentifiers.asn1
@@ -0,0 +1,116 @@
+-- Module MTSObjectIdentifiers (X.411:06/1999)
+MTSObjectIdentifiers {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ object-identifiers(0) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS -- nothing -- ;
+
+ID ::= OBJECT IDENTIFIER
+
+-- Message Transfer System
+id-mts ID ::=
+ {joint-iso-itu-t mhs(6) mts(3)} -- not definitive
+
+-- Categories of Object Identifiers
+id-mod ID ::= {id-mts 0} -- modules
+
+id-ot ID ::= {id-mts 1} -- object types
+
+id-pt ID ::= {id-mts 2} -- port types
+
+id-cont ID ::= {id-mts 3} -- content types
+
+id-eit ID ::= {id-mts 4} -- encoded information types
+
+id-att ID ::= {id-mts 5} -- attributes
+
+id-tok ID ::= {id-mts 6} -- token types
+
+id-sa ID ::= {id-mts 7} -- secure agent types
+
+id-ct ID ::= {id-mts 8} -- contracts
+
+id-cp ID ::= {id-mts 9} -- connection packages
+
+-- Modules
+id-mod-object-identifiers ID ::= {id-mod 0} -- not definitive
+
+id-mod-mts-abstract-service ID ::= {id-mod 1} -- not definitive
+
+id-mod-mta-abstract-service ID ::= {id-mod 2} -- not definitive
+
+id-mod-upper-bounds ID ::= {id-mod 3} -- not definitive
+
+-- Object Types
+id-ot-mts ID ::= {id-ot 0}
+
+id-ot-mts-user ID ::= {id-ot 1}
+
+id-ot-mta ID ::= {id-ot 2}
+
+-- Port Types
+id-pt-submission ID ::= {id-pt 0}
+
+id-pt-delivery ID ::= {id-pt 1}
+
+id-pt-administration ID ::= {id-pt 2}
+
+id-pt-transfer ID ::= {id-pt 3}
+
+-- Content Types
+id-cont-unidentified ID ::=
+ {id-cont 0} -- For use by MS and Directory
+
+id-cont-inner-envelope ID ::= {id-cont 1}
+
+-- Encoded Information Types
+id-eit-unknown ID ::= {id-eit 0}
+
+-- Value { id-eit 1 } is no longer defined
+id-eit-ia5-text ID ::= {id-eit 2}
+
+id-eit-g3-facsimile ID ::= {id-eit 3}
+
+id-eit-g4-class-1 ID ::= {id-eit 4}
+
+id-eit-teletex ID ::= {id-eit 5}
+
+id-eit-videotex ID ::= {id-eit 6}
+
+id-eit-voice ID ::= {id-eit 7}
+
+id-eit-sfd ID ::= {id-eit 8}
+
+id-eit-mixed-mode ID ::= {id-eit 9}
+
+-- Attributes
+id-att-physicalRendition-basic ID ::= {id-att 0}
+
+id-att-physicalRendition-no-cover-page ID ::= {id-att 1}
+
+-- Token Types
+id-tok-asymmetricToken ID ::= {id-tok 0}
+
+-- Secure Agent Types
+id-sa-ua ID ::= {id-sa 0}
+
+id-sa-ms ID ::= {id-sa 1}
+
+-- Contracts
+id-ct-mts-access ID ::= {id-ct 0}
+
+id-ct-mts-forced-access ID ::= {id-ct 1}
+
+id-ct-mta-transfer ID ::= {id-ct 2}
+
+-- Connection Packages
+id-cp-mts-connect ID ::= {id-cp 0}
+
+id-cp-mta-connect ID ::= {id-cp 1}
+
+END -- of MTSObjectIdentifiers
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/MTSUpperBounds.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSUpperBounds.asn1
new file mode 100644
index 0000000000..10eac962cb
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/MTSUpperBounds.asn1
@@ -0,0 +1,146 @@
+-- Module MTSUpperBounds (X.411:06/1999)
+MTSUpperBounds {joint-iso-itu-t mhs(6) mts(3) modules(0) upper-bounds(3)
+ version-1999(1)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- Prologue
+-- Exports everything
+IMPORTS -- nothing -- ;
+
+-- Upper Bounds
+ub-additional-info INTEGER ::= 1024
+
+ub-bilateral-info INTEGER ::= 1024
+
+ub-bit-options INTEGER ::= 16
+
+ub-built-in-content-type INTEGER ::= 32767
+
+ub-built-in-encoded-information-types INTEGER ::= 32
+
+ub-certificates INTEGER ::= 64
+
+ub-common-name-length INTEGER ::= 64
+
+ub-content-correlator-length INTEGER ::= 512
+
+ub-content-id-length INTEGER ::= 16
+
+ub-content-length INTEGER ::= 2147483647 -- the largest integer in 32 bits
+
+ub-content-types INTEGER ::= 1024
+
+ub-country-name-alpha-length INTEGER ::= 2
+
+ub-country-name-numeric-length INTEGER ::= 3
+
+ub-diagnostic-codes INTEGER ::= 32767
+
+ub-deliverable-class INTEGER ::= 256
+
+ub-dl-expansions INTEGER ::= 512
+
+ub-domain-defined-attributes INTEGER ::= 4
+
+ub-domain-defined-attribute-type-length INTEGER ::= 8
+
+ub-domain-defined-attribute-value-length INTEGER ::= 128
+
+ub-domain-name-length INTEGER ::= 16
+
+ub-encoded-information-types INTEGER ::= 1024
+
+ub-extension-attributes INTEGER ::= 256
+
+ub-extension-types INTEGER ::= 256
+
+ub-e163-4-number-length INTEGER ::= 15
+
+ub-e163-4-sub-address-length INTEGER ::= 40
+
+ub-generation-qualifier-length INTEGER ::= 3
+
+ub-given-name-length INTEGER ::= 16
+
+ub-initials-length INTEGER ::= 5
+
+ub-integer-options INTEGER ::= 256
+
+ub-labels-and-redirections INTEGER ::= 256
+
+ub-local-id-length INTEGER ::= 32
+
+ub-mta-name-length INTEGER ::= 32
+
+ub-mts-user-types INTEGER ::= 256
+
+ub-numeric-user-id-length INTEGER ::= 32
+
+ub-organization-name-length INTEGER ::= 64
+
+ub-organizational-unit-name-length INTEGER ::= 32
+
+ub-organizational-units INTEGER ::= 4
+
+ub-orig-and-dl-expansions INTEGER ::= 513 -- ub-dl-expansions plus one
+
+ub-password-length INTEGER ::= 62
+
+ub-pds-name-length INTEGER ::= 16
+
+ub-pds-parameter-length INTEGER ::= 30
+
+ub-pds-physical-address-lines INTEGER ::= 6
+
+ub-postal-code-length INTEGER ::= 16
+
+ub-privacy-mark-length INTEGER ::= 128
+
+ub-queue-size INTEGER ::= 2147483647 -- the largest integer in 32 bits
+
+ub-reason-codes INTEGER ::= 32767
+
+ub-recipient-number-for-advice-length INTEGER ::= 32
+
+ub-recipients INTEGER ::= 32767
+
+ub-redirection-classes INTEGER ::= 256
+
+ub-redirections INTEGER ::= 512
+
+ub-restrictions INTEGER ::= 1024
+
+ub-security-categories INTEGER ::= 64
+
+ub-security-labels INTEGER ::= 256
+
+ub-security-problems INTEGER ::= 256
+
+ub-supplementary-info-length INTEGER ::= 256
+
+ub-surname-length INTEGER ::= 40
+
+ub-teletex-private-use-length INTEGER ::= 128
+
+ub-terminal-id-length INTEGER ::= 24
+
+ub-transfers INTEGER ::= 512
+
+ub-tsap-id-length INTEGER ::= 16
+
+ub-unformatted-address-length INTEGER ::= 180
+
+ub-universal-generation-qualifier-length INTEGER ::= 16
+
+ub-universal-given-name-length INTEGER ::= 40
+
+ub-universal-initials-length INTEGER ::= 16
+
+ub-universal-surname-length INTEGER ::= 64
+
+ub-x121-address-length INTEGER ::= 16
+
+END -- of MTSUpperBounds
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Notation.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Notation.asn1
new file mode 100644
index 0000000000..96dfc39b6a
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Notation.asn1
@@ -0,0 +1,244 @@
+-- Module Notation (X.830:04/1995)
+
+Notation {joint-iso-itu-t genericULS(20) modules(1) notation(1)} DEFINITIONS
+AUTOMATIC TAGS ::=
+BEGIN
+
+-- EXPORTS All
+IMPORTS
+ -- From Directory Standards:
+ informationFramework, selectedAttributeTypes, authenticationFramework
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ Name
+ FROM InformationFramework informationFramework
+ UniqueIdentifier
+ FROM SelectedAttributeTypes selectedAttributeTypes
+ AlgorithmIdentifier
+ FROM AuthenticationFramework authenticationFramework
+ -- From Other GULS Modules:
+ genericProtectingTransferSyntax
+ FROM ObjectIdentifiers {joint-iso-itu-t genericULS(20) modules(1)
+ objectIdentifiers(0)}
+ SyntaxStructure{}
+ FROM GenericProtectingTransferSyntax genericProtectingTransferSyntax;
+
+-- *************************************************
+-- Notation for security identity and SA-identifiers
+-- *************************************************
+-- Values of the SecurityIdentity type are used to identify entities
+-- which assign externally-established security association identifiers,
+-- and for other security-related purposes requiring globally-unique
+-- identifiers.
+SecurityIdentity ::= CHOICE {
+ directoryName Name,
+ objectIdentifier OBJECT IDENTIFIER
+}
+
+ExternalSAID ::= SEQUENCE {
+ localSAID INTEGER,
+ assignerIdentity SecurityIdentity OPTIONAL
+ -- Identity of the system which assigned the integer value
+}
+
+-- ******************************************
+-- Notation for specifying security exchanges
+-- ******************************************
+SECURITY-EXCHANGE ::=
+ CLASS
+ -- This information object class definition is for use when
+ -- specifying a particular instance of a security exchange.
+ {
+ &SE-Items SEC-EXCHG-ITEM,
+ -- This is an ASN.1 information object set, comprising a set
+ -- of security exchange items
+ &sE-Identifier Identifier UNIQUE
+ -- A local or global identifier for the particular security
+ -- exchange
+}
+WITH SYNTAX
+ -- The following syntax is used to specify a particular security
+-- exchange.
+{SE-ITEMS &SE-Items
+ IDENTIFIER &sE-Identifier
+}
+
+Identifier ::= CHOICE {local INTEGER,
+ global OBJECT IDENTIFIER
+}
+
+SEC-EXCHG-ITEM ::= CLASS {
+ &ItemType ,
+ -- ASN.1 type for this exchange item
+ &itemId INTEGER,
+ -- Identifier for this item, e.g. 1, 2, 3, ..
+ &Errors SE-ERROR OPTIONAL
+ -- Optional list of errors which may result from
+ -- transfer of this item
+}WITH SYNTAX {ITEM-TYPE &ItemType
+ ITEM-ID &itemId
+ [ERRORS &Errors]
+}
+
+SE-ERROR ::= CLASS {
+ &ParameterType OPTIONAL,
+ -- ASN.1 type of a parameter to accompany the signalling
+ -- of the error condition back to the sender of the SEI
+ &errorCode Identifier UNIQUE
+ -- An identifier used in signalling the error condition
+ -- back to the sender of the SEI
+}WITH SYNTAX {[PARAMETER &ParameterType]
+ ERROR-CODE &errorCode
+}
+
+-- ************************************************
+-- Notation for specifying security transformations
+-- ************************************************
+SECURITY-TRANSFORMATION ::=
+ CLASS
+ -- This information object class definition is for use when
+ -- specifying a particular instance of a security transformation.
+ {
+ &sT-Identifier OBJECT IDENTIFIER UNIQUE,
+ -- Identifier to be used in signalling the application
+ -- of the particular security transformation
+ &initialEncodingRules OBJECT IDENTIFIER DEFAULT {joint-iso-ccitt
+ asn1(1) ber-derived(2)
+ canonical-encoding(0)},
+ -- Default initial encoding rules to generate a bit
+ -- string prior to applying the encoding process of a
+ -- security transformation.
+ &StaticUnprotectedParm OPTIONAL,
+ -- ASN.1 type for conveying static unprotected parameters
+ &DynamicUnprotectedParm OPTIONAL,
+ -- ASN.1 type for conveying dynamic unprotected parameters
+ &XformedDataType ,
+ -- ASN.1 type of the ASN.1 value produced by the security
+ -- transformations encoding process
+ &QualifierType OPTIONAL
+ -- &QualifierType specifies the ASN.1 type of the qualifier
+ -- parameter used with the PROTECTED-Q notation.
+}
+WITH SYNTAX
+ -- The following syntax is used to specify a particular security
+-- transformation.
+{
+ IDENTIFIER &sT-Identifier
+ [INITIAL-ENCODING-RULES &initialEncodingRules]
+ [STATIC-UNPROT-PARM &StaticUnprotectedParm]
+ [DYNAMIC-UNPROT-PARM &DynamicUnprotectedParm]
+ XFORMED-DATA-TYPE &XformedDataType
+ [QUALIFIER-TYPE &QualifierType]
+}
+
+-- **************************************************
+-- Notation for specifying selective field protection
+-- **************************************************
+PROTECTED{BaseType, PROTECTION-MAPPING:protectionReqd} ::= CHOICE {
+ dirEncrypt
+ BIT STRING
+ (CONSTRAINED BY {
+ BaseType-- dirEncrypt is for use only with the
+ -- dirEncryptedTransformation,
+ -- and generates the same encoding as the
+ -- X.509/9594-8 ENCRYPTED type-- }),
+ dirSign
+ SEQUENCE {baseType BaseType OPTIONAL,
+ -- must be present for dirSignedTransformation
+ -- and must be omitted for
+ -- dirSignatureTransformation
+ algorithmId AlgorithmIdentifier,
+ encipheredHash
+ BIT STRING
+ (CONSTRAINED BY {
+ BaseType-- contains enciphered hash--
+ -- of a value of BaseType -- })}-- dirSign is for use only with the
+ -- dirSignedTransformation or
+ -- dirSignatureTransformation, and generates
+ -- the same encoding as the corresponding
+ -- X.509/9594-8 SIGNED or SIGNATURE type--,
+ noTransform [0] BaseType,
+ -- noTransform invokes no security transformation.
+ -- Subject to security policy, noTransform may be used
+ -- if adequate protection is provided by lower layers
+ -- and any application relays through which the data
+ -- may pass are trusted to maintain the required
+ -- protection. This alternative may only be used
+ -- if protectionReqd.&bypassPermitted is TRUE,
+ direct [1] SyntaxStructure{{protectionReqd.&SecurityTransformation}},
+ -- direct generates a protecting transfer syntax
+ -- value, which is encoded using the same encoding
+ -- rules as the surrounding ASN.1 (The type
+ -- SyntaxStructure is imported from Rec. X.833 |
+ -- ISO/IEC 11586-3)
+ embedded
+ [2] EMBEDDED PDV
+ (WITH COMPONENTS {
+ identification (WITH COMPONENTS {
+ presentation-context-id ,
+ context-negotiation (WITH COMPONENTS {
+ transfer-syntax (CONSTRAINED BY {
+ OBJECT
+ IDENTIFIER:
+ protectionReqd.
+ &protTransferSyntax})
+ }),
+ transfer-syntax (CONSTRAINED BY {
+ OBJECT IDENTIFIER:
+ protectionReqd.
+ &protTransferSyntax})
+ }),
+ data-value (CONTAINING BaseType )
+
+ -- The data value encoded is a value of type BaseType
+ })
+}
+
+PROTECTED-Q{BaseType, PROTECTION-MAPPING:protectionReqd,
+ PROTECTION-MAPPING.&SecurityTransformation.&QualifierType:qualifier}
+ ::=
+ PROTECTED{BaseType, protectionReqd}
+ (CONSTRAINED BY {
+ protectionReqd.&SecurityTransformation.&QualifierType:qualifier
+ -- The value of qualifier must be made available to
+ -- the security transformation used
+ })
+
+-- BaseType is the type to be protected, and protectionReqd is an
+-- object of class PROTECTION-MAPPING. The use of PROTECTED requires
+-- the importation into the user's module of the PROTECTED parameterized
+-- type, together with the necessary PROTECTION-MAPPING object
+-- definition.
+-- *******************************************
+-- Notation for specifying protection mappings
+-- *******************************************
+PROTECTION-MAPPING ::= CLASS {
+ &SecurityTransformation SECURITY-TRANSFORMATION,
+ -- &SecurityTransformation specifies an ASN.1 object set of the
+ -- SECURITY-TRANSFORMATION class. Use of the particular
+ -- protection mapping implies use of one of the specified
+ -- transformations, with the choice being left to the
+ -- encoding system. Rules for selecting between these security
+ -- transformations may be specified in comments.
+ &protTransferSyntax OBJECT IDENTIFIER DEFAULT {joint-iso-itu-t
+ genericULS(20)
+ generalTransferSyntax(2)},
+ -- Identifies the particular protecting transfer syntax to
+ -- be used in an EMDEDDED PDV encoding for the embedded
+ -- option.
+ &bypassPermitted BOOLEAN DEFAULT FALSE
+ -- Indicates if bypassing of protection is permitted
+}
+WITH SYNTAX {
+ SECURITY-TRANSFORMATION &SecurityTransformation
+ [PROTECTING-TRANSFER-SYNTAX &protTransferSyntax]
+ [BYPASS-PERMITTED &bypassPermitted]
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
+
+-- content of stack:
+--
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/OLD-PKCS7.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/OLD-PKCS7.asn1
new file mode 100644
index 0000000000..ab555200bb
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/OLD-PKCS7.asn1
@@ -0,0 +1,342 @@
+-- Module PKCS7 (X.420:06/1999)
+-- The ASN.1 in version 1.5 of the PKCS#7 document is not defined in an ASN.1 module. This prevents an IMPORT of it into other ASN.1 modules.
+-- This Annex contains a module of PKCS#7 ASN.1 definitions conforming to current ASN.1 standards rather than the obsolescent (and now deprecated) 1988/90 version of ASN.1 used in version 1.5 of PKCS#7.
+-- Extensions to PKCS#7 defined in RFC 2630 are included.
+-- If differences are found between the ASN.1 in the following module and that in PKCS#7, the latter is definitive.
+OLD-PKCS7 {iso member-body usa(840) rsadsi(113549) pkcs(1) 7
+ module(0) -- module not currently defined in PKCS#7 --} DEFINITIONS IMPLICIT
+TAGS ::=
+BEGIN
+
+IMPORTS
+ -- Directory Information Framework
+ Attribute, Name
+ --==
+ FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
+ informationFramework(1) 3}
+ -- Directory Authentication Framework
+ AlgorithmIdentifier, AttributeCertificate, Certificate, CertificateList,
+ CertificateSerialNumber, HASH{}, SIGNED{}
+ --==
+ FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
+ authenticationFramework(7) 3};
+
+-- In PKCS#7 the HASHED parameterised type applies the hash function to the
+-- contents octets component of a DER encoding of a value of the parameter.
+-- The ENCRYPTED parameterised type is redefined here because PKCS#7 encrypted values are
+-- defined as OCTET STRING, instead of BIT STRING as in the Directory Authentication Framework
+ENCRYPTED{ToBeEnciphered} ::=
+ OCTET STRING
+ (CONSTRAINED BY {
+ -- must be the result of applying an encipherment procedure to the contents octets component
+ -- of a definite-length BER-encoding of a value of --ToBeEnciphered})
+
+ContentInfo ::= SEQUENCE {
+ content-type PKCS7-CONTENT-TYPE.&id({PKCS7ContentTable}),
+ pkcs7-content [0] PKCS7-CONTENT-TYPE.&Type({PKCS7ContentTable})
+}
+
+PKCS7-CONTENT-TYPE ::= TYPE-IDENTIFIER
+
+PKCS7ContentTable PKCS7-CONTENT-TYPE ::=
+ {data | signed-data | enveloped-data | signed-and-enveloped-data |
+ digested-data | encrypted-data | authenticated-data, ...}
+
+-- Data
+data PKCS7-CONTENT-TYPE ::= {Data
+ IDENTIFIED BY id-data
+}
+
+Data ::= OCTET STRING
+
+-- Signed Data
+signed-data PKCS7-CONTENT-TYPE ::= {SignedData
+ IDENTIFIED BY id-signed-data
+}
+
+SignedData ::= SEQUENCE {
+ version Version,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ contentInfo ContentInfo,
+ certificates [0] CertificateSet OPTIONAL,
+ crls [1] CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos
+}
+
+Version ::= INTEGER
+
+DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
+
+DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+
+CertificateSet ::= SET OF CertificateChoice
+
+CertificateChoice ::= CHOICE {
+ certificate Certificate,
+ extendedCertificate [0] ExtendedCertificate, -- Obsolete
+ attributeCertificate [1] AttributeCertificate
+}
+
+CertificateRevocationLists ::= SET OF CertificateList
+
+SignerInfos ::= SET OF SignerInfo
+
+SignerInfo ::= SEQUENCE {
+ version Version,
+ signerIdentifier SignerIdentifier,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ authenticatedAttributes [0] Attributes OPTIONAL,
+ digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
+ encryptedDigest EncryptedDigest,
+ unauthenticatedAttributes [1] Attributes OPTIONAL
+}
+
+SignerIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [2] SubjectKeyIdentifier
+}
+
+IssuerAndSerialNumber ::= SEQUENCE {
+ issuer Name,
+ serialNumber CertificateSerialNumber
+}
+
+SubjectKeyIdentifier ::= OCTET STRING
+
+DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+EncryptedDigest ::= ENCRYPTED{DigestInfo}
+
+DigestInfo ::= SEQUENCE {
+ digestAlgorithm DigestAlgorithmIdentifier,
+ digest Digest
+}
+
+Digest ::=
+ HASH
+ {CHOICE {content
+ [1] PKCS7-CONTENT-TYPE.&Type({PKCS7ContentTable}),
+ authenticated-attributes [0] EXPLICIT Attributes}}
+
+-- Enveloped Data
+enveloped-data PKCS7-CONTENT-TYPE ::= {
+ EnvelopedData
+ IDENTIFIED BY id-enveloped-data
+}
+
+EnvelopedData ::= SEQUENCE {
+ version Version,
+ originatorInfo [0] OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttributes [1] Attributes OPTIONAL
+}
+
+OriginatorInfo ::= SEQUENCE {
+ certificates [0] CertificateSet OPTIONAL,
+ crls [1] CertificateRevocationLists OPTIONAL
+}
+
+RecipientInfos ::= SET SIZE (1..MAX) OF RecipientInfo
+
+RecipientInfo ::= CHOICE {
+ keyTransportRecipientInfo KeyTransportRecipientInfo,
+ keyAgreementRecipientInfo [1] KeyAgreementRecipientInfo,
+ keyEncryptionKeyRecipientInfo [2] KeyEncryptionKeyRecipientInfo
+}
+
+KeyTransportRecipientInfo ::= SEQUENCE {
+ version Version,
+ recipientIdentifier RecipientIdentifier,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+}
+
+RecipientIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier
+}
+
+KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+EncryptedKey ::= OCTET STRING
+
+KeyAgreementRecipientInfo ::= SEQUENCE {
+ version Version,
+ originator [0] OriginatorIdentifierOrKey,
+ userKeyingMaterial [1] EXPLICIT OCTET STRING OPTIONAL,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ recipientEncryptedKeys RecipientEncryptedKeys
+}
+
+OriginatorIdentifierOrKey ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier,
+ originatorPublicKey [1] OriginatorPublicKey
+}
+
+OriginatorPublicKey ::= SEQUENCE {
+ algorithm AlgorithmIdentifier,
+ publicKey BIT STRING
+}
+
+RecipientEncryptedKeys ::= SEQUENCE OF RecipientEncryptedKey
+
+RecipientEncryptedKey ::= SEQUENCE {
+ recipientIdentifier KeyAgreementRecipientIdentifier,
+ encryptedKey EncryptedKey
+}
+
+KeyAgreementRecipientIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ recipientKeyIdentifier [0] RecipientKeyIdentifier
+}
+
+RecipientKeyIdentifier ::= SEQUENCE {
+ subjectKeyIdentifier SubjectKeyIdentifier,
+ date GeneralizedTime OPTIONAL,
+ otherKeyAttribute OtherKeyAttribute OPTIONAL
+}
+
+OtherKeyAttribute ::= SEQUENCE {
+ keyAttributeIdentifier OTHER-KEY-ATTRIBUTE.&id({OtherKeyAttributeTable}),
+ keyAttribute
+ OTHER-KEY-ATTRIBUTE.&Type
+ ({OtherKeyAttributeTable}{@keyAttributeIdentifier}) OPTIONAL
+}
+
+OTHER-KEY-ATTRIBUTE ::= TYPE-IDENTIFIER
+
+OtherKeyAttributeTable OTHER-KEY-ATTRIBUTE ::=
+ {...}
+
+KeyEncryptionKeyRecipientInfo ::= SEQUENCE {
+ version Version,
+ keyEncryptionKeyIdentifier KeyEncryptionKeyIdentifier,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+}
+
+KeyEncryptionKeyIdentifier ::= SEQUENCE {
+ keyIdentifier OCTET STRING,
+ date GeneralizedTime OPTIONAL,
+ otherKeyAttribute OtherKeyAttribute OPTIONAL
+}
+
+EncryptedContentInfo ::= SEQUENCE {
+ contentType PKCS7-CONTENT-TYPE.&id({PKCS7ContentTable}),
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent
+ [0] ENCRYPTED{PKCS7-CONTENT-TYPE.&Type({PKCS7ContentTable}{@.contentType})}
+ OPTIONAL
+}
+
+ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+-- Signed and Enveloped Data
+signed-and-enveloped-data PKCS7-CONTENT-TYPE ::= {
+ SignedAndEnvelopedData
+ IDENTIFIED BY id-signed-and-enveloped-data
+}
+
+SignedAndEnvelopedData ::= SEQUENCE {
+ version Version,
+ recipientInfos SET SIZE (1..MAX) OF KeyTransportRecipientInfo,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ encryptedContentInfo EncryptedContentInfo,
+ certificates [0] CertificateSet OPTIONAL,
+ crls [1] CertificateRevocationLists OPTIONAL,
+ signerInfos
+ SET SIZE (1..MAX) OF
+ SignerInfo
+ (WITH COMPONENTS {
+ ...,
+ signerIdentifier (WITH COMPONENTS {
+ issuerAndSerialNumber PRESENT
+ }),
+ authenticatedAttributes ABSENT,
+ unauthenticatedAttributes ABSENT
+ })
+}
+
+-- Digested Data
+digested-data PKCS7-CONTENT-TYPE ::= {
+ DigestedData
+ IDENTIFIED BY id-digested-data
+}
+
+DigestedData ::= SEQUENCE {
+ version Version,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ contentInfo ContentInfo,
+ digest HASH{PKCS7-CONTENT-TYPE.&Type({PKCS7ContentTable})}
+}
+
+-- Encrypted Data
+encrypted-data PKCS7-CONTENT-TYPE ::= {
+ EncryptedData
+ IDENTIFIED BY id-encrypted-data
+}
+
+EncryptedData ::= SEQUENCE {
+ version Version,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttributes [1] Attributes OPTIONAL
+}
+
+-- Authenticated Data
+authenticated-data PKCS7-CONTENT-TYPE ::= {
+ AuthenticatedData
+ IDENTIFIED BY id-authenticated-data
+}
+
+AuthenticatedData ::= SEQUENCE {
+ version Version,
+ originatorInfo [0] OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ macAlgorithm MessageAuthenticationCodeAlgorithmIdentifier,
+ digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
+ contentInfo ContentInfo,
+ authenticatedAttributes [2] Attributes OPTIONAL,
+ messageAuthenticationCode MessageAuthenticationCode,
+ unauthenticatedAttributes [3] Attributes OPTIONAL
+}
+
+MessageAuthenticationCodeAlgorithmIdentifier ::= AlgorithmIdentifier
+
+MessageAuthenticationCode ::= OCTET STRING
+
+-- Object Identifiers
+id-pkcs OBJECT IDENTIFIER ::=
+ {iso member-body usa(840) rsadsi(113549) pkcs(1)}
+
+id-data OBJECT IDENTIFIER ::= {id-pkcs 7 1}
+
+id-signed-data OBJECT IDENTIFIER ::= {id-pkcs 7 2}
+
+id-enveloped-data OBJECT IDENTIFIER ::= {id-pkcs 7 3}
+
+id-signed-and-enveloped-data OBJECT IDENTIFIER ::= {id-pkcs 7 4}
+
+id-digested-data OBJECT IDENTIFIER ::= {id-pkcs 7 5}
+
+id-encrypted-data OBJECT IDENTIFIER ::= {id-pkcs 7 6}
+
+id-authenticated-data OBJECT IDENTIFIER ::= {id-pkcs 9 16 1 2}
+
+-- Definitions from PKCS#6
+ExtendedCertificate ::=
+ SIGNED{ExtendedCertificateInfo}
+
+ExtendedCertificateInfo ::= SEQUENCE {
+ version Version,
+ certificate Certificate,
+ attributes Attributes
+}
+
+Attributes ::= SET OF Attribute
+
+END -- of PKCS#7
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/ObjectIdentifiers.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/ObjectIdentifiers.asn1
new file mode 100644
index 0000000000..b4f91f50c5
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/ObjectIdentifiers.asn1
@@ -0,0 +1,46 @@
+-- Module ObjectIdentifiers (X.830:04/1995)
+
+ObjectIdentifiers {joint-iso-itu-t genericULS(20) modules(1)
+ objectIdentifiers(0)} DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+-- EXPORTS All
+genericULS OBJECT IDENTIFIER ::=
+ {joint-iso-itu-t genericULS(20)}
+
+-- Categories of information object
+modules OBJECT IDENTIFIER ::=
+ {genericULS 1}
+
+generalTransferSyntax OBJECT IDENTIFIER ::= {genericULS 2}
+
+specificTransferSyntax OBJECT IDENTIFIER ::= {genericULS 3}
+
+securityExchanges OBJECT IDENTIFIER ::= {genericULS 4}
+
+securityTransformations OBJECT IDENTIFIER ::= {genericULS 5}
+
+-- ASN.1 modules
+objectIdentifiers OBJECT IDENTIFIER ::= {modules 0}
+
+notation OBJECT IDENTIFIER ::= {modules 1}
+
+gulsSecurityExchanges OBJECT IDENTIFIER ::= {modules 2}
+
+gulsSecurityTransformations OBJECT IDENTIFIER ::= {modules 3}
+
+dirProtectionMappings OBJECT IDENTIFIER ::= {modules 4}
+
+gulsProtectionMappings OBJECT IDENTIFIER ::= {modules 5}
+
+seseAPDUs OBJECT IDENTIFIER ::= {modules 6}
+
+genericProtectingTransferSyntax OBJECT IDENTIFIER ::= {modules 7}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
+
+-- content of stack:
+--
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/OperationalBindingManagement.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/OperationalBindingManagement.asn1
new file mode 100644
index 0000000000..2044feb155
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/OperationalBindingManagement.asn1
@@ -0,0 +1,263 @@
+-- Module OperationalBindingManagement (X.501:08/1997)
+OperationalBindingManagement {joint-iso-itu-t ds(5) module(1)
+ opBindingManagement(18) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ directoryShadowAbstractService, hierarchicalOperationalBindings, dop,
+ directoryAbstractService, distributedOperations, enhancedSecurity
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ shadowOperationalBinding
+ FROM DirectoryShadowAbstractService directoryShadowAbstractService
+ hierarchicalOperationalBinding, nonSpecificHierarchicalOperationalBinding
+ FROM HierarchicalOperationalBindings hierarchicalOperationalBindings
+ OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ APPLICATION-CONTEXT
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)}
+ id-op-establishOperationalBinding, id-op-modifyOperationalBinding,
+ id-op-terminateOperationalBinding, id-err-operationalBindingError
+ FROM DirectoryOperationalBindingManagementProtocol dop
+ directoryBind, directoryUnbind, securityError, CommonResultsSeq,
+ SecurityParameters
+ FROM DirectoryAbstractService directoryAbstractService
+ OPTIONALLY-PROTECTED-SEQ{}
+ FROM EnhancedSecurity enhancedSecurity
+ AccessPoint
+ FROM DistributedOperations distributedOperations;
+
+--PROTECTED
+-- FROM Notation { joint-iso-ccitt genericULS (20) modules (1) notation (1) }
+-- bind and unbind
+dSAOperationalBindingManagementBind OPERATION ::=
+ directoryBind
+
+dSAOperationalBindingManagementUnbind OPERATION ::= directoryUnbind
+
+-- operations, arguments and results
+establishOperationalBinding OPERATION ::= {
+ ARGUMENT EstablishOperationalBindingArgument
+ RESULT EstablishOperationalBindingResult
+ ERRORS {operationalBindingError | securityError}
+ CODE id-op-establishOperationalBinding
+}
+
+EstablishOperationalBindingArgument ::=
+ OPTIONALLY-PROTECTED-SEQ
+ {SEQUENCE {bindingType [0] OPERATIONAL-BINDING.&id({OpBindingSet}),
+ bindingID [1] OperationalBindingID OPTIONAL,
+ accessPoint [2] AccessPoint,
+ -- symmetric, Role A initiates, or Role B initiates -
+ initiator
+ CHOICE {symmetric
+ [3] OPERATIONAL-BINDING.&both.&EstablishParam
+ ({OpBindingSet}{@bindingType}),
+ roleA-initiates
+ [4] OPERATIONAL-BINDING.&roleA.&EstablishParam
+ ({OpBindingSet}{@bindingType}),
+ roleB-initiates
+ [5] OPERATIONAL-BINDING.&roleB.&EstablishParam
+ ({OpBindingSet}{@bindingType})} OPTIONAL,
+ agreement
+ [6] OPERATIONAL-BINDING.&Agreement
+ ({OpBindingSet}{@bindingType}),
+ valid [7] Validity DEFAULT {},
+ securityParameters [8] SecurityParameters OPTIONAL}}
+
+OperationalBindingID ::= SEQUENCE {identifier INTEGER,
+ version INTEGER
+}
+
+Validity ::= SEQUENCE {
+ validFrom [0] CHOICE {now [0] NULL,
+ time [1] Time} DEFAULT now:NULL,
+ validUntil
+ [1] CHOICE {explicitTermination [0] NULL,
+ time [1] Time
+ } DEFAULT explicitTermination:NULL
+}
+
+Time ::= CHOICE {utcTime UTCTime,
+ generalizedTime GeneralizedTime
+}
+
+EstablishOperationalBindingResult ::=
+ OPTIONALLY-PROTECTED-SEQ
+ {SEQUENCE {bindingType [0] OPERATIONAL-BINDING.&id({OpBindingSet}),
+ bindingID [1] OperationalBindingID OPTIONAL,
+ accessPoint [2] AccessPoint,
+ -- symmetric, Role A replies , or Role B replies
+ initiator
+ CHOICE {symmetric
+ [3] OPERATIONAL-BINDING.&both.&EstablishParam
+ ({OpBindingSet}{@bindingType}),
+ roleA-replies
+ [4] OPERATIONAL-BINDING.&roleA.&EstablishParam
+ ({OpBindingSet}{@bindingType}),
+ roleB-replies
+ [5] OPERATIONAL-BINDING.&roleB.&EstablishParam
+ ({OpBindingSet}{@bindingType})} OPTIONAL,
+ COMPONENTS OF CommonResultsSeq}}
+
+modifyOperationalBinding OPERATION ::= {
+ ARGUMENT ModifyOperationalBindingArgument
+ RESULT ModifyOperationalBindingResult
+ ERRORS {operationalBindingError | securityError}
+ CODE id-op-modifyOperationalBinding
+}
+
+ModifyOperationalBindingArgument ::=
+ OPTIONALLY-PROTECTED-SEQ
+ {SEQUENCE {bindingType [0] OPERATIONAL-BINDING.&id({OpBindingSet}),
+ bindingID [1] OperationalBindingID,
+ accessPoint [2] AccessPoint OPTIONAL,
+ -- symmetric, Role A initiates, or Role B initiates
+ initiator
+ CHOICE {symmetric
+ [3] OPERATIONAL-BINDING.&both.&ModifyParam
+ ({OpBindingSet}{@bindingType}),
+ roleA-initiates
+ [4] OPERATIONAL-BINDING.&roleA.&ModifyParam
+ ({OpBindingSet}{@bindingType}),
+ roleB-initiates
+ [5] OPERATIONAL-BINDING.&roleB.&ModifyParam
+ ({OpBindingSet}{@bindingType})} OPTIONAL,
+ newBindingID [6] OperationalBindingID,
+ newAgreement
+ [7] OPERATIONAL-BINDING.&Agreement
+ ({OpBindingSet}{@bindingType}) OPTIONAL,
+ valid [8] Validity OPTIONAL,
+ securityParameters [9] SecurityParameters OPTIONAL}}
+
+ModifyOperationalBindingResult ::= CHOICE {
+ null [0] NULL,
+ protected
+ [1] OPTIONALLY-PROTECTED-SEQ{SEQUENCE {newBindingID OperationalBindingID,
+ bindingType
+ OPERATIONAL-BINDING.&id
+ ({OpBindingSet}),
+ newAgreement
+ OPERATIONAL-BINDING.&Agreement
+ ({OpBindingSet}{@bindingType}),
+ valid Validity OPTIONAL,
+ COMPONENTS OF CommonResultsSeq
+ }}
+}
+
+terminateOperationalBinding OPERATION ::= {
+ ARGUMENT TerminateOperationalBindingArgument
+ RESULT TerminateOperationalBindingResult
+ ERRORS {operationalBindingError | securityError}
+ CODE id-op-terminateOperationalBinding
+}
+
+TerminateOperationalBindingArgument ::=
+ OPTIONALLY-PROTECTED-SEQ
+ {SEQUENCE {bindingType [0] OPERATIONAL-BINDING.&id({OpBindingSet}),
+ bindingID [1] OperationalBindingID,
+ -- symmetric, Role A initiates, or Role B initiates
+ initiator
+ CHOICE {symmetric
+ [2] OPERATIONAL-BINDING.&both.&TerminateParam
+ ({OpBindingSet}{@bindingType}),
+ roleA-initiates
+ [3] OPERATIONAL-BINDING.&roleA.&TerminateParam
+ ({OpBindingSet}{@bindingType}),
+ roleB-initiates
+ [4] OPERATIONAL-BINDING.&roleB.&TerminateParam
+ ({OpBindingSet}{@bindingType})} OPTIONAL,
+ terminateAt [5] Time OPTIONAL,
+ securityParameters [6] SecurityParameters OPTIONAL}}
+
+TerminateOperationalBindingResult ::= CHOICE {
+ null [0] NULL,
+ protected
+ [1] OPTIONALLY-PROTECTED-SEQ{SEQUENCE {bindingID OperationalBindingID,
+ bindingType
+ OPERATIONAL-BINDING.&id
+ ({OpBindingSet}),
+ terminateAt
+ GeneralizedTime OPTIONAL,
+ COMPONENTS OF CommonResultsSeq
+ }}
+}
+
+-- errors and parameters
+operationalBindingError ERROR ::= {
+ PARAMETER OPTIONALLY-PROTECTED-SEQ {OpBindingErrorParam}
+ CODE id-err-operationalBindingError
+}
+
+OpBindingErrorParam ::= SEQUENCE {
+ problem
+ [0] ENUMERATED {invalidID(0), duplicateID(1), unsupportedBindingType(2),
+ notAllowedForRole(3), parametersMissing(4),
+ roleAssignment(5), invalidStartTime(6), invalidEndTime(7),
+ invalidAgreement(8), currentlyNotDecidable(9),
+ modificationNotAllowed(10)},
+ bindingType [1] OPERATIONAL-BINDING.&id({OpBindingSet}) OPTIONAL,
+ agreementProposal
+ [2] OPERATIONAL-BINDING.&Agreement({OpBindingSet}{@bindingType}) OPTIONAL,
+ retryAt [3] Time OPTIONAL,
+ COMPONENTS OF CommonResultsSeq
+}
+
+-- information object classes
+OPERATIONAL-BINDING ::= CLASS {
+ &Agreement ,
+ &Cooperation OP-BINDING-COOP,
+ &both OP-BIND-ROLE OPTIONAL,
+ &roleA OP-BIND-ROLE OPTIONAL,
+ &roleB OP-BIND-ROLE OPTIONAL,
+ &id OBJECT IDENTIFIER UNIQUE
+}
+WITH SYNTAX {
+ AGREEMENT &Agreement
+ APPLICATION CONTEXTS &Cooperation
+ [SYMMETRIC &both]
+ [ASYMMETRIC
+ [ROLE-A &roleA]
+ [ROLE-B &roleB]]
+ ID &id
+}
+
+OP-BINDING-COOP ::= CLASS {
+ &applContext APPLICATION-CONTEXT,
+ &Operations OPERATION OPTIONAL
+}WITH SYNTAX {&applContext
+ [APPLIES TO &Operations]
+}
+
+OP-BIND-ROLE ::= CLASS {
+ &establish BOOLEAN DEFAULT FALSE,
+ &EstablishParam OPTIONAL,
+ &modify BOOLEAN DEFAULT FALSE,
+ &ModifyParam OPTIONAL,
+ &terminate BOOLEAN DEFAULT FALSE,
+ &TerminateParam OPTIONAL
+}
+WITH SYNTAX {
+ [ESTABLISHMENT-INITIATOR &establish]
+ [ESTABLISHMENT-PARAMETER &EstablishParam]
+ [MODIFICATION-INITIATOR &modify]
+ [MODIFICATION-PARAMETER &ModifyParam]
+ [TERMINATION-INITIATOR &terminate]
+ [TERMINATION-PARAMETER &TerminateParam]
+}
+
+OpBindingSet OPERATIONAL-BINDING ::=
+ {shadowOperationalBinding | hierarchicalOperationalBinding |
+ nonSpecificHierarchicalOperationalBinding}
+
+END -- OperationalBindingManagement
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-12.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-12.asn1
new file mode 100644
index 0000000000..5b37a552f9
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-12.asn1
@@ -0,0 +1,174 @@
+PKCS-12 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
+ pkcs-12(12) modules(0) pkcs-12(1)}
+
+-- $Revision$
+
+DEFINITIONS IMPLICIT TAGS ::=
+
+BEGIN
+
+-- EXPORTS ALL
+-- All types and values defined in this module is exported for use in
+-- other ASN.1 modules.
+
+IMPORTS
+
+informationFramework
+ FROM UsefulDefinitions {joint-iso-itu-t(2) ds(5) module(1)
+ usefulDefinitions(0) 3}
+
+ATTRIBUTE
+ FROM InformationFramework informationFramework
+
+ContentInfo, DigestInfo
+ FROM PKCS-7 {iso(1) member-body(2) us(840) rsadsi(113549)
+ pkcs(1) pkcs-7(7) modules(0) pkcs-7(1)}
+
+PrivateKeyInfo, EncryptedPrivateKeyInfo
+ FROM PKCS-8 {iso(1) member-body(2) us(840) rsadsi(113549)
+ pkcs(1) pkcs-8(8) modules(1) pkcs-8(1)}
+
+pkcs-9, friendlyName, localKeyId, certTypes, crlTypes
+ FROM PKCS-9 {iso(1) member-body(2) us(840) rsadsi(113549)
+ pkcs(1) pkcs-9(9) modules(0) pkcs-9(1)};
+
+-- Object identifiers
+
+rsadsi OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) rsadsi(113549)}
+pkcs OBJECT IDENTIFIER ::= {rsadsi pkcs(1)}
+pkcs-12 OBJECT IDENTIFIER ::= {pkcs 12}
+pkcs-12PbeIds OBJECT IDENTIFIER ::= {pkcs-12 1}
+pbeWithSHAAnd128BitRC4 OBJECT IDENTIFIER ::= {pkcs-12PbeIds 1}
+pbeWithSHAAnd40BitRC4 OBJECT IDENTIFIER ::= {pkcs-12PbeIds 2}
+pbeWithSHAAnd3-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 3}
+pbeWithSHAAnd2-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 4}
+pbeWithSHAAnd128BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 5}
+pbewithSHAAnd40BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 6}
+
+bagtypes OBJECT IDENTIFIER ::= {pkcs-12 10 1}
+
+-- The PFX PDU
+
+PFX ::= SEQUENCE {
+ version INTEGER {v3(3)}(v3,...),
+ authSafe ContentInfo,
+ macData MacData OPTIONAL
+}
+
+MacData ::= SEQUENCE {
+ mac DigestInfo,
+ macSalt OCTET STRING,
+ iterations INTEGER DEFAULT 1
+-- Note: The default is for historical reasons and its use is
+-- deprecated. A higher value, like 1024 is recommended.
+}
+
+AuthenticatedSafe ::= SEQUENCE OF ContentInfo
+ -- Data if unencrypted
+ -- EncryptedData if password-encrypted
+ -- EnvelopedData if public key-encrypted
+
+SafeContents ::= SEQUENCE OF SafeBag
+
+SafeBag ::= SEQUENCE {
+ bagId BAG-TYPE.&id ({PKCS12BagSet}),
+ bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),
+ bagAttributes SET OF PKCS12Attribute OPTIONAL
+}
+
+-- Bag types
+
+keyBag BAG-TYPE ::=
+ {KeyBag IDENTIFIED BY {bagtypes 1}}
+pkcs8ShroudedKeyBag BAG-TYPE ::=
+ {PKCS8ShroudedKeyBag IDENTIFIED BY {bagtypes 2}}
+certBag BAG-TYPE ::=
+ {CertBag IDENTIFIED BY {bagtypes 3}}
+crlBag BAG-TYPE ::=
+ {CRLBag IDENTIFIED BY {bagtypes 4}}
+secretBag BAG-TYPE ::=
+ {SecretBag IDENTIFIED BY {bagtypes 5}}
+safeContentsBag BAG-TYPE ::=
+ {SafeContents IDENTIFIED BY {bagtypes 6}}
+
+PKCS12BagSet BAG-TYPE ::= {
+ keyBag |
+ pkcs8ShroudedKeyBag |
+ certBag |
+ crlBag |
+ secretBag |
+ safeContentsBag,
+ ... -- For future extensions
+}
+
+BAG-TYPE ::= TYPE-IDENTIFIER
+
+-- KeyBag
+
+KeyBag ::= PrivateKeyInfo
+
+-- Shrouded KeyBag
+
+PKCS8ShroudedKeyBag ::= EncryptedPrivateKeyInfo
+
+-- CertBag
+
+CertBag ::= SEQUENCE {
+ certId BAG-TYPE.&id ({CertTypes}),
+ certValue [0] EXPLICIT BAG-TYPE.&Type ({CertTypes}{@certId})
+}
+
+x509Certificate BAG-TYPE ::=
+ {OCTET STRING IDENTIFIED BY {certTypes 1}}
+ -- DER-encoded X.509 certificate stored in OCTET STRING
+sdsiCertificate BAG-TYPE ::=
+ {IA5String IDENTIFIED BY {certTypes 2}}
+ -- Base64-encoded SDSI certificate stored in IA5String
+
+CertTypes BAG-TYPE ::= {
+ x509Certificate |
+ sdsiCertificate,
+ ... -- For future extensions
+}
+
+-- CRLBag
+
+CRLBag ::= SEQUENCE {
+ crlId BAG-TYPE.&id ({CRLTypes}),
+ crlValue [0] EXPLICIT BAG-TYPE.&Type ({CRLTypes}{@crlId})
+}
+
+x509CRL BAG-TYPE ::=
+ {OCTET STRING IDENTIFIED BY {crlTypes 1}}
+ -- DER-encoded X.509 CRL stored in OCTET STRING
+
+CRLTypes BAG-TYPE ::= {
+ x509CRL,
+ ... -- For future extensions
+}
+
+-- Secret Bag
+
+SecretBag ::= SEQUENCE {
+ secretTypeId BAG-TYPE.&id ({SecretTypes}),
+ secretValue [0] EXPLICIT BAG-TYPE.&Type ({SecretTypes}{@secretTypeId})
+}
+
+SecretTypes BAG-TYPE ::= {
+ ... -- For future extensions
+}
+
+-- Attributes
+
+PKCS12Attribute ::= SEQUENCE {
+ attrId ATTRIBUTE.&id ({PKCS12AttrSet}),
+ attrValues SET OF ATTRIBUTE.&Type ({PKCS12AttrSet}{@attrId})
+} -- This type is compatible with the X.500 type 'Attribute'
+
+PKCS12AttrSet ATTRIBUTE ::= {
+ friendlyName |
+ localKeyId,
+ ... -- Other attributes are allowed
+}
+
+END \ No newline at end of file
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-5.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-5.asn1
new file mode 100644
index 0000000000..91b0dc36bf
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-5.asn1
@@ -0,0 +1,202 @@
+-- PKCS #5 v2.1 ASN.1 Module
+-- Revised October 27, 2012
+
+-- This module has been checked for conformance with the
+-- ASN.1 standard by the OSS ASN.1 Tools
+
+PKCS-5 {
+ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-5(5) modules(16)
+ pkcs5v2-1(2)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+-- ============================
+-- Basic object identifiers
+-- ============================
+
+nistAlgorithms OBJECT IDENTIFIER ::=
+ {joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) 4}
+oiw OBJECT IDENTIFIER ::= {iso(1) identified-organization(3) 14}
+rsadsi OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) 113549}
+pkcs OBJECT IDENTIFIER ::= {rsadsi 1}
+pkcs-5 OBJECT IDENTIFIER ::= {pkcs 5}
+
+
+-- ============================
+-- Basic types and classes
+-- ============================
+
+AlgorithmIdentifier { ALGORITHM-IDENTIFIER:InfoObjectSet } ::= SEQUENCE {
+ algorithm ALGORITHM-IDENTIFIER.&id({InfoObjectSet}),
+ parameters ALGORITHM-IDENTIFIER.&Type({InfoObjectSet} {@algorithm}) OPTIONAL
+}
+
+ALGORITHM-IDENTIFIER ::= TYPE-IDENTIFIER
+
+
+-- ============================
+-- PBKDF2
+-- ============================
+
+PBKDF2Algorithms ALGORITHM-IDENTIFIER ::=
+ { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ...}
+
+id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}
+
+algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::=
+ {algorithm id-hmacWithSHA1, parameters NULL : NULL}
+
+PBKDF2-params ::= SEQUENCE {
+ salt CHOICE {
+ specified OCTET STRING,
+ otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}
+ },
+ iterationCount INTEGER (1..MAX),
+ keyLength INTEGER (1..MAX) OPTIONAL,
+ prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT algid-hmacWithSHA1
+}
+
+PBKDF2-SaltSources ALGORITHM-IDENTIFIER ::= { ... }
+
+PBKDF2-PRFs ALGORITHM-IDENTIFIER ::= {
+ {NULL IDENTIFIED BY id-hmacWithSHA1} |
+ {NULL IDENTIFIED BY id-hmacWithSHA224} |
+ {NULL IDENTIFIED BY id-hmacWithSHA256} |
+ {NULL IDENTIFIED BY id-hmacWithSHA384} |
+ {NULL IDENTIFIED BY id-hmacWithSHA512} |
+ {NULL IDENTIFIED BY id-hmacWithSHA512-224} |
+ {NULL IDENTIFIED BY id-hmacWithSHA512-256},
+ ...
+}
+
+
+-- ============================
+ -- PBES1
+-- ============================
+
+PBES1Algorithms ALGORITHM-IDENTIFIER ::= {
+ {PBEParameter IDENTIFIED BY pbeWithMD2AndDES-CBC} |
+ {PBEParameter IDENTIFIED BY pbeWithMD2AndRC2-CBC} |
+ {PBEParameter IDENTIFIED BY pbeWithMD5AndDES-CBC} |
+ {PBEParameter IDENTIFIED BY pbeWithMD5AndRC2-CBC} |
+ {PBEParameter IDENTIFIED BY pbeWithSHA1AndDES-CBC} |
+ {PBEParameter IDENTIFIED BY pbeWithSHA1AndRC2-CBC},
+ ...
+}
+
+pbeWithMD2AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 1}
+pbeWithMD2AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 4}
+pbeWithMD5AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 3}
+pbeWithMD5AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 6}
+pbeWithSHA1AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 10}
+pbeWithSHA1AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 11}
+
+PBEParameter ::= SEQUENCE {
+ salt OCTET STRING (SIZE(8)),
+ iterationCount INTEGER
+}
+
+
+-- ============================
+-- PBES2
+-- ============================
+
+PBES2Algorithms ALGORITHM-IDENTIFIER ::= {
+ {PBES2-params IDENTIFIED BY id-PBES2},
+ ...
+}
+
+id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}
+
+PBES2-params ::= SEQUENCE {
+ keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},
+ encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}
+}
+
+PBES2-KDFs ALGORITHM-IDENTIFIER ::= {
+ {PBKDF2-params IDENTIFIED BY id-PBKDF2},
+ ...
+}
+
+PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }
+
+
+-- ============================
+-- PBMAC1
+-- ============================
+
+PBMAC1Algorithms ALGORITHM-IDENTIFIER ::= {
+ {PBMAC1-params IDENTIFIED BY id-PBMAC1},
+ ...
+}
+
+id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14}
+
+PBMAC1-params ::= SEQUENCE {
+ keyDerivationFunc AlgorithmIdentifier {{PBMAC1-KDFs}},
+ messageAuthScheme AlgorithmIdentifier {{PBMAC1-MACs}}
+}
+
+PBMAC1-KDFs ALGORITHM-IDENTIFIER ::= {
+ {PBKDF2-params IDENTIFIED BY id-PBKDF2},
+ ...
+}
+
+PBMAC1-MACs ALGORITHM-IDENTIFIER ::= { ... }
+
+-- ============================
+-- Supporting techniques
+-- ============================
+
+digestAlgorithm OBJECT IDENTIFIER ::= {rsadsi 2}
+encryptionAlgorithm OBJECT IDENTIFIER ::= {rsadsi 3}
+
+SupportingAlgorithms ALGORITHM-IDENTIFIER ::= {
+ {NULL IDENTIFIED BY id-hmacWithSHA1} |
+ {OCTET STRING (SIZE(8)) IDENTIFIED BY desCBC} |
+ {OCTET STRING (SIZE(8)) IDENTIFIED BY des-EDE3-CBC} |
+ {RC2-CBC-Parameter IDENTIFIED BY rc2CBC} |
+ {RC5-CBC-Parameters IDENTIFIED BY rc5-CBC-PAD} |
+ {OCTET STRING (SIZE(16)) IDENTIFIED BY aes128-CBC-PAD} |
+ {OCTET STRING (SIZE(16)) IDENTIFIED BY aes192-CBC-PAD} |
+ {OCTET STRING (SIZE(16)) IDENTIFIED BY aes256-CBC-PAD},
+ ...
+}
+
+id-hmacWithSHA1 OBJECT IDENTIFIER ::= {digestAlgorithm 7}
+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-hmacWithSHA512-224 OBJECT IDENTIFIER ::= {digestAlgorithm 12}
+id-hmacWithSHA512-256 OBJECT IDENTIFIER ::= {digestAlgorithm 13}
+
+-- from OIW
+desCBC OBJECT IDENTIFIER ::= {oiw secsig(3) algorithms(2) 7}
+
+des-EDE3-CBC OBJECT IDENTIFIER ::= {encryptionAlgorithm 7}
+
+rc2CBC OBJECT IDENTIFIER ::= {encryptionAlgorithm 2}
+
+RC2-CBC-Parameter ::= SEQUENCE {
+ rc2ParameterVersion INTEGER OPTIONAL,
+ iv OCTET STRING (SIZE(8))
+}
+
+rc5-CBC-PAD OBJECT IDENTIFIER ::= {encryptionAlgorithm 9}
+
+RC5-CBC-Parameters ::= SEQUENCE {
+ version INTEGER {v1-0(16)} (v1-0),
+ rounds INTEGER (8..127),
+ blockSizeInBits INTEGER (64 | 128),
+ iv OCTET STRING OPTIONAL
+}
+
+aes OBJECT IDENTIFIER ::= { nistAlgorithms 1 }
+aes128-CBC-PAD OBJECT IDENTIFIER ::= { aes 2 }
+aes192-CBC-PAD OBJECT IDENTIFIER ::= { aes 22 }
+aes256-CBC-PAD OBJECT IDENTIFIER ::= { aes 42 }
+
+END \ No newline at end of file
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-7.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-7.asn1
new file mode 100644
index 0000000000..4cea8db240
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-7.asn1
@@ -0,0 +1,326 @@
+PKCS-7 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-7(7)
+ modules(0) pkcs-7(1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+BEGIN
+
+--
+-- 3. Definitions
+--
+
+-- EXPORTS All;
+
+IMPORTS
+
+informationFramework, authenticationFramework
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+
+ Name, ATTRIBUTE
+ FROM InformationFramework informationFramework
+
+ ALGORITHM, Certificate, CertificateSerialNumber,
+ CertificateList
+ FROM AuthenticationFramework authenticationFramework
+
+ contentType, messageDigest, signingTime, counterSignature
+ FROM PKCS-9 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
+ pkcs-9(9) modules(0) pkcs-9(1)};
+--
+-- 6. Useful types
+--
+
+-- Also defined in X.509
+-- Redeclared here as a parameterized type
+AlgorithmIdentifier {ALGORITHM:IOSet} ::= SEQUENCE {
+ algorithm ALGORITHM.&id({IOSet}),
+ parameters ALGORITHM.&Type({IOSet}{@algorithm}) OPTIONAL
+}
+
+-- Also defined in X.501
+-- Redeclared here as a parameterized type
+Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {
+ type ATTRIBUTE.&id({IOSet}),
+ values SET SIZE (1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})
+}
+
+CertificateRevocationLists ::=
+ SET OF CertificateList
+
+Certificates ::=
+ SEQUENCE OF Certificate
+
+CRLSequence ::=
+ SEQUENCE OF CertificateList
+
+ContentEncryptionAlgorithmIdentifier ::=
+ AlgorithmIdentifier {{ContentEncryptionAlgorithms}}
+
+ContentEncryptionAlgorithms ALGORITHM ::= {
+ ... -- add any application-specific algorithms here
+}
+
+DigestAlgorithmIdentifier ::=
+ AlgorithmIdentifier {{DigestAlgorithms}}
+
+DigestAlgorithms ALGORITHM ::= {
+ ... -- add any application-specific algorithms here
+}
+
+DigestEncryptionAlgorithmIdentifier ::=
+ AlgorithmIdentifier {{DigestEncryptionAlgorithms}}
+
+DigestEncryptionAlgorithms ALGORITHM ::= {
+ ... -- add any application-specific algorithms here
+}
+
+ExtendedCertificateOrCertificate ::= CHOICE {
+ certificate Certificate, -- X.509
+ extendedCertificate [0] IMPLICIT ExtendedCertificate -- PKCS#6
+}
+
+ExtendedCertificate ::= Certificate -- cheating
+
+ExtendedCertificatesAndCertificates ::=
+ SET OF ExtendedCertificateOrCertificate
+
+IssuerAndSerialNumber ::= SEQUENCE {
+ issuer Name,
+ serialNumber CertificateSerialNumber
+}
+
+KeyEncryptionAlgorithmIdentifier ::=
+ AlgorithmIdentifier {{KeyEncryptionAlgorithms}}
+
+KeyEncryptionAlgorithms ALGORITHM ::= {
+ ... -- add any application-specific algorithms here
+}
+
+--
+-- 7. General syntax
+--
+
+ContentInfo ::= SEQUENCE {
+ contentType ContentType,
+ content [0] EXPLICIT CONTENTS.&Type({Contents}{@contentType})
+OPTIONAL
+}
+
+CONTENTS ::= TYPE-IDENTIFIER
+
+Contents CONTENTS ::= {
+ {Data IDENTIFIED BY data} |
+ {SignedData IDENTIFIED BY signedData} |
+ {EnvelopedData IDENTIFIED BY envelopedData} |
+ {SignedAndEnvelopedData IDENTIFIED BY signedAndEnvelopedData} |
+ {DigestedData IDENTIFIED BY digestedData} |
+ {EncryptedData IDENTIFIED BY encryptedData},
+ ... -- add any application-specific types/contents here
+}
+
+ContentType ::= CONTENTS.&id({Contents})
+
+--
+-- 8. Data content type
+--
+
+Data ::= OCTET STRING
+
+--
+-- 9. Signed-data content type
+--
+
+SignedData ::= SEQUENCE {
+ version INTEGER {sdVer1(1), sdVer2(2)} (sdVer1 | sdVer2),
+ digestAlgorithms
+ DigestAlgorithmIdentifiers,
+ contentInfo ContentInfo,
+ certificates CHOICE {
+ certSet [0] IMPLICIT ExtendedCertificatesAndCertificates,
+ certSequence [2] IMPLICIT Certificates
+ } OPTIONAL,
+ crls CHOICE {
+ crlSet [1] IMPLICIT CertificateRevocationLists,
+ crlSequence [3] IMPLICIT CRLSequence
+ } OPTIONAL,
+ signerInfos SignerInfos
+} (WITH COMPONENTS { ..., version (sdVer1),
+ digestAlgorithms (WITH COMPONENTS { ..., daSet PRESENT }),
+ certificates (WITH COMPONENTS { ..., certSequence ABSENT }),
+ crls (WITH COMPONENTS { ..., crlSequence ABSENT }),
+ signerInfos (WITH COMPONENTS { ..., siSet PRESENT })
+ } |
+ WITH COMPONENTS { ..., version (sdVer2),
+ digestAlgorithms (WITH COMPONENTS { ..., daSequence PRESENT }),
+ certificates (WITH COMPONENTS { ..., certSet ABSENT }),
+ crls (WITH COMPONENTS { ..., crlSet ABSENT }),
+ signerInfos (WITH COMPONENTS { ..., siSequence PRESENT })
+})
+
+SignerInfos ::= CHOICE {
+ siSet SET OF SignerInfo,
+ siSequence SEQUENCE OF SignerInfo
+}
+
+DigestAlgorithmIdentifiers ::= CHOICE {
+ daSet SET OF DigestAlgorithmIdentifier,
+ daSequence SEQUENCE OF DigestAlgorithmIdentifier
+}
+
+SignerInfo ::= SEQUENCE {
+ version INTEGER {siVer1(1), siVer2(2)} (siVer1 | siVer2),
+ issuerAndSerialNumber
+ IssuerAndSerialNumber,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ authenticatedAttributes CHOICE {
+ aaSet [0] IMPLICIT SET OF Attribute {{Authenticated}},
+ aaSequence [2] EXPLICIT SEQUENCE OF Attribute {{Authenticated}}
+ -- Explicit because easier to compute digest on sequence of attributes and then reuse
+ -- encoded sequence in aaSequence.
+ } OPTIONAL,
+ digestEncryptionAlgorithm
+ DigestEncryptionAlgorithmIdentifier,
+ encryptedDigest EncryptedDigest,
+ unauthenticatedAttributes CHOICE {
+ uaSet [1] IMPLICIT SET OF Attribute {{Unauthenticated}},
+ uaSequence [3] IMPLICIT SEQUENCE OF Attribute {{Unauthenticated}}
+ } OPTIONAL
+} (WITH COMPONENTS { ..., version (siVer1),
+ authenticatedAttributes (WITH COMPONENTS { ..., aaSequence ABSENT }),
+ unauthenticatedAttributes (WITH COMPONENTS { ..., uaSequence ABSENT })
+} | WITH COMPONENTS { ..., version (siVer2),
+ authenticatedAttributes (WITH COMPONENTS { ..., aaSet ABSENT }),
+ unauthenticatedAttributes (WITH COMPONENTS { ..., uaSet ABSENT })
+})
+
+Authenticated ATTRIBUTE ::= {
+ contentType |
+ messageDigest,
+ ..., -- add application-specific attributes here
+ signingTime
+}
+
+Unauthenticated ATTRIBUTE ::= {
+ ..., -- add application-specific attributes here
+ counterSignature
+}
+
+EncryptedDigest ::= OCTET STRING
+
+DigestInfo ::= SEQUENCE {
+ digestAlgorithm DigestAlgorithmIdentifier,
+ digest Digest
+}
+
+Digest ::= OCTET STRING
+
+--
+-- 10. Enveloped-data content type
+--
+
+EnvelopedData ::= SEQUENCE {
+ version INTEGER {edVer0(0), edVer1(1)} (edVer0 | edVer1),
+ recipientInfos RecipientInfos,
+ encryptedContentInfo
+ EncryptedContentInfo
+} (WITH COMPONENTS { ..., version (edVer0),
+ recipientInfos (WITH COMPONENTS { ..., riSet PRESENT })
+} | WITH COMPONENTS { ..., version (edVer1),
+ recipientInfos (WITH COMPONENTS { ..., riSequence PRESENT })
+})
+
+RecipientInfos ::= CHOICE {
+ riSet SET OF RecipientInfo,
+ riSequence SEQUENCE OF RecipientInfo
+}
+
+EncryptedContentInfo ::= SEQUENCE {
+ contentType ContentType,
+ contentEncryptionAlgorithm
+ ContentEncryptionAlgorithmIdentifier,
+ encryptedContent
+ [0] IMPLICIT EncryptedContent OPTIONAL
+}
+
+EncryptedContent ::= OCTET STRING
+
+RecipientInfo ::= SEQUENCE {
+ version INTEGER {riVer0(0)} (riVer0),
+ issuerAndSerialNumber
+ IssuerAndSerialNumber,
+ keyEncryptionAlgorithm
+ KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+}
+
+EncryptedKey ::= OCTET STRING
+
+--
+-- 11. Signed-and-enveloped-data content type
+--
+
+SignedAndEnvelopedData ::= SEQUENCE {
+ version INTEGER {seVer1(1), seVer2(2)} (seVer1 | seVer2),
+ recipientInfos RecipientInfos,
+ digestAlgorithms
+ DigestAlgorithmIdentifiers,
+ encryptedContentInfo
+ EncryptedContentInfo,
+ certificates CHOICE {
+ certSet [0] IMPLICIT ExtendedCertificatesAndCertificates,
+ certSequence [2] IMPLICIT Certificates
+ } OPTIONAL,
+ crls CHOICE {
+ crlSet [1] IMPLICIT CertificateRevocationLists,
+ crlSequence [3] IMPLICIT CRLSequence
+ } OPTIONAL,
+ signerInfos SignerInfos
+} (WITH COMPONENTS { ..., version (seVer1),
+ recipientInfos (WITH COMPONENTS { ..., riSet PRESENT }),
+ digestAlgorithms (WITH COMPONENTS { ..., daSet PRESENT }),
+ certificates (WITH COMPONENTS { ..., certSequence ABSENT }),
+ crls (WITH COMPONENTS { ..., crlSequence ABSENT }),
+ signerInfos (WITH COMPONENTS { ..., siSet PRESENT })
+} |
+ WITH COMPONENTS { ..., version (seVer2),
+ recipientInfos (WITH COMPONENTS { ..., riSequence PRESENT }),
+ digestAlgorithms (WITH COMPONENTS { ..., daSequence PRESENT }),
+ certificates (WITH COMPONENTS { ..., certSet ABSENT }),
+ crls (WITH COMPONENTS { ..., crlSet ABSENT }),
+ signerInfos (WITH COMPONENTS { ..., siSequence PRESENT })
+})
+
+--
+-- 12. Digested-data content type
+--
+
+DigestedData ::= SEQUENCE {
+ version INTEGER {ddVer0(0)} (ddVer0),
+ digestAlgorithm DigestAlgorithmIdentifier,
+ contentInfo ContentInfo,
+ digest Digest
+}
+
+--
+-- 13. Encrypted-data content type
+--
+
+EncryptedData ::= SEQUENCE {
+ version INTEGER {edVer0(0)} (edVer0),
+ encryptedContentInfo EncryptedContentInfo
+}
+
+--
+-- 14. Object Identifiers
+--
+
+pkcs-7 OBJECT IDENTIFIER ::=
+ { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 7 }
+data OBJECT IDENTIFIER ::= { pkcs-7 1 }
+signedData OBJECT IDENTIFIER ::= { pkcs-7 2 }
+envelopedData OBJECT IDENTIFIER ::= { pkcs-7 3 }
+signedAndEnvelopedData OBJECT IDENTIFIER ::= { pkcs-7 4 }
+digestedData OBJECT IDENTIFIER ::= { pkcs-7 5 }
+encryptedData OBJECT IDENTIFIER ::= { pkcs-7 6 }
+
+END \ No newline at end of file
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-8.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-8.asn1
new file mode 100644
index 0000000000..266f90170a
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-8.asn1
@@ -0,0 +1,61 @@
+PKCS-8 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-8(8)
+ modules(1) pkcs-8(1)}
+
+-- $Revision: 1.5 $
+
+-- This module has been checked for conformance with the ASN.1
+-- standard by the OSS ASN.1 Tools
+
+DEFINITIONS IMPLICIT TAGS ::=
+
+BEGIN
+
+-- EXPORTS All --
+-- All types and values defined in this module is exported for use in other
+-- ASN.1 modules.
+
+IMPORTS
+
+informationFramework
+ FROM UsefulDefinitions {joint-iso-itu-t(2) ds(5) module(1)
+ usefulDefinitions(0) 3}
+
+Attribute
+ FROM InformationFramework informationFramework
+
+AlgorithmIdentifier, ALGORITHM-IDENTIFIER
+ FROM PKCS-5 {iso(1) member-body(2) us(840) rsadsi(113549)
+ pkcs(1) pkcs-5(5) modules(16) pkcs-5(1)};
+
+-- Private-key information syntax
+
+PrivateKeyInfo ::= SEQUENCE {
+ version Version,
+ privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}},
+ privateKey PrivateKey,
+ attributes [0] Attributes OPTIONAL }
+
+Version ::= INTEGER {v1(0)} (v1,...)
+
+PrivateKey ::= OCTET STRING
+
+Attributes ::= SET OF Attribute
+
+-- Encrypted private-key information syntax
+
+EncryptedPrivateKeyInfo ::= SEQUENCE {
+ encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}},
+ encryptedData EncryptedData
+}
+
+EncryptedData ::= OCTET STRING
+
+PrivateKeyAlgorithms ALGORITHM-IDENTIFIER ::= {
+ ... -- For local profiles
+}
+
+KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= {
+ ... -- For local profiles
+}
+
+END
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-9.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-9.asn1
new file mode 100644
index 0000000000..cd561f4d7e
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS-9.asn1
@@ -0,0 +1,391 @@
+PKCS-9 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
+pkcs-9(9) modules(0) pkcs-9(1)}
+
+-- $Revision$
+
+DEFINITIONS IMPLICIT TAGS ::=
+
+BEGIN
+
+-- EXPORTS All --
+-- All types and values defined in this module is exported for use in
+-- other ASN.1 modules.
+
+IMPORTS
+
+informationFramework, authenticationFramework, selectedAttributeTypes,
+ upperBounds , id-at
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+
+ub-name
+ FROM UpperBounds upperBounds
+
+OBJECT-CLASS, ATTRIBUTE, MATCHING-RULE, Attribute, top, objectIdentifierMatch
+ FROM InformationFramework informationFramework
+
+ALGORITHM, Extensions, Time
+ FROM AuthenticationFramework authenticationFramework
+
+DirectoryString, octetStringMatch, caseIgnoreMatch, caseExactMatch,
+ generalizedTimeMatch, integerMatch, serialNumber
+ FROM SelectedAttributeTypes selectedAttributeTypes
+
+ContentInfo, SignerInfo
+ FROM CryptographicMessageSyntax-2009 {iso(1) member-body(2) us(840)
+ rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1)}
+
+EncryptedPrivateKeyInfo
+ FROM PKCS-8 {iso(1) member-body(2) us(840) rsadsi(113549)
+ pkcs(1) pkcs-8(8) modules(1) pkcs-8(1)}
+
+PFX
+ FROM PKCS-12 {iso(1) member-body(2) us(840) rsadsi(113549)
+ pkcs(1) pkcs-12(12) modules(0) pkcs-12(1)}
+
+-- PKCS15Token
+-- FROM PKCS-15 {iso(1) member-body(2) us(840) rsadsi(113549)
+-- pkcs(1) pkcs-15(15) modules(1) pkcs-15(1)}
+;
+
+-- Upper bounds
+pkcs-9-ub-pkcs9String INTEGER ::= 255
+pkcs-9-ub-emailAddress INTEGER ::= pkcs-9-ub-pkcs9String
+pkcs-9-ub-unstructuredName INTEGER ::= pkcs-9-ub-pkcs9String
+pkcs-9-ub-unstructuredAddress INTEGER ::= pkcs-9-ub-pkcs9String
+pkcs-9-ub-challengePassword INTEGER ::= pkcs-9-ub-pkcs9String
+pkcs-9-ub-friendlyName INTEGER ::= pkcs-9-ub-pkcs9String
+pkcs-9-ub-signingDescription INTEGER ::= pkcs-9-ub-pkcs9String
+pkcs-9-ub-match INTEGER ::= pkcs-9-ub-pkcs9String
+pkcs-9-ub-pseudonym INTEGER ::= ub-name
+pkcs-9-ub-placeOfBirth INTEGER ::= ub-name
+
+-- Object Identifiers
+
+pkcs-9 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840)
+ rsadsi(113549) pkcs(1) 9}
+
+ -- Main arcs
+pkcs-9-mo OBJECT IDENTIFIER ::= {pkcs-9 0} -- Modules branch
+pkcs-9-oc OBJECT IDENTIFIER ::= {pkcs-9 24} -- Object class branch
+pkcs-9-at OBJECT IDENTIFIER ::= {pkcs-9 25} -- Attribute branch, for new attributes
+pkcs-9-sx OBJECT IDENTIFIER ::= {pkcs-9 26} -- For syntaxes (RFC 2252)
+pkcs-9-mr OBJECT IDENTIFIER ::= {pkcs-9 27} -- Matching rules
+
+ -- Object classes
+pkcs-9-oc-pkcsEntity OBJECT IDENTIFIER ::= {pkcs-9-oc 1}
+pkcs-9-oc-naturalPerson OBJECT IDENTIFIER ::= {pkcs-9-oc 2}
+
+ -- Attributes
+pkcs-9-at-emailAddress OBJECT IDENTIFIER ::= {pkcs-9 1}
+pkcs-9-at-unstructuredName OBJECT IDENTIFIER ::= {pkcs-9 2}
+pkcs-9-at-contentType OBJECT IDENTIFIER ::= {pkcs-9 3}
+pkcs-9-at-messageDigest OBJECT IDENTIFIER ::= {pkcs-9 4}
+pkcs-9-at-signingTime OBJECT IDENTIFIER ::= {pkcs-9 5}
+pkcs-9-at-counterSignature OBJECT IDENTIFIER ::= {pkcs-9 6}
+pkcs-9-at-challengePassword OBJECT IDENTIFIER ::= {pkcs-9 7}
+pkcs-9-at-unstructuredAddress OBJECT IDENTIFIER ::= {pkcs-9 8}
+pkcs-9-at-extendedCertificateAttributes OBJECT IDENTIFIER ::= {pkcs-9 9}
+
+-- Obsolete (?) attribute identifiers, purportedly from "tentative
+-- PKCS #9 draft"
+-- pkcs-9-at-issuerAndSerialNumber OBJECT IDENTIFIER ::= {pkcs-9 10}
+-- pkcs-9-at-passwordCheck OBJECT IDENTIFIER ::= {pkcs-9 11}
+-- pkcs-9-at-publicKey OBJECT IDENTIFIER ::= {pkcs-9 12}
+
+pkcs-9-at-signingDescription OBJECT IDENTIFIER ::= {pkcs-9 13}
+pkcs-9-at-extensionRequest OBJECT IDENTIFIER ::= {pkcs-9 14}
+pkcs-9-at-smimeCapabilities OBJECT IDENTIFIER ::= {pkcs-9 15}
+
+-- Unused (?)
+-- pkcs-9-at-? OBJECT IDENTIFIER ::= {pkcs-9 17}
+-- pkcs-9-at-? OBJECT IDENTIFIER ::= {pkcs-9 18}
+-- pkcs-9-at-? OBJECT IDENTIFIER ::= {pkcs-9 19}
+
+pkcs-9-at-friendlyName OBJECT IDENTIFIER ::= {pkcs-9 20}
+pkcs-9-at-localKeyId OBJECT IDENTIFIER ::= {pkcs-9 21}
+pkcs-9-at-userPKCS12 OBJECT IDENTIFIER ::= {2 16 840 1 113730 3 1 216}
+pkcs-9-at-pkcs15Token OBJECT IDENTIFIER ::= {pkcs-9-at 1}
+pkcs-9-at-encryptedPrivateKeyInfo OBJECT IDENTIFIER ::= {pkcs-9-at 2}
+pkcs-9-at-randomNonce OBJECT IDENTIFIER ::= {pkcs-9-at 3}
+pkcs-9-at-sequenceNumber OBJECT IDENTIFIER ::= {pkcs-9-at 4}
+pkcs-9-at-pkcs7PDU OBJECT IDENTIFIER ::= {pkcs-9-at 5}
+
+ -- IETF PKIX Attribute branch
+ietf-at OBJECT IDENTIFIER ::= {1 3 6 1 5 5 7 9}
+
+pkcs-9-at-dateOfBirth OBJECT IDENTIFIER ::= {ietf-at 1}
+pkcs-9-at-placeOfBirth OBJECT IDENTIFIER ::= {ietf-at 2}
+pkcs-9-at-gender OBJECT IDENTIFIER ::= {ietf-at 3}
+pkcs-9-at-countryOfCitizenship OBJECT IDENTIFIER ::= {ietf-at 4}
+pkcs-9-at-countryOfResidence OBJECT IDENTIFIER ::= {ietf-at 5}
+
+ -- Syntaxes (for use with LDAP accessible directories)
+pkcs-9-sx-pkcs9String OBJECT IDENTIFIER ::= {pkcs-9-sx 1}
+pkcs-9-sx-signingTime OBJECT IDENTIFIER ::= {pkcs-9-sx 2}
+
+ -- Matching rules
+pkcs-9-mr-caseIgnoreMatch OBJECT IDENTIFIER ::= {pkcs-9-mr 1}
+pkcs-9-mr-signingTimeMatch OBJECT IDENTIFIER ::= {pkcs-9-mr 2}
+
+ -- Arcs with attributes defined elsewhere
+smime OBJECT IDENTIFIER ::= {pkcs-9 16}
+ -- Main arc for S/MIME (RFC 2633)
+certTypes OBJECT IDENTIFIER ::= {pkcs-9 22}
+ -- Main arc for certificate types defined in PKCS #12
+crlTypes OBJECT IDENTIFIER ::= {pkcs-9 23}
+ -- Main arc for crl types defined in PKCS #12
+
+ -- Other object identifiers
+id-at-pseudonym OBJECT IDENTIFIER ::= {id-at 65}
+
+-- Useful types
+
+PKCS9String {INTEGER : maxSize} ::= CHOICE {
+ ia5String IA5String (SIZE(1..maxSize)),
+ directoryString DirectoryString {maxSize}
+}
+
+-- Object classes
+
+pkcsEntity OBJECT-CLASS ::= {
+ SUBCLASS OF { top }
+ KIND auxiliary
+ MAY CONTAIN { PKCSEntityAttributeSet }
+ ID pkcs-9-oc-pkcsEntity
+}
+
+naturalPerson OBJECT-CLASS ::= {
+ SUBCLASS OF { top }
+ KIND auxiliary
+ MAY CONTAIN { NaturalPersonAttributeSet }
+ ID pkcs-9-oc-naturalPerson
+}
+
+-- Attribute sets
+
+PKCSEntityAttributeSet ATTRIBUTE ::= {
+ pKCS7PDU |
+ userPKCS12 |
+-- pKCS15Token |
+ encryptedPrivateKeyInfo,
+ ... -- For future extensions
+}
+
+NaturalPersonAttributeSet ATTRIBUTE ::= {
+ emailAddress |
+ unstructuredName |
+ unstructuredAddress |
+ dateOfBirth |
+ placeOfBirth |
+ gender |
+ countryOfCitizenship |
+ countryOfResidence |
+ pseudonym |
+ serialNumber,
+ ... -- For future extensions
+}
+
+-- Attributes
+
+pKCS7PDU ATTRIBUTE ::= {
+ WITH SYNTAX ContentInfo
+ ID pkcs-9-at-pkcs7PDU
+}
+
+userPKCS12 ATTRIBUTE ::= {
+ WITH SYNTAX PFX
+ ID pkcs-9-at-userPKCS12
+}
+
+-- pKCS15Token ATTRIBUTE ::= {
+-- WITH SYNTAX PKCS15Token
+-- ID pkcs-9-at-pkcs15Token
+-- }
+
+encryptedPrivateKeyInfo ATTRIBUTE ::= {
+ WITH SYNTAX EncryptedPrivateKeyInfo
+ ID pkcs-9-at-encryptedPrivateKeyInfo
+}
+
+emailAddress ATTRIBUTE ::= {
+ WITH SYNTAX IA5String (SIZE(1..pkcs-9-ub-emailAddress))
+ EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
+ ID pkcs-9-at-emailAddress
+}
+
+unstructuredName ATTRIBUTE ::= {
+ WITH SYNTAX PKCS9String {pkcs-9-ub-unstructuredName}
+ EQUALITY MATCHING RULE pkcs9CaseIgnoreMatch
+ ID pkcs-9-at-unstructuredName
+}
+
+unstructuredAddress ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {pkcs-9-ub-unstructuredAddress}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ ID pkcs-9-at-unstructuredAddress
+}
+
+dateOfBirth ATTRIBUTE ::= {
+ WITH SYNTAX GeneralizedTime
+ EQUALITY MATCHING RULE generalizedTimeMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-dateOfBirth
+}
+
+placeOfBirth ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {pkcs-9-ub-placeOfBirth}
+ EQUALITY MATCHING RULE caseExactMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-placeOfBirth
+}
+
+gender ATTRIBUTE ::= {
+ WITH SYNTAX PrintableString (SIZE(1) ^ FROM ("M" | "F" | "m" | "f"))
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-gender
+}
+
+countryOfCitizenship ATTRIBUTE ::= {
+ WITH SYNTAX PrintableString (SIZE(2))(CONSTRAINED BY {
+ -- Must be a two-letter country acronym in accordance with
+ -- ISO/IEC 3166 --})
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ ID pkcs-9-at-countryOfCitizenship
+}
+
+countryOfResidence ATTRIBUTE ::= {
+ WITH SYNTAX PrintableString (SIZE(2))(CONSTRAINED BY {
+ -- Must be a two-letter country acronym in accordance with
+ -- ISO/IEC 3166 --})
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ ID pkcs-9-at-countryOfResidence
+}
+
+pseudonym ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {pkcs-9-ub-pseudonym}
+ EQUALITY MATCHING RULE caseExactMatch
+ ID id-at-pseudonym
+}
+
+contentType ATTRIBUTE ::= {
+ WITH SYNTAX ContentType
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-contentType
+}
+
+ContentType ::= OBJECT IDENTIFIER
+
+messageDigest ATTRIBUTE ::= {
+ WITH SYNTAX MessageDigest
+ EQUALITY MATCHING RULE octetStringMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-messageDigest
+}
+
+MessageDigest ::= OCTET STRING
+
+signingTime ATTRIBUTE ::= {
+ WITH SYNTAX SigningTime
+ EQUALITY MATCHING RULE signingTimeMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-signingTime
+}
+
+SigningTime ::= Time -- imported from ISO/IEC 9594-8
+
+randomNonce ATTRIBUTE ::= {
+ WITH SYNTAX RandomNonce
+ EQUALITY MATCHING RULE octetStringMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-randomNonce
+}
+
+RandomNonce ::= OCTET STRING (SIZE(4..MAX)) -- At least four bytes long
+
+sequenceNumber ATTRIBUTE ::= {
+ WITH SYNTAX SequenceNumber
+ EQUALITY MATCHING RULE integerMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-sequenceNumber
+}
+
+SequenceNumber ::= INTEGER (1..MAX)
+
+counterSignature ATTRIBUTE ::= {
+ WITH SYNTAX SignerInfo
+ ID pkcs-9-at-counterSignature
+}
+
+challengePassword ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {pkcs-9-ub-challengePassword}
+ EQUALITY MATCHING RULE caseExactMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-challengePassword
+}
+
+extensionRequest ATTRIBUTE ::= {
+ WITH SYNTAX ExtensionRequest
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-extensionRequest
+}
+
+ExtensionRequest ::= Extensions
+
+extendedCertificateAttributes ATTRIBUTE ::= {
+ WITH SYNTAX SET OF Attribute
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-extendedCertificateAttributes
+}
+
+friendlyName ATTRIBUTE ::= {
+ WITH SYNTAX BMPString (SIZE(1..pkcs-9-ub-friendlyName))
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-friendlyName
+}
+
+localKeyId ATTRIBUTE ::= {
+ WITH SYNTAX OCTET STRING
+ EQUALITY MATCHING RULE octetStringMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-localKeyId
+}
+
+signingDescription ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {pkcs-9-ub-signingDescription}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-signingDescription
+}
+
+smimeCapabilities ATTRIBUTE ::= {
+ WITH SYNTAX SMIMECapabilities
+ SINGLE VALUE TRUE
+ ID pkcs-9-at-smimeCapabilities
+}
+
+SMIMECapabilities ::= SEQUENCE OF SMIMECapability
+
+SMIMECapability ::= SEQUENCE {
+ algorithm ALGORITHM.&id ({SMIMEv3Algorithms}),
+ parameters ALGORITHM.&Type ({SMIMEv3Algorithms}{@algorithm})
+}
+
+SMIMEv3Algorithms ALGORITHM ::= {...-- See RFC 2633 --}
+
+ -- Matching rules
+
+pkcs9CaseIgnoreMatch MATCHING-RULE ::= {
+ SYNTAX PKCS9String {pkcs-9-ub-match}
+ ID pkcs-9-mr-caseIgnoreMatch
+}
+
+signingTimeMatch MATCHING-RULE ::= {
+ SYNTAX SigningTime
+ ID pkcs-9-mr-signingTimeMatch
+}
+
+END \ No newline at end of file
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS7BodyPartType.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS7BodyPartType.asn1
new file mode 100644
index 0000000000..1bcc2281a1
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/PKCS7BodyPartType.asn1
@@ -0,0 +1,31 @@
+-- Module PKCS7BodyPartType (X.420:06/1999)
+PKCS7BodyPartType {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ pkcs7-body-part-type(16)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+IMPORTS
+ -- PKCS#7
+ ContentInfo
+ FROM PKCS-7 {iso(1) member-body(2) usa(840) rsadsi(113549) pkcs(1)
+ 7 module(0)}
+ -- module not formally defined in the PKCS#7document, therefore defined in Annex O
+ -- IPMS Information Objects
+ EXTENDED-BODY-PART-TYPE
+ FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ information-objects(2) version-1999(1)}
+ -- IPMS Object Identifiers
+ id-et-pkcs7
+ --==
+ FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0)
+ object-identifiers(0) version-1999(1)};
+
+-- PKCS7 body part
+pkcs7-body-part EXTENDED-BODY-PART-TYPE ::= {
+ DATA {ContentInfo
+ IDENTIFIED BY id-et-pkcs7}
+}
+
+END -- of PKCS7BodyPartType
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/PKIXAlgs-2009.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/PKIXAlgs-2009.asn1
index a9f5c16ad6..d58bcb5b19 100644
--- a/lib/asn1/test/asn1_SUITE_data/rfcs/PKIXAlgs-2009.asn1
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/PKIXAlgs-2009.asn1
@@ -145,6 +145,8 @@
pgenCounter INTEGER
}
+ DiffieHellmanPublicNumber ::= INTEGER -- according to http://wikisec.free.fr/crypto/crypto.html
+
DHPublicKey ::= INTEGER -- public key, y = g^x mod p
-- KEA PK Algorithm and Parameters
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Protected-Part-Descriptors.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Protected-Part-Descriptors.asn1
new file mode 100644
index 0000000000..5512f1590b
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Protected-Part-Descriptors.asn1
@@ -0,0 +1,74 @@
+-- Module Protected-Part-Descriptors (T.415:03/1993)
+
+Protected-Part-Descriptors {2 8 1 5 13} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Sealed-Doc-Prof-Descriptor, Enciphered-Doc-Prof-Descriptor,
+ Preenciphered-Bodypart-Descriptor, Postenciphered-Bodypart-Descriptor;
+
+IMPORTS Protected-Part-Identifier
+ FROM Identifiers-and-Expressions; -- see 7.8
+
+Sealed-Doc-Prof-Descriptor ::= SEQUENCE {
+ sealed-doc-prof-identifier Protected-Part-Identifier,
+ sealed-doc-prof-information Document-Profile-Attribute-Names
+}
+
+Document-Profile-Attribute-Names ::= BIT STRING {
+ generic-layout-structure(0), specific-layout-structure(1),
+ generic-logical-structure(2), specific-logical-structure(3),
+ layout-styles(4), presentation-styles(5), sealed-profiles(6),
+ enciphered-profiles(7), pre-enciphered-body-parts(8),
+ post-enciphered-body-parts(9), external-document-class(10),
+ resource-document(11), resources(12), document-application-profile(13),
+ document-application-profile-defaults(14), document-architecture-class(15),
+ content-architecture-classes(16), interchange-format-class(17),
+ oda-version(18), alternative-feature-sets(19), profile-character-sets(20),
+ comments-character-sets(21), alternative-representation-character-sets(22),
+ page-dimensions(23), medium-types(24), layout-paths(25), protections(26),
+ block-alignments(27), fill-orders(28), transparencies(29), colours(30),
+ colours-of-layout-object(31), object-colour-tables(32),
+ content-background-colours(33), content-foreground-colours(34),
+ content-colour-tables(35), borders(36), page-positions(37),
+ types-of-coding(38), coding-attributes(39), presentation-features(40),
+ number-of-objects-per-page(41), unit-scaling(42), fonts-list(43),
+ colour-characteristics(44), colour-spaces-list(45),
+ assured-reproduction-areas(86), title(46), subject(47),
+ document-reference(48), document-type(49), abstract(50), keywords(51),
+ document-date-and-time(52), creation-date-and-time(53),
+ local-filing-date-and-time(54), expiry-date-and-time(55),
+ start-date-and-time(56), purge-date-and-time(57), release-date-and-time(58),
+ revision-history(59), organizations(60), preparers(61), owners(62),
+ authors(63), copyright(64), status(65), user-specific-codes(66),
+ distribution-list(67), additional-information(68),
+ references-to-other-documents(69), superseded-documents(70),
+ local-file-references(71), document-size(72), number-of-pages(73),
+ languages(74), authorization(75), security-classification(76),
+ access-rights(77), sealed-information-encoding(78), oda-security-label(79),
+ sealed-document-profiles(80), pre-sealed-document-body-parts(81),
+ post-sealed-document-body-parts(82), enciphered-document-profiles(83),
+ pre-enciphered-document-body-parts(84),
+ post-enciphered-document-body-parts(85)}
+
+Enciphered-Doc-Prof-Descriptor ::= SEQUENCE {
+ enciphered-doc-prof-identifier Protected-Part-Identifier,
+ enciphered-doc-prof-information Enciphered-Information
+}
+
+Preenciphered-Bodypart-Descriptor ::= SEQUENCE {
+ preenciphered-bodypart-identifier Protected-Part-Identifier,
+ preenciphered-bodypart-info Enciphered-Information
+}
+
+Postenciphered-Bodypart-Descriptor ::= SEQUENCE {
+ postenciphered-bodypart-identifier Protected-Part-Identifier,
+ postenciphered-bodypart-info Enciphered-Information
+}
+
+Enciphered-Information ::= OCTET STRING
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/ProtocolObjectIdentifiers.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/ProtocolObjectIdentifiers.asn1
new file mode 100644
index 0000000000..d6e88a2e47
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/ProtocolObjectIdentifiers.asn1
@@ -0,0 +1,140 @@
+-- Module ProtocolObjectIdentifiers (X.519 TC2:08/1997)
+
+ProtocolObjectIdentifiers {joint-iso-itu-t ds(5) module(1)
+ protocolObjectIdentifiers(4) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ id-rosObject, id-contract, id-package, id-ac, id-as
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3};
+
+-- ROS Objects
+id-rosObject-dua OBJECT IDENTIFIER ::= {id-rosObject 1}
+
+id-rosObject-directory OBJECT IDENTIFIER ::= {id-rosObject 2}
+
+id-rosObject-dapDSA OBJECT IDENTIFIER ::= {id-rosObject 3}
+
+id-rosObject-dspDSA OBJECT IDENTIFIER ::= {id-rosObject 4}
+
+id-rosObject-dopDSA OBJECT IDENTIFIER ::= {id-rosObject 7}
+
+id-rosObject-initiatingConsumerDSA OBJECT IDENTIFIER ::= {id-rosObject 8}
+
+id-rosObject-respondingSupplierDSA OBJECT IDENTIFIER ::= {id-rosObject 9}
+
+id-rosObject-initiatingSupplierDSA OBJECT IDENTIFIER ::= {id-rosObject 10}
+
+id-rosObject-respondingConsumerDSA OBJECT IDENTIFIER ::= {id-rosObject 11}
+
+-- contracts
+id-contract-dap OBJECT IDENTIFIER ::= {id-contract 1}
+
+id-contract-dsp OBJECT IDENTIFIER ::= {id-contract 2}
+
+id-contract-shadowConsumer OBJECT IDENTIFIER ::= {id-contract 3}
+
+id-contract-shadowSupplier OBJECT IDENTIFIER ::= {id-contract 4}
+
+id-contract-dop OBJECT IDENTIFIER ::= {id-contract 5}
+
+-- packages
+id-package-read OBJECT IDENTIFIER ::= {id-package 1}
+
+id-package-search OBJECT IDENTIFIER ::= {id-package 2}
+
+id-package-modify OBJECT IDENTIFIER ::= {id-package 3}
+
+id-package-chainedRead OBJECT IDENTIFIER ::= {id-package 4}
+
+id-package-chainedSearch OBJECT IDENTIFIER ::= {id-package 5}
+
+id-package-chainedModify OBJECT IDENTIFIER ::= {id-package 6}
+
+id-package-shadowConsumer OBJECT IDENTIFIER ::= {id-package 7}
+
+id-package-shadowSupplier OBJECT IDENTIFIER ::= {id-package 8}
+
+id-package-operationalBindingManagement OBJECT IDENTIFIER ::= {id-package 9}
+
+id-package-dapConnection OBJECT IDENTIFIER ::= {id-package 10}
+
+id-package-dspConnection OBJECT IDENTIFIER ::= {id-package 11}
+
+id-package-dispConnection OBJECT IDENTIFIER ::= {id-package 12}
+
+id-package-dopConnection OBJECT IDENTIFIER ::= {id-package 13}
+
+-- application contexts
+id-ac-directoryAccessAC OBJECT IDENTIFIER ::=
+ {id-ac 1}
+
+id-ac-directorySystemAC OBJECT IDENTIFIER ::= {id-ac 2}
+
+id-ac-directoryOperationalBindingManagementAC OBJECT IDENTIFIER ::= {id-ac 3}
+
+id-ac-shadowConsumerInitiatedAC OBJECT IDENTIFIER ::= {id-ac 4}
+
+id-ac-shadowSupplierInitiatedAC OBJECT IDENTIFIER ::= {id-ac 5}
+
+id-ac-reliableShadowSupplierInitiatedAC OBJECT IDENTIFIER ::= {id-ac 6}
+
+id-ac-reliableShadowConsumerInitiatedAC OBJECT IDENTIFIER ::= {id-ac 7}
+
+id-ac-shadowSupplierInitiatedAsynchronousAC OBJECT IDENTIFIER ::= {id-ac 8}
+
+id-ac-shadowConsumerInitiatedAsynchronousAC OBJECT IDENTIFIER ::= {id-ac 9}
+
+id-ac-directoryAccessWith2or3seAC OBJECT IDENTIFIER ::= {id-ac 10}
+
+id-ac-directorySystemWith2or3seAC OBJECT IDENTIFIER ::= {id-ac 11}
+
+id-ac-shadowSupplierInitiatedWith2or3seAC OBJECT IDENTIFIER ::= {id-ac 12}
+
+id-ac-shadowConsumerInitiatedWith2or3seAC OBJECT IDENTIFIER ::= {id-ac 13}
+
+id-ac-reliableShadowSupplierInitiatedWith2or3seAC OBJECT IDENTIFIER ::=
+ {id-ac 14}
+
+id-ac-reliableShadowConsumerInitiatedWith2or3seAC OBJECT IDENTIFIER ::=
+ {id-ac 15}
+
+id-ac-directoryOperationalBindingManagementWith2or3seAC OBJECT IDENTIFIER ::=
+ {id-ac 16}
+
+-- ASEs (obsolete)
+-- id-ase-readASE OBJECT IDENTIFIER ::= {id-ase 1}
+-- id-ase-searchASE OBJECT IDENTIFIER ::= {id-ase 2}
+-- id-ase-modifyASE OBJECT IDENTIFIER ::= {id-ase 3}
+-- id-ase-chainedReadASE OBJECT IDENTIFIER ::= {id-ase 4}
+-- id-ase-chainedSearchASE OBJECT IDENTIFIER ::= {id-ase 5}
+-- id-ase-chainedModifyASE OBJECT IDENTIFIER ::= {id-ase 6}
+-- id-ase-operationalBindingManagementASE OBJECT IDENTIFIER ::= {id-ase 7}
+-- id-ase-shadowConsumerASE OBJECT IDENTIFIER ::= {id-ase 8}
+-- id-ase-shadowSupplierASE OBJECT IDENTIFIER ::= {id-ase 9}
+-- abstract syntaxes
+id-as-directoryAccessAS OBJECT IDENTIFIER ::=
+ {id-as 1}
+
+id-as-directorySystemAS OBJECT IDENTIFIER ::= {id-as 2}
+
+id-as-directoryShadowAS OBJECT IDENTIFIER ::= {id-as 3}
+
+id-as-directoryOperationalBindingManagementAS OBJECT IDENTIFIER ::= {id-as 4}
+
+id-as-directoryReliableShadowAS OBJECT IDENTIFIER ::= {id-as 5}
+
+id-as-reliableShadowBindingAS OBJECT IDENTIFIER ::= {id-as 6}
+
+id-as-2or3se OBJECT IDENTIFIER ::= {id-as 7}
+
+END -- ProtocolObjectIdentifiers
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Coding-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Coding-Attributes.asn1
new file mode 100644
index 0000000000..258c5f0b23
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Coding-Attributes.asn1
@@ -0,0 +1,75 @@
+-- Module Raster-Gr-Coding-Attributes (T.417:03/1993)
+
+Raster-Gr-Coding-Attributes {2 8 1 7 3} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Raster-Gr-Coding-Attributes, Compression, Tile-Type,
+ Bits-Per-Colour-Component, Subsampling;
+
+IMPORTS Coordinate-Pair
+ FROM Raster-Gr-Presentation-Attributes {2 8 1 7 2};
+
+Raster-Gr-Coding-Attributes ::= SET {
+ number-of-pels-per-line [0] IMPLICIT INTEGER OPTIONAL,
+ number-of-lines [1] IMPLICIT INTEGER OPTIONAL,
+ compression [2] IMPLICIT Compression OPTIONAL,
+ number-of-discarded-pels [3] IMPLICIT INTEGER OPTIONAL,
+ bits-per-colour-component [4] Bits-Per-Colour-Component OPTIONAL,
+ interleaving-format
+ [5] IMPLICIT INTEGER {pel(0), line(1), plane(2), stripe(3)} OPTIONAL,
+ number-of-pels-per-tile-line [6] IMPLICIT INTEGER OPTIONAL,
+ number-of-lines-per-tile [7] IMPLICIT INTEGER OPTIONAL,
+ tiling-offset [8] IMPLICIT Coordinate-Pair OPTIONAL,
+ tile-types [9] IMPLICIT SEQUENCE OF Tile-Type OPTIONAL,
+ subsampling [10] IMPLICIT Subsampling OPTIONAL,
+ jpeg-coding-mode
+ [11] IMPLICIT INTEGER {-- Huffman coding
+ baseline(0), huffman-extended-sequential-DCT(1),
+ huffman-progressive-DCT(2),
+ huffman-spatial-lossless(3),
+ -- arithmetic coding
+ arithmetic-extended-sequential-DCT(9),
+ arithmetic-progressive-DCT(10),
+ arithmetic-spatial-lossless(11)},
+ jpeg-quantization-table
+ [12] IMPLICIT INTEGER {associated(0), default(1)} OPTIONAL,
+ jpeg-huffman-table
+ [13] IMPLICIT INTEGER {associated(0), preferred(1)},
+ -- basic and default value is "associated".
+ jbig-differential-layer
+ [17] IMPLICIT INTEGER {dl-not-present(0), dl-encoded-without-tp-and-dp(1),
+ dl-encoded-with-tp(2), dl-encoded-with-dp(3),
+ dl-encoded-with-dp-and-private-dp-table(4),
+ dl-encoded-with-tp-and-dp(5),
+ dl-encoded-with-tp-dp-and-private-dp-table(6)}
+ OPTIONAL,
+ number-of-lines-per-stripe [18] IMPLICIT INTEGER OPTIONAL
+}
+
+Compression ::= INTEGER {uncompressed(0), compressed(1)}
+
+Tile-Type ::= INTEGER {
+ null-background(0), null-foreground(1), t6-encoded(2),
+ t4-one-dimensional-encoded(3), t4-two-dimensional-encoded(4),
+ bitmap-encoded(5), t6-encoded-msb(6), t4-one-dimensional-encoded-msb(7),
+ t4-two-dimensional-encoded-msb(8), jbig-bits-per-component-eq-1(9),
+ jpeg(10), jbig-bits-per-component-gr-1(11)}
+
+Bits-Per-Colour-Component ::= CHOICE {
+ single-integer INTEGER,
+ component-list SEQUENCE OF INTEGER
+}
+
+Subsampling ::= OCTET STRING
+
+-- The value OCTET STRING shall be chosen from the
+-- following table:
+-- Semantic Meaning JPEG notations Octet strings
+-- 4:1:1 ((2,2),(1,1),(1,1)) '221111'H
+-- 2:1:1 or 4:2:2 ((2,1),(1,1),(1,1)) '211111'H
+-- 1:1:1 ((1,1),(1,1),(1,1)) '111111'H
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Presentation-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Presentation-Attributes.asn1
new file mode 100644
index 0000000000..c8f3a2ff33
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Presentation-Attributes.asn1
@@ -0,0 +1,92 @@
+-- Module Raster-Gr-Presentation-Attributes (T.417:03/1993)
+
+Raster-Gr-Presentation-Attributes {2 8 1 7 2} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Raster-Graphics-Attributes, Clipping, Measure-Pair, One-Of-Four-Angles,
+ One-Of-Two-Angles, Pel-Transmission-Density, Pel-Spacing, Spacing-Ratio,
+ Image-Dimensions, Coordinate-Pair;
+
+Raster-Graphics-Attributes ::= SET {
+ pel-path [0] IMPLICIT One-Of-Four-Angles OPTIONAL,
+ line-progression [1] IMPLICIT One-Of-Two-Angles OPTIONAL,
+ pel-transmission-density [2] IMPLICIT Pel-Transmission-Density OPTIONAL,
+ initial-offset [3] IMPLICIT Measure-Pair OPTIONAL,
+ clipping [4] IMPLICIT Clipping OPTIONAL,
+ pel-spacing [5] Pel-Spacing OPTIONAL,
+ spacing-ratio [6] IMPLICIT Spacing-Ratio OPTIONAL,
+ image-dimensions [7] Image-Dimensions OPTIONAL
+}
+
+One-Of-Four-Angles ::= INTEGER {
+ d0(0), -- d0
+ d90(1), -- d90
+ d180(2), --d180
+ d270(3) -- d270--}
+
+One-Of-Two-Angles ::= INTEGER {d90(1), -- d90
+ d270(3) -- d270 --}
+
+Pel-Transmission-Density ::= INTEGER {
+ p5(2), -- 5 BMU (240 pels/25.4 mm)
+ p4(3), -- 4 BMU (300 pels/25.4 mm)
+ p3(4), -- 3 BMU (400 pels/25.4 mm)
+ p2(5), -- 2 BMU (600 pels/25.4 mm)
+ p1(6), -- 1 BMU (1200 pels/25.4 mm)
+ colour-grey-scale-p12(10), -- 12 BMU (100 pels/25.4 mm)
+ colour-grey-scale-p6(11), -- 6 BMU (200 pels/25.4 mm)
+ colour-grey-scale-p4(13), -- 4 BMU (300 pels/25.4 mm)
+ colour-grey-scale-p3(14), -- 3 BMU (400 pels/25.4 mm)
+ colour-grey-scale-p2(15), -- 2 BMU (600 pels/25.4 mm)
+ colour-grey-scale-p1(16), -- 1 BMU (1200 pels/25.4 mm)
+ p6(1)} -- 6 BMU (200 pels/25.4 mm)
+
+-- default and basic value is p6 (1)
+Measure-Pair ::= SEQUENCE {
+ horizontal [0] IMPLICIT INTEGER,
+ vertical [0] IMPLICIT INTEGER
+}
+
+Clipping ::= SEQUENCE {
+ first-coordinate-pair [0] IMPLICIT Coordinate-Pair OPTIONAL,
+ second-coordinate-pair [1] IMPLICIT Coordinate-Pair OPTIONAL
+}
+
+Coordinate-Pair ::= SEQUENCE {x-coordinate INTEGER,
+ y-coordinate INTEGER
+}
+
+Pel-Spacing ::= CHOICE {
+ spacing
+ [0] IMPLICIT SEQUENCE {length [0] INTEGER,
+ pel-spaces [0] INTEGER},
+ null [1] IMPLICIT NULL
+}
+
+Spacing-Ratio ::= SEQUENCE {
+ line-spacing-value INTEGER,
+ pel-spacing-value INTEGER
+}
+
+Image-Dimensions ::= CHOICE {
+ width-controlled
+ [0] IMPLICIT SEQUENCE {minimum-width [0] INTEGER,
+ preferred-width [0] INTEGER},
+ height-controlled
+ [1] IMPLICIT SEQUENCE {minimum-height INTEGER,
+ preferred-height INTEGER},
+ area-controlled
+ [2] IMPLICIT SEQUENCE {minimum-width INTEGER,
+ preferred-width INTEGER,
+ minimum-height INTEGER,
+ preferred-height INTEGER,
+ aspect-ratio-flag INTEGER {fixed(0), variable(1)}
+ },
+ automatic [3] IMPLICIT NULL
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Profile-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Profile-Attributes.asn1
new file mode 100644
index 0000000000..365144ff35
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Raster-Gr-Profile-Attributes.asn1
@@ -0,0 +1,76 @@
+-- Module Raster-Gr-Profile-Attributes (T.417:03/1993)
+
+Raster-Gr-Profile-Attributes {2 8 1 7 4} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Ra-Gr-Presentation-Feature, Ra-Gr-Coding-Attribute,
+ Raster-Gr-Content-Defaults;
+
+IMPORTS
+ One-Of-Four-Angles, One-Of-Two-Angles, Pel-Transmission-Density,
+ Measure-Pair, Clipping, Pel-Spacing, Spacing-Ratio, Image-Dimensions,
+ Coordinate-Pair, Raster-Graphics-Attributes
+ FROM Raster-Gr-Presentation-Attributes {2 8 1 7 2}
+ Compression, Tile-Type, Bits-Per-Colour-Component, Subsampling
+ FROM Raster-Gr-Coding-Attributes {2 8 1 7 3};
+
+Ra-Gr-Coding-Attribute ::= CHOICE {
+ compression [0] IMPLICIT Compression,
+ bits-per-colour-component [4] Bits-Per-Colour-Component,
+ interleaving-format
+ [5] IMPLICIT INTEGER {pel(0), line(1), plane(2), stripe(3)},
+ number-of-pels-per-tile-line [6] IMPLICIT INTEGER,
+ number-of-lines-per-tile [7] IMPLICIT INTEGER,
+ tiling-offset [8] IMPLICIT Coordinate-Pair,
+ tiling-types [9] IMPLICIT Tile-Type,
+ subsampling [10] IMPLICIT Subsampling,
+ jpeg-coding-mode
+ [11] IMPLICIT INTEGER {-- Huffman coding
+ huffman-baseline(0),
+ huffman-extended-sequential-DCT(1),
+ huffman-progressive-DCT(2),
+ huffman-spatial-lossless(3),
+ -- arithmetic coding
+ arithmetic-progressive-DCT(10),
+ arithmetic-spatial-lossless(11)},
+ jpeg-quantization-table
+ [12] IMPLICIT INTEGER {associated(0), default(1)},
+ jpeg-huffman-table
+ [13] IMPLICIT INTEGER {associated(0), preferred(1)},
+ jbig-tp-for-base-layer [14] IMPLICIT INTEGER {not-used(0), used(1)},
+ jbig-differential-layer
+ [15] IMPLICIT INTEGER {dl-not-present(0), dl-encoded-without-tp-and-dp(1),
+ dl-encoded-with-tp(2), dl-encoded-with-dp(3),
+ dl-encoded-with-dp-and-private-dp-table(4),
+ dl-encoded-with-tp-and-dp(5),
+ dl-encoded-with-tp-dp-and-private-dp-table(6)},
+ number-of-lines-per-stripe [16] IMPLICIT INTEGER
+}
+
+Ra-Gr-Presentation-Feature ::= CHOICE {
+ initial-offset [3] IMPLICIT Measure-Pair,
+ clipping [4] IMPLICIT Clipping,
+ pel-spacing [5] Pel-Spacing,
+ spacing-ratio [6] IMPLICIT Spacing-Ratio,
+ image-dimensions [7] Image-Dimensions,
+ pel-path [9] IMPLICIT One-Of-Four-Angles,
+ line-progression [10] IMPLICIT One-Of-Two-Angles,
+ pel-transmission-density [11] IMPLICIT Pel-Transmission-Density
+}
+
+-- The tag values used above preserve compatibility
+-- with Group 4 Class I facsimile data streams.
+Raster-Gr-Content-Defaults ::= SET {
+ COMPONENTS OF Raster-Graphics-Attributes,
+ compression [8] IMPLICIT Compression OPTIONAL,
+ number-of-pels-per-tile-line [11] IMPLICIT INTEGER OPTIONAL,
+ number-of-lines-per-tile [12] IMPLICIT INTEGER OPTIONAL,
+ tiling-offset [13] IMPLICIT Coordinate-Pair OPTIONAL,
+ tiling-type [14] IMPLICIT Tile-Type OPTIONAL
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Reliable-Transfer-APDU.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Reliable-Transfer-APDU.asn1
new file mode 100644
index 0000000000..d00570b7e7
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Reliable-Transfer-APDU.asn1
@@ -0,0 +1,132 @@
+-- Module Reliable-Transfer-APDU (X.228:11/1988)
+
+Reliable-Transfer-APDU {joint-iso-itu-t reliable-transfer(3) apdus(0)}
+DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ rTSE, rTSE-abstract-syntax, RTORQapdu, RTOACapdu, RTORJapdu, RTABapdu; -- for use by Presentation Layer only
+
+IMPORTS
+ CONTRACT
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)};
+
+OPEN ::= CLASS {&Type
+}WITH SYNTAX {TYPE &Type
+}
+
+rTSE-abstract-syntax OBJECT IDENTIFIER ::=
+ {joint-iso-itu-t reliable-transfer(3) abstract-syntax(2)}
+
+rTSE CONTRACT ::= {ID {joint-iso-itu-t reliable-transfer(3) aseID(1)}
+}
+
+RTSE-apdus ::= CHOICE {
+ rtorq-apdu [16] IMPLICIT RTORQapdu,
+ rtoac-apdu [17] IMPLICIT RTOACapdu,
+ rtorj-apdu [18] IMPLICIT RTORJapdu,
+ rttp-apdu RTTPapdu,
+ rttr-apdu RTTRapdu,
+ rtab-apdu [22] IMPLICIT RTABapdu
+}
+
+-- Tags [19], [20], [21] are used by the values of the UNBIND macro of the RO-notation of
+-- Recommendation X.219. Tags [0] to [15] inclusive are reserved for the
+-- use by the APDUs of ROSE (Recommendation X229). Any occurrence of
+-- ANY in this module shall be replaced by a single ASN. 1 type (if any) in an RTSE-user
+-- protocol specification. In addition any RTSE-user protocol sharing a single named
+-- abstract syntax with the RTSE protocol shall use distinct tags for the single
+-- presentation data values in the user data parameters of the RT-CLOSE (if any) and
+-- RT- TRANSFER services. These tags shall be distinct from the tag values [16], [17],
+-- [18] and [22] and from the ASN. 1 types INTEGER and OCTET STRING.
+-- Note - The above conditions are ensured, if the RTSE-user protocol specification uses the
+-- RO-notation of Recommendation X229.
+-- In X.410-1984 mode only the components of RTORQapdu, RTOACapdu, RTORJapdu
+-- and RTABapdu are used by the presentation layer. This has the effect that the following
+-- APDU types appear in the protocol in X.410-1984 mode instead of the alternative types
+-- of the RTSE-apdus type:
+-- RTORQapdu
+-- RTOACapdu
+-- RTORJapdu
+-- RTTPapdu
+-- RTTRapdu
+-- RTABapdu
+RTORQapdu ::= SET {
+ checkpointSize [0] IMPLICIT INTEGER DEFAULT 0,
+ windowSize [1] IMPLICIT INTEGER DEFAULT 3,
+ dialogueMode
+ [2] IMPLICIT INTEGER {monologue(0), twa(1)} DEFAULT monologue,
+ connectionDataRQ [3] ConnectionData,
+ applicationProtocol
+ [4] IMPLICIT INTEGER OPTIONAL --solely in X.410-1984 mode--
+}
+
+RTOACapdu ::= SET {
+ checkpointSize [0] IMPLICIT INTEGER DEFAULT 0,
+ windowSize [1] IMPLICIT INTEGER DEFAULT 3,
+ connectionDataAC [2] ConnectionData
+}
+
+RTORJapdu ::= SET {
+ refuseReason [0] IMPLICIT RefuseReason OPTIONAL, -- only in X.410-1984 mode
+ userDataRJ
+ [1] OPEN.&Type OPTIONAL -- RTSE user data, only in normal mode--
+}
+
+RTTPapdu ::= -- priority-- INTEGER
+
+RTTRapdu ::= OCTET STRING
+
+RTABapdu ::= SET {
+ abortReason [0] IMPLICIT AbortReason OPTIONAL,
+ reflectedParameter [1] IMPLICIT BIT STRING OPTIONAL,
+ -- 8 bits maximum, only if abortReason is invalidParameter
+ userdataAB
+ [2] OPEN.&Type OPTIONAL -- only in normal mode and if abortReason--
+ -- is userError
+}
+
+ConnectionData ::= CHOICE {
+ open [0] OPEN.&Type, -- RTSE user data
+
+ -- this alternative is encoded as [0] IMPLICIT NULL
+ -- in the case of absence of RTSE user data,
+ recover [1] IMPLICIT SessionConnectionIdentifier
+}
+
+SessionConnectionIdentifier ::= SEQUENCE {
+ callingSSuserReference CallingSSuserReference,
+ commonReference CommonReference,
+ additionalReferenceInformation
+ [0] IMPLICIT AdditionalReferenceInformation OPTIONAL
+}
+
+RefuseReason ::= INTEGER {
+ rtsBusy(0), cannotRecover(1), validationFailure(2),
+ unacceptableDialogueMode(3)}
+
+CallingSSuserReference ::= CHOICE {
+ t61String T61String -- solely in X.410-1984 --,
+ octetString OCTET STRING -- solely in normal mode --
+}
+
+CommonReference ::= UTCTime
+
+AdditionalReferenceInformation ::= T61String
+
+AbortReason ::= INTEGER {
+ localSystemProblem(0),
+ invalidParameter(1), -- reflectedParameter supplied
+ unrecognizedActivity(2),
+ temporaryProblem(3),
+ -- the RTSE cannot accept a session for a period of time
+ protocolError(4), -- RTSE level protocol error
+ permanentProblem(5), --provider-abort solely in normal mode
+ userError(6), -- user-abort solely in normal mode
+ transferCompleted(7) -- activity can't be discarded--}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Abstract-Syntaxes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Abstract-Syntaxes.asn1
new file mode 100644
index 0000000000..4a59cc403b
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Abstract-Syntaxes.asn1
@@ -0,0 +1,103 @@
+-- Module Remote-Operations-Abstract-Syntaxes (X.882:07/1994)
+
+Remote-Operations-Abstract-Syntaxes {joint-iso-itu-t remote-operations(4)
+ remote-operations-abstract-syntaxes(12) version1(0)} DEFINITIONS ::=
+BEGIN
+
+-- exports everything
+IMPORTS
+ OPERATION-PACKAGE
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ InvokeId, noInvokeId, ROS{}, Bind{}, Unbind{}
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)}
+ ACSE-apdu
+ FROM ACSE-1 {joint-iso-itu-t association-control(2) modules(0) apdus(0)
+ version1(1)}
+ RTORQapdu, RTOACapdu, RTORJapdu
+ FROM Reliable-Transfer-APDU {joint-iso-itu-t reliable-transfer(3) apdus(0)}
+ combine{}, AllOperations{}, ConsumerPerforms{}, SupplierPerforms{}
+ FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
+ remote-operations(4) useful-definitions(7) version1(0)}
+ APPLICATION-CONTEXT
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)};
+
+RTSE-apdus ::= CHOICE {
+ rtorq-apdu [16] IMPLICIT RTORQapdu,
+ rtoac-apdu [17] IMPLICIT RTOACapdu,
+ rtorj-apdu [18] IMPLICIT RTORJapdu,
+ rttp-apdu RTTPapdu,
+ rttr-apdu RTTRapdu,
+ rtab-apdu [22] IMPLICIT RTABapdu
+}
+
+RTTPapdu ::= -- priority-- INTEGER
+
+RTTRapdu ::= OCTET STRING
+
+RTABapdu ::= SET {
+ abortReason [0] IMPLICIT AbortReason OPTIONAL,
+ reflectedParameter [1] IMPLICIT BIT STRING OPTIONAL,
+ -- 8 bits maximum, only if abortReason is invalidParameter
+ userdataAB
+ [2] TYPE-IDENTIFIER.&Type
+ OPTIONAL -- only in normal mode and if abortReason--
+ -- is userError
+}
+
+AbortReason ::= INTEGER {
+ localSystemProblem(0),
+ invalidParameter(1), -- reflectedParameter supplied
+ unrecognizedActivity(2),
+ temporaryProblem(3),
+ -- the RTSE cannot accept a session for a period of time
+ protocolError(4), -- RTSE level protocol error
+ permanentProblem(5), --provider-abort solely in normal mode
+ userError(6), -- user-abort solely in normal mode
+ transferCompleted(7) -- activity can't be discarded--}
+
+acse-abstract-syntax ABSTRACT-SYNTAX ::= {
+ ACSE-apdu
+ IDENTIFIED BY
+ {joint-iso-itu-t association-control(2) abstract-syntax(1) apdus(0)
+ version1(1)}
+}
+
+rtse-abstract-syntax ABSTRACT-SYNTAX ::= {
+ RTSE-apdus
+ IDENTIFIED BY {joint-iso-itu-t reliable-transfer(3) apdus(0)}
+}
+
+AllValues{APPLICATION-CONTEXT:ac} ::= CHOICE {
+ bind Bind{ac.&associationContract.&connection.&bind},
+ unbind Unbind{ac.&associationContract.&connection.&unbind},
+ ros-singleAS
+ ROS-SingleAS{{ROSEInvokeIds},
+ combine{{ac.&associationContract.&OperationsOf |
+ ac.&associationContract.&InitiatorConsumerOf |
+ ac.&associationContract.&ResponderConsumerOf}, {
+ ...},
+ {-- Information Object of class OPERATION-PACKAGE to be defined -- }}}
+}
+
+ROS-SingleAS{InvokeId:ROSEInvokeIds, OPERATION-PACKAGE:package} ::=
+ ROS{{ROSEInvokeIds}, {AllOperations {package}}, {AllOperations {package}}}
+
+ROS-ConsumerAS{InvokeId:ROSEInvokeIds, OPERATION-PACKAGE:package} ::=
+ ROS
+ {{ROSEInvokeIds}, {ConsumerPerforms {package}},
+ {SupplierPerforms {package}}}
+
+ROS-SupplierAS{InvokeId:ROSEInvokeIds, OPERATION-PACKAGE:package} ::=
+ ROS
+ {{ROSEInvokeIds}, {SupplierPerforms {package}},
+ {ConsumerPerforms {package}}}
+
+ROSEInvokeIds InvokeId ::= {ALL EXCEPT noInvokeId}
+
+END -- end of the remote-operations-abstract-syntaxes module
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Generic-ROS-PDUs.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Generic-ROS-PDUs.asn1
new file mode 100644
index 0000000000..e55ea3c05e
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Generic-ROS-PDUs.asn1
@@ -0,0 +1,163 @@
+-- Module Remote-Operations-Generic-ROS-PDUs (X.880:07/1994)
+
+Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t remote-operations(4)
+ generic-ROS-PDUs(6) version1(0)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- exports everything
+IMPORTS
+ OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)};
+
+ROS{InvokeId:InvokeIdSet, OPERATION:Invokable, OPERATION:Returnable} ::=
+ CHOICE {
+ invoke [1] Invoke{{InvokeIdSet}, {Invokable}},
+ returnResult [2] ReturnResult{{Returnable}},
+ returnError [3] ReturnError{{Errors {{Returnable}}}},
+ reject [4] Reject
+}
+(CONSTRAINED BY { -- must conform to the above definition --} !
+ RejectProblem:general-unrecognizedPDU)
+
+Invoke{InvokeId:InvokeIdSet, OPERATION:Operations} ::= SEQUENCE {
+ invokeId
+ InvokeId(InvokeIdSet)
+ (CONSTRAINED BY { -- must be unambiguous --} !
+ RejectProblem:invoke-duplicateInvocation),
+ linkedId
+ CHOICE {present [0] IMPLICIT present < InvokeId,
+ absent [1] IMPLICIT NULL
+ }
+ (CONSTRAINED BY { -- must identify an outstanding operation --} !
+ RejectProblem:invoke-unrecognizedLinkedId)
+ (CONSTRAINED BY { -- which has one or more linked operations--} !
+ RejectProblem:invoke-linkedResponseUnexpected) OPTIONAL,
+ opcode
+ OPERATION.&operationCode
+ ({Operations} !RejectProblem:invoke-unrecognizedOperation),
+ argument
+ OPERATION.&ArgumentType
+ ({Operations}{@opcode} !RejectProblem:invoke-mistypedArgument) OPTIONAL
+}
+(CONSTRAINED BY { -- must conform to the above definition --} !
+ RejectProblem:general-mistypedPDU)
+(WITH COMPONENTS {
+ ...,
+ linkedId ABSENT
+ } |
+ WITH COMPONENTS {
+ ...,
+ linkedId PRESENT,
+ opcode (CONSTRAINED BY { -- must be in the &Linked field of the associated operation --
+ } !RejectProblem:invoke-unexpectedLinkedOperation)
+ })
+
+-- continued on the next page
+ReturnResult{OPERATION:Operations} ::= SEQUENCE {
+ invokeId
+ InvokeId
+ (CONSTRAINED BY { -- must be that for an outstanding operation --} !
+ RejectProblem:returnResult-unrecognizedInvocation)
+ (CONSTRAINED BY { -- which returns a result --} !
+ RejectProblem:returnResult-resultResponseUnexpected),
+ result
+ SEQUENCE {opcode
+ OPERATION.&operationCode({Operations})
+ (CONSTRAINED BY { -- identified by invokeId --} !
+ RejectProblem:returnResult-unrecognizedInvocation),
+ result
+ OPERATION.&ResultType
+ ({Operations}{@.opcode} !
+ RejectProblem:returnResult-mistypedResult)} OPTIONAL
+}
+(CONSTRAINED BY { -- must conform to the above definition --} !
+ RejectProblem:general-mistypedPDU)
+
+ReturnError{ERROR:Errors} ::= SEQUENCE {
+ invokeId
+ InvokeId
+ (CONSTRAINED BY { -- must be that for an outstanding operation --} !
+ RejectProblem:returnError-unrecognizedInvocation)
+ (CONSTRAINED BY { -- which returns an error --} !
+ RejectProblem:returnError-errorResponseUnexpected),
+ errcode
+ ERROR.&errorCode({Errors} !RejectProblem:returnError-unrecognizedError)
+ (CONSTRAINED BY { -- must be in the &Errors field of the associated operation --
+ } !RejectProblem:returnError-unexpectedError),
+ parameter
+ ERROR.&ParameterType
+ ({Errors}{@errcode} !RejectProblem:returnError-mistypedParameter)
+ OPTIONAL
+}
+(CONSTRAINED BY { -- must conform to the above definition --} !
+ RejectProblem:general-mistypedPDU)
+
+Reject ::= SEQUENCE {
+ invokeId InvokeId,
+ problem
+ CHOICE {general [0] GeneralProblem,
+ invoke [1] InvokeProblem,
+ returnResult [2] ReturnResultProblem,
+ returnError [3] ReturnErrorProblem}
+}
+(CONSTRAINED BY { -- must conform to the above definition --} !
+ RejectProblem:general-mistypedPDU)
+
+GeneralProblem ::= INTEGER {
+ unrecognizedPDU(0), mistypedPDU(1), badlyStructuredPDU(2)}
+
+-- continued on the next page
+InvokeProblem ::= INTEGER {
+ duplicateInvocation(0), unrecognizedOperation(1), mistypedArgument(2),
+ resourceLimitation(3), releaseInProgress(4), unrecognizedLinkedId(5),
+ linkedResponseUnexpected(6), unexpectedLinkedOperation(7)}
+
+ReturnResultProblem ::= INTEGER {
+ unrecognizedInvocation(0), resultResponseUnexpected(1), mistypedResult(2)
+}
+
+ReturnErrorProblem ::= INTEGER {
+ unrecognizedInvocation(0), errorResponseUnexpected(1), unrecognizedError(2),
+ unexpectedError(3), mistypedParameter(4)}
+
+RejectProblem ::= INTEGER {
+ general-unrecognizedPDU(0), general-mistypedPDU(1),
+ general-badlyStructuredPDU(2), invoke-duplicateInvocation(10),
+ invoke-unrecognizedOperation(11), invoke-mistypedArgument(12),
+ invoke-resourceLimitation(13), invoke-releaseInProgress(14),
+ invoke-unrecognizedLinkedId(15), invoke-linkedResponseUnexpected(16),
+ invoke-unexpectedLinkedOperation(17),
+ returnResult-unrecognizedInvocation(20),
+ returnResult-resultResponseUnexpected(21), returnResult-mistypedResult(22),
+ returnError-unrecognizedInvocation(30),
+ returnError-errorResponseUnexpected(31), returnError-unrecognizedError(32),
+ returnError-unexpectedError(33), returnError-mistypedParameter(34)}
+
+InvokeId ::= CHOICE {present INTEGER,
+ absent NULL
+}
+
+noInvokeId InvokeId ::= absent:NULL
+
+NoInvokeId InvokeId ::= {noInvokeId}
+
+Errors{OPERATION:Operations} ERROR ::= {Operations.&Errors}
+
+-- continued on the next page
+Bind{OPERATION:operation} ::= CHOICE {
+ bind-invoke [16] OPERATION.&ArgumentType({operation}),
+ bind-result [17] OPERATION.&ResultType({operation}),
+ bind-error [18] OPERATION.&Errors.&ParameterType({operation})
+}
+
+Unbind{OPERATION:operation} ::= CHOICE {
+ unbind-invoke [19] OPERATION.&ArgumentType({operation}),
+ unbind-result [20] OPERATION.&ResultType({operation}),
+ unbind-error [21] OPERATION.&Errors.&ParameterType({operation})
+}
+
+END -- end of generic ROS PDU definitions
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Information-Objects-extensions.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Information-Objects-extensions.asn1
new file mode 100644
index 0000000000..671cf0e780
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Information-Objects-extensions.asn1
@@ -0,0 +1,36 @@
+-- Module Remote-Operations-Information-Objects-extensions (X.881:07/1994)
+
+Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)}
+DEFINITIONS ::=
+BEGIN
+
+-- exports everything
+IMPORTS
+ CONTRACT
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)};
+
+APPLICATION-CONTEXT ::= CLASS {
+ &associationContract CONTRACT,
+ &associationRealization REALIZATION OPTIONAL,
+ &transferRealization REALIZATION,
+ &AbstractSyntaxes ABSTRACT-SYNTAX,
+ &applicationContextName OBJECT IDENTIFIER UNIQUE
+}
+WITH SYNTAX {
+ CONTRACT &associationContract
+ [ESTABLISHED BY &associationRealization]
+ INFORMATION TRANSFER BY &transferRealization
+ ABSTRACT SYNTAXES &AbstractSyntaxes
+ APPLICATION CONTEXT NAME &applicationContextName
+}
+
+REALIZATION ::= TYPE-IDENTIFIER
+
+-- information objects ABSTRACT-SYNTAX and TYPE-IDENTIFIER are defined in ITU-T Rec. X.681 |
+-- ISO/IEC 8824-2
+END -- end of the information-objects-extensions module
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Information-Objects.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Information-Objects.asn1
new file mode 100644
index 0000000000..b497e4126b
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Information-Objects.asn1
@@ -0,0 +1,123 @@
+-- Module Remote-Operations-Information-Objects (X.880:07/1994)
+
+Remote-Operations-Information-Objects {joint-iso-itu-t remote-operations(4)
+ informationObjects(5) version1(0)} DEFINITIONS ::=
+BEGIN
+
+-- exports everything
+IMPORTS
+ emptyBind, emptyUnbind
+ FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
+ remote-operations(4) useful-definitions(7) version1(0)};
+
+OPERATION ::= CLASS {
+ &ArgumentType OPTIONAL,
+ &argumentTypeOptional BOOLEAN OPTIONAL,
+ &returnResult BOOLEAN DEFAULT TRUE,
+ &ResultType OPTIONAL,
+ &resultTypeOptional BOOLEAN OPTIONAL,
+ &Errors ERROR OPTIONAL,
+ &Linked OPERATION OPTIONAL,
+ &synchronous BOOLEAN DEFAULT FALSE,
+ &alwaysReturns BOOLEAN DEFAULT TRUE,
+ &InvokePriority Priority OPTIONAL,
+ &ResultPriority Priority OPTIONAL,
+ &operationCode Code UNIQUE OPTIONAL
+}
+WITH SYNTAX {
+ [ARGUMENT &ArgumentType
+ [OPTIONAL &argumentTypeOptional]]
+ [RESULT &ResultType
+ [OPTIONAL &resultTypeOptional]]
+ [RETURN RESULT &returnResult]
+ [ERRORS &Errors]
+ [LINKED &Linked]
+ [SYNCHRONOUS &synchronous]
+ [ALWAYS RESPONDS &alwaysReturns]
+ [INVOKE PRIORITY &InvokePriority]
+ [RESULT-PRIORITY &ResultPriority]
+ [CODE &operationCode]
+}
+
+ERROR ::= CLASS {
+ &ParameterType OPTIONAL,
+ &parameterTypeOptional BOOLEAN OPTIONAL,
+ &ErrorPriority Priority OPTIONAL,
+ &errorCode Code UNIQUE OPTIONAL
+}
+WITH SYNTAX {
+ [PARAMETER &ParameterType
+ [OPTIONAL &parameterTypeOptional]]
+ [PRIORITY &ErrorPriority]
+ [CODE &errorCode]
+}
+
+OPERATION-PACKAGE ::= CLASS {
+ &Both OPERATION OPTIONAL,
+ &Consumer OPERATION OPTIONAL,
+ &Supplier OPERATION OPTIONAL,
+ &id OBJECT IDENTIFIER UNIQUE OPTIONAL
+}
+-- continued on the next page
+WITH SYNTAX {
+ [OPERATIONS &Both]
+ [CONSUMER INVOKES &Supplier]
+ [SUPPLIER INVOKES &Consumer]
+ [ID &id]
+}
+
+CONNECTION-PACKAGE ::= CLASS {
+ &bind OPERATION DEFAULT emptyBind,
+ &unbind OPERATION DEFAULT emptyUnbind,
+ &responderCanUnbind BOOLEAN DEFAULT FALSE,
+ &unbindCanFail BOOLEAN DEFAULT FALSE,
+ &id OBJECT IDENTIFIER UNIQUE OPTIONAL
+}
+WITH SYNTAX {
+ [BIND &bind]
+ [UNBIND &unbind]
+ [RESPONDER UNBIND &responderCanUnbind]
+ [FAILURE TO UNBIND &unbindCanFail]
+ [ID &id]
+}
+
+CONTRACT ::= CLASS {
+ &connection CONNECTION-PACKAGE OPTIONAL,
+ &OperationsOf OPERATION-PACKAGE OPTIONAL,
+ &InitiatorConsumerOf OPERATION-PACKAGE OPTIONAL,
+ &InitiatorSupplierOf OPERATION-PACKAGE OPTIONAL,
+ &id OBJECT IDENTIFIER UNIQUE OPTIONAL
+}
+WITH SYNTAX {
+ [CONNECTION &connection]
+ [OPERATIONS OF &OperationsOf]
+ [INITIATOR CONSUMER OF &InitiatorConsumerOf]
+ [RESPONDER CONSUMER OF &InitiatorSupplierOf]
+ [ID &id]
+}
+
+ROS-OBJECT-CLASS ::= CLASS {
+ &Is ROS-OBJECT-CLASS OPTIONAL,
+ &Initiates CONTRACT OPTIONAL,
+ &Responds CONTRACT OPTIONAL,
+ &InitiatesAndResponds CONTRACT OPTIONAL,
+ &id OBJECT IDENTIFIER UNIQUE
+}
+WITH SYNTAX {
+ [IS &Is]
+ [BOTH &InitiatesAndResponds]
+ [INITIATES &Initiates]
+ [RESPONDS &Responds]
+ ID &id
+}
+
+Code ::= CHOICE {local INTEGER,
+ global OBJECT IDENTIFIER
+}
+
+Priority ::= INTEGER(0..MAX)
+
+END -- end of Information Object specifications
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Realizations.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Realizations.asn1
new file mode 100644
index 0000000000..73b49c8d7a
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Realizations.asn1
@@ -0,0 +1,81 @@
+-- Module Remote-Operations-Realizations (X.882:07/1994)
+
+Remote-Operations-Realizations {joint-iso-itu-t remote-operations(4)
+ realizations(9) version1(0)} DEFINITIONS ::=
+BEGIN
+
+-- exports everything
+IMPORTS
+ REALIZATION
+ FROM Remote-Operations-Information-Objects-extensions {joint-iso-itu-t
+ remote-operations(4) informationObjects-extensions(8) version1(0)};
+
+RealizationParameter ::= SEQUENCE {
+ realization-type ENUMERATED {association-service(0), transfer-service(1)},
+ concatenation BOOLEAN DEFAULT FALSE
+}
+
+acse REALIZATION ::= {
+ RealizationParameter
+ (WITH COMPONENTS {
+ realization-type (association-service)
+ })
+ IDENTIFIED BY
+ {joint-iso-itu-t remote-operations(4) association-realizations(10)
+ acse-without-concatenation(0)}
+}
+
+acse-with-concatenation REALIZATION ::= {
+ RealizationParameter
+ (WITH COMPONENTS {
+ realization-type (association-service),
+ concatenation (TRUE)
+ })
+ IDENTIFIED BY
+ {joint-iso-itu-t remote-operations(4) association-realizations(10)
+ acse-with-concatenation(1)}
+}
+
+association-by-RTSE REALIZATION ::= {
+ RealizationParameter
+ (WITH COMPONENTS {
+ realization-type (association-service)
+ })
+ IDENTIFIED BY
+ {joint-iso-itu-t remote-operations(4) association-realizations(10)
+ association-by-rtse(2)}
+}
+
+pData REALIZATION ::= {
+ RealizationParameter(WITH COMPONENTS {
+ realization-type (transfer-service)
+ })
+ IDENTIFIED BY
+ {joint-iso-itu-t remote-operations(4) transfer-realizations(11)
+ pData-without-concatenation(0)}
+}
+
+pData-with-concatenation REALIZATION ::= {
+ RealizationParameter
+ (WITH COMPONENTS {
+ realization-type (transfer-service),
+ concatenation (TRUE)
+ })
+ IDENTIFIED BY
+ {joint-iso-itu-t remote-operations(4) transfer-realizations(11)
+ pData-with-concatenation(1)}
+}
+
+transfer-by-RTSE REALIZATION ::= {
+ RealizationParameter(WITH COMPONENTS {
+ realization-type (transfer-service)
+ })
+ IDENTIFIED BY
+ {joint-iso-itu-t remote-operations(4) transfer-realizations(11)
+ rTSE-transfer(2)}
+}
+
+END -- end of the OSI realizations module
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Useful-Definitions.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Useful-Definitions.asn1
new file mode 100644
index 0000000000..e526ff4600
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Remote-Operations-Useful-Definitions.asn1
@@ -0,0 +1,95 @@
+-- Module Remote-Operations-Useful-Definitions (X.880:07/1994)
+
+Remote-Operations-Useful-Definitions {joint-iso-itu-t remote-operations(4)
+ useful-definitions(7) version1(0)} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- exports everything
+IMPORTS
+ OPERATION, ERROR, OPERATION-PACKAGE, Code
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t
+ remote-operations(4) informationObjects(5) version1(0)}
+ InvokeId, ROS{}
+ FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t
+ remote-operations(4) generic-ROS-PDUs(6) version1(0)};
+
+emptyBind OPERATION ::= {ERRORS {refuse}
+ SYNCHRONOUS TRUE
+}
+
+emptyUnbind OPERATION ::= {SYNCHRONOUS TRUE
+}
+
+refuse ERROR ::= {CODE local:-1
+}
+
+no-op OPERATION ::= {ALWAYS RESPONDS FALSE
+ CODE local:-1
+}
+
+Forward{OPERATION:OperationSet} OPERATION ::=
+ {OperationSet | OperationSet.&Linked.&Linked |
+ OperationSet.&Linked.&Linked.&Linked.&Linked}
+
+Reverse{OPERATION:OperationSet} OPERATION ::= {Forward{{OperationSet.&Linked}}}
+
+ConsumerPerforms{OPERATION-PACKAGE:package} OPERATION ::=
+ {Forward{{package.&Consumer}} | Forward{{package.&Both}} |
+ Reverse{{package.&Supplier}} | Reverse{{package.&Both}}}
+
+SupplierPerforms{OPERATION-PACKAGE:package} OPERATION ::=
+ {Forward{{package.&Supplier}} | Forward{{package.&Both}} |
+ Reverse{{package.&Consumer}} | Reverse{{package.&Both}}}
+
+AllOperations{OPERATION-PACKAGE:package} OPERATION ::=
+ {ConsumerPerforms{package} | SupplierPerforms{package}}
+
+-- continued on the next page
+recode{OPERATION:operation, Code:code} OPERATION ::= {
+ ARGUMENT operation.&ArgumentType
+ OPTIONAL operation.&argumentTypeOptional
+ RESULT operation.&ResultType
+ OPTIONAL operation.&resultTypeOptional
+ RETURN RESULT operation.&returnResult
+ ERRORS {operation.&Errors}
+ LINKED {operation.&Linked}
+ SYNCHRONOUS operation.&synchronous
+ ALWAYS RESPONDS operation.&alwaysReturns
+ INVOKE PRIORITY {operation.&InvokePriority}
+ RESULT-PRIORITY {operation.&ResultPriority}
+ CODE code
+}
+
+switch{OPERATION-PACKAGE:package, OBJECT IDENTIFIER:id} OPERATION-PACKAGE ::=
+{
+ OPERATIONS {package.&Both}
+ CONSUMER INVOKES {package.&Consumer}
+ SUPPLIER INVOKES {package.&Supplier}
+ ID id
+}
+
+combine{OPERATION-PACKAGE:ConsumerConsumes, OPERATION-PACKAGE:ConsumerSupplies,
+ OPERATION-PACKAGE:base} OPERATION-PACKAGE ::= {
+ OPERATIONS {ConsumerConsumes.&Both | ConsumerSupplies.&Both}
+ CONSUMER INVOKES {ConsumerConsumes.&Consumer | ConsumerSupplies.&Supplier}
+ SUPPLIER INVOKES {ConsumerConsumes.&Supplier | ConsumerSupplies.&Consumer}
+ ID base.&id
+}
+
+ROS-SingleAS{InvokeId:InvokeIdSet, OPERATION-PACKAGE:package} ::=
+ ROS{{InvokeIdSet}, {AllOperations {package}}, {AllOperations {package}}}
+
+ROS-ConsumerAS{InvokeId:InvokeIdSet, OPERATION-PACKAGE:package} ::=
+ ROS
+ {{InvokeIdSet}, {ConsumerPerforms {package}},
+ {SupplierPerforms {package}}}
+
+ROS-SupplierAS{InvokeId:InvokeIdSet, OPERATION-PACKAGE:package} ::=
+ ROS
+ {{InvokeIdSet}, {SupplierPerforms {package}},
+ {ConsumerPerforms {package}}}
+
+END -- end of useful definitions.
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/SelectedAttributeTypes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/SelectedAttributeTypes.asn1
new file mode 100644
index 0000000000..07bba30690
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/SelectedAttributeTypes.asn1
@@ -0,0 +1,1466 @@
+-- Module SelectedAttributeTypes (X.520:08/1997)
+
+SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
+ selectedAttributeTypes(5) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+IMPORTS
+ informationFramework, upperBounds, id-at, id-mr, id-avc,
+ directoryAbstractService, id-pr, id-not, id-cat
+ FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
+ usefulDefinitions(0) 3}
+ Attribute, ATTRIBUTE, MATCHING-RULE, AttributeType, OBJECT-CLASS,
+ DistinguishedName, objectIdentifierMatch, distinguishedNameMatch,
+ CONTEXT, ContextAssertion, AttributeCombination, ContextCombination,
+ MAPPING-BASED-MATCHING, MRMapping, AttributeValueAssertion
+ FROM InformationFramework informationFramework
+ G3FacsimileNonBasicParameters
+ FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0)
+ mts-abstract-service(1) version-1999(1)}
+ ub-answerback, ub-name, ub-common-name, ub-surname, ub-serial-number,
+ ub-locality-name, ub-state-name, ub-street-address, ub-organization-name,
+ ub-organizational-unit-name, ub-title, ub-description,
+ ub-business-category, ub-postal-line, ub-postal-string, ub-postal-code,
+ ub-post-office-box, ub-physical-office-name, ub-telex-number,
+ ub-country-code, ub-teletex-terminal-id, ub-telephone-number,
+ ub-x121-address, ub-international-isdn-number, ub-destination-indicator,
+ ub-user-password, ub-match, ub-knowledge-information,
+ ub-directory-string-first-component-match, ub-localeContextSyntax,
+ ub-pseudonym
+ FROM UpperBounds upperBounds
+ FilterItem, HierarchySelections, SearchControlOptions, ServiceControlOptions
+ FROM DirectoryAbstractService directoryAbstractService;
+
+-- Directory string type
+DirectoryString{INTEGER:maxSize} ::= CHOICE {
+ teletexString TeletexString(SIZE (1..maxSize)),
+ printableString PrintableString(SIZE (1..maxSize)),
+ universalString UniversalString(SIZE (1..maxSize)),
+ bmpString BMPString(SIZE (1..maxSize)),
+ uTF8String UTF8String(SIZE (1..maxSize))
+}
+
+-- Attribute types
+knowledgeInformation ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-knowledge-information}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ ID id-at-knowledgeInformation
+}
+
+name ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-name}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-name
+}
+
+commonName ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-common-name}
+ ID id-at-commonName
+}
+
+surname ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-surname}
+ ID id-at-surname
+}
+
+givenName ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-name}
+ ID id-at-givenName
+}
+
+initials ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-name}
+ ID id-at-initials
+}
+
+generationQualifier ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-name}
+ ID id-at-generationQualifier
+}
+
+uniqueIdentifier ATTRIBUTE ::= {
+ WITH SYNTAX UniqueIdentifier
+ EQUALITY MATCHING RULE bitStringMatch
+ ID id-at-uniqueIdentifier
+}
+
+UniqueIdentifier ::= BIT STRING
+
+dnQualifier ATTRIBUTE ::= {
+ WITH SYNTAX PrintableString
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ ORDERING MATCHING RULE caseIgnoreOrderingMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-dnQualifier
+}
+
+serialNumber ATTRIBUTE ::= {
+ WITH SYNTAX PrintableString(SIZE (1..ub-serial-number))
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-serialNumber
+}
+
+pseudonym ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-pseudonym}
+ ID id-at-pseudonym
+}
+
+countryName ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX CountryName
+ SINGLE VALUE TRUE
+ ID id-at-countryName
+}
+
+CountryName ::= PrintableString(SIZE (2)) -- ISO 3166 codes only
+
+
+localityName ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-locality-name}
+ ID id-at-localityName
+}
+
+collectiveLocalityName ATTRIBUTE ::= {
+ SUBTYPE OF localityName
+ COLLECTIVE TRUE
+ ID id-at-collectiveLocalityName
+}
+
+stateOrProvinceName ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-state-name}
+ ID id-at-stateOrProvinceName
+}
+
+collectiveStateOrProvinceName ATTRIBUTE ::= {
+ SUBTYPE OF stateOrProvinceName
+ COLLECTIVE TRUE
+ ID id-at-collectiveStateOrProvinceName
+}
+
+streetAddress ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-street-address}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-streetAddress
+}
+
+collectiveStreetAddress ATTRIBUTE ::= {
+ SUBTYPE OF streetAddress
+ COLLECTIVE TRUE
+ ID id-at-collectiveStreetAddress
+}
+
+houseIdentifier ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-name}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-houseIdentifier
+}
+
+organizationName ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-organization-name}
+ ID id-at-organizationName
+}
+
+collectiveOrganizationName ATTRIBUTE ::= {
+ SUBTYPE OF organizationName
+ COLLECTIVE TRUE
+ ID id-at-collectiveOrganizationName
+}
+
+organizationalUnitName ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-organizational-unit-name}
+ ID id-at-organizationalUnitName
+}
+
+collectiveOrganizationalUnitName ATTRIBUTE ::= {
+ SUBTYPE OF organizationalUnitName
+ COLLECTIVE TRUE
+ ID id-at-collectiveOrganizationalUnitName
+}
+
+title ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-title}
+ ID id-at-title
+}
+
+description ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-description}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-description
+}
+
+searchGuide ATTRIBUTE ::= {WITH SYNTAX Guide
+ ID id-at-searchGuide
+}
+
+Guide ::= SET {
+ objectClass [0] OBJECT-CLASS.&id OPTIONAL,
+ criteria [1] Criteria
+}
+
+Criteria ::= CHOICE {
+ type [0] CriteriaItem,
+ and [1] SET OF Criteria,
+ or [2] SET OF Criteria,
+ not [3] Criteria
+}
+
+CriteriaItem ::= CHOICE {
+ equality [0] AttributeType,
+ substrings [1] AttributeType,
+ greaterOrEqual [2] AttributeType,
+ lessOrEqual [3] AttributeType,
+ approximateMatch [4] AttributeType
+}
+
+enhancedSearchGuide ATTRIBUTE ::= {
+ WITH SYNTAX EnhancedGuide
+ ID id-at-enhancedSearchGuide
+}
+
+EnhancedGuide ::= SEQUENCE {
+ objectClass [0] OBJECT-CLASS.&id,
+ criteria [1] Criteria,
+ subset
+ [2] INTEGER {baseObject(0), oneLevel(1), wholeSubtree(2)} DEFAULT oneLevel
+}
+
+businessCategory ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-business-category}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-businessCategory
+}
+
+postalAddress ATTRIBUTE ::= {
+ WITH SYNTAX PostalAddress
+ EQUALITY MATCHING RULE caseIgnoreListMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreListSubstringsMatch
+ ID id-at-postalAddress
+}
+
+PostalAddress ::=
+ SEQUENCE SIZE (1..ub-postal-line) OF DirectoryString{ub-postal-string}
+
+collectivePostalAddress ATTRIBUTE ::= {
+ SUBTYPE OF postalAddress
+ COLLECTIVE TRUE
+ ID id-at-collectivePostalAddress
+}
+
+postalCode ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-postal-code}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-postalCode
+}
+
+collectivePostalCode ATTRIBUTE ::= {
+ SUBTYPE OF postalCode
+ COLLECTIVE TRUE
+ ID id-at-collectivePostalCode
+}
+
+postOfficeBox ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-post-office-box}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-postOfficeBox
+}
+
+collectivePostOfficeBox ATTRIBUTE ::= {
+ SUBTYPE OF postOfficeBox
+ COLLECTIVE TRUE
+ ID id-at-collectivePostOfficeBox
+}
+
+physicalDeliveryOfficeName ATTRIBUTE ::= {
+ WITH SYNTAX DirectoryString {ub-physical-office-name}
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-physicalDeliveryOfficeName
+}
+
+collectivePhysicalDeliveryOfficeName ATTRIBUTE ::= {
+ SUBTYPE OF physicalDeliveryOfficeName
+ COLLECTIVE TRUE
+ ID id-at-collectivePhysicalDeliveryOfficeName
+}
+
+telephoneNumber ATTRIBUTE ::= {
+ WITH SYNTAX TelephoneNumber
+ EQUALITY MATCHING RULE telephoneNumberMatch
+ SUBSTRINGS MATCHING RULE telephoneNumberSubstringsMatch
+ ID id-at-telephoneNumber
+}
+
+TelephoneNumber ::= PrintableString(SIZE (1..ub-telephone-number))
+
+-- String complying with CCITT Rec. E.123 only
+collectiveTelephoneNumber ATTRIBUTE ::= {
+ SUBTYPE OF telephoneNumber
+ COLLECTIVE TRUE
+ ID id-at-collectiveTelephoneNumber
+}
+
+telexNumber ATTRIBUTE ::= {
+ WITH SYNTAX TelexNumber
+ ID id-at-telexNumber
+}
+
+TelexNumber ::= SEQUENCE {
+ telexNumber PrintableString(SIZE (1..ub-telex-number)),
+ countryCode PrintableString(SIZE (1..ub-country-code)),
+ answerback PrintableString(SIZE (1..ub-answerback))
+}
+
+collectiveTelexNumber ATTRIBUTE ::= {
+ SUBTYPE OF telexNumber
+ COLLECTIVE TRUE
+ ID id-at-collectiveTelexNumber
+}
+
+facsimileTelephoneNumber ATTRIBUTE ::= {
+ WITH SYNTAX FacsimileTelephoneNumber
+ EQUALITY MATCHING RULE facsimileNumberMatch
+ SUBSTRINGS MATCHING RULE facsimileNumberSubstringsMatch
+ ID id-at-facsimileTelephoneNumber
+}
+
+facsimileNumberMatch MATCHING-RULE ::= {
+ SYNTAX TelephoneNumber
+ ID id-mr-facsimileNumberMatch
+}
+
+facsimileNumberSubstringsMatch MATCHING-RULE ::= {
+ SYNTAX SubstringAssertion
+ ID id-mr-facsimileNumberSubstringsMatch
+}
+
+FacsimileTelephoneNumber ::= SEQUENCE {
+ telephoneNumber TelephoneNumber,
+ parameters G3FacsimileNonBasicParameters OPTIONAL
+}
+
+collectiveFacsimileTelephoneNumber ATTRIBUTE ::= {
+ SUBTYPE OF facsimileTelephoneNumber
+ COLLECTIVE TRUE
+ ID id-at-collectiveFacsimileTelephoneNumber
+}
+
+x121Address ATTRIBUTE ::= {
+ WITH SYNTAX X121Address
+ EQUALITY MATCHING RULE numericStringMatch
+ SUBSTRINGS MATCHING RULE numericStringSubstringsMatch
+ ID id-at-x121Address
+}
+
+X121Address ::= NumericString(SIZE (1..ub-x121-address))
+
+-- String as defined by ITU-T Rec. X.121
+internationalISDNNumber ATTRIBUTE ::= {
+ WITH SYNTAX InternationalISDNNumber
+ EQUALITY MATCHING RULE numericStringMatch
+ SUBSTRINGS MATCHING RULE numericStringSubstringsMatch
+ ID id-at-internationalISDNNumber
+}
+
+InternationalISDNNumber ::=
+ NumericString(SIZE (1..ub-international-isdn-number))
+
+-- String complying with ITU-T Rec. E.164 only
+collectiveInternationalISDNNumber ATTRIBUTE ::= {
+ SUBTYPE OF internationalISDNNumber
+ COLLECTIVE TRUE
+ ID id-at-collectiveInternationalISDNNumber
+}
+
+registeredAddress ATTRIBUTE ::= {
+ SUBTYPE OF postalAddress
+ WITH SYNTAX PostalAddress
+ ID id-at-registeredAddress
+}
+
+destinationIndicator ATTRIBUTE ::= {
+ WITH SYNTAX DestinationIndicator
+ EQUALITY MATCHING RULE caseIgnoreMatch
+ SUBSTRINGS MATCHING RULE caseIgnoreSubstringsMatch
+ ID id-at-destinationIndicator
+}
+
+DestinationIndicator ::= PrintableString(SIZE (1..ub-destination-indicator))
+
+communicationsService ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ ID id-at-communicationsService
+}
+
+communicationsNetwork ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ SINGLE VALUE TRUE
+ ID id-at-communicationsNetwork
+}
+
+-- alphabetical characters only
+preferredDeliveryMethod ATTRIBUTE ::= {
+ WITH SYNTAX PreferredDeliveryMethod
+ SINGLE VALUE TRUE
+ ID id-at-preferredDeliveryMethod
+}
+
+PreferredDeliveryMethod ::=
+ SEQUENCE OF
+ INTEGER {any-delivery-method(0), mhs-delivery(1), physical-delivery(2),
+ telex-delivery(3), teletex-delivery(4), g3-facsimile-delivery(5),
+ g4-facsimile-delivery(6), ia5-terminal-delivery(7),
+ videotex-delivery(8), telephone-delivery(9)}
+
+presentationAddress ATTRIBUTE ::= {
+ WITH SYNTAX PresentationAddress
+ EQUALITY MATCHING RULE presentationAddressMatch
+ SINGLE VALUE TRUE
+ ID id-at-presentationAddress
+}
+
+PresentationAddress ::= SEQUENCE {
+ pSelector [0] OCTET STRING OPTIONAL,
+ sSelector [1] OCTET STRING OPTIONAL,
+ tSelector [2] OCTET STRING OPTIONAL,
+ nAddresses [3] SET SIZE (1..MAX) OF OCTET STRING
+}
+
+supportedApplicationContext ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ ID id-at-supportedApplicationContext
+}
+
+protocolInformation ATTRIBUTE ::= {
+ WITH SYNTAX ProtocolInformation
+ EQUALITY MATCHING RULE protocolInformationMatch
+ ID id-at-protocolInformation
+}
+
+ProtocolInformation ::= SEQUENCE {
+ nAddress OCTET STRING,
+ profiles SET OF OBJECT IDENTIFIER
+}
+
+distinguishedName ATTRIBUTE ::= {
+ WITH SYNTAX DistinguishedName
+ EQUALITY MATCHING RULE distinguishedNameMatch
+ ID id-at-distinguishedName
+}
+
+member ATTRIBUTE ::= {SUBTYPE OF distinguishedName
+ ID id-at-member
+}
+
+uniqueMember ATTRIBUTE ::= {
+ WITH SYNTAX NameAndOptionalUID
+ EQUALITY MATCHING RULE uniqueMemberMatch
+ ID id-at-uniqueMember
+}
+
+NameAndOptionalUID ::= SEQUENCE {
+ dn DistinguishedName,
+ uid UniqueIdentifier OPTIONAL
+}
+
+owner ATTRIBUTE ::= {SUBTYPE OF distinguishedName
+ ID id-at-owner
+}
+
+roleOccupant ATTRIBUTE ::= {
+ SUBTYPE OF distinguishedName
+ ID id-at-roleOccupant
+}
+
+seeAlso ATTRIBUTE ::= {SUBTYPE OF distinguishedName
+ ID id-at-seeAlso
+}
+
+dmdName ATTRIBUTE ::= {
+ SUBTYPE OF name
+ WITH SYNTAX DirectoryString {ub-common-name}
+ ID id-at-dmdName
+}
+
+dSAProblem ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ ID id-not-dSAProblem
+}
+
+searchServiceProblem ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ SINGLE VALUE TRUE
+ ID id-not-searchServiceProblem
+}
+
+serviceType ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ SINGLE VALUE TRUE
+ ID id-not-serviceType
+}
+
+attributeTypeList ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ ID id-not-attributeTypeList
+}
+
+filterItem ATTRIBUTE ::= {
+ WITH SYNTAX FilterItem
+ ID id-not-filterItem
+}
+
+attributeCombinations ATTRIBUTE ::= {
+ WITH SYNTAX AttributeCombination
+ ID id-not-attributeCombinations
+}
+
+contextTypeList ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ ID id-not-contextTypeList
+}
+
+contextList ATTRIBUTE ::= {
+ WITH SYNTAX ContextAssertion
+ ID id-not-contextList
+}
+
+hierarchySelectList ATTRIBUTE ::= {
+ WITH SYNTAX HierarchySelections
+ SINGLE VALUE TRUE
+ ID id-not-hierarchySelectList
+}
+
+searchOptionsList ATTRIBUTE ::= {
+ WITH SYNTAX SearchControlOptions
+ SINGLE VALUE TRUE
+ ID id-not-searchOptionsList
+}
+
+serviceControlOptionsList ATTRIBUTE ::= {
+ WITH SYNTAX ServiceControlOptions
+ SINGLE VALUE TRUE
+ ID id-not-serviceControlOptionsList
+}
+
+multipleMatchingLocalities ATTRIBUTE ::= {
+ WITH SYNTAX MultipleMatchingLocalities
+ ID id-not-multipleMatchingLocalities
+}
+
+MultipleMatchingLocalities ::= SEQUENCE {
+ matchingRuleUsed MATCHING-RULE.&id OPTIONAL,
+ attributeList SEQUENCE OF AttributeValueAssertion
+}
+
+proposedRelaxation ATTRIBUTE ::= {
+ WITH SYNTAX SEQUENCE OF MRMapping
+ ID id-not-proposedRelaxation
+}
+
+appliedRelaxation ATTRIBUTE ::= {
+ WITH SYNTAX OBJECT IDENTIFIER
+ EQUALITY MATCHING RULE objectIdentifierMatch
+ ID id-not-appliedRelaxation
+}
+
+-- Matching rules
+caseIgnoreMatch MATCHING-RULE ::= {
+ SYNTAX DirectoryString {ub-match}
+ ID id-mr-caseIgnoreMatch
+}
+
+caseIgnoreOrderingMatch MATCHING-RULE ::= {
+ SYNTAX DirectoryString {ub-match}
+ ID id-mr-caseIgnoreOrderingMatch
+}
+
+caseIgnoreSubstringsMatch MATCHING-RULE ::= {
+ SYNTAX SubstringAssertion
+ ID id-mr-caseIgnoreSubstringsMatch
+}
+
+SubstringAssertion ::=
+ SEQUENCE OF
+ CHOICE {initial [0] DirectoryString{ub-match},
+ any [1] DirectoryString{ub-match},
+ final [2] DirectoryString{ub-match},
+ control Attribute
+ } -- Used to specify interpretation of the following items
+
+-- at most one initial and one final component
+caseExactMatch MATCHING-RULE ::= {
+ SYNTAX DirectoryString {ub-match}
+ ID id-mr-caseExactMatch
+}
+
+caseExactOrderingMatch MATCHING-RULE ::= {
+ SYNTAX DirectoryString {ub-match}
+ ID id-mr-caseExactOrderingMatch
+}
+
+caseExactSubstringsMatch MATCHING-RULE ::= {
+ SYNTAX SubstringAssertion -- only the PrintableString choice
+ ID id-mr-caseExactSubstringsMatch
+}
+
+numericStringMatch MATCHING-RULE ::= {
+ SYNTAX NumericString
+ ID id-mr-numericStringMatch
+}
+
+numericStringOrderingMatch MATCHING-RULE ::= {
+ SYNTAX NumericString
+ ID id-mr-numericStringOrderingMatch
+}
+
+numericStringSubstringsMatch MATCHING-RULE ::= {
+ SYNTAX SubstringAssertion
+ ID id-mr-numericStringSubstringsMatch
+}
+
+caseIgnoreListMatch MATCHING-RULE ::= {
+ SYNTAX CaseIgnoreListMatch
+ ID id-mr-caseIgnoreListMatch
+}
+
+CaseIgnoreListMatch ::= SEQUENCE OF DirectoryString{ub-match}
+
+caseIgnoreListSubstringsMatch MATCHING-RULE ::= {
+ SYNTAX SubstringAssertion
+ ID id-mr-caseIgnoreListSubstringsMatch
+}
+
+storedPrefixMatch MATCHING-RULE ::= {
+ SYNTAX DirectoryString {ub-match}
+ ID id-mr-storedPrefixMatch
+}
+
+booleanMatch MATCHING-RULE ::= {SYNTAX BOOLEAN
+ ID id-mr-booleanMatch
+}
+
+integerMatch MATCHING-RULE ::= {SYNTAX INTEGER
+ ID id-mr-integerMatch
+}
+
+integerOrderingMatch MATCHING-RULE ::= {
+ SYNTAX INTEGER
+ ID id-mr-integerOrderingMatch
+}
+
+bitStringMatch MATCHING-RULE ::= {
+ SYNTAX BIT STRING
+ ID id-mr-bitStringMatch
+}
+
+octetStringMatch MATCHING-RULE ::= {
+ SYNTAX OCTET STRING
+ ID id-mr-octetStringMatch
+}
+
+octetStringOrderingMatch MATCHING-RULE ::= {
+ SYNTAX OCTET STRING
+ ID id-mr-octetStringOrderingMatch
+}
+
+octetStringSubstringsMatch MATCHING-RULE ::= {
+ SYNTAX OctetSubstringAssertion
+ ID id-mr-octetStringSubstringsMatch
+}
+
+OctetSubstringAssertion ::=
+ SEQUENCE OF
+ CHOICE {initial [0] OCTET STRING,
+ any [1] OCTET STRING,
+ final [2] OCTET STRING}
+
+-- at most one initial and one final component
+telephoneNumberMatch MATCHING-RULE ::= {
+ SYNTAX TelephoneNumber
+ ID id-mr-telephoneNumberMatch
+}
+
+telephoneNumberSubstringsMatch MATCHING-RULE ::= {
+ SYNTAX SubstringAssertion
+ ID id-mr-telephoneNumberSubstringsMatch
+}
+
+presentationAddressMatch MATCHING-RULE ::= {
+ SYNTAX PresentationAddress
+ ID id-mr-presentationAddressMatch
+}
+
+uniqueMemberMatch MATCHING-RULE ::= {
+ SYNTAX NameAndOptionalUID
+ ID id-mr-uniqueMemberMatch
+}
+
+protocolInformationMatch MATCHING-RULE ::= {
+ SYNTAX OCTET STRING
+ ID id-mr-protocolInformationMatch
+}
+
+uTCTimeMatch MATCHING-RULE ::= {SYNTAX UTCTime
+ ID id-mr-uTCTimeMatch
+}
+
+uTCTimeOrderingMatch MATCHING-RULE ::= {
+ SYNTAX UTCTime
+ ID id-mr-uTCTimeOrderingMatch
+}
+
+generalizedTimeMatch MATCHING-RULE ::= {
+ SYNTAX GeneralizedTime
+ -- as per 41.3 b) or c) of ITU-T Rec. X.680 | ISO/IEC 8824-1
+ ID id-mr-generalizedTimeMatch
+}
+
+generalizedTimeOrderingMatch MATCHING-RULE ::= {
+ SYNTAX GeneralizedTime
+ -- as per 41.3 b) or c) of ITU-T Rec. X.680 | ISO/IEC 8824-1
+ ID id-mr-generalizedTimeOrderingMatch
+}
+
+integerFirstComponentMatch MATCHING-RULE ::= {
+ SYNTAX INTEGER
+ ID id-mr-integerFirstComponentMatch
+}
+
+objectIdentifierFirstComponentMatch MATCHING-RULE ::= {
+ SYNTAX OBJECT IDENTIFIER
+ ID id-mr-objectIdentifierFirstComponentMatch
+}
+
+directoryStringFirstComponentMatch MATCHING-RULE ::= {
+ SYNTAX DirectoryString {ub-directory-string-first-component-match}
+ ID id-mr-directoryStringFirstComponentMatch
+}
+
+wordMatch MATCHING-RULE ::= {
+ SYNTAX DirectoryString {ub-match}
+ ID id-mr-wordMatch
+}
+
+keywordMatch MATCHING-RULE ::= {
+ SYNTAX DirectoryString {ub-match}
+ ID id-mr-keywordMatch
+}
+
+systemProposedMatch MATCHING-RULE ::= {ID id-mr-systemProposedMatch
+}
+
+generalWordMatch MATCHING-RULE ::= {
+ SYNTAX SubstringAssertion
+ ID id-mr-generalWordMatch
+}
+
+sequenceMatchType ATTRIBUTE ::= {
+ WITH SYNTAX
+ ENUMERATED {sequenceExact(0), sequenceDeletion(1),
+ sequenceRestrictedDeletion(2), sequencePermutation(3),
+ sequencePermutationAndDeletion(4), sequenceProviderDefined(5)}
+ SINGLE VALUE TRUE
+ ID id-cat-sequenceMatchType
+} -- defaulting to sequenceExact,
+
+wordMatchTypes ATTRIBUTE ::= {
+ WITH SYNTAX
+ ENUMERATED {wordExact(0), wordTruncated(1), wordPhonetic(2),
+ wordProviderDefined(3)}
+ SINGLE VALUE TRUE
+ ID id-cat-wordMatchType
+} -- defaulting to wordExact
+
+characterMatchTypes ATTRIBUTE ::= {
+ WITH SYNTAX
+ ENUMERATED {characterExact(0), characterCaseIgnore(1), characterMapped(2)}
+ SINGLE VALUE TRUE
+ ID id-cat-characterMatchTypes
+}
+
+selectedContexts ATTRIBUTE ::= {
+ WITH SYNTAX ContextAssertion
+ ID id-cat-selectedContexts
+}
+
+approximateStringMatch MATCHING-RULE ::= {ID id-mr-approximateStringMatch
+}
+
+ignoreIfAbsentMatch MATCHING-RULE ::= {ID id-mr-ignoreIfAbsentMatch
+}
+
+nullMatch MATCHING-RULE ::= {ID id-mr-nullMatch
+}
+
+ZONAL-MATCHING ::=
+ MAPPING-BASED-MATCHING{ZonalSelect, TRUE, ZonalResult, zonalMatch.&id}
+
+ZonalSelect ::= SEQUENCE OF AttributeType
+
+ZonalResult ::= ENUMERATED {
+ cannot-select-mapping(0), zero-mappings(2), multiple-mappings(3)}
+
+zonalMatch MATCHING-RULE ::= {
+ UNIQUE-MATCH-INDICATOR multipleMatchingLocalities.&id
+ ID id-mr-zonalMatch
+}
+
+-- Contexts
+languageContext CONTEXT ::= {
+ WITH SYNTAX LanguageContextSyntax
+ ID id-avc-language
+}
+
+LanguageContextSyntax ::= PrintableString(SIZE (2..3)) -- ISO 639-2 codes only
+
+
+temporalContext CONTEXT ::= {
+ WITH SYNTAX TimeSpecification
+ ASSERTED AS TimeAssertion
+ ID id-avc-temporal
+}
+
+TimeSpecification ::= SEQUENCE {
+ time
+ CHOICE {absolute
+ SEQUENCE {startTime [0] GeneralizedTime OPTIONAL,
+ endTime [1] GeneralizedTime OPTIONAL},
+ periodic SET OF Period},
+ notThisTime BOOLEAN DEFAULT FALSE,
+ timeZone TimeZone OPTIONAL
+}
+
+Period ::= SEQUENCE {
+ timesOfDay [0] SET SIZE (1..MAX) OF DayTimeBand OPTIONAL,
+ days
+ [1] CHOICE {intDay SET OF INTEGER,
+ bitDay
+ BIT STRING {sunday(0), monday(1), tuesday(2), wednesday(3),
+ thursday(4), friday(5), saturday(6)},
+ dayOf XDayOf} OPTIONAL,
+ weeks
+ [2] CHOICE {allWeeks NULL,
+ intWeek SET OF INTEGER,
+ bitWeek
+ BIT STRING {week1(0), week2(1), week3(2), week4(3), week5(4)}
+ } OPTIONAL,
+ months
+ [3] CHOICE {allMonths NULL,
+ intMonth SET OF INTEGER,
+ bitMonth
+ BIT STRING {january(0), february(1), march(2), april(3),
+ may(4), june(5), july(6), august(7),
+ september(8), october(9), november(10),
+ december(11)}} OPTIONAL,
+ years [4] SET OF INTEGER(1000..MAX) OPTIONAL
+}
+
+XDayOf ::= CHOICE {
+ first [1] NamedDay,
+ second [2] NamedDay,
+ third [3] NamedDay,
+ fourth [4] NamedDay,
+ fifth [5] NamedDay
+}
+
+NamedDay ::= CHOICE {
+ intNamedDays
+ ENUMERATED {sunday(1), monday(2), tuesday(3), wednesday(4), thursday(5),
+ friday(6), saturday(7)},
+ bitNamedDays
+ BIT STRING {sunday(0), monday(1), tuesday(2), wednesday(3), thursday(4),
+ friday(5), saturday(6)}
+}
+
+DayTimeBand ::= SEQUENCE {
+ startDayTime [0] DayTime DEFAULT {hour 0},
+ endDayTime [1] DayTime DEFAULT {hour 23, minute 59, second 59}
+}
+
+DayTime ::= SEQUENCE {
+ hour [0] INTEGER(0..23),
+ minute [1] INTEGER(0..59) DEFAULT 0,
+ second [2] INTEGER(0..59) DEFAULT 0
+}
+
+TimeZone ::= INTEGER(-12..12)
+
+TimeAssertion ::= CHOICE {
+ now NULL,
+ at GeneralizedTime,
+ between
+ SEQUENCE {startTime [0] GeneralizedTime,
+ endTime [1] GeneralizedTime OPTIONAL,
+ entirely BOOLEAN DEFAULT FALSE}
+}
+
+localeContext CONTEXT ::= {
+ WITH SYNTAX LocaleContextSyntax
+ ID id-avc-locale
+}
+
+LocaleContextSyntax ::= CHOICE {
+ localeID1 OBJECT IDENTIFIER,
+ localeID2 DirectoryString{ub-localeContextSyntax}
+}
+
+-- Object identifier assignments -
+-- object identifiers assigned in other modules are shown in comments
+-- Attributes
+-- id-at-objectClass OBJECT IDENTIFIER ::= {id-at 0}
+-- id-at-aliasedEntryName OBJECT IDENTIFIER ::= {id-at 1}
+id-at-encryptedAliasedEntryName OBJECT IDENTIFIER ::=
+ {id-at 1 2}
+
+id-at-knowledgeInformation OBJECT IDENTIFIER ::= {id-at 2}
+
+id-at-commonName OBJECT IDENTIFIER ::= {id-at 3}
+
+id-at-encryptedCommonName OBJECT IDENTIFIER ::= {id-at 3 2}
+
+id-at-surname OBJECT IDENTIFIER ::= {id-at 4}
+
+id-at-encryptedSurname OBJECT IDENTIFIER ::= {id-at 4 2}
+
+id-at-serialNumber OBJECT IDENTIFIER ::= {id-at 5}
+
+id-at-encryptedSerialNumber OBJECT IDENTIFIER ::= {id-at 5 2}
+
+id-at-countryName OBJECT IDENTIFIER ::= {id-at 6}
+
+id-at-encryptedCountryName OBJECT IDENTIFIER ::= {id-at 6 2}
+
+id-at-localityName OBJECT IDENTIFIER ::= {id-at 7}
+
+id-at-encryptedLocalityName OBJECT IDENTIFIER ::= {id-at 7 2}
+
+id-at-collectiveLocalityName OBJECT IDENTIFIER ::= {id-at 7 1}
+
+id-at-encryptedCollectiveLocalityName OBJECT IDENTIFIER ::= {id-at 7 1 2}
+
+id-at-stateOrProvinceName OBJECT IDENTIFIER ::= {id-at 8}
+
+id-at-encryptedStateOrProvinceName OBJECT IDENTIFIER ::= {id-at 8 2}
+
+id-at-collectiveStateOrProvinceName OBJECT IDENTIFIER ::= {id-at 8 1}
+
+id-at-encryptedCollectiveStateOrProvinceName OBJECT IDENTIFIER ::=
+ {id-at 8 1 2}
+
+id-at-streetAddress OBJECT IDENTIFIER ::= {id-at 9}
+
+id-at-encryptedStreetAddress OBJECT IDENTIFIER ::= {id-at 9 2}
+
+id-at-collectiveStreetAddress OBJECT IDENTIFIER ::= {id-at 9 1}
+
+id-at-encryptedCollectiveStreetAddress OBJECT IDENTIFIER ::= {id-at 9 1 2}
+
+id-at-organizationName OBJECT IDENTIFIER ::= {id-at 10}
+
+id-at-encryptedOrganizationName OBJECT IDENTIFIER ::= {id-at 10 2}
+
+id-at-collectiveOrganizationName OBJECT IDENTIFIER ::= {id-at 10 1}
+
+id-at-encryptedCollectiveOrganizationName OBJECT IDENTIFIER ::= {id-at 10 1 2}
+
+id-at-organizationalUnitName OBJECT IDENTIFIER ::= {id-at 11}
+
+id-at-encryptedOrganizationalUnitName OBJECT IDENTIFIER ::= {id-at 11 2}
+
+id-at-collectiveOrganizationalUnitName OBJECT IDENTIFIER ::= {id-at 11 1}
+
+id-at-encryptedCollectiveOrganizationalUnitName OBJECT IDENTIFIER ::=
+ {id-at 11 1 2}
+
+id-at-title OBJECT IDENTIFIER ::= {id-at 12}
+
+id-at-encryptedTitle OBJECT IDENTIFIER ::= {id-at 12 2}
+
+id-at-description OBJECT IDENTIFIER ::= {id-at 13}
+
+id-at-encryptedDescription OBJECT IDENTIFIER ::= {id-at 13 2}
+
+id-at-searchGuide OBJECT IDENTIFIER ::= {id-at 14}
+
+id-at-encryptedSearchGuide OBJECT IDENTIFIER ::= {id-at 14 2}
+
+id-at-businessCategory OBJECT IDENTIFIER ::= {id-at 15}
+
+id-at-encryptedBusinessCategory OBJECT IDENTIFIER ::= {id-at 15 2}
+
+id-at-postalAddress OBJECT IDENTIFIER ::= {id-at 16}
+
+id-at-encryptedPostalAddress OBJECT IDENTIFIER ::= {id-at 16 2}
+
+id-at-collectivePostalAddress OBJECT IDENTIFIER ::= {id-at 16 1}
+
+id-at-encryptedCollectivePostalAddress OBJECT IDENTIFIER ::= {id-at 16 1 2}
+
+id-at-postalCode OBJECT IDENTIFIER ::= {id-at 17}
+
+id-at-encryptedPostalCode OBJECT IDENTIFIER ::= {id-at 17 2}
+
+id-at-collectivePostalCode OBJECT IDENTIFIER ::= {id-at 17 1}
+
+id-at-encryptedCollectivePostalCode OBJECT IDENTIFIER ::= {id-at 17 1 2}
+
+id-at-postOfficeBox OBJECT IDENTIFIER ::= {id-at 18}
+
+id-at-encryptedPostOfficeBox OBJECT IDENTIFIER ::= {id-at 18 2}
+
+id-at-collectivePostOfficeBox OBJECT IDENTIFIER ::= {id-at 18 1}
+
+id-at-encryptedCollectivePostOfficeBox OBJECT IDENTIFIER ::= {id-at 18 1 2}
+
+id-at-physicalDeliveryOfficeName OBJECT IDENTIFIER ::= {id-at 19}
+
+id-at-encryptedPhysicalDeliveryOfficeName OBJECT IDENTIFIER ::= {id-at 19 2}
+
+id-at-collectivePhysicalDeliveryOfficeName OBJECT IDENTIFIER ::= {id-at 19 1}
+
+id-at-encryptedCollectivePhysicalDeliveryOfficeName OBJECT IDENTIFIER ::=
+ {id-at 19 1 2}
+
+id-at-telephoneNumber OBJECT IDENTIFIER ::= {id-at 20}
+
+id-at-encryptedTelephoneNumber OBJECT IDENTIFIER ::= {id-at 20 2}
+
+id-at-collectiveTelephoneNumber OBJECT IDENTIFIER ::= {id-at 20 1}
+
+id-at-encryptedCollectiveTelephoneNumber OBJECT IDENTIFIER ::= {id-at 20 1 2}
+
+id-at-telexNumber OBJECT IDENTIFIER ::= {id-at 21}
+
+id-at-encryptedTelexNumber OBJECT IDENTIFIER ::= {id-at 21 2}
+
+id-at-collectiveTelexNumber OBJECT IDENTIFIER ::= {id-at 21 1}
+
+id-at-encryptedCollectiveTelexNumber OBJECT IDENTIFIER ::= {id-at 21 1 2}
+
+-- id-at-teletexTerminalIdentifier OBJECT IDENTIFIER ::= {id-at 22}
+-- id-at-encryptedTeletexTerminalIdentifier OBJECT IDENTIFIER ::= {id-at 22 2}
+-- id-at-collectiveTeletexTerminalIdentifier OBJECT IDENTIFIER ::= {id-at 22 1}
+-- id-at-encryptedCollectiveTeletexTerminalIdentifier
+-- OBJECT IDENTIFIER ::= {id-at 22 1 2}
+id-at-facsimileTelephoneNumber OBJECT IDENTIFIER ::=
+ {id-at 23}
+
+id-at-encryptedFacsimileTelephoneNumber OBJECT IDENTIFIER ::= {id-at 23 2}
+
+id-at-collectiveFacsimileTelephoneNumber OBJECT IDENTIFIER ::= {id-at 23 1}
+
+id-at-encryptedCollectiveFacsimileTelephoneNumber OBJECT IDENTIFIER ::=
+ {id-at 23 1 2}
+
+id-at-x121Address OBJECT IDENTIFIER ::= {id-at 24}
+
+id-at-encryptedX121Address OBJECT IDENTIFIER ::= {id-at 24 2}
+
+id-at-internationalISDNNumber OBJECT IDENTIFIER ::= {id-at 25}
+
+id-at-encryptedInternationalISDNNumber OBJECT IDENTIFIER ::= {id-at 25 2}
+
+id-at-collectiveInternationalISDNNumber OBJECT IDENTIFIER ::= {id-at 25 1}
+
+id-at-encryptedCollectiveInternationalISDNNumber OBJECT IDENTIFIER ::=
+ {id-at 25 1 2}
+
+id-at-registeredAddress OBJECT IDENTIFIER ::= {id-at 26}
+
+id-at-encryptedRegisteredAddress OBJECT IDENTIFIER ::= {id-at 26 2}
+
+id-at-destinationIndicator OBJECT IDENTIFIER ::= {id-at 27}
+
+id-at-encryptedDestinationIndicator OBJECT IDENTIFIER ::= {id-at 27 2}
+
+id-at-preferredDeliveryMethod OBJECT IDENTIFIER ::= {id-at 28}
+
+id-at-encryptedPreferredDeliveryMethod OBJECT IDENTIFIER ::= {id-at 28 2}
+
+id-at-presentationAddress OBJECT IDENTIFIER ::= {id-at 29}
+
+id-at-encryptedPresentationAddress OBJECT IDENTIFIER ::= {id-at 29 2}
+
+id-at-supportedApplicationContext OBJECT IDENTIFIER ::= {id-at 30}
+
+id-at-encryptedSupportedApplicationContext OBJECT IDENTIFIER ::= {id-at 30 2}
+
+id-at-member OBJECT IDENTIFIER ::= {id-at 31}
+
+id-at-encryptedMember OBJECT IDENTIFIER ::= {id-at 31 2}
+
+id-at-owner OBJECT IDENTIFIER ::= {id-at 32}
+
+id-at-encryptedOwner OBJECT IDENTIFIER ::= {id-at 32 2}
+
+id-at-roleOccupant OBJECT IDENTIFIER ::= {id-at 33}
+
+id-at-encryptedRoleOccupant OBJECT IDENTIFIER ::= {id-at 33 2}
+
+id-at-seeAlso OBJECT IDENTIFIER ::= {id-at 34}
+
+id-at-encryptedSeeAlso OBJECT IDENTIFIER ::= {id-at 34 2}
+
+-- id-at-userPassword OBJECT IDENTIFIER ::= {id-at 35}
+id-at-encryptedUserPassword OBJECT IDENTIFIER ::=
+ {id-at 35 2}
+
+-- id-at-userCertificate OBJECT IDENTIFIER ::= {id-at 36}
+id-at-encryptedUserCertificate OBJECT IDENTIFIER ::=
+ {id-at 36 2}
+
+-- id-at-cACertificate OBJECT IDENTIFIER ::= {id-at 37}
+id-at-encryptedCACertificate OBJECT IDENTIFIER ::=
+ {id-at 37 2}
+
+-- id-at-authorityRevocationList OBJECT IDENTIFIER ::= {id-at 38}
+id-at-encryptedAuthorityRevocationList OBJECT IDENTIFIER ::=
+ {id-at 38 2}
+
+-- id-at-certificateRevocationList OBJECT IDENTIFIER ::= {id-at 39}
+id-at-encryptedCertificateRevocationList OBJECT IDENTIFIER ::=
+ {id-at 39 2}
+
+-- id-at-crossCertificatePair OBJECT IDENTIFIER ::= {id-at 40}
+id-at-encryptedCrossCertificatePair OBJECT IDENTIFIER ::=
+ {id-at 40 2}
+
+id-at-name OBJECT IDENTIFIER ::= {id-at 41}
+
+id-at-givenName OBJECT IDENTIFIER ::= {id-at 42}
+
+id-at-encryptedGivenName OBJECT IDENTIFIER ::= {id-at 42 2}
+
+id-at-initials OBJECT IDENTIFIER ::= {id-at 43}
+
+id-at-encryptedInitials OBJECT IDENTIFIER ::= {id-at 43 2}
+
+id-at-generationQualifier OBJECT IDENTIFIER ::= {id-at 44}
+
+id-at-encryptedGenerationQualifier OBJECT IDENTIFIER ::= {id-at 44 2}
+
+id-at-uniqueIdentifier OBJECT IDENTIFIER ::= {id-at 45}
+
+id-at-encryptedUniqueIdentifier OBJECT IDENTIFIER ::= {id-at 45 2}
+
+id-at-dnQualifier OBJECT IDENTIFIER ::= {id-at 46}
+
+id-at-encryptedDnQualifier OBJECT IDENTIFIER ::= {id-at 46 2}
+
+id-at-enhancedSearchGuide OBJECT IDENTIFIER ::= {id-at 47}
+
+id-at-encryptedEnhancedSearchGuide OBJECT IDENTIFIER ::= {id-at 47 2}
+
+id-at-protocolInformation OBJECT IDENTIFIER ::= {id-at 48}
+
+id-at-encryptedProtocolInformation OBJECT IDENTIFIER ::= {id-at 48 2}
+
+id-at-distinguishedName OBJECT IDENTIFIER ::= {id-at 49}
+
+id-at-encryptedDistinguishedName OBJECT IDENTIFIER ::= {id-at 49 2}
+
+id-at-uniqueMember OBJECT IDENTIFIER ::= {id-at 50}
+
+id-at-encryptedUniqueMember OBJECT IDENTIFIER ::= {id-at 50 2}
+
+id-at-houseIdentifier OBJECT IDENTIFIER ::= {id-at 51}
+
+id-at-encryptedHouseIdentifier OBJECT IDENTIFIER ::= {id-at 51 2}
+
+--id-at-supportedAlgorithms OBJECT IDENTIFIER ::= {id-at 52}
+id-at-encryptedSupportedAlgorithms OBJECT IDENTIFIER ::=
+ {id-at 52 2}
+
+--id-at-deltaRevocationList OBJECT IDENTIFIER ::= {id-at 53}
+id-at-encryptedDeltaRevocationList OBJECT IDENTIFIER ::=
+ {id-at 53 2}
+
+id-at-dmdName OBJECT IDENTIFIER ::= {id-at 54}
+
+id-at-encryptedDmdName OBJECT IDENTIFIER ::= {id-at 54 2}
+
+-- id-at-clearance OBJECT IDENTIFIER ::= {id-at 55}
+id-at-encryptedClearance OBJECT IDENTIFIER ::=
+ {id-at 55 2}
+
+-- id-at-defaultDirQop OBJECT IDENTIFIER ::= {id-at 56}
+id-at-encryptedDefaultDirQop OBJECT IDENTIFIER ::=
+ {id-at 56 2}
+
+-- id-at-attributeIntegrityInfo OBJECT IDENTIFIER ::= {id-at 57}
+id-at-encryptedAttributeIntegrityInfo OBJECT IDENTIFIER ::=
+ {id-at 57 2}
+
+--id-at-attributeCertificate OBJECT IDENTIFIER ::= {id-at 58}
+id-at-encryptedAttributeCertificate OBJECT IDENTIFIER ::=
+ {id-at 58 2}
+
+-- id-at-attributeCertificateRevocationList OBJECT IDENTIFIER ::= {id-at 59}
+id-at-encryptedAttributeCertificateRevocationList OBJECT IDENTIFIER ::=
+ {id-at 59 2}
+
+-- id-at-confKeyInfo OBJECT IDENTIFIER ::= {id-at 60}
+id-at-encryptedConfKeyInfo OBJECT IDENTIFIER ::=
+ {id-at 60 2}
+
+-- id-at-family-information OBJECT IDENTIFIER {id-at 64}
+id-at-pseudonym OBJECT IDENTIFIER ::=
+ {id-at 65}
+
+id-at-communicationsService OBJECT IDENTIFIER ::= {id-at 66}
+
+id-at-communicationsNetwork OBJECT IDENTIFIER ::= {id-at 67}
+
+-- Matching rules
+-- id-mr-objectIdentifierMatch OBJECT IDENTIFIER ::= {id-mr 0}
+-- id-mr-distinguishedNameMatch OBJECT IDENTIFIER ::= {id-mr 1}
+id-mr-caseIgnoreMatch OBJECT IDENTIFIER ::=
+ {id-mr 2}
+
+id-mr-caseIgnoreOrderingMatch OBJECT IDENTIFIER ::= {id-mr 3}
+
+id-mr-caseIgnoreSubstringsMatch OBJECT IDENTIFIER ::= {id-mr 4}
+
+id-mr-caseExactMatch OBJECT IDENTIFIER ::= {id-mr 5}
+
+id-mr-caseExactOrderingMatch OBJECT IDENTIFIER ::= {id-mr 6}
+
+id-mr-caseExactSubstringsMatch OBJECT IDENTIFIER ::= {id-mr 7}
+
+id-mr-numericStringMatch OBJECT IDENTIFIER ::= {id-mr 8}
+
+id-mr-numericStringOrderingMatch OBJECT IDENTIFIER ::= {id-mr 9}
+
+id-mr-numericStringSubstringsMatch OBJECT IDENTIFIER ::= {id-mr 10}
+
+id-mr-caseIgnoreListMatch OBJECT IDENTIFIER ::= {id-mr 11}
+
+id-mr-caseIgnoreListSubstringsMatch OBJECT IDENTIFIER ::= {id-mr 12}
+
+id-mr-booleanMatch OBJECT IDENTIFIER ::= {id-mr 13}
+
+id-mr-integerMatch OBJECT IDENTIFIER ::= {id-mr 14}
+
+id-mr-integerOrderingMatch OBJECT IDENTIFIER ::= {id-mr 15}
+
+id-mr-bitStringMatch OBJECT IDENTIFIER ::= {id-mr 16}
+
+id-mr-octetStringMatch OBJECT IDENTIFIER ::= {id-mr 17}
+
+id-mr-octetStringOrderingMatch OBJECT IDENTIFIER ::= {id-mr 18}
+
+id-mr-octetStringSubstringsMatch OBJECT IDENTIFIER ::= {id-mr 19}
+
+id-mr-telephoneNumberMatch OBJECT IDENTIFIER ::= {id-mr 20}
+
+id-mr-telephoneNumberSubstringsMatch OBJECT IDENTIFIER ::= {id-mr 21}
+
+id-mr-presentationAddressMatch OBJECT IDENTIFIER ::= {id-mr 22}
+
+id-mr-uniqueMemberMatch OBJECT IDENTIFIER ::= {id-mr 23}
+
+id-mr-protocolInformationMatch OBJECT IDENTIFIER ::= {id-mr 24}
+
+id-mr-uTCTimeMatch OBJECT IDENTIFIER ::= {id-mr 25}
+
+id-mr-uTCTimeOrderingMatch OBJECT IDENTIFIER ::= {id-mr 26}
+
+id-mr-generalizedTimeMatch OBJECT IDENTIFIER ::= {id-mr 27}
+
+id-mr-generalizedTimeOrderingMatch OBJECT IDENTIFIER ::= {id-mr 28}
+
+id-mr-integerFirstComponentMatch OBJECT IDENTIFIER ::= {id-mr 29}
+
+id-mr-objectIdentifierFirstComponentMatch OBJECT IDENTIFIER ::= {id-mr 30}
+
+id-mr-directoryStringFirstComponentMatch OBJECT IDENTIFIER ::= {id-mr 31}
+
+id-mr-wordMatch OBJECT IDENTIFIER ::= {id-mr 32}
+
+id-mr-keywordMatch OBJECT IDENTIFIER ::= {id-mr 33}
+
+-- id-mr-certificateExactMatch OBJECT IDENTIFIER ::= {id-mr 34}
+-- id-mr-certificateMatch OBJECT IDENTIFIER ::= {id-mr 35}
+-- id-mr-certificatePairExactMatch OBJECT IDENTIFIER ::= {id-mr 36}
+-- id-mr-certificatePairMatch OBJECT IDENTIFIER ::= {id-mr 37}
+-- id-mr-certificateListExactMatch OBJECT IDENTIFIER ::= {id-mr 38}
+-- id-mr-certificateListMatch OBJECT IDENTIFIER ::= {id-mr 39}
+-- id-mr-algorithmIdentifierMatch OBJECT IDENTIFIER ::= {id-mr 40}
+id-mr-storedPrefixMatch OBJECT IDENTIFIER ::=
+ {id-mr 41}
+
+-- id-mr-attributeCertificateMatch OBJECT IDENTIFIER ::= {id-mr 42}
+-- id-mr-readerAndKeyIDMatch OBJECT IDENTIFIER ::= {id-mr 43}
+--id-mr-attributeIntegrityMatch OBJECT IDENTIFIER ::= {id-mr 44}
+id-mr-systemProposedMatch OBJECT IDENTIFIER ::=
+ {id-mr 47}
+
+id-mr-generalWordMatch OBJECT IDENTIFIER ::= {id-mr 48}
+
+id-mr-approximateStringMatch OBJECT IDENTIFIER ::= {id-mr 49}
+
+id-mr-ignoreIfAbsentMatch OBJECT IDENTIFIER ::= {id-mr 50}
+
+id-mr-nullMatch OBJECT IDENTIFIER ::= {id-mr 51}
+
+id-mr-zonalMatch OBJECT IDENTIFIER ::= {id-mr 52}
+
+id-mr-facsimileNumberMatch OBJECT IDENTIFIER ::= {id-mr 63}
+
+id-mr-facsimileNumberSubstringsMatch OBJECT IDENTIFIER ::= {id-mr 64}
+
+-- contexts
+id-avc-language OBJECT IDENTIFIER ::= {id-avc 0}
+
+id-avc-temporal OBJECT IDENTIFIER ::= {id-avc 1}
+
+id-avc-locale OBJECT IDENTIFIER ::= {id-avc 2}
+
+--id-avc-attributeValueSecurityLabelContext OBJECT IDENTIFIER ::= {id-avc 3}
+--id-avc-attributeValueIntegrityInfoContext OBJECT IDENTIFIER ::= {id-avc 4}
+-- Problem definitions
+id-pr-targetDsaUnavailable OBJECT IDENTIFIER ::=
+ {id-pr 1}
+
+id-pr-dataSourceUnavailable OBJECT IDENTIFIER ::= {id-pr 2}
+
+id-pr-unidentifiedOperation OBJECT IDENTIFIER ::= {id-pr 3}
+
+id-pr-unavailableOperation OBJECT IDENTIFIER ::= {id-pr 4}
+
+id-pr-searchAttributeViolation OBJECT IDENTIFIER ::= {id-pr 5}
+
+id-pr-searchAttributeCombinationViolation OBJECT IDENTIFIER ::= {id-pr 6}
+
+id-pr-searchValueNotAllowed OBJECT IDENTIFIER ::= {id-pr 7}
+
+id-pr-missingSearchAttribute OBJECT IDENTIFIER ::= {id-pr 8}
+
+id-pr-searchValueViolation OBJECT IDENTIFIER ::= {id-pr 9}
+
+id-pr-attributeNegationViolation OBJECT IDENTIFIER ::= {id-pr 10}
+
+id-pr-searchValueRequired OBJECT IDENTIFIER ::= {id-pr 11}
+
+id-pr-invalidSearchValue OBJECT IDENTIFIER ::= {id-pr 12}
+
+id-pr-searchContextViolation OBJECT IDENTIFIER ::= {id-pr 13}
+
+id-pr-searchContextCombinationViolation OBJECT IDENTIFIER ::= {id-pr 14}
+
+id-pr-missingSearchContext OBJECT IDENTIFIER ::= {id-pr 15}
+
+id-pr-searchContextValueViolation OBJECT IDENTIFIER ::= {id-pr 16}
+
+id-pr-searchContextValueRequired OBJECT IDENTIFIER ::= {id-pr 17}
+
+id-pr-invalidContextSearchValue OBJECT IDENTIFIER ::= {id-pr 18}
+
+id-pr-unsupportedMatchingRule OBJECT IDENTIFIER ::= {id-pr 19}
+
+id-pr-attributeMatchingViolation OBJECT IDENTIFIER ::= {id-pr 20}
+
+id-pr-unsupportedMatchingUse OBJECT IDENTIFIER ::= {id-pr 21}
+
+id-pr-matchingUseViolation OBJECT IDENTIFIER ::= {id-pr 22}
+
+id-pr-hierarchySelectForbidden OBJECT IDENTIFIER ::= {id-pr 23}
+
+id-pr-invalidHierarchySelect OBJECT IDENTIFIER ::= {id-pr 24}
+
+id-pr-unavailableHierarchySelect OBJECT IDENTIFIER ::= {id-pr 25}
+
+id-pr-invalidSearchOptions OBJECT IDENTIFIER ::= {id-pr 26}
+
+id-pr-missingSearchOptions OBJECT IDENTIFIER ::= {id-pr 27}
+
+id-pr-invalidServiceControlOptions OBJECT IDENTIFIER ::= {id-pr 28}
+
+id-pr-missingServiceControlOptions OBJECT IDENTIFIER ::= {id-pr 29}
+
+id-pr-searchSubsetViolation OBJECT IDENTIFIER ::= {id-pr 30}
+
+id-pr-unmatchedKeyAttributes OBJECT IDENTIFIER ::= {id-pr 31}
+
+id-pr-ambiguousKeyAttributes OBJECT IDENTIFIER ::= {id-pr 32}
+
+-- Notification attributes
+id-not-dSAProblem OBJECT IDENTIFIER ::= {id-not 0}
+
+id-not-searchServiceProblem OBJECT IDENTIFIER ::= {id-not 1}
+
+id-not-serviceType OBJECT IDENTIFIER ::= {id-not 2}
+
+id-not-attributeTypeList OBJECT IDENTIFIER ::= {id-not 3}
+
+id-not-matchingRuleList OBJECT IDENTIFIER ::= {id-not 4}
+
+id-not-filterItem OBJECT IDENTIFIER ::= {id-not 5}
+
+id-not-attributeCombinations OBJECT IDENTIFIER ::= {id-not 6}
+
+id-not-contextTypeList OBJECT IDENTIFIER ::= {id-not 7}
+
+id-not-contextList OBJECT IDENTIFIER ::= {id-not 8}
+
+id-not-contextCombinations OBJECT IDENTIFIER ::= {id-not 9}
+
+id-not-hierarchySelectList OBJECT IDENTIFIER ::= {id-not 10}
+
+id-not-searchOptionsList OBJECT IDENTIFIER ::= {id-not 11}
+
+id-not-serviceControlOptionsList OBJECT IDENTIFIER ::= {id-not 12}
+
+id-not-multipleMatchingLocalities OBJECT IDENTIFIER ::= {id-not 13}
+
+id-not-proposedRelaxation OBJECT IDENTIFIER ::= {id-not 14}
+
+id-not-appliedRelaxation OBJECT IDENTIFIER ::= {id-not 15}
+
+id-not-substringRequirements OBJECT IDENTIFIER ::= {id-not 16}
+
+-- Control attributes
+id-cat-sequenceMatchType OBJECT IDENTIFIER ::=
+ {id-cat 1}
+
+id-cat-wordMatchType OBJECT IDENTIFIER ::= {id-cat 2}
+
+id-cat-characterMatchTypes OBJECT IDENTIFIER ::= {id-cat 3}
+
+id-cat-selectedContexts OBJECT IDENTIFIER ::= {id-cat 4}
+
+END -- SelectedAttributeTypes
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/SeseAPDUs.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/SeseAPDUs.asn1
new file mode 100644
index 0000000000..2917122e94
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/SeseAPDUs.asn1
@@ -0,0 +1,116 @@
+-- Module SeseAPDUs (X.832:04/1995)
+
+SeseAPDUs {joint-iso-itu-t genericULS(20) modules(1) seseAPDUs(6)} DEFINITIONS
+AUTOMATIC TAGS ::=
+BEGIN
+
+-- EXPORTS ALL
+IMPORTS
+ notation
+ FROM ObjectIdentifiers {joint-iso-itu-t genericULS(20) modules(1)
+ objectIdentifiers(0)}
+ dirAuthenticationTwoWay
+ FROM GulsSecurityExchanges {joint-iso-itu-t genericULS(20) modules(1)
+ gulsSecurityExchanges(2)}
+ SECURITY-EXCHANGE, SE-ERROR
+ FROM Notation notation;
+
+SESEapdus{SECURITY-EXCHANGE:ValidSEs, InvocationId:InvocationIdSet} ::=
+ CHOICE {
+ se-transfer SETransfer{{ValidSEs}, {InvocationIdSet}},
+ se-u-abort SEUAbort{{ValidSEs}, {InvocationIdSet}},
+ se-p-abort SEPAbort{{ValidSEs}, {InvocationIdSet}}
+}
+
+SETransfer{SECURITY-EXCHANGE:ValidSEs, InvocationId:InvocationIdSet} ::=
+ SEQUENCE {
+ seIdentifier SECURITY-EXCHANGE.&sE-Identifier({ValidSEs}),
+ -- This identifies one of the security-
+ -- exchanges supported by the particular SESE
+ -- abstract syntax
+ itemIdentifier
+ SECURITY-EXCHANGE.&SE-Items.&itemId({ValidSEs}{@seIdentifier}),
+ -- This identifies one of the security-
+ -- exchange-items of the security exchange
+ -- indicated by "seIdentifier"
+ seItem
+ SECURITY-EXCHANGE.&SE-Items.&ItemType
+ ({ValidSEs}{@seIdentifier, @itemIdentifier}),
+ invocationId
+ InvocationId(InvocationIdSet)
+ (CONSTRAINED BY {-- Must be the same as the---- invocationId on an active security exchange--
+
+ -- if start flag is not true -- }) DEFAULT noInvocationId,
+ startFlag BOOLEAN DEFAULT FALSE,
+ -- This field is set only as the first security-
+ -- exchange-item of a security-exchange is
+ -- transferred.
+ endFlag BOOLEAN DEFAULT FALSE-- This field is set as the last security-exchange-
+-- item of a security-exchange is transferred. It is
+-- needed to accommodate those mechanisms requiring
+-- n exchanges, where n is not known a priori
+}
+
+SEUAbort{SECURITY-EXCHANGE:ValidSEs, InvocationId:InvocationIdSet} ::=
+ SEQUENCE {
+ invocationId
+ InvocationId(InvocationIdSet)
+ (CONSTRAINED BY {-- Must be the same as the---- invocationId on an active or just-completed--
+
+ -- security exchange -- }) DEFAULT noInvocationId,
+ itemIdentifier
+ SECURITY-EXCHANGE.&SE-Items.&itemId({ValidSEs.&SE-Items}) OPTIONAL,
+ -- This component will only be present
+ -- when the Abort is generated subsequent
+ -- to receipt of a SETransfer APDU.
+ errors SEQUENCE OF SEerror{{ValidSEs}} OPTIONAL
+ -- needed to handle multiple error codes
+}
+
+SEPAbort{SECURITY-EXCHANGE:ValidSEs, InvocationId:InvocationIdSet} ::=
+ SEQUENCE {
+ invocationId InvocationId(InvocationIdSet) OPTIONAL,
+ itemIdentifier
+ SECURITY-EXCHANGE.&SE-Items.&itemId({ValidSEs.&SE-Items}) OPTIONAL,
+ -- This component will only be present
+ -- when the Abort is generated subsequent
+ -- to receipt of a SETransfer APDU.
+ problemCode ProblemCode
+}
+
+InvocationId ::= CHOICE {present INTEGER,
+ absent NULL
+}
+
+noInvocationId InvocationId ::= absent:NULL
+
+NoInvocationId InvocationId ::= {noInvocationId}
+
+SEerror{SECURITY-EXCHANGE:ValidSEs} ::= SEQUENCE {
+ errorCode SE-ERROR.&errorCode({Errors{{ValidSEs}}}) OPTIONAL,
+ errorParameter
+ SE-ERROR.&ParameterType({Errors{{ValidSEs}}}) OPTIONAL
+}
+
+Errors{SECURITY-EXCHANGE:ValidSEs} SE-ERROR ::= {ValidSEs.&SE-Items.&Errors}
+
+ProblemCode ::= CHOICE {
+ general GeneralProblem,
+ transfer TransferProblem,
+ abort AbortProblem
+}
+
+GeneralProblem ::= ENUMERATED {invalidAPDU(0)}
+
+TransferProblem ::= ENUMERATED {
+ duplicateInvocationId(0), unrecognizedSecurityExchange(1), mistypedItem(2),
+ inappropriateInvocationId(3), alternatingSequenceError(4)}
+
+AbortProblem ::= ENUMERATED {
+ unrecognizedInvocationId(0), abortUnexpected(1), unrecognizedError(2),
+ unexpectedError(3), mistypedErrorParameter(4)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/SpkmGssTokens.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/SpkmGssTokens.asn1
new file mode 100644
index 0000000000..02205bd64c
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/SpkmGssTokens.asn1
@@ -0,0 +1,257 @@
+-- Module SpkmGssTokens (RFC 2025:10/1996)
+SpkmGssTokens {iso(1) identified-organization(3) dod(6) internet(1) security(5)
+ mechanisms(5) spkm(1) spkmGssTokens(10)}
+--
+-- Copyright (C) The Internet Society (1996). This version of
+-- this ASN.1 module is part of RFC 2025;
+-- see the RFC itself for full legal notices.
+--
+DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- EXPORTS ALL
+IMPORTS
+ Name
+ FROM InformationFramework {joint-iso-itu-t(2) ds(5) module(1)
+ informationFramework(1) 3}
+ Certificate, CertificateList, CertificatePair, AlgorithmIdentifier, Validity
+ FROM AuthenticationFramework {joint-iso-itu-t(2) ds(5) module(1)
+ authenticationFramework(7) 3};
+
+-- types
+SPKM-REQ ::= SEQUENCE {
+ requestToken REQ-TOKEN,
+ certif-data [0] CertificationData OPTIONAL,
+ auth-data [1] AuthorizationData OPTIONAL
+}
+
+CertificationData ::= SEQUENCE {
+ certificationPath [0] CertificationPath OPTIONAL,
+ certificateRevocationList [1] CertificateList OPTIONAL
+} -- at least one of the above shall be present
+
+CertificationPath ::= SEQUENCE {
+ userKeyId [0] OCTET STRING OPTIONAL,
+ userCertif [1] Certificate OPTIONAL,
+ verifKeyId [2] OCTET STRING OPTIONAL,
+ userVerifCertif [3] Certificate OPTIONAL,
+ theCACertificates [4] SEQUENCE OF CertificatePair OPTIONAL
+} -- Presence of [2] or [3] implies that [0] or [1] must also be
+
+-- present. Presence of [4] implies that at least one of [0], [1],
+-- [2], and [3] must also be present.
+REQ-TOKEN ::= SEQUENCE {
+ req-contents Req-contents,
+ algId AlgorithmIdentifier,
+ req-integrity Integrity -- "token" is Req-contents
+}
+
+Integrity ::= BIT STRING
+
+-- If corresponding algId specifies a signing algorithm,
+-- "Integrity" holds the result of applying the signing procedure
+-- specified in algId to the BER-encoded octet string which results
+-- from applying the hashing procedure (also specified in algId) to
+-- the DER-encoded octets of "token".
+-- Alternatively, if corresponding algId specifies a MACing
+-- algorithm, "Integrity" holds the result of applying the MACing
+-- procedure specified in algId to the DER-encoded octets of
+-- "token"
+Req-contents ::= SEQUENCE {
+ tok-id INTEGER(256), -- shall contain 0100 (hex)
+ context-id Random-Integer,
+ pvno BIT STRING,
+ timestamp UTCTime OPTIONAL, -- mandatory for SPKM-2
+ randSrc Random-Integer,
+ targ-name Name,
+ src-name [0] Name OPTIONAL,
+ req-data Context-Data,
+ validity [1] Validity OPTIONAL,
+ key-estb-set Key-Estb-Algs,
+ key-estb-req BIT STRING OPTIONAL,
+ key-src-bind OCTET STRING OPTIONAL
+ -- This field must be present for the case of SPKM-2
+ -- unilateral authen. if the K-ALG in use does not provide
+ -- such a binding (but is optional for all other cases).
+ -- The octet string holds the result of applying the
+ -- mandatory hashing procedure (in MANDATORY I-ALG;
+ -- see Section 2.1) as follows: MD5(src || context_key),
+ -- where "src" is the DER-encoded octets of src-name,
+ -- "context-key" is the symmetric key (i.e., the
+ -- unprotected version of what is transmitted in
+ -- key-estb-req), and "||" is the concatenation operation.
+}
+
+Random-Integer ::= BIT STRING
+
+Context-Data ::= SEQUENCE {
+ channelId ChannelId OPTIONAL,
+ seq-number INTEGER OPTIONAL,
+ options Options,
+ conf-alg Conf-Algs,
+ intg-alg Intg-Algs,
+ owf-alg OWF-Algs
+}
+
+ChannelId ::= OCTET STRING
+
+Options ::= BIT STRING {
+ delegation-state(0), mutual-state(1), replay-det-state(2), sequence-state(3),
+ conf-avail(4), integ-avail(5), target-certif-data-required(6)}
+
+Conf-Algs ::= CHOICE {
+ algs [0] SEQUENCE OF AlgorithmIdentifier,
+ null [1] NULL
+}
+
+Intg-Algs ::= SEQUENCE OF AlgorithmIdentifier
+
+OWF-Algs ::= SEQUENCE OF AlgorithmIdentifier
+
+Key-Estb-Algs ::= SEQUENCE OF AlgorithmIdentifier
+
+SPKM-REP-TI ::= SEQUENCE {
+ responseToken REP-TI-TOKEN,
+ certif-data CertificationData OPTIONAL
+ -- present if target-certif-data-required option was
+} -- set to TRUE in SPKM-REQ
+
+REP-TI-TOKEN ::= SEQUENCE {
+ rep-ti-contents Rep-ti-contents,
+ algId AlgorithmIdentifier,
+ rep-ti-integ Integrity -- "token" is Rep-ti-contents
+}
+
+Rep-ti-contents ::= SEQUENCE {
+ tok-id INTEGER(512), -- shall contain 0200 (hex)
+ context-id Random-Integer,
+ pvno [0] BIT STRING OPTIONAL,
+ timestamp UTCTime OPTIONAL, -- mandatory for SPKM-2
+ randTarg Random-Integer,
+ src-name [1] Name OPTIONAL,
+ targ-name Name,
+ randSrc Random-Integer,
+ rep-data Context-Data,
+ validity [2] Validity OPTIONAL,
+ key-estb-id AlgorithmIdentifier OPTIONAL,
+ key-estb-str BIT STRING OPTIONAL
+}
+
+SPKM-REP-IT ::= SEQUENCE {
+ responseToken REP-IT-TOKEN,
+ algId AlgorithmIdentifier,
+ rep-it-integ Integrity -- "token" is REP-IT-TOKEN
+}
+
+REP-IT-TOKEN ::= SEQUENCE {
+ tok-id INTEGER(768), -- shall contain 0300 (hex)
+ context-id Random-Integer,
+ randSrc Random-Integer,
+ randTarg Random-Integer,
+ targ-name Name,
+ src-name Name OPTIONAL,
+ key-estb-rep BIT STRING OPTIONAL
+}
+
+SPKM-ERROR ::= SEQUENCE {
+ errorToken ERROR-TOKEN,
+ algId AlgorithmIdentifier,
+ integrity Integrity -- "token" is ERROR-TOKEN
+}
+
+ERROR-TOKEN ::= SEQUENCE {
+ tok-id INTEGER(1024), -- shall contain 0400 (hex)
+ context-id Random-Integer
+}
+
+SPKM-MIC ::= SEQUENCE {mic-header Mic-Header,
+ int-cksum BIT STRING
+}
+
+Mic-Header ::= SEQUENCE {
+ tok-id INTEGER(257), -- shall contain 0101 (hex)
+ context-id Random-Integer,
+ int-alg [0] AlgorithmIdentifier OPTIONAL,
+ snd-seq [1] SeqNum OPTIONAL
+}
+
+SeqNum ::= SEQUENCE {num INTEGER,
+ dir-ind BOOLEAN
+}
+
+SPKM-WRAP ::= SEQUENCE {wrap-header Wrap-Header,
+ wrap-body Wrap-Body
+}
+
+Wrap-Header ::= SEQUENCE {
+ tok-id INTEGER(513), -- shall contain 0201 (hex)
+ context-id Random-Integer,
+ int-alg [0] AlgorithmIdentifier OPTIONAL,
+ conf-alg [1] Conf-Alg OPTIONAL,
+ snd-seq [2] SeqNum OPTIONAL
+}
+
+Wrap-Body ::= SEQUENCE {int-cksum BIT STRING,
+ data BIT STRING
+}
+
+Conf-Alg ::= CHOICE {algId [0] AlgorithmIdentifier,
+ null [1] NULL
+}
+
+SPKM-DEL ::= SEQUENCE {del-header Del-Header,
+ int-cksum BIT STRING
+}
+
+Del-Header ::= SEQUENCE {
+ tok-id INTEGER(769), -- shall contain 0301 (hex)
+ context-id Random-Integer,
+ int-alg [0] AlgorithmIdentifier OPTIONAL,
+ snd-seq [1] SeqNum OPTIONAL
+}
+
+-- other types
+-- from [RFC-1508]
+MechType ::= OBJECT IDENTIFIER
+
+InitialContextToken ::= [APPLICATION 0] IMPLICIT SEQUENCE {
+ thisMech MechType,
+ innerContextToken SPKMInnerContextToken
+} -- when thisMech is SPKM-1 or SPKM-2
+
+SPKMInnerContextToken ::= CHOICE {
+ req [0] SPKM-REQ,
+ rep-ti [1] SPKM-REP-TI,
+ rep-it [2] SPKM-REP-IT,
+ error [3] SPKM-ERROR,
+ mic [4] SPKM-MIC,
+ wrap [5] SPKM-WRAP,
+ del [6] SPKM-DEL
+}
+
+-- from [RFC-1510]
+AuthorizationData ::=
+ SEQUENCE OF SEQUENCE {ad-type INTEGER,
+ ad-data OCTET STRING}
+
+-- object identifier assignments
+md5-DES-CBC OBJECT IDENTIFIER ::=
+ {iso(1) identified-organization(3) dod(6) internet(1) security(5)
+ integrity(3) md5-DES-CBC(1)}
+
+sum64-DES-CBC OBJECT IDENTIFIER ::=
+ {iso(1) identified-organization(3) dod(6) internet(1) security(5)
+ integrity(3) sum64-DES-CBC(2)}
+
+spkm-1 OBJECT IDENTIFIER ::=
+ {iso(1) identified-organization(3) dod(6) internet(1) security(5)
+ mechanisms(5) spkm(1) spkm-1(1)}
+
+spkm-2 OBJECT IDENTIFIER ::=
+ {iso(1) identified-organization(3) dod(6) internet(1) security(5)
+ mechanisms(5) spkm(1) spkm-2(2)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Style-Descriptors.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Style-Descriptors.asn1
new file mode 100644
index 0000000000..8f033eab6f
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Style-Descriptors.asn1
@@ -0,0 +1,190 @@
+-- Module Style-Descriptors (T.415:03/1993)
+
+Style-Descriptors {2 8 1 5 10} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Presentation-Style-Descriptor, Presentation-Attributes, Content-Type,
+ Content-Architecture-Class, Layout-Style-Descriptor, Fill-Order,
+ Block-Alignment;
+
+IMPORTS
+ Object-or-Class-Identifier, Style-Identifier, Category-Name,
+ Object-Id-Expression
+ FROM Identifiers-and-Expressions -- see 7.8
+
+ Comment-String, Transparency, Colour, Border, Layout-Object-Type,
+ Content-Background-Colour, Content-Foreground-Colour, Sealed
+ FROM Layout-Descriptors -- see 7.9
+
+ Colour-Expression, Colour-Table
+ FROM Colour-Attributes -- see 7.14
+
+ Character-Attributes
+ FROM Character-Presentation-Attributes {2 8 1 6 2
+ } -- see ITU-T Rec. T.416 | ISO/IEC 8613-6
+ Raster-Graphics-Attributes
+ FROM Raster-Gr-Presentation-Attributes {2 8 1 7 2
+ } -- see ITU-T Rec. T.417 | ISO/IEC 8613-7
+ Geometric-Graphics-Attributes
+ FROM Geo-Gr-Presentation-Attributes {2 8 1 8 2}; -- see ITU-T Rec. T.418 | ISO/IEC 8613-8
+
+Presentation-Style-Descriptor ::= SET {
+ style-identifier Style-Identifier,
+ user-readable-comments [0] IMPLICIT Comment-String OPTIONAL,
+ user-visible-name [1] IMPLICIT Comment-String OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL,
+ transparency [2] IMPLICIT Transparency OPTIONAL,
+ presentation-attributes [3] IMPLICIT Presentation-Attributes OPTIONAL,
+ colour [4] IMPLICIT Colour OPTIONAL,
+ colour-of-layout-object [29] Colour-Expression OPTIONAL,
+ object-colour-table [30] IMPLICIT Colour-Table OPTIONAL,
+ content-background-colour [31] Content-Background-Colour OPTIONAL,
+ content-foreground-colour [32] Content-Foreground-Colour OPTIONAL,
+ content-colour-table [33] IMPLICIT Colour-Table OPTIONAL,
+ border [5] IMPLICIT Border OPTIONAL,
+ sealed [6] IMPLICIT Sealed OPTIONAL,
+ derived-from [7] IMPLICIT Style-Identifier OPTIONAL
+}
+
+Presentation-Attributes ::= SET {
+ content-architecture-class
+ CHOICE {a Content-Architecture-Class,
+ b Content-Type} OPTIONAL,
+ character-attributes [0] IMPLICIT Character-Attributes OPTIONAL,
+ raster-graphics-attributes
+ [1] IMPLICIT Raster-Graphics-Attributes OPTIONAL,
+ geometric-graphics-attributes
+ [2] IMPLICIT Geometric-Graphics-Attributes OPTIONAL,
+ -- the following tags are reserved for additional types
+ -- of presentation attributes:
+ -- [3] videotex, for use in conjunction with CCITT Recommendations
+ -- [4] audio
+ -- [5] dynamic-graphics
+ ext-cont-arch-pres-attributes [6] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL
+}
+
+Content-Type ::= [APPLICATION 2] IMPLICIT INTEGER {formatted-raster-graphics(1)
+}
+
+-- The integer representation for content architecture class,
+-- Content-Type, is only to be used if the value of the document
+-- profile attribute "document application profile" is an integer.
+-- The value 'formatted-raster-graphics' represents the formatted raster
+-- graphics content architecture as defined in ITU-T Rec. T.417 | ISO/IEC 8613-7.
+Content-Architecture-Class ::= OBJECT IDENTIFIER
+
+Layout-Style-Descriptor ::= SET {
+ style-identifier Style-Identifier,
+ user-readable-comments [0] IMPLICIT Comment-String OPTIONAL,
+ user-visible-name [1] IMPLICIT Comment-String OPTIONAL,
+ application-comments [25] IMPLICIT OCTET STRING OPTIONAL,
+ layout-directives [4] IMPLICIT Layout-Directives OPTIONAL,
+ sealed [6] IMPLICIT Sealed OPTIONAL,
+ derived-from [7] IMPLICIT Style-Identifier OPTIONAL
+}
+
+Layout-Directives ::= SET {
+ indivisibility
+ CHOICE {to-layout-object-class [0] IMPLICIT Object-or-Class-Identifier,
+ to-layout-category [1] IMPLICIT Category-Name,
+ to-layout-object-type [2] IMPLICIT Layout-Object-Type,
+ null [15] IMPLICIT NULL} OPTIONAL,
+ separation [3] IMPLICIT Separation OPTIONAL,
+ offset [4] IMPLICIT Offset OPTIONAL,
+ fill-order [5] IMPLICIT Fill-Order OPTIONAL,
+ concatenation [6] IMPLICIT Concatenation OPTIONAL,
+ new-layout-object
+ CHOICE {to-layout-object-class [7] IMPLICIT Object-or-Class-Identifier,
+ to-layout-category [8] IMPLICIT Category-Name,
+ to-layout-object-type [9] IMPLICIT Layout-Object-Type,
+ null [16] IMPLICIT NULL} OPTIONAL,
+ same-layout-object [10] IMPLICIT Same-Layout-Object OPTIONAL,
+ layout-object-class
+ [11] IMPLICIT Object-or-Class-Identifier OPTIONAL,
+ logical-stream-category [19] IMPLICIT Category-Name OPTIONAL,
+ logical-stream-sub-category [20] IMPLICIT Category-Name OPTIONAL,
+ layout-category [12] IMPLICIT Category-Name OPTIONAL,
+ synchronization
+ CHOICE {a [13] IMPLICIT Object-or-Class-Identifier,
+ b [17] Object-Id-Expression,
+ c [18] IMPLICIT NULL} OPTIONAL,
+ block-alignment [14] IMPLICIT Block-Alignment OPTIONAL,
+ floatability-range [24] IMPLICIT Floatability-Range OPTIONAL
+}
+
+Separation ::= SET {
+ leading [0] IMPLICIT INTEGER OPTIONAL,
+ trailing [1] IMPLICIT INTEGER OPTIONAL,
+ centre [2] IMPLICIT INTEGER OPTIONAL
+}
+
+Offset ::= SET {
+ leading [3] IMPLICIT INTEGER OPTIONAL,
+ trailing [2] IMPLICIT INTEGER OPTIONAL,
+ left-hand [1] IMPLICIT INTEGER OPTIONAL,
+ right-hand [0] IMPLICIT INTEGER OPTIONAL
+}
+
+Fill-Order ::= INTEGER {normal(0), reverse(1)}
+
+Concatenation ::= INTEGER {non-concatenated(0), concatenated(1)}
+
+Same-Layout-Object ::= SET {
+ logical-object
+ CHOICE {a [0] IMPLICIT Object-or-Class-Identifier,
+ b [4] Object-Id-Expression,
+ c [5] IMPLICIT NULL},
+ layout-object
+ CHOICE {d [1] IMPLICIT Object-or-Class-Identifier,
+ to-stream-root-category [6] IMPLICIT Category-Name,
+ to-stream-sub-category [7] IMPLICIT Category-Name,
+ to-layout-category [2] IMPLICIT Category-Name,
+ e [3] IMPLICIT Layout-Object-Type} OPTIONAL
+}
+
+Floatability-Range ::= SET {
+ forward-limit
+ [0] SEQUENCE {logical-object
+ CHOICE {a [2] IMPLICIT Object-or-Class-Identifier,
+ b [3] Object-Id-Expression,
+ c [4] IMPLICIT NULL},
+ layout-object
+ CHOICE {to-layout-object-class
+ [5] IMPLICIT Object-or-Class-Identifier,
+ to-stream-root-category
+ [6] IMPLICIT Category-Name,
+ to-stream-sub-category
+ [7] IMPLICIT Category-Name,
+ to-layout-category
+ [8] IMPLICIT Category-Name,
+ to-layout-object-type
+ [9] IMPLICIT Layout-Object-Type,
+ d [10] IMPLICIT NULL
+ } OPTIONAL} OPTIONAL,
+ backward-limit
+ [1] SEQUENCE {logical-object
+ CHOICE {e [2] IMPLICIT Object-or-Class-Identifier,
+ f [3] Object-Id-Expression,
+ g [4] IMPLICIT NULL},
+ layout-object
+ CHOICE {to-layout-object-class
+ [5] IMPLICIT Object-or-Class-Identifier,
+ to-stream-root-category
+ [6] IMPLICIT Category-Name,
+ to-stream-sub-category
+ [7] IMPLICIT Category-Name,
+ to-layout-category
+ [8] IMPLICIT Category-Name,
+ to-layout-object-type
+ [9] IMPLICIT Layout-Object-Type,
+ h [10] IMPLICIT NULL
+ } OPTIONAL} OPTIONAL
+}
+
+Block-Alignment ::= INTEGER {right-hand(0), left-hand(1), centred(2), null(3)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Subprofiles.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Subprofiles.asn1
new file mode 100644
index 0000000000..bfcd0b5dbc
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Subprofiles.asn1
@@ -0,0 +1,96 @@
+-- Module Subprofiles (T.422:08/1995)
+
+Subprofiles {2 8 1 12 2} DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+EXPORTS Subprofile-Descriptor, Subprofile-Identifier;
+
+IMPORTS
+ Character-Data, Date-and-Time, Document-Reference, Personal-Name,
+ Originators, Other-User-Information, Local-File-References,
+ Security-Information
+ FROM Document-Profile-Descriptor {2 8 1 5 6}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+ Location-Expression
+ FROM Location-Expressions {2 8 1 12 0};
+
+Subprofile-Descriptor ::= SET {
+ subprofile-identifier [0] Subprofile-Identifier,
+ subprofile-reference [1] Subprofile-Reference OPTIONAL,
+ subprofile-precedence [2] INTEGER OPTIONAL,
+ document-fragment-reference [3] Location-Expression,
+ content-architecture-classes
+ [4] SET OF OBJECT IDENTIFIER OPTIONAL, -- shall always
+
+ -- be present, except when used in a location expression
+ document-fragment-management-attributes
+ [5] Document-Fragment-Management-Attributes OPTIONAL
+}
+
+Subprofile-Identifier ::= [APPLICATION 8] PrintableString
+
+-- only digits and spaces are used in the present version of this Specification;
+-- other characters are reserved for extensions
+Subprofile-Reference ::= CHOICE {
+ unique-reference [0] OBJECT IDENTIFIER,
+ descriptive-reference [1] Character-Data
+}
+
+Document-Fragment-Management-Attributes ::= SET {
+ document-fragment-description [0] Document-Fragment-Description OPTIONAL,
+ dates-and-times [1] Dates-and-Times OPTIONAL,
+ originators [2] Originators OPTIONAL,
+ other-user-information [3] Other-User-Information OPTIONAL,
+ external-references [4] External-References2 OPTIONAL,
+ local-file-references [5] Local-File-References OPTIONAL,
+ languages [6] SET OF Character-Data OPTIONAL,
+ security-information [7] Security-Information OPTIONAL
+}
+
+Document-Fragment-Description ::= SET {
+ title [0] Character-Data OPTIONAL,
+ subject [1] Character-Data OPTIONAL,
+ document-fragment-type [2] Character-Data OPTIONAL,
+ abstract [3] Character-Data OPTIONAL,
+ keywords [4] SET OF Character-Data OPTIONAL
+}
+
+Dates-and-Times ::= SET {
+ document-fragment-date-and-time [0] Date-and-Time OPTIONAL,
+ creation-date-and-time [1] Date-and-Time OPTIONAL,
+ local-filing-date-and-time [2] SEQUENCE OF Date-and-Time OPTIONAL,
+ expiry-date-and-time [3] Date-and-Time OPTIONAL,
+ start-date-and-time [4] Date-and-Time OPTIONAL,
+ purge-date-and-time [5] Date-and-Time OPTIONAL,
+ release-date-and-time [6] Date-and-Time OPTIONAL,
+ revision-history
+ [7] SEQUENCE OF
+ SET {revision-date-and-time [0] Date-and-Time OPTIONAL,
+ version-identifier [1] Character-Data OPTIONAL,
+ revisers
+ [2] SET OF
+ SET {names [0] SET OF Personal-Name OPTIONAL,
+ position [1] Character-Data OPTIONAL,
+ organization [2] Character-Data OPTIONAL
+ } OPTIONAL,
+ version-reference
+ [3] Document-or-Document-Fragment-Reference OPTIONAL,
+ user-comments [4] Character-Data OPTIONAL} OPTIONAL
+}
+
+External-References2 ::= SET {
+ references-to-other-documents-or-document-fragments
+ [0] SET OF Document-or-Document-Fragment-Reference OPTIONAL,
+ superseded-documents-or-document-fragments
+ [1] SET OF Document-or-Document-Fragment-Reference OPTIONAL
+}
+
+Document-or-Document-Fragment-Reference ::= CHOICE {
+ document [0] Document-Reference,
+ document-fragment [1] Subprofile-Reference
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Temporal-Relationships.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Temporal-Relationships.asn1
new file mode 100644
index 0000000000..9633995e3b
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Temporal-Relationships.asn1
@@ -0,0 +1,92 @@
+-- Module Temporal-Relationships (T.424:07/1996)
+
+Temporal-Relationships {2 8 1 14 0} DEFINITIONS ::=
+BEGIN
+
+EXPORTS
+ Temporal-Relations, Presentation-Time, Document-Presentation-Time,
+ Time-Scaling;
+
+IMPORTS
+ Date-and-Time
+ FROM Document-Profile-Descriptor {2 8 1 5 6}
+ -- see ITU-T Rec. T.415 | ISO/IEC 8613-5 and C.4
+ Object-or-Class-Identifier
+ FROM Identifiers-and-Expressions {2 8 1 5 7};
+
+-- see ITU-T Rec. T.415 | ISO/IEC 8613-5
+Temporal-Relations ::= SET {
+ synchronization-type [0] IMPLICIT Synchronization-Type,
+ subordinate-nodes
+ [1] SEQUENCE OF
+ SET {node-identifier [0] IMPLICIT Node-Identifier,
+ start-time [1] IMPLICIT Time-Delay OPTIONAL,
+ duration [2] Indefinite-or-Time-Delay OPTIONAL,
+ cyclic [3] IMPLICIT Cyclic OPTIONAL,
+ end-time [4] IMPLICIT Time-Delay OPTIONAL,
+ application-comments [5] IMPLICIT OCTET STRING OPTIONAL
+ }
+}
+
+-- The value 'null' is represented by an empty set
+Synchronization-Type ::= INTEGER {
+ parallel-last(0), parallel-first(1), parallel-selective(2), sequential(3)
+}
+
+Node-Identifier ::= PrintableString
+
+-- only digits and spaces are used
+-- the first digit is either 2 for a logical object class or 3 for a logical object
+Cyclic ::= SET {
+ number-of-cycles [0] CHOICE {indefinite Indefinite,
+ a INTEGER},
+ cycle-start-time [1] IMPLICIT Time-Delay OPTIONAL,
+ cycle-duration [2] Indefinite-or-Time-Delay OPTIONAL
+}
+
+Indefinite ::= NULL
+
+Time-Delay ::= INTEGER {indefinite(-1)}
+
+Presentation-Time ::= SET {
+ timing
+ CHOICE {fixed-timing [0] IMPLICIT INTEGER,
+ variable-timing [1] IMPLICIT Time-Spec} OPTIONAL,
+ duration
+ CHOICE {fixed-duration
+ [2] CHOICE {indefinite-or-time-delay Indefinite-or-Time-Delay,
+ object-or-class-identifier
+ Object-or-Class-Identifier},
+ rule-A [3] IMPLICIT Rule-Spec,
+ rule-B [4] IMPLICIT Rule-Spec} OPTIONAL,
+ cyclic [5] Cyclic OPTIONAL
+}
+
+-- The value 'null' is represented by an empty set
+Time-Spec ::= SET {
+ start-offset [0] IMPLICIT INTEGER OPTIONAL,
+ end-offset [1] IMPLICIT INTEGER OPTIONAL,
+ start-separation [2] IMPLICIT INTEGER OPTIONAL,
+ end-separation [3] IMPLICIT INTEGER OPTIONAL
+}
+
+Rule-Spec ::= SET {
+ minimum-duration [0] IMPLICIT INTEGER OPTIONAL,
+ maximum-duration [1] IMPLICIT INTEGER OPTIONAL
+}
+
+Indefinite-or-Time-Delay ::= CHOICE {
+ indefinite [0] IMPLICIT NULL,
+ fixed [1] Time-Delay
+}
+
+Document-Presentation-Time ::= Date-and-Time
+
+Time-Scaling ::= [0] IMPLICIT SEQUENCE {a INTEGER,
+ b INTEGER
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Text-Units.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Text-Units.asn1
new file mode 100644
index 0000000000..ccc64a52f5
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Text-Units.asn1
@@ -0,0 +1,72 @@
+-- Module Text-Units (T.415:03/1993)
+
+Text-Units {2 8 1 5 12} DEFINITIONS ::=
+BEGIN
+
+EXPORTS Text-Unit, Type-Of-Coding;
+
+IMPORTS
+ Content-Portion-Identifier
+ FROM Identifiers-and-Expressions -- see 7.8
+
+ Character-Coding-Attributes
+ FROM Character-Coding-Attributes {2 8 1 6 3
+ } -- see ITU-T Rec. T.416 | ISO/IEC 8613-6
+ Raster-Gr-Coding-Attributes
+ FROM Raster-Gr-Coding-Attributes {2 8 1 7 3
+ } -- see ITU-T Rec. T.417 | ISO/IEC 8613-7
+ Geo-Gr-Coding-Attributes
+ FROM Geo-Gr-Coding-Attributes {2 8 1 8 3
+ } -- see ITU-T Rec. T.418 | ISO/IEC 8613-8
+ Videotex-Coding-Attributes
+ FROM Videotex-Coding-Attributes ;
+
+Text-Unit ::= SEQUENCE {
+ content-portion-attributes Content-Portion-Attributes OPTIONAL,
+ content-information Content-Information OPTIONAL
+}
+
+Content-Portion-Attributes ::= SET {
+ content-identifier-layout Content-Portion-Identifier OPTIONAL,
+ content-identifier-logical [4] IMPLICIT Content-Portion-Identifier OPTIONAL,
+ type-of-coding Type-Of-Coding OPTIONAL,
+ coding-attributes
+ CHOICE {character-coding-attributes
+ [1] IMPLICIT Character-Coding-Attributes,
+ raster-gr-coding-attributes
+ [2] IMPLICIT Raster-Gr-Coding-Attributes,
+ geo-gr-coding-attributes
+ [7] IMPLICIT Geo-Gr-Coding-Attributes,
+ videotex-coding-attributes
+ [8] IMPLICIT Videotex-Coding-Attributes,
+ -- the use of the data item "videotex-coding-attributes" is applicable to
+ -- ITU-T Rec. T.410 Series only
+ -- the following tags are reserved for additional types
+ -- of coding attributes:
+ -- [9] audio
+ -- [10] dynamic-graphics
+ ext-cont-arch-coding-attributes [11] IMPLICIT EXTERNAL} OPTIONAL,
+ alternative-representation [3] IMPLICIT Alternative-Representation OPTIONAL
+}
+
+Content-Information ::= CHOICE {
+ content OCTET STRING,
+ tiled-content Tiled-Content
+}
+
+Tiled-Content ::= SEQUENCE OF OCTET STRING
+
+Type-Of-Coding ::= CHOICE {
+ a [0] IMPLICIT INTEGER {t6(1)},
+ b [6] IMPLICIT OBJECT IDENTIFIER
+}
+
+Alternative-Representation ::= OCTET STRING
+
+-- string of characters from the sets designated by the document
+-- profile attribute "alternative representation character sets",
+-- plus carriage return and line feed
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/UpperBounds.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/UpperBounds.asn1
new file mode 100644
index 0000000000..c97c83a569
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/UpperBounds.asn1
@@ -0,0 +1,89 @@
+-- Module UpperBounds (X.520:08/1997)
+
+UpperBounds {joint-iso-itu-t ds(5) module(1) upperBounds(10) 3} DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+ub-answerback INTEGER ::=
+8
+
+ub-business-category INTEGER ::= 128
+
+ub-common-name INTEGER ::= 64
+
+ub-country-code INTEGER ::= 4
+
+ub-description INTEGER ::= 1024
+
+ub-destination-indicator INTEGER ::= 128
+
+ub-directory-string-first-component-match INTEGER ::= 32768
+
+ub-international-isdn-number INTEGER ::= 16
+
+ub-knowledge-information INTEGER ::= 32768
+
+ub-locality-name INTEGER ::= 128
+
+ub-match INTEGER ::= 128
+
+ub-name INTEGER ::= 64
+
+ub-organization-name INTEGER ::= 64
+
+ub-organizational-unit-name INTEGER ::= 64
+
+ub-physical-office-name INTEGER ::= 128
+
+ub-post-office-box INTEGER ::= 40
+
+ub-postal-code INTEGER ::= 40
+
+ub-postal-line INTEGER ::= 6
+
+ub-postal-string INTEGER ::= 30
+
+ub-privacy-mark-length INTEGER ::= 128
+
+ub-schema INTEGER ::= 1024
+
+ub-search INTEGER ::= 17 --This definition is missing; to be provided --
+
+ub-serial-number INTEGER ::= 64
+
+ub-state-name INTEGER ::= 128
+
+ub-street-address INTEGER ::= 128
+
+ub-surname INTEGER ::= 64
+
+ub-tag INTEGER ::= 64
+
+ub-telephone-number INTEGER ::= 32
+
+ub-teletex-terminal-id INTEGER ::= 1024
+
+ub-telex-number INTEGER ::= 14
+
+ub-title INTEGER ::= 64
+
+ub-user-password INTEGER ::= 128
+
+ub-x121-address INTEGER ::= 15
+
+ub-localeContextSyntax INTEGER ::= 128
+
+ub-locale-context-syntax INTEGER ::= 64
+
+ub-pseudonym INTEGER ::= 128
+
+ub-content INTEGER ::= 32768
+
+END -- UpperBounds
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/UsefulDefinitions.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/UsefulDefinitions.asn1
new file mode 100644
index 0000000000..d9601bb7d0
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/UsefulDefinitions.asn1
@@ -0,0 +1,238 @@
+-- Module UsefulDefinitions (X.501:08/1997)
+UsefulDefinitions {joint-iso-itu-t ds(5) module(1) usefulDefinitions(0) 3}
+DEFINITIONS ::=
+BEGIN
+
+-- EXPORTS All -
+-- The types and values defined in this module are exported for use in the other ASN.1 modules contained
+-- within the Directory Specifications, and for the use of other applications which will use them to access
+-- Directory services. Other applications may use them for their own purposes, but this will not constrain
+-- extensions and modifications needed to maintain or improve the Directory service.
+ID ::= OBJECT IDENTIFIER
+
+ds ID ::= {joint-iso-itu-t ds(5)}
+
+-- categories of information object
+module ID ::= {ds 1}
+
+serviceElement ID ::= {ds 2}
+
+applicationContext ID ::= {ds 3}
+
+attributeType ID ::= {ds 4}
+
+attributeSyntax ID ::= {ds 5}
+
+objectClass ID ::= {ds 6}
+
+-- attributeSet ID ::= {ds 7}
+algorithm ID ::= {ds 8}
+
+abstractSyntax ID ::= {ds 9}
+
+-- object ID ::= {ds 10}
+-- port ID ::= {ds 11}
+dsaOperationalAttribute ID ::=
+ {ds 12}
+
+matchingRule ID ::= {ds 13}
+
+knowledgeMatchingRule ID ::= {ds 14}
+
+nameForm ID ::= {ds 15}
+
+group ID ::= {ds 16}
+
+subentry ID ::= {ds 17}
+
+operationalAttributeType ID ::= {ds 18}
+
+operationalBinding ID ::= {ds 19}
+
+schemaObjectClass ID ::= {ds 20}
+
+schemaOperationalAttribute ID ::= {ds 21}
+
+administrativeRoles ID ::= {ds 23}
+
+accessControlAttribute ID ::= {ds 24}
+
+rosObject ID ::= {ds 25}
+
+contract ID ::= {ds 26}
+
+package ID ::= {ds 27}
+
+accessControlSchemes ID ::= {ds 28}
+
+certificateExtension ID ::= {ds 29}
+
+managementObject ID ::= {ds 30}
+
+attributeValueContext ID ::= {ds 31}
+
+-- securityExchange ID ::= {ds 32}
+idmProtocol ID ::= {ds 33}
+
+problem ID ::= {ds 34}
+
+notification ID ::= {ds 35}
+
+matchingRestriction ID ::=
+ {ds 36} -- None are currently defined by this specification
+
+controlAttributeType ID ::= {ds 37}
+
+-- modules
+usefulDefinitions ID ::= {module usefulDefinitions(0) 3}
+
+informationFramework ID ::= {module informationFramework(1) 3}
+
+directoryAbstractService ID ::= {module directoryAbstractService(2) 3}
+
+distributedOperations ID ::= {module distributedOperations(3) 3}
+
+protocolObjectIdentifiers ID ::= {module protocolObjectIdentifiers(4) 3}
+
+selectedAttributeTypes ID ::= {module selectedAttributeTypes(5) 3}
+
+selectedObjectClasses ID ::= {module selectedObjectClasses(6) 3}
+
+authenticationFramework ID ::= {module authenticationFramework(7) 3}
+
+algorithmObjectIdentifiers ID ::= {module algorithmObjectIdentifiers(8) 3}
+
+directoryObjectIdentifiers ID ::= {module directoryObjectIdentifiers(9) 3}
+
+upperBounds ID ::= {module upperBounds(10) 3}
+
+dap ID ::= {module dap(11) 3}
+
+dsp ID ::= {module dsp(12) 3}
+
+distributedDirectoryOIDs ID ::= {module distributedDirectoryOIDs(13) 3}
+
+directoryShadowOIDs ID ::= {module directoryShadowOIDs(14) 3}
+
+directoryShadowAbstractService ID ::=
+ {module directoryShadowAbstractService(15) 3}
+
+disp ID ::= {module disp(16) 3}
+
+dop ID ::= {module dop(17) 3}
+
+opBindingManagement ID ::= {module opBindingManagement(18) 3}
+
+opBindingOIDs ID ::= {module opBindingOIDs(19) 3}
+
+hierarchicalOperationalBindings ID ::=
+ {module hierarchicalOperationalBindings(20) 3}
+
+dsaOperationalAttributeTypes ID ::= {module dsaOperationalAttributeTypes(22) 3}
+
+schemaAdministration ID ::= {module schemaAdministration(23) 3}
+
+basicAccessControl ID ::= {module basicAccessControl(24) 3}
+
+directoryOperationalBindingTypes ID ::=
+ {module directoryOperationalBindingTypes(25) 3}
+
+certificateExtensions ID ::= {module certificateExtensions(26) 0}
+
+directoryManagement ID ::= {module directoryManagement(27) 1}
+
+enhancedSecurity ID ::= {module enhancedSecurity(28) 1}
+
+iDMProtocolSpecification ID ::= {module iDMProtocolSpecification(30) 4}
+
+directoryIDMProtocols ID ::= {module directoryIDMProtocols(31) 4}
+
+-- directorySecurityExchanges ID ::= {module directorySecurityExchanges (29) 1}
+-- synonyms
+id-oc ID ::=
+ objectClass
+
+id-at ID ::= attributeType
+
+id-as ID ::= abstractSyntax
+
+id-mr ID ::= matchingRule
+
+id-nf ID ::= nameForm
+
+id-sc ID ::= subentry
+
+id-oa ID ::= operationalAttributeType
+
+id-ob ID ::= operationalBinding
+
+id-doa ID ::= dsaOperationalAttribute
+
+id-kmr ID ::= knowledgeMatchingRule
+
+id-soc ID ::= schemaObjectClass
+
+id-soa ID ::= schemaOperationalAttribute
+
+id-ar ID ::= administrativeRoles
+
+id-aca ID ::= accessControlAttribute
+
+id-ac ID ::= applicationContext
+
+id-rosObject ID ::= rosObject
+
+id-contract ID ::= contract
+
+id-package ID ::= package
+
+id-acScheme ID ::= accessControlSchemes
+
+id-ce ID ::= certificateExtension
+
+id-mgt ID ::= managementObject
+
+id-idm ID ::= idmProtocol
+
+id-avc ID ::= attributeValueContext
+
+-- id-se ID ::= securityExchange
+id-pr ID ::= problem
+
+id-not ID ::= notification
+
+id-mre ID ::= matchingRestriction
+
+id-cat ID ::= controlAttributeType
+
+-- obsolete module identifiers
+-- usefulDefinition ID ::= {module 0}
+-- informationFramework ID ::= {module 1}
+-- directoryAbstractService ID ::= {module 2}
+-- distributedOperations ID ::= {module 3}
+-- protocolObjectIdentifiers ID ::= {module 4}
+-- selectedAttributeTypes ID ::= {module 5}
+-- selectedObjectClasses ID ::= {module 6}
+-- authenticationFramework ID ::= {module 7}
+-- algorithmObjectIdentifiers ID ::= {module 8}
+-- directoryObjectIdentifiers ID ::= {module 9}
+-- upperBounds ID ::= {module 10}
+-- dap ID ::= {module 11}
+-- dsp ID ::= {module 12}
+-- distributedDirectoryObjectIdentifiers ID ::= {module 13}
+-- unused module identifiers
+-- directoryShadowOIDs ID ::= {module 14}
+-- directoryShadowAbstractService ID ::= {module 15}
+-- disp ID ::= {module 16}
+-- dop ID ::= {module 17}
+-- opBindingManagement ID ::= {module 18}
+-- opBindingOIDs ID ::= {module 19}
+-- hierarchicalOperationalBindings ID ::= {module 20}
+-- dsaOperationalAttributeTypes ID ::= {module 22}
+-- schemaAdministration ID ::= {module 23}
+-- basicAccessControl ID ::= {module 24}
+-- operationalBindingOIDs ID ::= {module 25}
+END -- UsefulDefinitions
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/lib/asn1/test/asn1_SUITE_data/rfcs/Videotex-Coding-Attributes.asn1 b/lib/asn1/test/asn1_SUITE_data/rfcs/Videotex-Coding-Attributes.asn1
new file mode 100644
index 0000000000..18e51cbc0d
--- /dev/null
+++ b/lib/asn1/test/asn1_SUITE_data/rfcs/Videotex-Coding-Attributes.asn1
@@ -0,0 +1,30 @@
+-- Module Videotex-Coding-Attributes (T.101:11/1994)
+Videotex-Coding-Attributes DEFINITIONS ::=
+BEGIN
+
+EXPORTS Videotex-Coding-Attributes;
+
+Videotex-Coding-Attributes ::= SET {
+ subset [0] IMPLICIT Subset OPTIONAL,
+ rank [1] IMPLICIT Rank OPTIONAL,
+ profile [2] IMPLICIT Profile OPTIONAL
+}
+
+Subset ::= INTEGER {
+ undefined(0), rank1(1), rank2(2), rank3(3), rank4(4), rank5(5), profile1(81),
+ profile2(82), profile3(83), profile4(84), profileX1-1(85), profileX1-2(86),
+ profileX1-3(87), profileX1-4(88), profileX2-1(89), profileX2-2(90),
+ profileX2-3(91), profileX2-4(92)}
+
+Rank ::= INTEGER {
+ undefined(0), rank1(1), rank2(2), rank3(3), rank4(4), rank5(5)}
+
+Profile ::= INTEGER {
+ undefined(0), profile1(81), profile2(82), profile3(83), profile4(84),
+ profileX1-1(85), profileX1-2(86), profileX1-3(87), profileX1-4(88),
+ profileX2-1(89), profileX2-2(90), profileX2-3(91), profileX2-4(92)}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+