From 9441c99de9e95fb485dfb2c1bceadc1b14c859bb Mon Sep 17 00:00:00 2001 From: 5HT Date: Sat, 12 Aug 2023 03:28:50 +0300 Subject: [PATCH] man --- priv/mhs/ACSE-1.asn1 | 253 + priv/mhs/AlgorithmInformation-2009.asn1 | 466 ++ .../AttributeCertificateVersion1-2009.asn1 | 59 + priv/mhs/AuthenticationFramework.asn1 | 290 + priv/mhs/BasicAccessControl.asn1 | 184 + priv/mhs/CertificateExtensions.asn1 | 498 ++ priv/mhs/Character-Coding-Attributes.asn1 | 17 + .../Character-Presentation-Attributes.asn1 | 125 + priv/mhs/Character-Profile-Attributes.asn1 | 54 + priv/mhs/Colour-Attributes.asn1 | 192 + priv/mhs/CryptographicMessageSyntax-2009.asn1 | 463 ++ ...tographicMessageSyntaxAlgorithms-2009.asn1 | 248 + priv/mhs/DOR-definition.asn1 | 134 + priv/mhs/DSAOperationalAttributeTypes.asn1 | 186 + priv/mhs/Default-Value-Lists.asn1 | 143 + priv/mhs/DirectoryAbstractService.asn1 | 710 ++ priv/mhs/DirectoryAccessProtocol.asn1 | 161 + .../DirectoryInformationShadowProtocol.asn1 | 246 + ...yOperationalBindingManagementProtocol.asn1 | 117 + .../mhs/DirectoryOperationalBindingTypes.asn1 | 26 + priv/mhs/DirectoryShadowAbstractService.asn1 | 324 + priv/mhs/DirectorySystemProtocol.asn1 | 118 + priv/mhs/DistributedOperations.asn1 | 181 + priv/mhs/Document-Profile-Descriptor.asn1 | 464 ++ priv/mhs/EnhancedSecurity.asn1 | 363 + priv/mhs/External-References.asn1 | 49 + priv/mhs/Geo-Gr-Coding-Attributes.asn1 | 16 + priv/mhs/Geo-Gr-Presentation-Attributes.asn1 | 265 + priv/mhs/Geo-Gr-Profile-Attributes.asn1 | 44 + priv/mhs/HierarchicalOperationalBindings.asn1 | 123 + priv/mhs/IPMSAbstractService.asn1 | 148 + priv/mhs/IPMSAutoActionTypes.asn1 | 234 + priv/mhs/IPMSExtendedBodyPartTypes.asn1 | 102 + priv/mhs/IPMSExtendedBodyPartTypes2.asn1 | 37 + priv/mhs/IPMSExtendedVoiceBodyPartType.asn1 | 39 + priv/mhs/IPMSFileTransferBodyPartType.asn1 | 253 + .../mhs/IPMSForwardedContentBodyPartType.asn1 | 53 + priv/mhs/IPMSForwardedReportBodyPartType.asn1 | 41 + priv/mhs/IPMSFunctionalObjects.asn1 | 47 + priv/mhs/IPMSHeadingExtensions.asn1 | 246 + priv/mhs/IPMSInformationObjects.asn1 | 626 ++ priv/mhs/IPMSMessageStoreAttributes.asn1 | 1120 +++ priv/mhs/IPMSObjectIdentifiers.asn1 | 507 ++ priv/mhs/IPMSObjectIdentifiers2.asn1 | 33 + priv/mhs/IPMSSecurityExtensions.asn1 | 143 + priv/mhs/IPMSUpperBounds.asn1 | 46 + .../ISO-STANDARD-9541-FONT-ATTRIBUTE-SET.asn1 | 459 ++ priv/mhs/ISO8571-FTAM.asn1 | 1453 ++++ priv/mhs/ISO9541-SN.asn1 | 51 + priv/mhs/Identifiers-and-Expressions.asn1 | 126 + priv/mhs/InformationFramework.asn1 | 868 +++ priv/mhs/Interchange-Data-Elements.asn1 | 57 + priv/mhs/Layout-Descriptors.asn1 | 268 + priv/mhs/Link-Descriptors.asn1 | 80 + priv/mhs/Location-Expressions.asn1 | 338 + priv/mhs/Logical-Descriptors.asn1 | 95 + priv/mhs/MHSObjectIdentifiers.asn1 | 187 + priv/mhs/MHSProtocolObjectIdentifiers.asn1 | 112 + priv/mhs/MSAbstractService.asn1 | 1079 +++ priv/mhs/MSAccessProtocol.asn1 | 261 + priv/mhs/MSGeneralAttributeTypes.asn1 | 830 ++ priv/mhs/MSGeneralAutoActionTypes.asn1 | 118 + priv/mhs/MSMatchingRules.asn1 | 225 + priv/mhs/MSObjectIdentifiers.asn1 | 322 + priv/mhs/MSUpperBounds.asn1 | 77 + priv/mhs/MTAAbstractService.asn1 | 481 ++ priv/mhs/MTSAbstractService.asn1 | 2366 ++++++ priv/mhs/MTSAbstractService88.asn1 | 150 + priv/mhs/MTSAccessProtocol.asn1 | 321 + priv/mhs/MTSObjectIdentifiers.asn1 | 116 + priv/mhs/MTSUpperBounds.asn1 | 146 + priv/mhs/OperationalBindingManagement.asn1 | 263 + priv/mhs/PKCS-10.asn1 | 51 + priv/mhs/PKCS-12.asn1 | 174 + priv/mhs/PKCS-5.asn1 | 202 + priv/mhs/PKCS-7.asn1 | 326 + priv/mhs/PKCS-8.asn1 | 61 + priv/mhs/PKCS-9.asn1 | 391 + priv/mhs/PKCS7BodyPartType.asn1 | 31 + priv/mhs/PKIX-CommonTypes-2009.asn1 | 166 + priv/mhs/PKIX-X400Address-2009.asn1 | 300 + priv/mhs/PKIX1-PSS-OAEP-Algorithms-2009.asn1 | 308 + priv/mhs/PKIX1Explicit-2009.asn1 | 416 + priv/mhs/PKIX1Implicit-2009.asn1 | 447 ++ priv/mhs/PKIXAlgs-2009.asn1 | 528 ++ priv/mhs/PKIXAttributeCertificate-2009.asn1 | 292 + priv/mhs/Protected-Part-Descriptors.asn1 | 74 + priv/mhs/ProtocolObjectIdentifiers.asn1 | 140 + priv/mhs/Raster-Gr-Coding-Attributes.asn1 | 75 + .../Raster-Gr-Presentation-Attributes.asn1 | 92 + priv/mhs/Raster-Gr-Profile-Attributes.asn1 | 76 + priv/mhs/Reliable-Transfer-APDU.asn1 | 132 + .../Remote-Operations-Abstract-Syntaxes.asn1 | 105 + .../Remote-Operations-Generic-ROS-PDUs.asn1 | 163 + ...ations-Information-Objects-extensions.asn1 | 36 + ...Remote-Operations-Information-Objects.asn1 | 123 + priv/mhs/Remote-Operations-Realizations.asn1 | 81 + .../Remote-Operations-Useful-Definitions.asn1 | 95 + priv/mhs/SecureMimeMessageV3dot1-2009.asn1 | 122 + priv/mhs/SelectedAttributeTypes.asn1 | 1466 ++++ priv/mhs/SpkmGssTokens.asn1 | 257 + priv/mhs/Style-Descriptors.asn1 | 190 + priv/mhs/Subprofiles.asn1 | 96 + priv/mhs/Temporal-Relationships.asn1 | 92 + priv/mhs/Text-Units.asn1 | 72 + priv/mhs/UpperBounds.asn1 | 89 + priv/mhs/UsefulDefinitions.asn1 | 238 + priv/mhs/Videotex-Coding-Attributes.asn1 | 30 + priv/mhs/clean.sh | 3 + src/IPMSAbstractService.erl | 1574 ++++ src/IPMSAutoActionTypes.erl | 3196 ++++++++ src/IPMSAutoActionTypes.hrl | 110 + src/IPMSFileTransferBodyPartType.erl | 2980 +++++++ src/IPMSFileTransferBodyPartType.hrl | 115 + src/IPMSHeadingExtensions.erl | 2462 ++++++ src/IPMSHeadingExtensions.hrl | 56 + src/IPMSInformationObjects.erl | 6840 +++++++++++++++++ src/IPMSInformationObjects.hrl | 220 + src/IPMSObjectIdentifiers.erl | 1132 +++ src/IPMSObjectIdentifiers.hrl | 240 + src/mail420.app.src | 9 + 121 files changed, 47517 insertions(+) create mode 100644 priv/mhs/ACSE-1.asn1 create mode 100644 priv/mhs/AlgorithmInformation-2009.asn1 create mode 100644 priv/mhs/AttributeCertificateVersion1-2009.asn1 create mode 100644 priv/mhs/AuthenticationFramework.asn1 create mode 100644 priv/mhs/BasicAccessControl.asn1 create mode 100644 priv/mhs/CertificateExtensions.asn1 create mode 100644 priv/mhs/Character-Coding-Attributes.asn1 create mode 100644 priv/mhs/Character-Presentation-Attributes.asn1 create mode 100644 priv/mhs/Character-Profile-Attributes.asn1 create mode 100644 priv/mhs/Colour-Attributes.asn1 create mode 100644 priv/mhs/CryptographicMessageSyntax-2009.asn1 create mode 100644 priv/mhs/CryptographicMessageSyntaxAlgorithms-2009.asn1 create mode 100644 priv/mhs/DOR-definition.asn1 create mode 100644 priv/mhs/DSAOperationalAttributeTypes.asn1 create mode 100644 priv/mhs/Default-Value-Lists.asn1 create mode 100644 priv/mhs/DirectoryAbstractService.asn1 create mode 100644 priv/mhs/DirectoryAccessProtocol.asn1 create mode 100644 priv/mhs/DirectoryInformationShadowProtocol.asn1 create mode 100644 priv/mhs/DirectoryOperationalBindingManagementProtocol.asn1 create mode 100644 priv/mhs/DirectoryOperationalBindingTypes.asn1 create mode 100644 priv/mhs/DirectoryShadowAbstractService.asn1 create mode 100644 priv/mhs/DirectorySystemProtocol.asn1 create mode 100644 priv/mhs/DistributedOperations.asn1 create mode 100644 priv/mhs/Document-Profile-Descriptor.asn1 create mode 100644 priv/mhs/EnhancedSecurity.asn1 create mode 100644 priv/mhs/External-References.asn1 create mode 100644 priv/mhs/Geo-Gr-Coding-Attributes.asn1 create mode 100644 priv/mhs/Geo-Gr-Presentation-Attributes.asn1 create mode 100644 priv/mhs/Geo-Gr-Profile-Attributes.asn1 create mode 100644 priv/mhs/HierarchicalOperationalBindings.asn1 create mode 100644 priv/mhs/IPMSAbstractService.asn1 create mode 100644 priv/mhs/IPMSAutoActionTypes.asn1 create mode 100644 priv/mhs/IPMSExtendedBodyPartTypes.asn1 create mode 100644 priv/mhs/IPMSExtendedBodyPartTypes2.asn1 create mode 100644 priv/mhs/IPMSExtendedVoiceBodyPartType.asn1 create mode 100644 priv/mhs/IPMSFileTransferBodyPartType.asn1 create mode 100644 priv/mhs/IPMSForwardedContentBodyPartType.asn1 create mode 100644 priv/mhs/IPMSForwardedReportBodyPartType.asn1 create mode 100644 priv/mhs/IPMSFunctionalObjects.asn1 create mode 100644 priv/mhs/IPMSHeadingExtensions.asn1 create mode 100644 priv/mhs/IPMSInformationObjects.asn1 create mode 100644 priv/mhs/IPMSMessageStoreAttributes.asn1 create mode 100644 priv/mhs/IPMSObjectIdentifiers.asn1 create mode 100644 priv/mhs/IPMSObjectIdentifiers2.asn1 create mode 100644 priv/mhs/IPMSSecurityExtensions.asn1 create mode 100644 priv/mhs/IPMSUpperBounds.asn1 create mode 100644 priv/mhs/ISO-STANDARD-9541-FONT-ATTRIBUTE-SET.asn1 create mode 100644 priv/mhs/ISO8571-FTAM.asn1 create mode 100644 priv/mhs/ISO9541-SN.asn1 create mode 100644 priv/mhs/Identifiers-and-Expressions.asn1 create mode 100644 priv/mhs/InformationFramework.asn1 create mode 100644 priv/mhs/Interchange-Data-Elements.asn1 create mode 100644 priv/mhs/Layout-Descriptors.asn1 create mode 100644 priv/mhs/Link-Descriptors.asn1 create mode 100644 priv/mhs/Location-Expressions.asn1 create mode 100644 priv/mhs/Logical-Descriptors.asn1 create mode 100644 priv/mhs/MHSObjectIdentifiers.asn1 create mode 100644 priv/mhs/MHSProtocolObjectIdentifiers.asn1 create mode 100644 priv/mhs/MSAbstractService.asn1 create mode 100644 priv/mhs/MSAccessProtocol.asn1 create mode 100644 priv/mhs/MSGeneralAttributeTypes.asn1 create mode 100644 priv/mhs/MSGeneralAutoActionTypes.asn1 create mode 100644 priv/mhs/MSMatchingRules.asn1 create mode 100644 priv/mhs/MSObjectIdentifiers.asn1 create mode 100644 priv/mhs/MSUpperBounds.asn1 create mode 100644 priv/mhs/MTAAbstractService.asn1 create mode 100644 priv/mhs/MTSAbstractService.asn1 create mode 100644 priv/mhs/MTSAbstractService88.asn1 create mode 100644 priv/mhs/MTSAccessProtocol.asn1 create mode 100644 priv/mhs/MTSObjectIdentifiers.asn1 create mode 100644 priv/mhs/MTSUpperBounds.asn1 create mode 100644 priv/mhs/OperationalBindingManagement.asn1 create mode 100644 priv/mhs/PKCS-10.asn1 create mode 100644 priv/mhs/PKCS-12.asn1 create mode 100644 priv/mhs/PKCS-5.asn1 create mode 100644 priv/mhs/PKCS-7.asn1 create mode 100644 priv/mhs/PKCS-8.asn1 create mode 100644 priv/mhs/PKCS-9.asn1 create mode 100644 priv/mhs/PKCS7BodyPartType.asn1 create mode 100644 priv/mhs/PKIX-CommonTypes-2009.asn1 create mode 100644 priv/mhs/PKIX-X400Address-2009.asn1 create mode 100644 priv/mhs/PKIX1-PSS-OAEP-Algorithms-2009.asn1 create mode 100644 priv/mhs/PKIX1Explicit-2009.asn1 create mode 100644 priv/mhs/PKIX1Implicit-2009.asn1 create mode 100644 priv/mhs/PKIXAlgs-2009.asn1 create mode 100644 priv/mhs/PKIXAttributeCertificate-2009.asn1 create mode 100644 priv/mhs/Protected-Part-Descriptors.asn1 create mode 100644 priv/mhs/ProtocolObjectIdentifiers.asn1 create mode 100644 priv/mhs/Raster-Gr-Coding-Attributes.asn1 create mode 100644 priv/mhs/Raster-Gr-Presentation-Attributes.asn1 create mode 100644 priv/mhs/Raster-Gr-Profile-Attributes.asn1 create mode 100644 priv/mhs/Reliable-Transfer-APDU.asn1 create mode 100644 priv/mhs/Remote-Operations-Abstract-Syntaxes.asn1 create mode 100644 priv/mhs/Remote-Operations-Generic-ROS-PDUs.asn1 create mode 100644 priv/mhs/Remote-Operations-Information-Objects-extensions.asn1 create mode 100644 priv/mhs/Remote-Operations-Information-Objects.asn1 create mode 100644 priv/mhs/Remote-Operations-Realizations.asn1 create mode 100644 priv/mhs/Remote-Operations-Useful-Definitions.asn1 create mode 100644 priv/mhs/SecureMimeMessageV3dot1-2009.asn1 create mode 100644 priv/mhs/SelectedAttributeTypes.asn1 create mode 100644 priv/mhs/SpkmGssTokens.asn1 create mode 100644 priv/mhs/Style-Descriptors.asn1 create mode 100644 priv/mhs/Subprofiles.asn1 create mode 100644 priv/mhs/Temporal-Relationships.asn1 create mode 100644 priv/mhs/Text-Units.asn1 create mode 100644 priv/mhs/UpperBounds.asn1 create mode 100644 priv/mhs/UsefulDefinitions.asn1 create mode 100644 priv/mhs/Videotex-Coding-Attributes.asn1 create mode 100755 priv/mhs/clean.sh create mode 100644 src/IPMSAbstractService.erl create mode 100644 src/IPMSAutoActionTypes.erl create mode 100644 src/IPMSAutoActionTypes.hrl create mode 100644 src/IPMSFileTransferBodyPartType.erl create mode 100644 src/IPMSFileTransferBodyPartType.hrl create mode 100644 src/IPMSHeadingExtensions.erl create mode 100644 src/IPMSHeadingExtensions.hrl create mode 100644 src/IPMSInformationObjects.erl create mode 100644 src/IPMSInformationObjects.hrl create mode 100644 src/IPMSObjectIdentifiers.erl create mode 100644 src/IPMSObjectIdentifiers.hrl create mode 100644 src/mail420.app.src diff --git a/priv/mhs/ACSE-1.asn1 b/priv/mhs/ACSE-1.asn1 new file mode 100644 index 0000000..3f13853 --- /dev/null +++ b/priv/mhs/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/priv/mhs/AlgorithmInformation-2009.asn1 b/priv/mhs/AlgorithmInformation-2009.asn1 new file mode 100644 index 0000000..f912966 --- /dev/null +++ b/priv/mhs/AlgorithmInformation-2009.asn1 @@ -0,0 +1,466 @@ +AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + +DEFINITIONS EXPLICIT TAGS ::= +BEGIN +EXPORTS ALL; +IMPORTS + +KeyUsage +FROM PKIX1Implicit-2009 + {iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-implicit-02(59)} ; + +-- Suggested prefixes for algorithm objects are: +-- +-- mda- Message Digest Algorithms +-- sa- Signature Algorithms +-- kta- Key Transport Algorithms (Asymmetric) +-- kaa- Key Agreement Algorithms (Asymmetric) +-- kwa- Key Wrap Algorithms (Symmetric) +-- kda- Key Derivation Algorithms +-- maca- Message Authentication Code Algorithms +-- pk- Public Key +-- cea- Content (symmetric) Encryption Algorithms +-- cap- S/MIME Capabilities + +ParamOptions ::= ENUMERATED { + required, -- Parameters MUST be encoded in structure + preferredPresent, -- Parameters SHOULD be encoded in structure + preferredAbsent, -- Parameters SHOULD NOT be encoded in structure + absent, -- Parameters MUST NOT be encoded in structure + inheritable, -- Parameters are inherited if not present + optional, -- Parameters MAY be encoded in the structure + ... +} + +-- DIGEST-ALGORITHM +-- +-- Describes the basic information for ASN.1 and a digest +-- algorithm. +-- +-- &id - contains the OID identifying the digest algorithm +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- +-- Additional information such as the length of the hash could have +-- been encoded. Without a clear understanding of what information +-- is needed by applications, such extraneous information was not +-- considered to be of sufficent importance. +-- +-- Example: +-- mda-sha1 DIGEST-ALGORITHM ::= { +-- IDENTIFIER id-sha1 +-- PARAMS TYPE NULL ARE preferredAbsent +-- } + +DIGEST-ALGORITHM ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent +} WITH SYNTAX { + IDENTIFIER &id + [PARAMS [TYPE &Params] ARE ¶mPresence ] +} + +-- SIGNATURE-ALGORITHM +-- +-- Describes the basic properties of a signature algorithm +-- +-- &id - contains the OID identifying the signature algorithm +-- &Value - contains a type definition for the value structure of +-- the signature; if absent, implies that no ASN.1 +-- encoding is performed on the value +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &HashSet - The set of hash algorithms used with this +-- signature algorithm +-- &PublicKeySet - the set of public key algorithms for this +-- signature algorithm +-- &smimeCaps - contains the object describing how the S/MIME +-- capabilities are presented. +-- +-- Example: +-- sig-RSA-PSS SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER id-RSASSA-PSS +-- PARAMS TYPE RSASSA-PSS-params ARE required +-- HASHES { mda-sha1 | mda-md5, ... } +-- PUBLIC-KEYS { pk-rsa | pk-rsa-pss } +-- } + +SIGNATURE-ALGORITHM ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Value OPTIONAL, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &HashSet DIGEST-ALGORITHM OPTIONAL, + &PublicKeySet PUBLIC-KEY OPTIONAL, + &smimeCaps SMIME-CAPS OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [VALUE &Value] + [PARAMS [TYPE &Params] ARE ¶mPresence ] + [HASHES &HashSet] + [PUBLIC-KEYS &PublicKeySet] + [SMIME-CAPS &smimeCaps] +} + +-- PUBLIC-KEY +-- +-- Describes the basic properties of a public key +-- +-- &id - contains the OID identifying the public key +-- &KeyValue - contains the type for the key value +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &keyUsage - contains the set of bits that are legal for this +-- key type. Note that is does not make any statement +-- about how bits may be paired. +-- &PrivateKey - contains a type structure for encoding the private +-- key information. +-- +-- Example: +-- pk-rsa-pss PUBLIC-KEY ::= { +-- IDENTIFIER id-RSASSA-PSS +-- KEY RSAPublicKey +-- PARAMS TYPE RSASSA-PSS-params ARE optional +-- CERT-KEY-USAGE { .... } +-- } + +PUBLIC-KEY ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &KeyValue OPTIONAL, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &keyUsage KeyUsage OPTIONAL, + &PrivateKey OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [KEY &KeyValue] + [PARAMS [TYPE &Params] ARE ¶mPresence] + [CERT-KEY-USAGE &keyUsage] + [PRIVATE-KEY &PrivateKey] +} + +-- KEY-TRANSPORT +-- +-- Describes the basic properties of a key transport algorithm +-- +-- &id - contains the OID identifying the key transport algorithm +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &PublicKeySet - specifies which public keys are used with +-- this algorithm +-- &smimeCaps - contains the object describing how the S/MIME +-- capabilities are presented. +-- +-- Example: +-- kta-rsaTransport KEY-TRANSPORT ::= { +-- IDENTIFIER &id +-- PARAMS TYPE NULL ARE required +-- PUBLIC-KEYS { pk-rsa | pk-rsa-pss } +-- } + +KEY-TRANSPORT ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &PublicKeySet PUBLIC-KEY OPTIONAL, + &smimeCaps SMIME-CAPS OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [PARAMS [TYPE &Params] ARE ¶mPresence] + [PUBLIC-KEYS &PublicKeySet] + [SMIME-CAPS &smimeCaps] +} + +-- KEY-AGREE +-- +-- Describes the basic properties of a key agreement algorithm +-- +-- &id - contains the OID identifying the key agreement algorithm +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &PublicKeySet - specifies which public keys are used with +-- this algorithm +-- &Ukm - type of user keying material used +-- &ukmPresence - specifies the requirements to define the UKM field +-- &smimeCaps - contains the object describing how the S/MIME +-- capabilities are presented. +-- +-- Example: +-- kaa-dh-static-ephemeral KEY-AGREE ::= { +-- IDENTIFIER id-alg-ESDH +-- PARAMS TYPE KeyWrapAlgorithm ARE required +-- PUBLIC-KEYS { +-- {IDENTIFIER dh-public-number KEY DHPublicKey +-- PARAMS TYPE DHDomainParameters ARE inheritable } +-- } +-- - - UKM should be present but is not separately ASN.1-encoded +-- UKM ARE preferredPresent +-- } + +KEY-AGREE ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &PublicKeySet PUBLIC-KEY OPTIONAL, + &Ukm OPTIONAL, + &ukmPresence ParamOptions DEFAULT absent, + &smimeCaps SMIME-CAPS OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [PARAMS [TYPE &Params] ARE ¶mPresence] + [PUBLIC-KEYS &PublicKeySet] + [UKM [TYPE &Ukm] ARE &ukmPresence] + [SMIME-CAPS &smimeCaps] +} + +-- KEY-WRAP +-- +-- Describes the basic properties of a key wrap algorithm +-- +-- &id - contains the OID identifying the key wrap algorithm +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &smimeCaps - contains the object describing how the S/MIME +-- capabilities are presented. +-- +-- Example: +-- kwa-cms3DESwrap KEY-WRAP ::= { +-- IDENTIFIER id-alg-CMS3DESwrap +-- PARAMS TYPE NULL ARE required +-- } + +KEY-WRAP ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &smimeCaps SMIME-CAPS OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [PARAMS [TYPE &Params] ARE ¶mPresence] + [SMIME-CAPS &smimeCaps] +} +-- KEY-DERIVATION +-- +-- Describes the basic properties of a key derivation algorithm +-- +-- &id - contains the OID identifying the key derivation algorithm +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &smimeCaps - contains the object describing how the S/MIME +-- capabilities are presented. +-- +-- Example: +-- kda-pbkdf2 KEY-DERIVATION ::= { +-- IDENTIFIER id-PBKDF2 +-- PARAMS TYPE PBKDF2-params ARE required +-- } + +KEY-DERIVATION ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &smimeCaps SMIME-CAPS OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [PARAMS [TYPE &Params] ARE ¶mPresence] + [SMIME-CAPS &smimeCaps] +} + +-- MAC-ALGORITHM +-- +-- Describes the basic properties of a message +-- authentication code (MAC) algorithm +-- +-- &id - contains the OID identifying the MAC algorithm +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &keyed - MAC algorithm is a keyed MAC algorithm +-- &smimeCaps - contains the object describing how the S/MIME +-- capabilities are presented. +-- +-- Some parameters that perhaps should have been added would be +-- fields with the minimum and maximum MAC lengths for +-- those MAC algorithms that allow truncations. +-- +-- Example: +-- maca-hmac-sha1 MAC-ALGORITHM ::= { +-- IDENTIFIER hMAC-SHA1 +-- PARAMS TYPE NULL ARE preferredAbsent +-- IS KEYED MAC TRUE +-- SMIME-CAPS {IDENTIFIED BY hMAC-SHA1} +-- } + +MAC-ALGORITHM ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &keyed BOOLEAN, + &smimeCaps SMIME-CAPS OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [PARAMS [TYPE &Params] ARE ¶mPresence] + IS-KEYED-MAC &keyed + [SMIME-CAPS &smimeCaps] +} + +-- CONTENT-ENCRYPTION +-- +-- Describes the basic properties of a content encryption +-- algorithm +-- +-- &id - contains the OID identifying the content +-- encryption algorithm +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &smimeCaps - contains the object describing how the S/MIME +-- capabilities are presented. +-- +-- Example: +-- cea-3DES-cbc CONTENT-ENCRYPTION ::= { +-- IDENTIFIER des-ede3-cbc +-- PARAMS TYPE IV ARE required +-- SMIME-CAPS { IDENTIFIED BY des-ede3-cbc } +-- } + +CONTENT-ENCRYPTION ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &smimeCaps SMIME-CAPS OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [PARAMS [TYPE &Params] ARE ¶mPresence] + [SMIME-CAPS &smimeCaps] +} + +-- ALGORITHM +-- +-- Describes a generic algorithm identifier +-- +-- &id - contains the OID identifying the algorithm +-- &Params - if present, contains the type for the algorithm +-- parameters; if absent, implies no parameters +-- ¶mPresence - parameter presence requirement +-- &smimeCaps - contains the object describing how the S/MIME +-- capabilities are presented. +-- +-- This would be used for cases where an algorithm of an unknown +-- type is used. In general however, one should either define +-- a more complete algorithm structure (such as the one above) +-- or use the TYPE-IDENTIFIER class. + +ALGORITHM ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Params OPTIONAL, + ¶mPresence ParamOptions DEFAULT absent, + &smimeCaps SMIME-CAPS OPTIONAL +} WITH SYNTAX { + IDENTIFIER &id + [PARAMS [TYPE &Params] ARE ¶mPresence] + [SMIME-CAPS &smimeCaps] +} + +-- AlgorithmIdentifier +-- +-- Provides the generic structure that is used to encode algorithm +-- identification and the parameters associated with the +-- algorithm. +-- +-- The first parameter represents the type of the algorithm being +-- used. +-- The second parameter represents an object set containing the +-- algorithms that may occur in this situation. +-- The initial list of required algorithms should occur to the +-- left of an extension marker; all other algorithms should +-- occur to the right of an extension marker. +-- +-- The object class ALGORITHM can be used for generic unspecified +-- items. +-- If new ALGORITHM classes are defined, the fields &id and &Params +-- need to be present as fields in the object in order to use +-- this parameterized type. +-- +-- Example: +-- SignatureAlgorithmIdentifier ::= +-- AlgorithmIdentifier{SIGNATURE-ALGORITHM, {SignatureAlgSet}} + +AlgorithmIdentifier{ALGORITHM-TYPE, ALGORITHM-TYPE:AlgorithmSet} ::= + SEQUENCE { + algorithm ALGORITHM-TYPE.&id({AlgorithmSet}), + parameters ALGORITHM-TYPE. + &Params({AlgorithmSet}{@algorithm}) OPTIONAL + } + +-- S/MIME Capabilities +-- +-- We have moved the SMIME-CAPS from the module for RFC 3851 to here +-- because it is used in RFC 4262 (X.509 Certificate Extension for +-- S/MIME Capabilities) +-- +-- +-- This class is used to represent an S/MIME capability. S/MIME +-- capabilities are used to represent what algorithm capabilities +-- an individual has. The classic example was the content encryption +-- algorithm RC2 where the algorithm id and the RC2 key lengths +-- supported needed to be advertised, but the IV used is not fixed. +-- Thus, for RC2 we used +-- +-- cap-RC2CBC SMIME-CAPS ::= { +-- TYPE INTEGER ( 40 | 128 ) IDENTIFIED BY rc2-cbc } +-- +-- where 40 and 128 represent the RC2 key length in number of bits. +-- +-- Another example where information needs to be shown is for +-- RSA-OAEP where only specific hash functions or mask generation +-- functions are supported, but the saltLength is specified by the +-- sender and not the recipient. In this case, one can either +-- generate a number of capability items, +-- or a new S/MIME capability type could be generated where +-- multiple hash functions could be specified. +-- +-- +-- SMIME-CAP +-- +-- This class is used to associate the type that describes the +-- capabilities with the object identifier. +-- + +SMIME-CAPS ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Type OPTIONAL +} +WITH SYNTAX { [TYPE &Type] IDENTIFIED BY &id } + +-- +-- Generic type - this is used for defining values. +-- + +-- Define a single S/MIME capability encoding + +SMIMECapability{SMIME-CAPS:CapabilitySet} ::= SEQUENCE { + capabilityID SMIME-CAPS.&id({CapabilitySet}), + parameters SMIME-CAPS.&Type({CapabilitySet} + {@capabilityID}) OPTIONAL +} + +-- Define a sequence of S/MIME capability values + +SMIMECapabilities { SMIME-CAPS:CapabilitySet } ::= + SEQUENCE SIZE (1..MAX) OF SMIMECapability{{CapabilitySet} } + +END diff --git a/priv/mhs/AttributeCertificateVersion1-2009.asn1 b/priv/mhs/AttributeCertificateVersion1-2009.asn1 new file mode 100644 index 0000000..46b431a --- /dev/null +++ b/priv/mhs/AttributeCertificateVersion1-2009.asn1 @@ -0,0 +1,59 @@ + AttributeCertificateVersion1-2009 + {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) modules(0) id-mod-v1AttrCert-02(49)} + DEFINITIONS EXPLICIT TAGS ::= + BEGIN + IMPORTS + + SIGNATURE-ALGORITHM, ALGORITHM, AlgorithmIdentifier{} + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + + AttributeSet{}, Extensions{}, EXTENSION, ATTRIBUTE + FROM PKIX-CommonTypes-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57) } + + CertificateSerialNumber, UniqueIdentifier, SIGNED{} + FROM PKIX1Explicit-2009 + { iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51) } + + GeneralNames + FROM PKIX1Implicit-2009 + { iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59) } + + AttCertValidityPeriod, IssuerSerial + FROM PKIXAttributeCertificate-2009 + { iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-attribute-cert-02(47) } ; + + -- Definition extracted from X.509-1997 [X.509-97], but + -- different type names are used to avoid collisions. + + AttributeCertificateV1 ::= SIGNED{AttributeCertificateInfoV1} + + AttributeCertificateInfoV1 ::= SEQUENCE { + version AttCertVersionV1 DEFAULT v1, + subject CHOICE { + baseCertificateID [0] IssuerSerial, + -- associated with a Public Key Certificate + subjectName [1] GeneralNames }, + -- associated with a name + issuer GeneralNames, + signature AlgorithmIdentifier{SIGNATURE-ALGORITHM, {...}}, + serialNumber CertificateSerialNumber, + attCertValidityPeriod AttCertValidityPeriod, + attributes SEQUENCE OF AttributeSet{{AttrList}}, + issuerUniqueID UniqueIdentifier OPTIONAL, + extensions Extensions{{AttributeCertExtensionsV1}} OPTIONAL } + + AttCertVersionV1 ::= INTEGER { v1(0) } + + AttrList ATTRIBUTE ::= {...} + AttributeCertExtensionsV1 EXTENSION ::= {...} + + END diff --git a/priv/mhs/AuthenticationFramework.asn1 b/priv/mhs/AuthenticationFramework.asn1 new file mode 100644 index 0000000..5cfa906 --- /dev/null +++ b/priv/mhs/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/priv/mhs/BasicAccessControl.asn1 b/priv/mhs/BasicAccessControl.asn1 new file mode 100644 index 0000000..d8b2b68 --- /dev/null +++ b/priv/mhs/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/priv/mhs/CertificateExtensions.asn1 b/priv/mhs/CertificateExtensions.asn1 new file mode 100644 index 0000000..0daf220 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Character-Coding-Attributes.asn1 b/priv/mhs/Character-Coding-Attributes.asn1 new file mode 100644 index 0000000..04060cf --- /dev/null +++ b/priv/mhs/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/priv/mhs/Character-Presentation-Attributes.asn1 b/priv/mhs/Character-Presentation-Attributes.asn1 new file mode 100644 index 0000000..aed48ac --- /dev/null +++ b/priv/mhs/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/priv/mhs/Character-Profile-Attributes.asn1 b/priv/mhs/Character-Profile-Attributes.asn1 new file mode 100644 index 0000000..7ba5bf1 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Colour-Attributes.asn1 b/priv/mhs/Colour-Attributes.asn1 new file mode 100644 index 0000000..24c7faf --- /dev/null +++ b/priv/mhs/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/priv/mhs/CryptographicMessageSyntax-2009.asn1 b/priv/mhs/CryptographicMessageSyntax-2009.asn1 new file mode 100644 index 0000000..3e35029 --- /dev/null +++ b/priv/mhs/CryptographicMessageSyntax-2009.asn1 @@ -0,0 +1,463 @@ + CryptographicMessageSyntax-2009 + { iso(1) member-body(2) us(840) rsadsi(113549) + pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2004-02(41) } + DEFINITIONS IMPLICIT TAGS ::= + BEGIN + IMPORTS + + ParamOptions, DIGEST-ALGORITHM, SIGNATURE-ALGORITHM, + PUBLIC-KEY, KEY-DERIVATION, KEY-WRAP, MAC-ALGORITHM, + KEY-AGREE, KEY-TRANSPORT, CONTENT-ENCRYPTION, ALGORITHM, + AlgorithmIdentifier + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + SignatureAlgs, MessageDigestAlgs, KeyAgreementAlgs, + MessageAuthAlgs, KeyWrapAlgs, ContentEncryptionAlgs, + KeyTransportAlgs, KeyDerivationAlgs, KeyAgreePublicKeys + FROM CryptographicMessageSyntaxAlgorithms-2009 + { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) modules(0) id-mod-cmsalg-2001-02(37) } + + Certificate, CertificateList, CertificateSerialNumber, + Name, ATTRIBUTE + FROM PKIX1Explicit-2009 + { iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-explicit-02(51) } + + AttributeCertificate + FROM PKIXAttributeCertificate-2009 + { iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-attribute-cert-02(47) } + + AttributeCertificateV1 + FROM AttributeCertificateVersion1-2009 + { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) modules(0) id-mod-v1AttrCert-02(49) } ; + + -- Cryptographic Message Syntax + + -- The following are used for version numbers using the ASN.1 + -- idiom "[[n:" + -- Version 1 = PKCS #7 + -- Version 2 = S/MIME V2 + -- Version 3 = RFC 2630 + -- Version 4 = RFC 3369 + -- Version 5 = RFC 3852 + + CONTENT-TYPE ::= TYPE-IDENTIFIER + ContentType ::= CONTENT-TYPE.&id + + ContentInfo ::= SEQUENCE { + contentType CONTENT-TYPE. + &id({ContentSet}), + content [0] EXPLICIT CONTENT-TYPE. + &Type({ContentSet}{@contentType})} + + ContentSet CONTENT-TYPE ::= { + -- Define the set of content types to be recognized. + ct-Data | ct-SignedData | ct-EncryptedData | ct-EnvelopedData | + ct-AuthenticatedData | ct-DigestedData, ... } + + SignedData ::= SEQUENCE { + version CMSVersion, + digestAlgorithms SET OF DigestAlgorithmIdentifier, + encapContentInfo EncapsulatedContentInfo, + certificates [0] IMPLICIT CertificateSet OPTIONAL, + crls [1] IMPLICIT RevocationInfoChoices OPTIONAL, + signerInfos SignerInfos } + + SignerInfos ::= SET OF SignerInfo + + EncapsulatedContentInfo ::= SEQUENCE { + eContentType CONTENT-TYPE.&id({ContentSet}), + eContent [0] EXPLICIT OCTET STRING + ( CONTAINING CONTENT-TYPE. + &Type({ContentSet}{@eContentType})) OPTIONAL } + + SignerInfo ::= SEQUENCE { + version CMSVersion, + sid SignerIdentifier, + digestAlgorithm DigestAlgorithmIdentifier, + signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL, + signatureAlgorithm SignatureAlgorithmIdentifier, + signature SignatureValue, + unsignedAttrs [1] IMPLICIT Attributes + {{UnsignedAttributes}} OPTIONAL } + + SignedAttributes ::= Attributes {{ SignedAttributesSet }} + + SignerIdentifier ::= CHOICE { + issuerAndSerialNumber IssuerAndSerialNumber, + ..., + [[3: subjectKeyIdentifier [0] SubjectKeyIdentifier ]] } + + SignedAttributesSet ATTRIBUTE ::= + { aa-signingTime | aa-messageDigest | aa-contentType, ... } + + UnsignedAttributes ATTRIBUTE ::= { aa-countersignature, ... } + + SignatureValue ::= OCTET STRING + + EnvelopedData ::= SEQUENCE { + version CMSVersion, + originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, + recipientInfos RecipientInfos, + encryptedContentInfo EncryptedContentInfo, + ..., + [[2: unprotectedAttrs [1] IMPLICIT Attributes + {{ UnprotectedAttributes }} OPTIONAL ]] } + + OriginatorInfo ::= SEQUENCE { + certs [0] IMPLICIT CertificateSet OPTIONAL, + crls [1] IMPLICIT RevocationInfoChoices OPTIONAL } + + RecipientInfos ::= SET SIZE (1..MAX) OF RecipientInfo + + EncryptedContentInfo ::= SEQUENCE { + contentType CONTENT-TYPE.&id({ContentSet}), + contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, + encryptedContent [0] IMPLICIT OCTET STRING OPTIONAL } + + -- If you want to do constraints, you might use: + -- EncryptedContentInfo ::= SEQUENCE { + -- contentType CONTENT-TYPE.&id({ContentSet}), + -- contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, + -- encryptedContent [0] IMPLICIT ENCRYPTED {CONTENT-TYPE. + -- &Type({ContentSet}{@contentType}) OPTIONAL } + -- ENCRYPTED {ToBeEncrypted} ::= OCTET STRING ( CONSTRAINED BY + -- { ToBeEncrypted } ) + + UnprotectedAttributes ATTRIBUTE ::= { ... } + + RecipientInfo ::= CHOICE { + ktri KeyTransRecipientInfo, + ..., + [[3: kari [1] KeyAgreeRecipientInfo ]], + [[4: kekri [2] KEKRecipientInfo]], + [[5: pwri [3] PasswordRecipientInfo, + ori [4] OtherRecipientInfo ]] } + + EncryptedKey ::= OCTET STRING + + KeyTransRecipientInfo ::= SEQUENCE { + version CMSVersion, -- always set to 0 or 2 + rid RecipientIdentifier, + keyEncryptionAlgorithm AlgorithmIdentifier + {KEY-TRANSPORT, {KeyTransportAlgorithmSet}}, + encryptedKey EncryptedKey } + + KeyTransportAlgorithmSet KEY-TRANSPORT ::= { KeyTransportAlgs, ... } + + RecipientIdentifier ::= CHOICE { + issuerAndSerialNumber IssuerAndSerialNumber, + ..., + [[2: subjectKeyIdentifier [0] SubjectKeyIdentifier ]] } + KeyAgreeRecipientInfo ::= SEQUENCE { + version CMSVersion, -- always set to 3 + originator [0] EXPLICIT OriginatorIdentifierOrKey, + ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL, + keyEncryptionAlgorithm AlgorithmIdentifier + {KEY-AGREE, {KeyAgreementAlgorithmSet}}, + recipientEncryptedKeys RecipientEncryptedKeys } + + KeyAgreementAlgorithmSet KEY-AGREE ::= { KeyAgreementAlgs, ... } + + OriginatorIdentifierOrKey ::= CHOICE { + issuerAndSerialNumber IssuerAndSerialNumber, + subjectKeyIdentifier [0] SubjectKeyIdentifier, + originatorKey [1] OriginatorPublicKey } + + OriginatorPublicKey ::= SEQUENCE { + algorithm AlgorithmIdentifier {PUBLIC-KEY, {OriginatorKeySet}}, + publicKey BIT STRING } + + OriginatorKeySet PUBLIC-KEY ::= { KeyAgreePublicKeys, ... } + + RecipientEncryptedKeys ::= SEQUENCE OF RecipientEncryptedKey + + RecipientEncryptedKey ::= SEQUENCE { + rid KeyAgreeRecipientIdentifier, + encryptedKey EncryptedKey } + + KeyAgreeRecipientIdentifier ::= CHOICE { + issuerAndSerialNumber IssuerAndSerialNumber, + rKeyId [0] IMPLICIT RecipientKeyIdentifier } + + RecipientKeyIdentifier ::= SEQUENCE { + subjectKeyIdentifier SubjectKeyIdentifier, + date GeneralizedTime OPTIONAL, + other OtherKeyAttribute OPTIONAL } + + SubjectKeyIdentifier ::= OCTET STRING + + KEKRecipientInfo ::= SEQUENCE { + version CMSVersion, -- always set to 4 + kekid KEKIdentifier, + keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, + encryptedKey EncryptedKey } + + KEKIdentifier ::= SEQUENCE { + keyIdentifier OCTET STRING, + date GeneralizedTime OPTIONAL, + other OtherKeyAttribute OPTIONAL } + PasswordRecipientInfo ::= SEQUENCE { + version CMSVersion, -- always set to 0 + keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier + OPTIONAL, + keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, + encryptedKey EncryptedKey } + + OTHER-RECIPIENT ::= TYPE-IDENTIFIER + + OtherRecipientInfo ::= SEQUENCE { + oriType OTHER-RECIPIENT. + &id({SupportedOtherRecipInfo}), + oriValue OTHER-RECIPIENT. + &Type({SupportedOtherRecipInfo}{@oriType})} + + SupportedOtherRecipInfo OTHER-RECIPIENT ::= { ... } + + DigestedData ::= SEQUENCE { + version CMSVersion, + digestAlgorithm DigestAlgorithmIdentifier, + encapContentInfo EncapsulatedContentInfo, + digest Digest, ... } + + Digest ::= OCTET STRING + + EncryptedData ::= SEQUENCE { + version CMSVersion, + encryptedContentInfo EncryptedContentInfo, + ..., + [[2: unprotectedAttrs [1] IMPLICIT Attributes + {{UnprotectedAttributes}} OPTIONAL ]] } + + AuthenticatedData ::= SEQUENCE { + version CMSVersion, + originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL, + recipientInfos RecipientInfos, + macAlgorithm MessageAuthenticationCodeAlgorithm, + digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL, + encapContentInfo EncapsulatedContentInfo, + authAttrs [2] IMPLICIT AuthAttributes OPTIONAL, + mac MessageAuthenticationCode, + unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL } + + AuthAttributes ::= SET SIZE (1..MAX) OF Attribute + {{AuthAttributeSet}} + + AuthAttributeSet ATTRIBUTE ::= { aa-contentType | aa-messageDigest + | aa-signingTime, ...} + MessageAuthenticationCode ::= OCTET STRING + + UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute + {{UnauthAttributeSet}} + + UnauthAttributeSet ATTRIBUTE ::= {...} + + -- + -- General algorithm definitions + -- + + DigestAlgorithmIdentifier ::= AlgorithmIdentifier + {DIGEST-ALGORITHM, {DigestAlgorithmSet}} + + DigestAlgorithmSet DIGEST-ALGORITHM ::= { + CryptographicMessageSyntaxAlgorithms-2009.MessageDigestAlgs, ... } + + SignatureAlgorithmIdentifier ::= AlgorithmIdentifier + {SIGNATURE-ALGORITHM, {SignatureAlgorithmSet}} + + SignatureAlgorithmSet SIGNATURE-ALGORITHM ::= + { SignatureAlgs, ... } + + KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier + {KEY-WRAP, {KeyEncryptionAlgorithmSet}} + + KeyEncryptionAlgorithmSet KEY-WRAP ::= { KeyWrapAlgs, ... } + + ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier + {CONTENT-ENCRYPTION, {ContentEncryptionAlgorithmSet}} + + ContentEncryptionAlgorithmSet CONTENT-ENCRYPTION ::= + { ContentEncryptionAlgs, ... } + + MessageAuthenticationCodeAlgorithm ::= AlgorithmIdentifier + {MAC-ALGORITHM, {MessageAuthenticationCodeAlgorithmSet}} + + MessageAuthenticationCodeAlgorithmSet MAC-ALGORITHM ::= + { MessageAuthAlgs, ... } + + KeyDerivationAlgorithmIdentifier ::= AlgorithmIdentifier + {KEY-DERIVATION, {KeyDerivationAlgs, ...}} + + RevocationInfoChoices ::= SET OF RevocationInfoChoice + + RevocationInfoChoice ::= CHOICE { + crl CertificateList, + ..., + [[5: other [1] IMPLICIT OtherRevocationInfoFormat ]] } + + OTHER-REVOK-INFO ::= TYPE-IDENTIFIER + + OtherRevocationInfoFormat ::= SEQUENCE { + otherRevInfoFormat OTHER-REVOK-INFO. + &id({SupportedOtherRevokInfo}), + otherRevInfo OTHER-REVOK-INFO. + &Type({SupportedOtherRevokInfo}{@otherRevInfoFormat})} + + SupportedOtherRevokInfo OTHER-REVOK-INFO ::= { ... } + + CertificateChoices ::= CHOICE { + certificate Certificate, + extendedCertificate [0] IMPLICIT ExtendedCertificate, + -- Obsolete + ..., + [[3: v1AttrCert [1] IMPLICIT AttributeCertificateV1]], + -- Obsolete + [[4: v2AttrCert [2] IMPLICIT AttributeCertificateV2]], + [[5: other [3] IMPLICIT OtherCertificateFormat]] } + + AttributeCertificateV2 ::= AttributeCertificate + + OTHER-CERT-FMT ::= TYPE-IDENTIFIER + + OtherCertificateFormat ::= SEQUENCE { + otherCertFormat OTHER-CERT-FMT. + &id({SupportedCertFormats}), + otherCert OTHER-CERT-FMT. + &Type({SupportedCertFormats}{@otherCertFormat})} + + SupportedCertFormats OTHER-CERT-FMT ::= { ... } + + CertificateSet ::= SET OF CertificateChoices + + IssuerAndSerialNumber ::= SEQUENCE { + issuer Name, + serialNumber CertificateSerialNumber } + + CMSVersion ::= INTEGER { v0(0), v1(1), v2(2), v3(3), v4(4), v5(5) } + + UserKeyingMaterial ::= OCTET STRING + + KEY-ATTRIBUTE ::= TYPE-IDENTIFIER + + OtherKeyAttribute ::= SEQUENCE { + keyAttrId KEY-ATTRIBUTE. + + &id({SupportedKeyAttributes}), + keyAttr KEY-ATTRIBUTE. + &Type({SupportedKeyAttributes}{@keyAttrId})} + + SupportedKeyAttributes KEY-ATTRIBUTE ::= { ... } + + -- Content Type Object Identifiers + + id-ct-contentInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) ct(1) 6 } + + ct-Data CONTENT-TYPE ::= {OCTET STRING IDENTIFIED BY id-data} + + id-data OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 } + + ct-SignedData CONTENT-TYPE ::= + { SignedData IDENTIFIED BY id-signedData} + + id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 } + + ct-EnvelopedData CONTENT-TYPE ::= + { EnvelopedData IDENTIFIED BY id-envelopedData} + + id-envelopedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs7(7) 3 } + + ct-DigestedData CONTENT-TYPE ::= + { DigestedData IDENTIFIED BY id-digestedData} + + id-digestedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs7(7) 5 } + + ct-EncryptedData CONTENT-TYPE ::= + { EncryptedData IDENTIFIED BY id-encryptedData} + + id-encryptedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs7(7) 6 } + + ct-AuthenticatedData CONTENT-TYPE ::= + { AuthenticatedData IDENTIFIED BY id-ct-authData} + + id-ct-authData OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 2 } + + -- + -- The CMS Attributes + -- + + MessageDigest ::= OCTET STRING + + SigningTime ::= Time + + Time ::= CHOICE { + utcTime UTCTime, + generalTime GeneralizedTime } + + Countersignature ::= SignerInfo + + -- Attribute Object Identifiers + + aa-contentType ATTRIBUTE ::= + { TYPE ContentType IDENTIFIED BY id-contentType } + id-contentType OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs9(9) 3 } + + aa-messageDigest ATTRIBUTE ::= + { TYPE MessageDigest IDENTIFIED BY id-messageDigest} + id-messageDigest OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs9(9) 4 } + + aa-signingTime ATTRIBUTE ::= + { TYPE SigningTime IDENTIFIED BY id-signingTime } + id-signingTime OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs9(9) 5 } + + aa-countersignature ATTRIBUTE ::= + { TYPE Countersignature IDENTIFIED BY id-countersignature } + id-countersignature OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs9(9) 6 } + + -- + -- Obsolete Extended Certificate syntax from PKCS#6 + -- + + ExtendedCertificateOrCertificate ::= CHOICE { + certificate Certificate, + extendedCertificate [0] IMPLICIT ExtendedCertificate } + + ExtendedCertificate ::= SEQUENCE { + extendedCertificateInfo ExtendedCertificateInfo, + signatureAlgorithm SignatureAlgorithmIdentifier, + signature Signature } + + ExtendedCertificateInfo ::= SEQUENCE { + version CMSVersion, + certificate Certificate, + attributes UnauthAttributes } + + Signature ::= BIT STRING + + Attribute{ ATTRIBUTE:AttrList } ::= SEQUENCE { + attrType ATTRIBUTE. + &id({AttrList}), + attrValues SET OF ATTRIBUTE. + &Type({AttrList}{@attrType}) } + + Attributes { ATTRIBUTE:AttrList } ::= + SET SIZE (1..MAX) OF Attribute {{ AttrList }} + + END diff --git a/priv/mhs/CryptographicMessageSyntaxAlgorithms-2009.asn1 b/priv/mhs/CryptographicMessageSyntaxAlgorithms-2009.asn1 new file mode 100644 index 0000000..72e8b27 --- /dev/null +++ b/priv/mhs/CryptographicMessageSyntaxAlgorithms-2009.asn1 @@ -0,0 +1,248 @@ + CryptographicMessageSyntaxAlgorithms-2009 + { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) modules(0) id-mod-cmsalg-2001-02(37) } + DEFINITIONS IMPLICIT TAGS ::= + BEGIN + IMPORTS + + ParamOptions, DIGEST-ALGORITHM, SIGNATURE-ALGORITHM, + PUBLIC-KEY, KEY-DERIVATION, KEY-WRAP, MAC-ALGORITHM, + KEY-AGREE, KEY-TRANSPORT, CONTENT-ENCRYPTION, ALGORITHM, + AlgorithmIdentifier{}, SMIME-CAPS + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + + pk-rsa, pk-dh, pk-dsa, rsaEncryption, DHPublicKey, dhpublicnumber + FROM PKIXAlgs-2009 + {iso(1) identified-organization(3) dod(6) + internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-algorithms2008-02(56)} + + cap-RC2CBC + FROM SecureMimeMessageV3dot1-2009 + {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) modules(0) id-mod-msg-v3dot1-02(39)}; + + -- 2. Hash algorithms in this document + + MessageDigestAlgs DIGEST-ALGORITHM ::= { + -- mda-md5 | mda-sha1, + ... } + + -- 3. Signature algorithms in this document + + SignatureAlgs SIGNATURE-ALGORITHM ::= { + -- See RFC 3279 + -- sa-dsaWithSHA1 | sa-rsaWithMD5 | sa-rsaWithSHA1, + ... } + + -- 4. Key Management Algorithms + -- 4.1 Key Agreement Algorithms + + KeyAgreementAlgs KEY-AGREE ::= { kaa-esdh | kaa-ssdh, ...} + KeyAgreePublicKeys PUBLIC-KEY ::= { pk-dh, ...} + + -- 4.2 Key Transport Algorithms + + KeyTransportAlgs KEY-TRANSPORT ::= { kt-rsa, ... } + + -- 4.3 Symmetric Key-Encryption Key Algorithms + + KeyWrapAlgs KEY-WRAP ::= { kwa-3DESWrap | kwa-RC2Wrap, ... } + + -- 4.4 Key Derivation Algorithms + + KeyDerivationAlgs KEY-DERIVATION ::= { kda-PBKDF2, ... } + + -- 5. Content Encryption Algorithms + + ContentEncryptionAlgs CONTENT-ENCRYPTION ::= + { cea-3DES-cbc | cea-RC2-cbc, ... } + + -- 6. Message Authentication Code Algorithms + + MessageAuthAlgs MAC-ALGORITHM ::= { maca-hMAC-SHA1, ... } + + -- S/MIME Capabilities for these items + + SMimeCaps SMIME-CAPS ::= { + kaa-esdh.&smimeCaps | + kaa-ssdh.&smimeCaps | + kt-rsa.&smimeCaps | + kwa-3DESWrap.&smimeCaps | + kwa-RC2Wrap.&smimeCaps | + cea-3DES-cbc.&smimeCaps | + cea-RC2-cbc.&smimeCaps | + maca-hMAC-SHA1.&smimeCaps, + ...} + + -- + -- + -- + + -- Algorithm Identifiers + + -- rsaEncryption OBJECT IDENTIFIER ::= { iso(1) member-body(2) + -- us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 1 } + + id-alg-ESDH OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) + rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 5 } + + id-alg-SSDH OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) + rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 10 } + + id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 } + + id-alg-CMSRC2wrap OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 7 } + + des-ede3-cbc OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) encryptionAlgorithm(3) 7 } + + rc2-cbc OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) + rsadsi(113549) encryptionAlgorithm(3) 2 } + + hMAC-SHA1 OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) + dod(6) internet(1) security(5) mechanisms(5) 8 1 2 } + + id-PBKDF2 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) + rsadsi(113549) pkcs(1) pkcs-5(5) 12 } + + -- Algorithm Identifier Parameter Types + + KeyWrapAlgorithm ::= + AlgorithmIdentifier {KEY-WRAP, {KeyWrapAlgs }} + + RC2wrapParameter ::= RC2ParameterVersion + RC2ParameterVersion ::= INTEGER + + CBCParameter ::= IV + + IV ::= OCTET STRING -- exactly 8 octets + + RC2CBCParameter ::= SEQUENCE { + rc2ParameterVersion INTEGER (1..256), + iv OCTET STRING } -- exactly 8 octets + + maca-hMAC-SHA1 MAC-ALGORITHM ::= { + IDENTIFIER hMAC-SHA1 + PARAMS TYPE NULL ARE preferredAbsent + IS-KEYED-MAC TRUE + SMIME-CAPS {IDENTIFIED BY hMAC-SHA1} + } + + PBKDF2-PRFsAlgorithmIdentifier ::= AlgorithmIdentifier{ ALGORITHM, + {PBKDF2-PRFs} } + + alg-hMAC-SHA1 ALGORITHM ::= + { IDENTIFIER hMAC-SHA1 PARAMS TYPE NULL ARE required } + + PBKDF2-PRFs ALGORITHM ::= { alg-hMAC-SHA1, ... } + + PBKDF2-SaltSources ALGORITHM ::= { ... } + + PBKDF2-SaltSourcesAlgorithmIdentifier ::= + AlgorithmIdentifier {ALGORITHM, {PBKDF2-SaltSources}} + + defaultPBKDF2 PBKDF2-PRFsAlgorithmIdentifier ::= + { algorithm alg-hMAC-SHA1.&id, parameters NULL:NULL } + + PBKDF2-params ::= SEQUENCE { + salt CHOICE { + specified OCTET STRING, + otherSource PBKDF2-SaltSourcesAlgorithmIdentifier }, + iterationCount INTEGER (1..MAX), + keyLength INTEGER (1..MAX) OPTIONAL, + prf PBKDF2-PRFsAlgorithmIdentifier DEFAULT + defaultPBKDF2 + } + + -- + -- This object is included for completeness. It should not be used + -- for encoding of signatures, but was sometimes used in older + -- versions of CMS for encoding of RSA signatures. + -- + -- + -- sa-rsa SIGNATURE-ALGORITHM ::= { + -- IDENTIFIER rsaEncryption + -- - - value is not ASN.1 encoded + -- PARAMS TYPE NULL ARE required + -- HASHES {mda-sha1 | mda-md5, ...} + -- PUBLIC-KEYS { pk-rsa} + -- } + -- + -- No ASN.1 encoding is applied to the signature value + -- for these items + + kaa-esdh KEY-AGREE ::= { + IDENTIFIER id-alg-ESDH + PARAMS TYPE KeyWrapAlgorithm ARE required + PUBLIC-KEYS { pk-dh } + -- UKM is not ASN.1 encoded + UKM ARE optional + SMIME-CAPS {TYPE KeyWrapAlgorithm IDENTIFIED BY id-alg-ESDH} + } + + kaa-ssdh KEY-AGREE ::= { + IDENTIFIER id-alg-SSDH + PARAMS TYPE KeyWrapAlgorithm ARE required + PUBLIC-KEYS {pk-dh} + -- UKM is not ASN.1 encoded + UKM ARE optional + SMIME-CAPS {TYPE KeyWrapAlgorithm IDENTIFIED BY id-alg-SSDH} + } + + dh-public-number OBJECT IDENTIFIER ::= dhpublicnumber + + pk-originator-dh PUBLIC-KEY ::= { + IDENTIFIER dh-public-number + KEY DHPublicKey + PARAMS ARE absent + CERT-KEY-USAGE {keyAgreement, encipherOnly, decipherOnly} + } + + kwa-3DESWrap KEY-WRAP ::= { + IDENTIFIER id-alg-CMS3DESwrap + PARAMS TYPE NULL ARE required + SMIME-CAPS {IDENTIFIED BY id-alg-CMS3DESwrap} + } + + kwa-RC2Wrap KEY-WRAP ::= { + IDENTIFIER id-alg-CMSRC2wrap + PARAMS TYPE RC2wrapParameter ARE required + SMIME-CAPS { IDENTIFIED BY id-alg-CMSRC2wrap } + } + + kda-PBKDF2 KEY-DERIVATION ::= { + IDENTIFIER id-PBKDF2 + PARAMS TYPE PBKDF2-params ARE required + -- No S/MIME caps defined + } + + cea-3DES-cbc CONTENT-ENCRYPTION ::= { + IDENTIFIER des-ede3-cbc + PARAMS TYPE IV ARE required + SMIME-CAPS { IDENTIFIED BY des-ede3-cbc } + } + + cea-RC2-cbc CONTENT-ENCRYPTION ::= { + IDENTIFIER rc2-cbc + PARAMS TYPE RC2CBCParameter ARE required + SMIME-CAPS cap-RC2CBC + } + + kt-rsa KEY-TRANSPORT ::= { + IDENTIFIER rsaEncryption + PARAMS TYPE NULL ARE required + PUBLIC-KEYS { pk-rsa } + SMIME-CAPS {IDENTIFIED BY rsaEncryption} + } + + -- S/MIME Capabilities - most have no label. + + cap-3DESwrap SMIME-CAPS ::= { IDENTIFIED BY id-alg-CMS3DESwrap } + + END diff --git a/priv/mhs/DOR-definition.asn1 b/priv/mhs/DOR-definition.asn1 new file mode 100644 index 0000000..cd3330d --- /dev/null +++ b/priv/mhs/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/priv/mhs/DSAOperationalAttributeTypes.asn1 b/priv/mhs/DSAOperationalAttributeTypes.asn1 new file mode 100644 index 0000000..df5e848 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Default-Value-Lists.asn1 b/priv/mhs/Default-Value-Lists.asn1 new file mode 100644 index 0000000..ef1187b --- /dev/null +++ b/priv/mhs/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/priv/mhs/DirectoryAbstractService.asn1 b/priv/mhs/DirectoryAbstractService.asn1 new file mode 100644 index 0000000..5a5d310 --- /dev/null +++ b/priv/mhs/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/priv/mhs/DirectoryAccessProtocol.asn1 b/priv/mhs/DirectoryAccessProtocol.asn1 new file mode 100644 index 0000000..f0aa6fa --- /dev/null +++ b/priv/mhs/DirectoryAccessProtocol.asn1 @@ -0,0 +1,161 @@ +-- 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/priv/mhs/DirectoryInformationShadowProtocol.asn1 b/priv/mhs/DirectoryInformationShadowProtocol.asn1 new file mode 100644 index 0000000..91c0a86 --- /dev/null +++ b/priv/mhs/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/priv/mhs/DirectoryOperationalBindingManagementProtocol.asn1 b/priv/mhs/DirectoryOperationalBindingManagementProtocol.asn1 new file mode 100644 index 0000000..e3e1f95 --- /dev/null +++ b/priv/mhs/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/priv/mhs/DirectoryOperationalBindingTypes.asn1 b/priv/mhs/DirectoryOperationalBindingTypes.asn1 new file mode 100644 index 0000000..9df5d27 --- /dev/null +++ b/priv/mhs/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/priv/mhs/DirectoryShadowAbstractService.asn1 b/priv/mhs/DirectoryShadowAbstractService.asn1 new file mode 100644 index 0000000..acbb692 --- /dev/null +++ b/priv/mhs/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/priv/mhs/DirectorySystemProtocol.asn1 b/priv/mhs/DirectorySystemProtocol.asn1 new file mode 100644 index 0000000..cace79d --- /dev/null +++ b/priv/mhs/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/priv/mhs/DistributedOperations.asn1 b/priv/mhs/DistributedOperations.asn1 new file mode 100644 index 0000000..72e791f --- /dev/null +++ b/priv/mhs/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/priv/mhs/Document-Profile-Descriptor.asn1 b/priv/mhs/Document-Profile-Descriptor.asn1 new file mode 100644 index 0000000..d8c15b7 --- /dev/null +++ b/priv/mhs/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/priv/mhs/EnhancedSecurity.asn1 b/priv/mhs/EnhancedSecurity.asn1 new file mode 100644 index 0000000..9991a59 --- /dev/null +++ b/priv/mhs/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/priv/mhs/External-References.asn1 b/priv/mhs/External-References.asn1 new file mode 100644 index 0000000..9a7d493 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Geo-Gr-Coding-Attributes.asn1 b/priv/mhs/Geo-Gr-Coding-Attributes.asn1 new file mode 100644 index 0000000..60acbb3 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Geo-Gr-Presentation-Attributes.asn1 b/priv/mhs/Geo-Gr-Presentation-Attributes.asn1 new file mode 100644 index 0000000..84c1ee9 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Geo-Gr-Profile-Attributes.asn1 b/priv/mhs/Geo-Gr-Profile-Attributes.asn1 new file mode 100644 index 0000000..28daa46 --- /dev/null +++ b/priv/mhs/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/priv/mhs/HierarchicalOperationalBindings.asn1 b/priv/mhs/HierarchicalOperationalBindings.asn1 new file mode 100644 index 0000000..4e0084b --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSAbstractService.asn1 b/priv/mhs/IPMSAbstractService.asn1 new file mode 100644 index 0000000..3fec8ae --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSAutoActionTypes.asn1 b/priv/mhs/IPMSAutoActionTypes.asn1 new file mode 100644 index 0000000..8c0c813 --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSExtendedBodyPartTypes.asn1 b/priv/mhs/IPMSExtendedBodyPartTypes.asn1 new file mode 100644 index 0000000..9805a61 --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSExtendedBodyPartTypes2.asn1 b/priv/mhs/IPMSExtendedBodyPartTypes2.asn1 new file mode 100644 index 0000000..b39e03c --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSExtendedVoiceBodyPartType.asn1 b/priv/mhs/IPMSExtendedVoiceBodyPartType.asn1 new file mode 100644 index 0000000..171f4b4 --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSFileTransferBodyPartType.asn1 b/priv/mhs/IPMSFileTransferBodyPartType.asn1 new file mode 100644 index 0000000..59de6d1 --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSForwardedContentBodyPartType.asn1 b/priv/mhs/IPMSForwardedContentBodyPartType.asn1 new file mode 100644 index 0000000..57faac6 --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSForwardedReportBodyPartType.asn1 b/priv/mhs/IPMSForwardedReportBodyPartType.asn1 new file mode 100644 index 0000000..4e46c76 --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSFunctionalObjects.asn1 b/priv/mhs/IPMSFunctionalObjects.asn1 new file mode 100644 index 0000000..09ef4de --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSHeadingExtensions.asn1 b/priv/mhs/IPMSHeadingExtensions.asn1 new file mode 100644 index 0000000..752e8d0 --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSInformationObjects.asn1 b/priv/mhs/IPMSInformationObjects.asn1 new file mode 100644 index 0000000..3fb0463 --- /dev/null +++ b/priv/mhs/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 ¶meters 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 { + ¶meters TYPE-IDENTIFIER OPTIONAL, + &data TYPE-IDENTIFIER +}WITH SYNTAX {[PARAMETERS ¶meters,] + 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/priv/mhs/IPMSMessageStoreAttributes.asn1 b/priv/mhs/IPMSMessageStoreAttributes.asn1 new file mode 100644 index 0000000..719bca4 --- /dev/null +++ b/priv/mhs/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.¶meters.&Type, + NUMERATION multi-valued, + ID ebpt.¶meters.&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/priv/mhs/IPMSObjectIdentifiers.asn1 b/priv/mhs/IPMSObjectIdentifiers.asn1 new file mode 100644 index 0000000..6e5c01a --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSObjectIdentifiers2.asn1 b/priv/mhs/IPMSObjectIdentifiers2.asn1 new file mode 100644 index 0000000..2b46b27 --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSSecurityExtensions.asn1 b/priv/mhs/IPMSSecurityExtensions.asn1 new file mode 100644 index 0000000..8c692cc --- /dev/null +++ b/priv/mhs/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/priv/mhs/IPMSUpperBounds.asn1 b/priv/mhs/IPMSUpperBounds.asn1 new file mode 100644 index 0000000..27324f6 --- /dev/null +++ b/priv/mhs/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/priv/mhs/ISO-STANDARD-9541-FONT-ATTRIBUTE-SET.asn1 b/priv/mhs/ISO-STANDARD-9541-FONT-ATTRIBUTE-SET.asn1 new file mode 100644 index 0000000..b7efd74 --- /dev/null +++ b/priv/mhs/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/priv/mhs/ISO8571-FTAM.asn1 b/priv/mhs/ISO8571-FTAM.asn1 new file mode 100644 index 0000000..3765eb5 --- /dev/null +++ b/priv/mhs/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 concurrent 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. +-- At least 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 extension 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/priv/mhs/ISO9541-SN.asn1 b/priv/mhs/ISO9541-SN.asn1 new file mode 100644 index 0000000..0149602 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Identifiers-and-Expressions.asn1 b/priv/mhs/Identifiers-and-Expressions.asn1 new file mode 100644 index 0000000..bd1d8d3 --- /dev/null +++ b/priv/mhs/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/priv/mhs/InformationFramework.asn1 b/priv/mhs/InformationFramework.asn1 new file mode 100644 index 0000000..813ac9c --- /dev/null +++ b/priv/mhs/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/priv/mhs/Interchange-Data-Elements.asn1 b/priv/mhs/Interchange-Data-Elements.asn1 new file mode 100644 index 0000000..2c78360 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Layout-Descriptors.asn1 b/priv/mhs/Layout-Descriptors.asn1 new file mode 100644 index 0000000..92c887b --- /dev/null +++ b/priv/mhs/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/priv/mhs/Link-Descriptors.asn1 b/priv/mhs/Link-Descriptors.asn1 new file mode 100644 index 0000000..64fc443 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Location-Expressions.asn1 b/priv/mhs/Location-Expressions.asn1 new file mode 100644 index 0000000..5de6491 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Logical-Descriptors.asn1 b/priv/mhs/Logical-Descriptors.asn1 new file mode 100644 index 0000000..fab36bf --- /dev/null +++ b/priv/mhs/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/priv/mhs/MHSObjectIdentifiers.asn1 b/priv/mhs/MHSObjectIdentifiers.asn1 new file mode 100644 index 0000000..187c3c8 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MHSProtocolObjectIdentifiers.asn1 b/priv/mhs/MHSProtocolObjectIdentifiers.asn1 new file mode 100644 index 0000000..40f53b9 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MSAbstractService.asn1 b/priv/mhs/MSAbstractService.asn1 new file mode 100644 index 0000000..4db1187 --- /dev/null +++ b/priv/mhs/MSAbstractService.asn1 @@ -0,0 +1,1079 @@ +-- 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/priv/mhs/MSAccessProtocol.asn1 b/priv/mhs/MSAccessProtocol.asn1 new file mode 100644 index 0000000..9cf922b --- /dev/null +++ b/priv/mhs/MSAccessProtocol.asn1 @@ -0,0 +1,261 @@ +-- 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 + +EXPORTS ALL; + +-- 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/priv/mhs/MSGeneralAttributeTypes.asn1 b/priv/mhs/MSGeneralAttributeTypes.asn1 new file mode 100644 index 0000000..99d34b2 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MSGeneralAutoActionTypes.asn1 b/priv/mhs/MSGeneralAutoActionTypes.asn1 new file mode 100644 index 0000000..eceae4a --- /dev/null +++ b/priv/mhs/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/priv/mhs/MSMatchingRules.asn1 b/priv/mhs/MSMatchingRules.asn1 new file mode 100644 index 0000000..37c894d --- /dev/null +++ b/priv/mhs/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/priv/mhs/MSObjectIdentifiers.asn1 b/priv/mhs/MSObjectIdentifiers.asn1 new file mode 100644 index 0000000..df194f8 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MSUpperBounds.asn1 b/priv/mhs/MSUpperBounds.asn1 new file mode 100644 index 0000000..6494fbd --- /dev/null +++ b/priv/mhs/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/priv/mhs/MTAAbstractService.asn1 b/priv/mhs/MTAAbstractService.asn1 new file mode 100644 index 0000000..38035c7 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MTSAbstractService.asn1 b/priv/mhs/MTSAbstractService.asn1 new file mode 100644 index 0000000..68a5118 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MTSAbstractService88.asn1 b/priv/mhs/MTSAbstractService88.asn1 new file mode 100644 index 0000000..f66d117 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MTSAccessProtocol.asn1 b/priv/mhs/MTSAccessProtocol.asn1 new file mode 100644 index 0000000..03181c5 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MTSObjectIdentifiers.asn1 b/priv/mhs/MTSObjectIdentifiers.asn1 new file mode 100644 index 0000000..1615b24 --- /dev/null +++ b/priv/mhs/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/priv/mhs/MTSUpperBounds.asn1 b/priv/mhs/MTSUpperBounds.asn1 new file mode 100644 index 0000000..10eac96 --- /dev/null +++ b/priv/mhs/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/priv/mhs/OperationalBindingManagement.asn1 b/priv/mhs/OperationalBindingManagement.asn1 new file mode 100644 index 0000000..535f767 --- /dev/null +++ b/priv/mhs/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/priv/mhs/PKCS-10.asn1 b/priv/mhs/PKCS-10.asn1 new file mode 100644 index 0000000..5099af8 --- /dev/null +++ b/priv/mhs/PKCS-10.asn1 @@ -0,0 +1,51 @@ + + PKCS-10 { iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkcs10-2009(69) } + + DEFINITIONS IMPLICIT TAGS ::= + BEGIN + IMPORTS + + AlgorithmIdentifier{}, DIGEST-ALGORITHM, SIGNATURE-ALGORITHM, PUBLIC-KEY + FROM AlgorithmInformation-2009 { iso(1) identified-organization(3) + dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58) } + + ATTRIBUTE, Name + FROM PKIX1Explicit-2009 { iso(1) identified-organization(3) + dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-explicit-02(51) }; + + -- Certificate requests + CertificationRequestInfo ::= SEQUENCE { + version INTEGER { v1(0) } (v1, ... ), + subject Name, + subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }}, + attributes [0] Attributes{{ CRIAttributes }}} + + SubjectPublicKeyInfo {PUBLIC-KEY: IOSet} ::= SEQUENCE { + algorithm AlgorithmIdentifier {PUBLIC-KEY, {IOSet}}, + subjectPublicKey BIT STRING } + + PKInfoAlgorithms PUBLIC-KEY ::= { + ... -- add any locally defined algorithms here -- } + + Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }} + + CRIAttributes ATTRIBUTE ::= { + ... -- add any locally defined attributes here -- } + + Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE { + type ATTRIBUTE.&id({IOSet}), + values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})} + + CertificationRequest ::= SEQUENCE { + certificationRequestInfo CertificationRequestInfo, + signatureAlgorithm AlgorithmIdentifier{SIGNATURE-ALGORITHM, + { SignatureAlgorithms }}, + signature BIT STRING } + + SignatureAlgorithms SIGNATURE-ALGORITHM ::= { + ... -- add any locally defined algorithms here -- } + + END diff --git a/priv/mhs/PKCS-12.asn1 b/priv/mhs/PKCS-12.asn1 new file mode 100644 index 0000000..5b37a55 --- /dev/null +++ b/priv/mhs/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/priv/mhs/PKCS-5.asn1 b/priv/mhs/PKCS-5.asn1 new file mode 100644 index 0000000..91b0dc3 --- /dev/null +++ b/priv/mhs/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/priv/mhs/PKCS-7.asn1 b/priv/mhs/PKCS-7.asn1 new file mode 100644 index 0000000..4cea8db --- /dev/null +++ b/priv/mhs/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/priv/mhs/PKCS-8.asn1 b/priv/mhs/PKCS-8.asn1 new file mode 100644 index 0000000..266f901 --- /dev/null +++ b/priv/mhs/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/priv/mhs/PKCS-9.asn1 b/priv/mhs/PKCS-9.asn1 new file mode 100644 index 0000000..cd561f4 --- /dev/null +++ b/priv/mhs/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/priv/mhs/PKCS7BodyPartType.asn1 b/priv/mhs/PKCS7BodyPartType.asn1 new file mode 100644 index 0000000..1bcc228 --- /dev/null +++ b/priv/mhs/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/priv/mhs/PKIX-CommonTypes-2009.asn1 b/priv/mhs/PKIX-CommonTypes-2009.asn1 new file mode 100644 index 0000000..fde5bdd --- /dev/null +++ b/priv/mhs/PKIX-CommonTypes-2009.asn1 @@ -0,0 +1,166 @@ + PKIX-CommonTypes-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)} + + DEFINITIONS EXPLICIT TAGS ::= + BEGIN + + -- ATTRIBUTE + -- + -- Describe the set of data associated with an attribute of some type + -- + -- &id is an OID identifying the attribute + -- &Type is the ASN.1 type structure for the attribute; not all + -- attributes have a data structure, so this field is optional + -- &minCount contains the minimum number of times the attribute can + -- occur in an AttributeSet + -- &maxCount contains the maximum number of times the attribute can + -- appear in an AttributeSet + -- Note: this cannot be automatically enforced as the field + -- cannot be defaulted to MAX. + -- &equality-match contains information about how matching should be + -- done + -- + -- Currently we are using two different prefixes for attributes. + -- + -- at- for certificate attributes + -- aa- for CMS attributes + -- + + ATTRIBUTE ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &Type OPTIONAL, + &equality-match MATCHING-RULE OPTIONAL, + &minCount INTEGER DEFAULT 1, + &maxCount INTEGER OPTIONAL + } WITH SYNTAX { + [TYPE &Type] + [EQUALITY MATCHING RULE &equality-match] + [COUNTS [MIN &minCount] [MAX &maxCount]] + IDENTIFIED BY &id + } + + -- Specification of MATCHING-RULE information object class + -- + + MATCHING-RULE ::= CLASS { + &ParentMatchingRules MATCHING-RULE OPTIONAL, + &AssertionType OPTIONAL, + &uniqueMatchIndicator ATTRIBUTE OPTIONAL, + &id OBJECT IDENTIFIER UNIQUE + } + WITH SYNTAX { + [PARENT &ParentMatchingRules] + [SYNTAX &AssertionType] + [UNIQUE-MATCH-INDICATOR &uniqueMatchIndicator] + ID &id + } + + -- AttributeSet + -- + -- Used when a set of attributes is to occur. + -- + -- type contains the identifier of the attribute + -- values contains a set of values where the structure of the ASN.1 + -- is defined by the attribute + -- + -- The parameter contains the set of objects describing + -- those attributes that can occur in this location. + -- + + AttributeSet{ATTRIBUTE:AttrSet} ::= SEQUENCE { + type ATTRIBUTE.&id({AttrSet}), + values SET SIZE (1..MAX) OF ATTRIBUTE. + &Type({AttrSet}{@type}) + } + + -- SingleAttribute + -- + -- Used for a single valued attribute + -- + -- The parameter contains the set of objects describing the + -- attributes that can occur in this location + -- + + SingleAttribute{ATTRIBUTE:AttrSet} ::= SEQUENCE { + type ATTRIBUTE.&id({AttrSet}), + value ATTRIBUTE.&Type({AttrSet}{@type}) + } + + -- EXTENSION + -- + -- This class definition is used to describe the association of + -- object identifier and ASN.1 type structure for extensions + -- + -- All extensions are prefixed with ext- + -- + -- &id contains the object identifier for the extension + -- &ExtnType specifies the ASN.1 type structure for the extension + -- &Critical contains the set of legal values for the critical field. + -- This is normally {TRUE|FALSE} but in some instances may be + -- restricted to just one of these values. + -- + + EXTENSION ::= CLASS { + &id OBJECT IDENTIFIER UNIQUE, + &ExtnType, + &Critical BOOLEAN DEFAULT {TRUE | FALSE } + } WITH SYNTAX { + SYNTAX &ExtnType IDENTIFIED BY &id + [CRITICALITY &Critical] + } + + -- Extensions + -- + -- Used for a sequence of extensions. + -- + -- The parameter contains the set of legal extensions that can + -- occur in this sequence. + -- + + Extensions{EXTENSION:ExtensionSet} ::= + SEQUENCE SIZE (1..MAX) OF Extension{{ExtensionSet}} + + -- Extension + -- + -- Used for a single extension + -- + -- The parameter contains the set of legal extensions that can + -- occur in this extension. + -- + -- The restriction on the critical field has been commented out + -- the authors are not completely sure it is correct. + -- The restriction could be done using custom code rather than + -- compiler-generated code, however. + -- + + Extension{EXTENSION:ExtensionSet} ::= SEQUENCE { + extnID EXTENSION.&id({ExtensionSet}), + critical BOOLEAN + -- (EXTENSION.&Critical({ExtensionSet}{@extnID})) + DEFAULT FALSE, + extnValue OCTET STRING (CONTAINING + EXTENSION.&ExtnType({ExtensionSet}{@extnID})) + -- contains the DER encoding of the ASN.1 value + -- corresponding to the extension type identified + -- by extnID + } + + -- Security Category + -- + -- Security categories are used both for specifying clearances and + -- for labeling objects. We move this here from RFC 3281 so that + -- they will use a common single object class to express this + -- information. + -- + + SECURITY-CATEGORY ::= TYPE-IDENTIFIER + + SecurityCategory{SECURITY-CATEGORY:Supported} ::= SEQUENCE { + type [0] IMPLICIT SECURITY-CATEGORY. + &id({Supported}), + value [1] EXPLICIT SECURITY-CATEGORY. + &Type({Supported}{@type}) + } + + END diff --git a/priv/mhs/PKIX-X400Address-2009.asn1 b/priv/mhs/PKIX-X400Address-2009.asn1 new file mode 100644 index 0000000..41cbaea --- /dev/null +++ b/priv/mhs/PKIX-X400Address-2009.asn1 @@ -0,0 +1,300 @@ + -- + -- This module is used to isolate all the X.400 naming information. + -- There is no reason to expect this to occur in a PKIX certificate. + -- + + PKIX-X400Address-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-x400address-02(60) } + DEFINITIONS EXPLICIT TAGS ::= + BEGIN + + -- X.400 address syntax starts here + + ORAddress ::= SEQUENCE { + built-in-standard-attributes BuiltInStandardAttributes, + built-in-domain-defined-attributes + BuiltInDomainDefinedAttributes OPTIONAL, + + -- see also teletex-domain-defined-attributes + extension-attributes ExtensionAttributes OPTIONAL } + + -- Built-in Standard Attributes + + BuiltInStandardAttributes ::= SEQUENCE { + country-name CountryName OPTIONAL, + administration-domain-name AdministrationDomainName OPTIONAL, + network-address [0] IMPLICIT NetworkAddress OPTIONAL, + -- see also extended-network-address + terminal-identifier [1] IMPLICIT TerminalIdentifier OPTIONAL, + private-domain-name [2] PrivateDomainName OPTIONAL, + organization-name [3] IMPLICIT OrganizationName OPTIONAL, + -- see also teletex-organization-name + numeric-user-identifier [4] IMPLICIT NumericUserIdentifier + OPTIONAL, + personal-name [5] IMPLICIT PersonalName OPTIONAL, + -- see also teletex-personal-name + organizational-unit-names [6] IMPLICIT 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] IMPLICIT PrintableString + (SIZE (1..ub-surname-length)), + given-name [1] IMPLICIT PrintableString + (SIZE (1..ub-given-name-length)) OPTIONAL, + initials [2] IMPLICIT PrintableString + (SIZE (1..ub-initials-length)) OPTIONAL, + generation-qualifier [3] IMPLICIT 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 + + EXTENSION-ATTRIBUTE ::= CLASS { + &id INTEGER (0..ub-extension-attributes) UNIQUE, + &Type + } WITH SYNTAX { &Type IDENTIFIED BY &id } + + ExtensionAttribute ::= SEQUENCE { + extension-attribute-type [0] IMPLICIT EXTENSION-ATTRIBUTE. + &id({SupportedExtensionAttributes}), + extension-attribute-value [1] EXTENSION-ATTRIBUTE. + &Type({SupportedExtensionAttributes} + {@extension-attribute-type})} + + SupportedExtensionAttributes EXTENSION-ATTRIBUTE ::= { + ea-commonName | ea-teletexCommonName | ea-teletexOrganizationName + | ea-teletexPersonalName | ea-teletexOrganizationalUnitNames | + ea-pDSName | ea-physicalDeliveryCountryName | ea-postalCode | + ea-physicalDeliveryOfficeName | ea-physicalDeliveryOfficeNumber | + ea-extensionORAddressComponents | ea-physicalDeliveryPersonalName + | ea-physicalDeliveryOrganizationName | + ea-extensionPhysicalDeliveryAddressComponents | + ea-unformattedPostalAddress | ea-streetAddress | + ea-postOfficeBoxAddress | ea-posteRestanteAddress | + ea-uniquePostalName | ea-localPostalAttributes | + ea-extendedNetworkAddress | ea-terminalType | + ea-teletexDomainDefinedAttributes, ... } + + -- Extension types and attribute values + + ea-commonName EXTENSION-ATTRIBUTE ::= { PrintableString + (SIZE (1..ub-common-name-length)) IDENTIFIED BY 1 } + + ea-teletexCommonName EXTENSION-ATTRIBUTE ::= {TeletexString + (SIZE (1..ub-common-name-length)) IDENTIFIED BY 2 } + + ea-teletexOrganizationName EXTENSION-ATTRIBUTE::= { TeletexString + (SIZE (1..ub-organization-name-length)) IDENTIFIED BY 3 } + + ea-teletexPersonalName EXTENSION-ATTRIBUTE ::= {SET { + surname [0] IMPLICIT TeletexString + (SIZE (1..ub-surname-length)), + given-name [1] IMPLICIT TeletexString + (SIZE (1..ub-given-name-length)) OPTIONAL, + initials [2] IMPLICIT TeletexString + (SIZE (1..ub-initials-length)) OPTIONAL, + generation-qualifier [3] IMPLICIT TeletexString + (SIZE (1..ub-generation-qualifier-length)) + OPTIONAL } IDENTIFIED BY 4 } + + ea-teletexOrganizationalUnitNames EXTENSION-ATTRIBUTE ::= + { SEQUENCE SIZE (1..ub-organizational-units) OF + TeletexOrganizationalUnitName IDENTIFIED BY 5 } + + TeletexOrganizationalUnitName ::= TeletexString + (SIZE (1..ub-organizational-unit-name-length)) + + ea-pDSName EXTENSION-ATTRIBUTE ::= {PrintableString + (SIZE (1..ub-pds-name-length)) IDENTIFIED BY 7 } + + ea-physicalDeliveryCountryName EXTENSION-ATTRIBUTE ::= { CHOICE { + x121-dcc-code NumericString (SIZE + (ub-country-name-numeric-length)), + iso-3166-alpha2-code PrintableString + (SIZE (ub-country-name-alpha-length)) } + IDENTIFIED BY 8 } + + ea-postalCode EXTENSION-ATTRIBUTE ::= { CHOICE { + numeric-code NumericString (SIZE (1..ub-postal-code-length)), + printable-code PrintableString (SIZE (1..ub-postal-code-length)) } + IDENTIFIED BY 9 } + + ea-physicalDeliveryOfficeName EXTENSION-ATTRIBUTE ::= + { PDSParameter IDENTIFIED BY 10 } + + ea-physicalDeliveryOfficeNumber EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 11 } + + ea-extensionORAddressComponents EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 12 } + + ea-physicalDeliveryPersonalName EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 13} + + ea-physicalDeliveryOrganizationName EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 14 } + + ea-extensionPhysicalDeliveryAddressComponents EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 15 } + + ea-unformattedPostalAddress EXTENSION-ATTRIBUTE ::= { 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 } + IDENTIFIED BY 16 } + + ea-streetAddress EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 17 } + + ea-postOfficeBoxAddress EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 18 } + + ea-posteRestanteAddress EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 19 } + + ea-uniquePostalName EXTENSION-ATTRIBUTE ::= + { PDSParameter IDENTIFIED BY 20 } + + ea-localPostalAttributes EXTENSION-ATTRIBUTE ::= + {PDSParameter IDENTIFIED BY 21 } + PDSParameter ::= SET { + printable-string PrintableString + (SIZE(1..ub-pds-parameter-length)) OPTIONAL, + teletex-string TeletexString + (SIZE(1..ub-pds-parameter-length)) OPTIONAL } + + ea-extendedNetworkAddress EXTENSION-ATTRIBUTE ::= { + CHOICE { + e163-4-address SEQUENCE { + number [0] IMPLICIT NumericString + (SIZE (1..ub-e163-4-number-length)), + sub-address [1] IMPLICIT NumericString + (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL + }, + psap-address [0] IMPLICIT PresentationAddress + } IDENTIFIED BY 22 + } + + PresentationAddress ::= SEQUENCE { + pSelector [0] EXPLICIT OCTET STRING OPTIONAL, + sSelector [1] EXPLICIT OCTET STRING OPTIONAL, + tSelector [2] EXPLICIT OCTET STRING OPTIONAL, + nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING } + + ea-terminalType EXTENSION-ATTRIBUTE ::= {INTEGER { + telex (3), + teletex (4), + g3-facsimile (5), + g4-facsimile (6), + ia5-terminal (7), + videotex (8) } (0..ub-integer-options) + IDENTIFIED BY 23 } + + -- Extension Domain-defined Attributes + + ea-teletexDomainDefinedAttributes EXTENSION-ATTRIBUTE ::= + { SEQUENCE SIZE (1..ub-domain-defined-attributes) OF + TeletexDomainDefinedAttribute IDENTIFIED BY 6 } + + TeletexDomainDefinedAttribute ::= SEQUENCE { + type TeletexString + (SIZE (1..ub-domain-defined-attribute-type-length)), + value TeletexString + (SIZE (1..ub-domain-defined-attribute-value-length)) } + + -- specifications of Upper Bounds MUST be regarded as mandatory + -- from Annex B of ITU-T X.411 Reference Definition of MTS Parameter + -- Upper Bounds + -- Upper Bounds + ub-match INTEGER ::= 128 + ub-common-name-length INTEGER ::= 64 + ub-country-name-alpha-length INTEGER ::= 2 + ub-country-name-numeric-length INTEGER ::= 3 + 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-extension-attributes 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-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-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-surname-length INTEGER ::= 40 + ub-terminal-id-length INTEGER ::= 24 + ub-unformatted-address-length INTEGER ::= 180 + ub-x121-address-length INTEGER ::= 16 + + -- Note - upper bounds on string types, such as TeletexString, are + -- measured in characters. Excepting PrintableString or IA5String, a + -- significantly greater number of octets will be required to hold + -- such a value. As a minimum, 16 octets or twice the specified + -- upper bound, whichever is the larger, should be allowed for + -- TeletexString. For UTF8String or UniversalString, at least four + -- times the upper bound should be allowed. + + END diff --git a/priv/mhs/PKIX1-PSS-OAEP-Algorithms-2009.asn1 b/priv/mhs/PKIX1-PSS-OAEP-Algorithms-2009.asn1 new file mode 100644 index 0000000..b1232fb --- /dev/null +++ b/priv/mhs/PKIX1-PSS-OAEP-Algorithms-2009.asn1 @@ -0,0 +1,308 @@ + PKIX1-PSS-OAEP-Algorithms-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-rsa-pkalgs-02(54)} + DEFINITIONS EXPLICIT TAGS ::= + BEGIN + IMPORTS + + AlgorithmIdentifier{}, ALGORITHM, DIGEST-ALGORITHM, KEY-TRANSPORT, + SIGNATURE-ALGORITHM, PUBLIC-KEY, SMIME-CAPS + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + + id-sha1, mda-sha1, pk-rsa, RSAPublicKey + FROM PKIXAlgs-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-algorithms2008-02(56)}; + + -- ============================ + -- Object Set exports + -- ============================ + -- + -- Define top-level symbols with all of the objects defined for + -- export to other modules. These objects would be included as part + -- of an Object Set to restrict the set of legal values. + -- + + PublicKeys PUBLIC-KEY ::= { pk-rsaSSA-PSS | pk-rsaES-OAEP, ... } + SignatureAlgs SIGNATURE-ALGORITHM ::= { sa-rsaSSA-PSS, ...} + KeyTransportAlgs KEY-TRANSPORT ::= { kta-rsaES-OAEP, ... } + HashAlgs DIGEST-ALGORITHM ::= { mda-sha224 | mda-sha256 | mda-sha384 + | mda-sha512, ... } + SMimeCaps SMIME-CAPS ::= { + sa-rsaSSA-PSS.&smimeCaps | + kta-rsaES-OAEP.&smimeCaps, + ... + } + + -- ============================= + -- Algorithm Objects + -- ============================= + + -- + -- Public key object for PSS signatures + -- + + pk-rsaSSA-PSS PUBLIC-KEY ::= { + IDENTIFIER id-RSASSA-PSS + KEY RSAPublicKey + PARAMS TYPE RSASSA-PSS-params ARE optional + -- Private key format not in this module -- + CERT-KEY-USAGE { nonRepudiation, digitalSignature, + keyCertSign, cRLSign } + } + + -- + -- Signature algorithm definition for PSS signatures + -- + + sa-rsaSSA-PSS SIGNATURE-ALGORITHM ::= { + IDENTIFIER id-RSASSA-PSS + PARAMS TYPE RSASSA-PSS-params ARE required + HASHES { mda-sha1 | mda-sha224 | mda-sha256 | mda-sha384 + | mda-sha512 } + PUBLIC-KEYS { pk-rsa | pk-rsaSSA-PSS } + SMIME-CAPS { IDENTIFIED BY id-RSASSA-PSS } + } + + -- + -- Signature algorithm definitions for PKCS v1.5 signatures + -- + + sa-sha224WithRSAEncryption SIGNATURE-ALGORITHM ::= { + IDENTIFIER sha224WithRSAEncryption + PARAMS TYPE NULL ARE required + HASHES { mda-sha224 } + PUBLIC-KEYS { pk-rsa } + SMIME-CAPS { IDENTIFIED BY sha224WithRSAEncryption } + } + sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } + + sa-sha256WithRSAEncryption SIGNATURE-ALGORITHM ::= { + IDENTIFIER sha256WithRSAEncryption + PARAMS TYPE NULL ARE required + HASHES { mda-sha256 } + PUBLIC-KEYS { pk-rsa } + SMIME-CAPS { IDENTIFIED BY sha256WithRSAEncryption } + } + sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } + + sa-sha384WithRSAEncryption SIGNATURE-ALGORITHM ::= { + IDENTIFIER sha384WithRSAEncryption + PARAMS TYPE NULL ARE required + HASHES { mda-sha384 } + PUBLIC-KEYS { pk-rsa } + SMIME-CAPS { IDENTIFIED BY sha384WithRSAEncryption } + } + sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } + + sa-sha512WithRSAEncryption SIGNATURE-ALGORITHM ::= { + IDENTIFIER sha512WithRSAEncryption + PARAMS TYPE NULL ARE required + HASHES { mda-sha512 } + PUBLIC-KEYS { pk-rsa } + SMIME-CAPS { IDENTIFIED BY sha512WithRSAEncryption } + } + sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } + + -- + -- Public key definition for OAEP encryption + -- + + pk-rsaES-OAEP PUBLIC-KEY ::= { + IDENTIFIER id-RSAES-OAEP + KEY RSAPublicKey + PARAMS TYPE RSAES-OAEP-params ARE optional + -- Private key format not in this module -- + CERT-KEY-USAGE {keyEncipherment, dataEncipherment} + } + + -- + -- Key transport key lock definition for OAEP encryption + -- + + kta-rsaES-OAEP KEY-TRANSPORT ::= { + IDENTIFIER id-RSAES-OAEP + PARAMS TYPE RSAES-OAEP-params ARE required + PUBLIC-KEYS { pk-rsa | pk-rsaES-OAEP } + SMIME-CAPS { TYPE RSAES-OAEP-params IDENTIFIED BY id-RSAES-OAEP} + } + -- ============================ + -- Basic object identifiers + -- ============================ + + pkcs-1 OBJECT IDENTIFIER ::= + { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } + + -- When rsaEncryption is used in an AlgorithmIdentifier, the + -- parameters MUST be present and MUST be NULL. + -- rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } + + -- When id-RSAES-OAEP is used in an AlgorithmIdentifier, + -- and the parameters field is present, it MUST be + -- RSAES-OAEP-params. + + id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } + + -- When id-mgf1 is used in an AlgorithmIdentifier, the parameters + -- MUST be present and MUST be a HashAlgorithm. + + id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } + + -- When id-pSpecified is used in an AlgorithmIdentifier, the + -- parameters MUST be an OCTET STRING. + + id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } + + -- When id-RSASSA-PSS is used in an AlgorithmIdentifier, and the + -- parameters field is present, it MUST be RSASSA-PSS-params. + + id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } + + -- When the following OIDs are used in an AlgorithmIdentifier, the + -- parameters SHOULD be absent, but if the parameters are present, + -- they MUST be NULL. + + -- + -- id-sha1 is imported from RFC 3279. Additionally, the v1.5 + -- signature algorithms (i.e., rsaWithSHA256) are now solely placed + -- in that module. + -- + + id-sha224 OBJECT IDENTIFIER ::= + { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) + csor(3) nistAlgorithms(4) hashalgs(2) 4 } + + mda-sha224 DIGEST-ALGORITHM ::= { + IDENTIFIER id-sha224 + PARAMS TYPE NULL ARE preferredAbsent + } + + id-sha256 OBJECT IDENTIFIER ::= + { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) + csor(3) nistAlgorithms(4) hashalgs(2) 1 } + + mda-sha256 DIGEST-ALGORITHM ::= { + IDENTIFIER id-sha256 + PARAMS TYPE NULL ARE preferredAbsent + } + id-sha384 OBJECT IDENTIFIER ::= + { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) + csor(3) nistAlgorithms(4) hashalgs(2) 2 } + + mda-sha384 DIGEST-ALGORITHM ::= { + IDENTIFIER id-sha384 + PARAMS TYPE NULL ARE preferredAbsent + } + id-sha512 OBJECT IDENTIFIER ::= + { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) + csor(3) nistAlgorithms(4) hashalgs(2) 3 } + + mda-sha512 DIGEST-ALGORITHM ::= { + IDENTIFIER id-sha512 + PARAMS TYPE NULL ARE preferredAbsent + } + + -- ============= + -- Constants + -- ============= + + EncodingParameters ::= OCTET STRING(SIZE(0..MAX)) + + nullOctetString EncodingParameters ::= ''H + + nullParameters NULL ::= NULL + + -- ========================= + -- Algorithm Identifiers + -- ========================= + + HashAlgorithm ::= AlgorithmIdentifier{DIGEST-ALGORITHM, + {HashAlgorithms}} + + HashAlgorithms DIGEST-ALGORITHM ::= { + { IDENTIFIER id-sha1 PARAMS TYPE NULL ARE preferredPresent } | + { IDENTIFIER id-sha224 PARAMS TYPE NULL ARE preferredPresent } | + { IDENTIFIER id-sha256 PARAMS TYPE NULL ARE preferredPresent } | + { IDENTIFIER id-sha384 PARAMS TYPE NULL ARE preferredPresent } | + { IDENTIFIER id-sha512 PARAMS TYPE NULL ARE preferredPresent } + } + + sha1Identifier HashAlgorithm ::= { + algorithm id-sha1, + parameters NULL : NULL + } + + -- + -- We have a default algorithm - create the value here + -- + + MaskGenAlgorithm ::= AlgorithmIdentifier{ALGORITHM, + {PKCS1MGFAlgorithms}} + + mgf1SHA1 MaskGenAlgorithm ::= { + algorithm id-mgf1, + parameters HashAlgorithm : sha1Identifier + } + + -- + -- Define the set of mask generation functions + -- + -- If the identifier is id-mgf1, any of the listed hash + -- algorithms may be used. + -- + + PKCS1MGFAlgorithms ALGORITHM ::= { + { IDENTIFIER id-mgf1 PARAMS TYPE HashAlgorithm ARE required }, + ... + } + + -- + -- Define the set of known source algorithms for PSS + -- + + PSourceAlgorithm ::= AlgorithmIdentifier{ALGORITHM, + {PSS-SourceAlgorithms}} + + PSS-SourceAlgorithms ALGORITHM ::= { + { IDENTIFIER id-pSpecified PARAMS TYPE EncodingParameters + ARE required }, + ... + } + pSpecifiedEmpty PSourceAlgorithm ::= { + algorithm id-pSpecified, + parameters EncodingParameters : nullOctetString + } + + -- =================== + -- Main structures + -- =================== + + -- AlgorithmIdentifier parameters for id-RSASSA-PSS. + -- Note that the tags in this Sequence are explicit. + -- Note: The hash algorithm in hashAlgorithm and in + -- maskGenAlgorithm should be the same. + + RSASSA-PSS-params ::= SEQUENCE { + hashAlgorithm [0] HashAlgorithm DEFAULT sha1Identifier, + maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT mgf1SHA1, + saltLength [2] INTEGER DEFAULT 20, + trailerField [3] INTEGER DEFAULT 1 + } + + -- AlgorithmIdentifier parameters for id-RSAES-OAEP. + -- Note that the tags in this Sequence are explicit. + -- Note: The hash algorithm in hashFunc and in + -- maskGenFunc should be the same. + + RSAES-OAEP-params ::= SEQUENCE { + hashFunc [0] HashAlgorithm DEFAULT sha1Identifier, + maskGenFunc [1] MaskGenAlgorithm DEFAULT mgf1SHA1, + pSourceFunc [2] PSourceAlgorithm DEFAULT + pSpecifiedEmpty + } + + END diff --git a/priv/mhs/PKIX1Explicit-2009.asn1 b/priv/mhs/PKIX1Explicit-2009.asn1 new file mode 100644 index 0000000..926f287 --- /dev/null +++ b/priv/mhs/PKIX1Explicit-2009.asn1 @@ -0,0 +1,416 @@ + PKIX1Explicit-2009 + {iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-explicit-02(51)} + DEFINITIONS EXPLICIT TAGS ::= + BEGIN + + EXPORTS ALL; + IMPORTS + + Extensions{}, EXTENSION, ATTRIBUTE, SingleAttribute{} + FROM PKIX-CommonTypes-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)} + + AlgorithmIdentifier{}, PUBLIC-KEY, SIGNATURE-ALGORITHM + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + + CertExtensions, CrlExtensions, CrlEntryExtensions + FROM PKIX1Implicit-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)} + SignatureAlgs, PublicKeys + FROM PKIXAlgs-2009 + {iso(1) identified-organization(3) dod(6) + internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) 56} + + SignatureAlgs, PublicKeys + FROM PKIX1-PSS-OAEP-Algorithms-2009 + {iso(1) identified-organization(3) dod(6) + internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-rsa-pkalgs-02(54)} + + ORAddress + FROM PKIX-X400Address-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-x400address-02(60)}; + + id-pkix OBJECT IDENTIFIER ::= + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7)} + + -- PKIX arcs + + id-pe OBJECT IDENTIFIER ::= { id-pkix 1 } + -- arc for private certificate extensions + id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } + -- arc for policy qualifier types + id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } + -- arc for extended key purpose OIDs + id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } + -- arc for access descriptors + + -- policyQualifierIds for Internet policy qualifiers + + id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } + -- OID for CPS qualifier + id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } + -- OID for user notice qualifier + + -- access descriptor definitions + + id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 } + id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } + id-ad-timeStamping OBJECT IDENTIFIER ::= { id-ad 3 } + id-ad-caRepository OBJECT IDENTIFIER ::= { id-ad 5 } + + -- attribute data types + AttributeType ::= ATTRIBUTE.&id + + -- Replaced by SingleAttribute{} + -- + -- AttributeTypeAndValue ::= SEQUENCE { + -- type ATTRIBUTE.&id({SupportedAttributes}), + -- value ATTRIBUTE.&Type({SupportedAttributes}{@type}) } + -- + + -- Suggested naming attributes: Definition of the following + -- information object set may be augmented to meet local + -- requirements. Note that deleting members of the set may + -- prevent interoperability with conforming implementations. + -- All attributes are presented in pairs: the AttributeType + -- followed by the type definition for the corresponding + -- AttributeValue. + + -- Arc for standard naming attributes + + id-at OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 } + + -- Naming attributes of type X520name + + id-at-name AttributeType ::= { id-at 41 } + at-name ATTRIBUTE ::= { TYPE X520name IDENTIFIED BY id-at-name } + + id-at-surname AttributeType ::= { id-at 4 } + at-surname ATTRIBUTE ::= { TYPE X520name IDENTIFIED BY id-at-surname } + + id-at-givenName AttributeType ::= { id-at 42 } + at-givenName ATTRIBUTE ::= + { TYPE X520name IDENTIFIED BY id-at-givenName } + + id-at-initials AttributeType ::= { id-at 43 } + at-initials ATTRIBUTE ::= + { TYPE X520name IDENTIFIED BY id-at-initials } + + id-at-generationQualifier AttributeType ::= { id-at 44 } + at-generationQualifier ATTRIBUTE ::= + { TYPE X520name IDENTIFIED BY id-at-generationQualifier } + + -- Directory string type -- + + DirectoryString{INTEGER:maxSize} ::= CHOICE { + teletexString TeletexString(SIZE (1..maxSize)), + printableString PrintableString(SIZE (1..maxSize)), + bmpString BMPString(SIZE (1..maxSize)), + universalString UniversalString(SIZE (1..maxSize)), + uTF8String UTF8String(SIZE (1..maxSize)) + } + + X520name ::= DirectoryString {ub-name} + + -- Naming attributes of type X520CommonName + + id-at-commonName AttributeType ::= { id-at 3 } + + at-x520CommonName ATTRIBUTE ::= + {TYPE X520CommonName IDENTIFIED BY id-at-commonName } + + X520CommonName ::= DirectoryString {ub-common-name} + + -- Naming attributes of type X520LocalityName + + id-at-localityName AttributeType ::= { id-at 7 } + + at-x520LocalityName ATTRIBUTE ::= + { TYPE X520LocalityName IDENTIFIED BY id-at-localityName } + X520LocalityName ::= DirectoryString {ub-locality-name} + + -- Naming attributes of type X520StateOrProvinceName + + id-at-stateOrProvinceName AttributeType ::= { id-at 8 } + + at-x520StateOrProvinceName ATTRIBUTE ::= + { TYPE DirectoryString {ub-state-name} + IDENTIFIED BY id-at-stateOrProvinceName } + X520StateOrProvinceName ::= DirectoryString {ub-state-name} + + -- Naming attributes of type X520OrganizationName + + id-at-organizationName AttributeType ::= { id-at 10 } + + at-x520OrganizationName ATTRIBUTE ::= + { TYPE DirectoryString {ub-organization-name} + IDENTIFIED BY id-at-organizationName } + X520OrganizationName ::= DirectoryString {ub-organization-name} + + -- Naming attributes of type X520OrganizationalUnitName + + id-at-organizationalUnitName AttributeType ::= { id-at 11 } + + at-x520OrganizationalUnitName ATTRIBUTE ::= + { TYPE DirectoryString {ub-organizational-unit-name} + IDENTIFIED BY id-at-organizationalUnitName } + X520OrganizationalUnitName ::= DirectoryString + {ub-organizational-unit-name} + + -- Naming attributes of type X520Title + + id-at-title AttributeType ::= { id-at 12 } + + at-x520Title ATTRIBUTE ::= { TYPE DirectoryString { ub-title } + IDENTIFIED BY id-at-title } + + -- Naming attributes of type X520dnQualifier + + id-at-dnQualifier AttributeType ::= { id-at 46 } + + at-x520dnQualifier ATTRIBUTE ::= { TYPE PrintableString + IDENTIFIED BY id-at-dnQualifier } + + -- Naming attributes of type X520countryName (digraph from IS 3166) + + id-at-countryName AttributeType ::= { id-at 6 } + + at-x520countryName ATTRIBUTE ::= { TYPE PrintableString (SIZE (2)) + IDENTIFIED BY id-at-countryName } + + -- Naming attributes of type X520SerialNumber + + id-at-serialNumber AttributeType ::= { id-at 5 } + + at-x520SerialNumber ATTRIBUTE ::= {TYPE PrintableString + (SIZE (1..ub-serial-number)) IDENTIFIED BY id-at-serialNumber } + + -- Naming attributes of type X520Pseudonym + + id-at-pseudonym AttributeType ::= { id-at 65 } + + at-x520Pseudonym ATTRIBUTE ::= { TYPE DirectoryString {ub-pseudonym} + IDENTIFIED BY id-at-pseudonym } + + -- Naming attributes of type DomainComponent (from RFC 2247) + + id-domainComponent AttributeType ::= + { itu-t(0) data(9) pss(2342) ucl(19200300) pilot(100) + pilotAttributeType(1) 25 } + + at-domainComponent ATTRIBUTE ::= {TYPE IA5String + IDENTIFIED BY id-domainComponent } + + -- Legacy attributes + + pkcs-9 OBJECT IDENTIFIER ::= + { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } + id-emailAddress AttributeType ::= { pkcs-9 1 } + + at-emailAddress ATTRIBUTE ::= {TYPE IA5String + (SIZE (1..ub-emailaddress-length)) IDENTIFIED BY + id-emailAddress } + + -- naming data types -- + + Name ::= CHOICE { -- only one possibility for now -- + rdnSequence RDNSequence } + + RDNSequence ::= SEQUENCE OF RelativeDistinguishedName + + DistinguishedName ::= RDNSequence + + RelativeDistinguishedName ::= + SET SIZE (1 .. MAX) OF SingleAttribute { {SupportedAttributes} } + + -- These are the known name elements for a DN + + SupportedAttributes ATTRIBUTE ::= { + at-name | at-surname | at-givenName | at-initials | + at-generationQualifier | at-x520CommonName | + at-x520LocalityName | at-x520StateOrProvinceName | + at-x520OrganizationName | at-x520OrganizationalUnitName | + at-x520Title | at-x520dnQualifier | at-x520countryName | + at-x520SerialNumber | at-x520Pseudonym | at-domainComponent | + at-emailAddress, ... } + + -- + -- Certificate- and CRL-specific structures begin here + -- + + Certificate ::= SIGNED{TBSCertificate} + + TBSCertificate ::= SEQUENCE { + version [0] Version DEFAULT v1, + serialNumber CertificateSerialNumber, + signature AlgorithmIdentifier{SIGNATURE-ALGORITHM, + {SignatureAlgorithms}}, + issuer Name, + validity Validity, + subject Name, + subjectPublicKeyInfo SubjectPublicKeyInfo, + ... , + [[2: -- If present, version MUST be v2 + issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, + subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL + ]], + [[3: -- If present, version MUST be v3 -- + extensions [3] Extensions{{CertExtensions}} OPTIONAL + ]], ... } + + Version ::= INTEGER { v1(0), v2(1), v3(2) } + + CertificateSerialNumber ::= INTEGER + + Validity ::= SEQUENCE { + notBefore Time, + notAfter Time } + + Time ::= CHOICE { + utcTime UTCTime, + generalTime GeneralizedTime } + + UniqueIdentifier ::= BIT STRING + + SubjectPublicKeyInfo ::= SEQUENCE { + algorithm AlgorithmIdentifier{PUBLIC-KEY, + {PublicKeyAlgorithms}}, + subjectPublicKey BIT STRING } + + -- CRL structures + + CertificateList ::= SIGNED{TBSCertList} + + TBSCertList ::= SEQUENCE { + version Version OPTIONAL, + -- if present, MUST be v2 + signature AlgorithmIdentifier{SIGNATURE-ALGORITHM, + {SignatureAlgorithms}}, + issuer Name, + thisUpdate Time, + nextUpdate Time OPTIONAL, + revokedCertificates SEQUENCE SIZE (1..MAX) OF SEQUENCE { + userCertificate CertificateSerialNumber, + revocationDate Time, + ... , + [[2: -- if present, version MUST be v2 + crlEntryExtensions Extensions{{CrlEntryExtensions}} + OPTIONAL + ]], ... + } OPTIONAL, + ... , + [[2: -- if present, version MUST be v2 + crlExtensions [0] Extensions{{CrlExtensions}} + OPTIONAL + ]], ... } + + -- Version, Time, CertificateSerialNumber, and Extensions were + -- defined earlier for use in the certificate structure + + -- + -- The two object sets below should be expanded to include + -- those algorithms which are supported by the system. + -- + -- For example: + -- SignatureAlgorithms SIGNATURE-ALGORITHM ::= { + -- PKIXAlgs-2008.SignatureAlgs, ..., + -- - - RFC 3279 provides the base set + -- PKIX1-PSS-OAEP-ALGORITHMS.SignatureAlgs | + -- - - RFC 4055 provides extension algs + -- OtherModule.SignatureAlgs + -- - - RFC XXXX provides additional extension algs + -- } + + SignatureAlgorithms SIGNATURE-ALGORITHM ::= { + PKIXAlgs-2009.SignatureAlgs, ..., + PKIX1-PSS-OAEP-Algorithms-2009.SignatureAlgs } + + PublicKeyAlgorithms PUBLIC-KEY ::= { + PKIXAlgs-2009.PublicKeys, ..., + PKIX1-PSS-OAEP-Algorithms-2009.PublicKeys} + + -- Upper Bounds + + ub-state-name INTEGER ::= 128 + ub-organization-name INTEGER ::= 64 + ub-organizational-unit-name INTEGER ::= 64 + ub-title INTEGER ::= 64 + ub-serial-number INTEGER ::= 64 + ub-pseudonym INTEGER ::= 128 + ub-emailaddress-length INTEGER ::= 255 + ub-locality-name INTEGER ::= 128 + ub-common-name INTEGER ::= 64 + ub-name INTEGER ::= 32768 + + -- Note - upper bounds on string types, such as TeletexString, are + -- measured in characters. Excepting PrintableString or IA5String, a + -- significantly greater number of octets will be required to hold + -- such a value. As a minimum, 16 octets or twice the specified + -- upper bound, whichever is the larger, should be allowed for + -- TeletexString. For UTF8String or UniversalString, at least four + -- times the upper bound should be allowed. + + -- Information object classes used in the definition + -- of certificates and CRLs + + -- Parameterized Type SIGNED + -- + -- Three different versions of doing SIGNED: + -- 1. Simple and close to the previous version + -- + -- SIGNED{ToBeSigned} ::= SEQUENCE { + -- toBeSigned ToBeSigned, + -- algorithm AlgorithmIdentifier{SIGNATURE-ALGORITHM, + -- {SignatureAlgorithms}}, + -- signature BIT STRING + -- } + + -- 2. From Authenticated Framework + -- + -- SIGNED{ToBeSigned} ::= SEQUENCE { + -- toBeSigned ToBeSigned, + -- COMPONENTS OF SIGNATURE{ToBeSigned} + -- } + -- SIGNATURE{ToBeSigned} ::= SEQUENCE { + -- algorithmIdentifier AlgorithmIdentifier, + -- encrypted ENCRYPTED-HASH{ToBeSigned} + -- } + -- ENCRYPTED-HASH{ToBeSigned} ::= + -- BIT STRING + -- (CONSTRAINED BY { + -- shall be the result of applying a hashing procedure to + -- the DER-encoded (see 4.1) octets of a value of + -- ToBeSigned and then applying an encipherment procedure + -- to those octets + -- }) + -- + -- + -- 3. A more complex version, but one that automatically ties + -- together both the signature algorithm and the + -- signature value for automatic decoding. + -- + SIGNED{ToBeSigned} ::= SEQUENCE { + toBeSigned ToBeSigned, + algorithmIdentifier SEQUENCE { + algorithm SIGNATURE-ALGORITHM. + &id({SignatureAlgorithms}), + parameters SIGNATURE-ALGORITHM. + &Params({SignatureAlgorithms} + {@algorithmIdentifier.algorithm}) OPTIONAL + }, + signature BIT STRING (CONTAINING SIGNATURE-ALGORITHM.&Value( + {SignatureAlgorithms} + {@algorithmIdentifier.algorithm})) + } + + END diff --git a/priv/mhs/PKIX1Implicit-2009.asn1 b/priv/mhs/PKIX1Implicit-2009.asn1 new file mode 100644 index 0000000..3651a52 --- /dev/null +++ b/priv/mhs/PKIX1Implicit-2009.asn1 @@ -0,0 +1,447 @@ + PKIX1Implicit-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)} + DEFINITIONS IMPLICIT TAGS ::= + BEGIN + IMPORTS + + AttributeSet{}, EXTENSION, ATTRIBUTE + FROM PKIX-CommonTypes-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57) } + + id-pe, id-kp, id-qt-unotice, id-qt-cps, ORAddress, Name, + RelativeDistinguishedName, CertificateSerialNumber, + DirectoryString{}, SupportedAttributes + FROM PKIX1Explicit-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51) }; + + CertExtensions EXTENSION ::= { + ext-AuthorityKeyIdentifier | ext-SubjectKeyIdentifier | + ext-KeyUsage | ext-PrivateKeyUsagePeriod | + ext-CertificatePolicies | ext-PolicyMappings | + ext-SubjectAltName | ext-IssuerAltName | + ext-SubjectDirectoryAttributes | + ext-BasicConstraints | ext-NameConstraints | + ext-PolicyConstraints | ext-ExtKeyUsage | + ext-CRLDistributionPoints | ext-InhibitAnyPolicy | + ext-FreshestCRL | ext-AuthorityInfoAccess | + ext-SubjectInfoAccessSyntax, ... } + + CrlExtensions EXTENSION ::= { + ext-AuthorityKeyIdentifier | ext-IssuerAltName | + ext-CRLNumber | ext-DeltaCRLIndicator | + ext-IssuingDistributionPoint | ext-FreshestCRL, ... } + + CrlEntryExtensions EXTENSION ::= { + ext-CRLReason | ext-CertificateIssuer | + ext-HoldInstructionCode | ext-InvalidityDate, ... } + -- Shared arc for standard certificate and CRL extensions + + id-ce OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 29 } + + -- authority key identifier OID and syntax + + ext-AuthorityKeyIdentifier EXTENSION ::= { SYNTAX + AuthorityKeyIdentifier IDENTIFIED BY + id-ce-authorityKeyIdentifier } + id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } + + 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 + + -- subject key identifier OID and syntax + + ext-SubjectKeyIdentifier EXTENSION ::= { SYNTAX + KeyIdentifier IDENTIFIED BY id-ce-subjectKeyIdentifier } + id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } + + -- key usage extension OID and syntax + + ext-KeyUsage EXTENSION ::= { SYNTAX + KeyUsage IDENTIFIED BY id-ce-keyUsage } + id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } + + KeyUsage ::= BIT STRING { + digitalSignature (0), + nonRepudiation (1), -- recent editions of X.509 have + -- renamed this bit to + -- contentCommitment + keyEncipherment (2), + dataEncipherment (3), + keyAgreement (4), + keyCertSign (5), + cRLSign (6), + encipherOnly (7), + decipherOnly (8) + } + + -- private key usage period extension OID and syntax + + ext-PrivateKeyUsagePeriod EXTENSION ::= { SYNTAX + PrivateKeyUsagePeriod IDENTIFIED BY id-ce-privateKeyUsagePeriod } + id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } + + PrivateKeyUsagePeriod ::= SEQUENCE { + notBefore [0] GeneralizedTime OPTIONAL, + notAfter [1] GeneralizedTime OPTIONAL } + (WITH COMPONENTS {..., notBefore PRESENT } | + WITH COMPONENTS {..., notAfter PRESENT }) + + -- certificate policies extension OID and syntax + + ext-CertificatePolicies EXTENSION ::= { SYNTAX + CertificatePolicies IDENTIFIED BY id-ce-certificatePolicies} + id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } + + CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation + + PolicyInformation ::= SEQUENCE { + policyIdentifier CertPolicyId, + policyQualifiers SEQUENCE SIZE (1..MAX) OF + PolicyQualifierInfo OPTIONAL } + + CertPolicyId ::= OBJECT IDENTIFIER + + CERT-POLICY-QUALIFIER ::= TYPE-IDENTIFIER + + PolicyQualifierInfo ::= SEQUENCE { + policyQualifierId CERT-POLICY-QUALIFIER. + &id({PolicyQualifierId}), + qualifier CERT-POLICY-QUALIFIER. + &Type({PolicyQualifierId}{@policyQualifierId})} + + -- Implementations that recognize additional policy qualifiers MUST + -- augment the following definition for PolicyQualifierId + + PolicyQualifierId CERT-POLICY-QUALIFIER ::= + { pqid-cps | pqid-unotice, ... } + + pqid-cps CERT-POLICY-QUALIFIER ::= { CPSuri IDENTIFIED BY id-qt-cps } + pqid-unotice CERT-POLICY-QUALIFIER ::= { UserNotice + IDENTIFIED BY id-qt-unotice } + + -- CPS pointer qualifier + + CPSuri ::= IA5String + + -- user notice qualifier + + UserNotice ::= SEQUENCE { + noticeRef NoticeReference OPTIONAL, + explicitText DisplayText OPTIONAL} + + -- + -- This is not made explicit in the text + -- + -- {WITH COMPONENTS {..., noticeRef PRESENT} | + -- WITH COMPONENTS {..., DisplayText PRESENT }} + + NoticeReference ::= SEQUENCE { + organization DisplayText, + noticeNumbers SEQUENCE OF INTEGER } + + DisplayText ::= CHOICE { + ia5String IA5String (SIZE (1..200)), + visibleString VisibleString (SIZE (1..200)), + bmpString BMPString (SIZE (1..200)), + utf8String UTF8String (SIZE (1..200)) } + + -- policy mapping extension OID and syntax + + ext-PolicyMappings EXTENSION ::= { SYNTAX + PolicyMappings IDENTIFIED BY id-ce-policyMappings } + id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } + + PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { + issuerDomainPolicy CertPolicyId, + subjectDomainPolicy CertPolicyId + } + + -- subject alternative name extension OID and syntax + + ext-SubjectAltName EXTENSION ::= { SYNTAX + GeneralNames IDENTIFIED BY id-ce-subjectAltName } + id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } + + 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 + } + + -- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as + -- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax + + OTHER-NAME ::= TYPE-IDENTIFIER + + EDIPartyName ::= SEQUENCE { + nameAssigner [0] DirectoryString {ubMax} OPTIONAL, + partyName [1] DirectoryString {ubMax} + } + + -- issuer alternative name extension OID and syntax + + ext-IssuerAltName EXTENSION ::= { SYNTAX + GeneralNames IDENTIFIED BY id-ce-issuerAltName } + id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } + + ext-SubjectDirectoryAttributes EXTENSION ::= { SYNTAX + SubjectDirectoryAttributes IDENTIFIED BY + id-ce-subjectDirectoryAttributes } + id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } + + SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF + AttributeSet{{SupportedAttributes}} + + -- basic constraints extension OID and syntax + + ext-BasicConstraints EXTENSION ::= { SYNTAX + BasicConstraints IDENTIFIED BY id-ce-basicConstraints } + id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } + + BasicConstraints ::= SEQUENCE { + cA BOOLEAN DEFAULT FALSE, + pathLenConstraint INTEGER (0..MAX) OPTIONAL + } + + -- name constraints extension OID and syntax + ext-NameConstraints EXTENSION ::= { SYNTAX + NameConstraints IDENTIFIED BY id-ce-nameConstraints } + id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } + + NameConstraints ::= SEQUENCE { + permittedSubtrees [0] GeneralSubtrees OPTIONAL, + excludedSubtrees [1] GeneralSubtrees OPTIONAL + } + -- + -- This is a constraint in the issued certificates by CAs, but is + -- not a requirement on EEs. + -- + -- (WITH COMPONENTS { ..., permittedSubtrees PRESENT} | + -- WITH COMPONENTS { ..., excludedSubtrees PRESENT }} + + GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree + + GeneralSubtree ::= SEQUENCE { + base GeneralName, + minimum [0] BaseDistance DEFAULT 0, + maximum [1] BaseDistance OPTIONAL + } + + BaseDistance ::= INTEGER (0..MAX) + + -- policy constraints extension OID and syntax + + ext-PolicyConstraints EXTENSION ::= { SYNTAX + PolicyConstraints IDENTIFIED BY id-ce-policyConstraints } + id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } + + PolicyConstraints ::= SEQUENCE { + requireExplicitPolicy [0] SkipCerts OPTIONAL, + inhibitPolicyMapping [1] SkipCerts OPTIONAL } + -- + -- This is a constraint in the issued certificates by CAs, + -- but is not a requirement for EEs + -- + -- (WITH COMPONENTS { ..., requireExplicitPolicy PRESENT} | + -- WITH COMPONENTS { ..., inhibitPolicyMapping PRESENT}) + + SkipCerts ::= INTEGER (0..MAX) + + -- CRL distribution points extension OID and syntax + + ext-CRLDistributionPoints EXTENSION ::= { SYNTAX + CRLDistributionPoints IDENTIFIED BY id-ce-cRLDistributionPoints} + id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31} + CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint + + DistributionPoint ::= SEQUENCE { + distributionPoint [0] DistributionPointName OPTIONAL, + reasons [1] ReasonFlags OPTIONAL, + cRLIssuer [2] GeneralNames OPTIONAL + } + -- + -- This is not a requirement in the text, but it seems as if it + -- should be + -- + --(WITH COMPONENTS {..., distributionPoint PRESENT} | + -- WITH COMPONENTS {..., cRLIssuer PRESENT}) + + 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), + privilegeWithdrawn (7), + aACompromise (8) + } + + -- extended key usage extension OID and syntax + + ext-ExtKeyUsage EXTENSION ::= { SYNTAX + ExtKeyUsageSyntax IDENTIFIED BY id-ce-extKeyUsage } + id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37} + + ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId + + KeyPurposeId ::= OBJECT IDENTIFIER + + -- permit unspecified key uses + + anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 } + + -- extended key purpose OIDs + + id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } + id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } + id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } + id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } + id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } + id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } + + -- inhibit any policy OID and syntax + + ext-InhibitAnyPolicy EXTENSION ::= {SYNTAX + SkipCerts IDENTIFIED BY id-ce-inhibitAnyPolicy } + id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } + + -- freshest (delta)CRL extension OID and syntax + + ext-FreshestCRL EXTENSION ::= {SYNTAX + CRLDistributionPoints IDENTIFIED BY id-ce-freshestCRL } + id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } + + -- authority info access + + ext-AuthorityInfoAccess EXTENSION ::= { SYNTAX + AuthorityInfoAccessSyntax IDENTIFIED BY + id-pe-authorityInfoAccess } + id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } + + AuthorityInfoAccessSyntax ::= + SEQUENCE SIZE (1..MAX) OF AccessDescription + + AccessDescription ::= SEQUENCE { + accessMethod OBJECT IDENTIFIER, + accessLocation GeneralName } + + -- subject info access + + ext-SubjectInfoAccessSyntax EXTENSION ::= { SYNTAX + SubjectInfoAccessSyntax IDENTIFIED BY id-pe-subjectInfoAccess } + id-pe-subjectInfoAccess OBJECT IDENTIFIER ::= { id-pe 11 } + + SubjectInfoAccessSyntax ::= + SEQUENCE SIZE (1..MAX) OF AccessDescription + + -- CRL number extension OID and syntax + + ext-CRLNumber EXTENSION ::= {SYNTAX + INTEGER (0..MAX) IDENTIFIED BY id-ce-cRLNumber } + id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } + + CRLNumber ::= INTEGER (0..MAX) + -- issuing distribution point extension OID and syntax + + ext-IssuingDistributionPoint EXTENSION ::= { SYNTAX + IssuingDistributionPoint IDENTIFIED BY + id-ce-issuingDistributionPoint } + id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 } + + IssuingDistributionPoint ::= SEQUENCE { + distributionPoint [0] DistributionPointName OPTIONAL, + onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, + onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, + onlySomeReasons [3] ReasonFlags OPTIONAL, + indirectCRL [4] BOOLEAN DEFAULT FALSE, + onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE + } + -- at most one of onlyContainsUserCerts, onlyContainsCACerts, + -- or onlyContainsAttributeCerts may be set to TRUE. + + ext-DeltaCRLIndicator EXTENSION ::= { SYNTAX + CRLNumber IDENTIFIED BY id-ce-deltaCRLIndicator } + id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 } + + -- CRL reasons extension OID and syntax + + ext-CRLReason EXTENSION ::= { SYNTAX + CRLReason IDENTIFIED BY id-ce-cRLReasons } + id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 } + + CRLReason ::= ENUMERATED { + unspecified (0), + keyCompromise (1), + cACompromise (2), + affiliationChanged (3), + superseded (4), + cessationOfOperation (5), + certificateHold (6), + removeFromCRL (8), + privilegeWithdrawn (9), + aACompromise (10) + } + + -- certificate issuer CRL entry extension OID and syntax + + ext-CertificateIssuer EXTENSION ::= { SYNTAX + GeneralNames IDENTIFIED BY id-ce-certificateIssuer } + id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 } + + -- hold instruction extension OID and syntax + ext-HoldInstructionCode EXTENSION ::= { SYNTAX + OBJECT IDENTIFIER IDENTIFIED BY id-ce-holdInstructionCode } + id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 } + + -- ANSI x9 holdinstructions + + holdInstruction OBJECT IDENTIFIER ::= + {joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2} + id-holdinstruction-none OBJECT IDENTIFIER ::= + {holdInstruction 1} -- deprecated + id-holdinstruction-callissuer OBJECT IDENTIFIER ::= + {holdInstruction 2} + id-holdinstruction-reject OBJECT IDENTIFIER ::= + {holdInstruction 3} + + -- invalidity date CRL entry extension OID and syntax + + ext-InvalidityDate EXTENSION ::= { SYNTAX + GeneralizedTime IDENTIFIED BY id-ce-invalidityDate } + id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 } + -- Upper bounds + ubMax INTEGER ::= 32768 + + END diff --git a/priv/mhs/PKIXAlgs-2009.asn1 b/priv/mhs/PKIXAlgs-2009.asn1 new file mode 100644 index 0000000..d58bcb5 --- /dev/null +++ b/priv/mhs/PKIXAlgs-2009.asn1 @@ -0,0 +1,528 @@ + PKIXAlgs-2009 { iso(1) identified-organization(3) dod(6) + internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-algorithms2008-02(56) } + + DEFINITIONS EXPLICIT TAGS ::= + BEGIN + IMPORTS + + PUBLIC-KEY, SIGNATURE-ALGORITHM, DIGEST-ALGORITHM, SMIME-CAPS + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + + mda-sha224, mda-sha256, mda-sha384, mda-sha512 + FROM PKIX1-PSS-OAEP-Algorithms-2009 + {iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-rsa-pkalgs-02(54)} ; + + -- + -- Public Key (pk-) Algorithms + -- + + PublicKeys PUBLIC-KEY ::= { + pk-rsa | + pk-dsa | + pk-dh | + pk-kea, + ..., + pk-ec | + pk-ecDH | + pk-ecMQV + } + + -- + -- Signature Algorithms (sa-) + -- + + SignatureAlgs SIGNATURE-ALGORITHM ::= { + sa-rsaWithMD2 | + sa-rsaWithMD5 | + sa-rsaWithSHA1 | + sa-dsaWithSHA1 | + sa-ecdsaWithSHA1, + ..., -- Extensible + sa-dsaWithSHA224 | + sa-dsaWithSHA256 | + sa-ecdsaWithSHA224 | + sa-ecdsaWithSHA256 | + sa-ecdsaWithSHA384 | + sa-ecdsaWithSHA512 + } + + -- + -- S/MIME CAPS for algorithms in this document + -- + -- For all of the algorithms laid out in this document, the + -- parameters field for the S/MIME capabilities is defined as + -- ABSENT as there are no specific values that need to be known + -- by the receiver for negotiation. + + -- + + SMimeCaps SMIME-CAPS ::= { + sa-rsaWithMD2.&smimeCaps | + sa-rsaWithMD5.&smimeCaps | + sa-rsaWithSHA1.&smimeCaps | + sa-dsaWithSHA1.&smimeCaps | + sa-dsaWithSHA224.&smimeCaps | + sa-dsaWithSHA256.&smimeCaps | + sa-ecdsaWithSHA1.&smimeCaps | + sa-ecdsaWithSHA224.&smimeCaps | + sa-ecdsaWithSHA256.&smimeCaps | + sa-ecdsaWithSHA384.&smimeCaps | + sa-ecdsaWithSHA512.&smimeCaps, + ... } + + -- RSA PK Algorithm, Parameters, and Keys + + pk-rsa PUBLIC-KEY ::= { + IDENTIFIER rsaEncryption + KEY RSAPublicKey + PARAMS TYPE NULL ARE absent + -- Private key format not in this module -- + CERT-KEY-USAGE {digitalSignature, nonRepudiation, + keyEncipherment, dataEncipherment, keyCertSign, cRLSign} + } + + rsaEncryption OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + pkcs-1(1) 1 } + + RSAPublicKey ::= SEQUENCE { + modulus INTEGER, -- n + publicExponent INTEGER -- e + } + + -- DSA PK Algorithm, Parameters, and Keys + + pk-dsa PUBLIC-KEY ::= { + IDENTIFIER id-dsa + KEY DSAPublicKey + PARAMS TYPE DSA-Params ARE inheritable + -- Private key format not in this module -- + CERT-KEY-USAGE { digitalSignature, nonRepudiation, keyCertSign, + cRLSign } + } + + id-dsa OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } + + DSA-Params ::= SEQUENCE { + p INTEGER, + q INTEGER, + g INTEGER + } + + DSAPublicKey ::= INTEGER -- public key, y + + -- Diffie-Hellman PK Algorithm, Parameters, and Keys + + pk-dh PUBLIC-KEY ::= { + IDENTIFIER dhpublicnumber + KEY DHPublicKey + PARAMS TYPE DomainParameters ARE inheritable + -- Private key format not in this module -- + CERT-KEY-USAGE {keyAgreement, encipherOnly, decipherOnly } + } + + dhpublicnumber OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-x942(10046) + number-type(2) 1 } + + DomainParameters ::= SEQUENCE { + p INTEGER, -- odd prime, p=jq +1 + g INTEGER, -- generator, g + q INTEGER, -- factor of p-1 + j INTEGER OPTIONAL, -- subgroup factor, j>= 2 + validationParams ValidationParams OPTIONAL + } + + ValidationParams ::= SEQUENCE { + seed BIT STRING, + 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 + + pk-kea PUBLIC-KEY ::= { + IDENTIFIER id-keyExchangeAlgorithm + -- key is not encoded -- + PARAMS TYPE KEA-Params-Id ARE required + -- Private key format not in this module -- + CERT-KEY-USAGE {keyAgreement, encipherOnly, decipherOnly } + } + id-keyExchangeAlgorithm OBJECT IDENTIFIER ::= { + joint-iso-itu-t(2) country(16) us(840) organization(1) + gov(101) dod(2) infosec(1) algorithms(1) 22 } + + KEA-Params-Id ::= OCTET STRING + + -- Elliptic Curve (EC) Signatures: Unrestricted Algorithms + -- (Section 2.1.1 of RFC 5480) + -- + -- EC Unrestricted Algorithm ID -- -- this is used for ECDSA + + pk-ec PUBLIC-KEY ::= { + IDENTIFIER id-ecPublicKey + KEY ECPoint + PARAMS TYPE ECParameters ARE required + -- Private key format not in this module -- + CERT-KEY-USAGE { digitalSignature, nonRepudiation, keyAgreement, + keyCertSign, cRLSign } + } + + ECPoint ::= OCTET STRING -- see RFC 5480 for syntax and restrictions + + id-ecPublicKey OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 } + + -- Elliptic Curve (EC) Signatures: Restricted Algorithms + -- (Section 2.1.2 of RFC 5480) + -- + -- EC Diffie-Hellman Algorithm ID + + pk-ecDH PUBLIC-KEY ::= { + IDENTIFIER id-ecDH + KEY ECPoint + PARAMS TYPE ECParameters ARE required + -- Private key format not in this module -- + CERT-KEY-USAGE { keyAgreement, encipherOnly, decipherOnly } + } + + id-ecDH OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) schemes(1) + ecdh(12) } + + -- EC Menezes-Qu-Vanstone Algorithm ID + + pk-ecMQV PUBLIC-KEY ::= { + IDENTIFIER id-ecMQV + KEY ECPoint + PARAMS TYPE ECParameters ARE required + -- Private key format not in this module -- + CERT-KEY-USAGE { keyAgreement, encipherOnly, decipherOnly } + } + + id-ecMQV OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) schemes(1) + ecmqv(13) } + + -- Parameters and Keys for both Restricted and Unrestricted EC + + ECParameters ::= CHOICE { + namedCurve CURVE.&id({NamedCurve}) + -- implicitCurve NULL + -- implicitCurve MUST NOT be used in PKIX + -- specifiedCurve SpecifiedCurve + -- specifiedCurve MUST NOT be used in PKIX + -- Details for specifiedCurve can be found in [X9.62] + -- Any future additions to this CHOICE should be coordinated + -- with ANSI X.9. + } + -- If you need to be able to decode ANSI X.9 parameter structures, + -- uncomment the implicitCurve and specifiedCurve above, and also + -- uncomment the following: + --(WITH COMPONENTS {namedCurve PRESENT}) + + -- Sec 2.1.1.1 Named Curve + + CURVE ::= CLASS { &id OBJECT IDENTIFIER UNIQUE } + WITH SYNTAX { ID &id } + + NamedCurve CURVE ::= { + { ID secp192r1 } | { ID sect163k1 } | { ID sect163r2 } | + { ID secp224r1 } | { ID sect233k1 } | { ID sect233r1 } | + { ID secp256r1 } | { ID sect283k1 } | { ID sect283r1 } | + { ID secp384r1 } | { ID sect409k1 } | { ID sect409r1 } | + { ID secp521r1 } | { ID sect571k1 } | { ID sect571r1 }, + ... -- Extensible + } + + -- Note in [X9.62] the curves are referred to as 'ansiX9' as + -- opposed to 'sec'. For example, secp192r1 is the same curve as + -- ansix9p192r1. + + -- Note that in [PKI-ALG] the secp192r1 curve was referred to as + -- prime192v1 and the secp256r1 curve was referred to as + -- prime256v1. + + -- Note that [FIPS186-3] refers to secp192r1 as P-192, + -- secp224r1 as P-224, secp256r1 as P-256, secp384r1 as P-384, + -- and secp521r1 as P-521. + + secp192r1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) + prime(1) 1 } + + sect163k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 1 } + + sect163r2 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 15 } + + secp224r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 33 } + + sect233k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 26 } + + sect233r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 27 } + + secp256r1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) + prime(1) 7 } + + sect283k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 16 } + + sect283r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 17 } + + secp384r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 34 } + + sect409k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 36 } + + sect409r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 37 } + + secp521r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 35 } + + sect571k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 38 } + + sect571r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 39 } + + -- RSA with MD-2 + + sa-rsaWithMD2 SIGNATURE-ALGORITHM ::= { + IDENTIFIER md2WithRSAEncryption + PARAMS TYPE NULL ARE required + HASHES { mda-md2 } + PUBLIC-KEYS { pk-rsa } + SMIME-CAPS { IDENTIFIED BY md2WithRSAEncryption } + } + + md2WithRSAEncryption OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + pkcs-1(1) 2 } + + -- RSA with MD-5 + + sa-rsaWithMD5 SIGNATURE-ALGORITHM ::= { + IDENTIFIER md5WithRSAEncryption + PARAMS TYPE NULL ARE required + HASHES { mda-md5 } + PUBLIC-KEYS { pk-rsa } + SMIME-CAPS { IDENTIFIED BY md5WithRSAEncryption } + } + + md5WithRSAEncryption OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + pkcs-1(1) 4 } + + -- RSA with SHA-1 + + sa-rsaWithSHA1 SIGNATURE-ALGORITHM ::= { + IDENTIFIER sha1WithRSAEncryption + PARAMS TYPE NULL ARE required + HASHES { mda-sha1 } + PUBLIC-KEYS { pk-rsa } + SMIME-CAPS {IDENTIFIED BY sha1WithRSAEncryption } + } + + sha1WithRSAEncryption OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + pkcs-1(1) 5 } + + -- DSA with SHA-1 + + sa-dsaWithSHA1 SIGNATURE-ALGORITHM ::= { + IDENTIFIER dsa-with-sha1 + VALUE DSA-Sig-Value + PARAMS TYPE NULL ARE absent + HASHES { mda-sha1 } + PUBLIC-KEYS { pk-dsa } + SMIME-CAPS { IDENTIFIED BY dsa-with-sha1 } + } + + dsa-with-sha1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 3 } + + -- DSA with SHA-224 + + sa-dsaWithSHA224 SIGNATURE-ALGORITHM ::= { + IDENTIFIER dsa-with-sha224 + VALUE DSA-Sig-Value + PARAMS TYPE NULL ARE absent + HASHES { mda-sha224 } + PUBLIC-KEYS { pk-dsa } + SMIME-CAPS { IDENTIFIED BY dsa-with-sha224 } + } + + dsa-with-sha224 OBJECT IDENTIFIER ::= { + joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101) + csor(3) algorithms(4) id-dsa-with-sha2(3) 1 } + + -- DSA with SHA-256 + + sa-dsaWithSHA256 SIGNATURE-ALGORITHM ::= { + IDENTIFIER dsa-with-sha256 + VALUE DSA-Sig-Value + PARAMS TYPE NULL ARE absent + HASHES { mda-sha256 } + PUBLIC-KEYS { pk-dsa } + SMIME-CAPS { IDENTIFIED BY dsa-with-sha256 } + } + + dsa-with-sha256 OBJECT IDENTIFIER ::= { + joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101) + csor(3) algorithms(4) id-dsa-with-sha2(3) 2 } + + -- ECDSA with SHA-1 + + sa-ecdsaWithSHA1 SIGNATURE-ALGORITHM ::= { + IDENTIFIER ecdsa-with-SHA1 + VALUE ECDSA-Sig-Value + PARAMS TYPE NULL ARE absent + HASHES { mda-sha1 } + PUBLIC-KEYS { pk-ec } + SMIME-CAPS {IDENTIFIED BY ecdsa-with-SHA1 } + } + + ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) + signatures(4) 1 } + + -- ECDSA with SHA-224 + + sa-ecdsaWithSHA224 SIGNATURE-ALGORITHM ::= { + IDENTIFIER ecdsa-with-SHA224 + VALUE ECDSA-Sig-Value + PARAMS TYPE NULL ARE absent + HASHES { mda-sha224 } + PUBLIC-KEYS { pk-ec } + SMIME-CAPS { IDENTIFIED BY ecdsa-with-SHA224 } + } + + ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + ecdsa-with-SHA2(3) 1 } + + -- ECDSA with SHA-256 + + sa-ecdsaWithSHA256 SIGNATURE-ALGORITHM ::= { + IDENTIFIER ecdsa-with-SHA256 + VALUE ECDSA-Sig-Value + PARAMS TYPE NULL ARE absent + HASHES { mda-sha256 } + PUBLIC-KEYS { pk-ec } + SMIME-CAPS { IDENTIFIED BY ecdsa-with-SHA256 } + } + + ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + ecdsa-with-SHA2(3) 2 } + + -- ECDSA with SHA-384 + + sa-ecdsaWithSHA384 SIGNATURE-ALGORITHM ::= { + IDENTIFIER ecdsa-with-SHA384 + VALUE ECDSA-Sig-Value + PARAMS TYPE NULL ARE absent + HASHES { mda-sha384 } + PUBLIC-KEYS { pk-ec } + SMIME-CAPS { IDENTIFIED BY ecdsa-with-SHA384 } + } + ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + ecdsa-with-SHA2(3) 3 } + + -- ECDSA with SHA-512 + + sa-ecdsaWithSHA512 SIGNATURE-ALGORITHM ::= { + IDENTIFIER ecdsa-with-SHA512 + VALUE ECDSA-Sig-Value + PARAMS TYPE NULL ARE absent + HASHES { mda-sha512 } + PUBLIC-KEYS { pk-ec } + SMIME-CAPS { IDENTIFIED BY ecdsa-with-SHA512 } + } + + ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + ecdsa-with-SHA2(3) 4 } + + -- + -- Signature Values + -- + + -- DSA + + DSA-Sig-Value ::= SEQUENCE { + r INTEGER, + s INTEGER + } + + -- ECDSA + + ECDSA-Sig-Value ::= SEQUENCE { + r INTEGER, + s INTEGER + } + + -- + -- Message Digest Algorithms (mda-) + -- + + HashAlgs DIGEST-ALGORITHM ::= { + mda-md2 | + mda-md5 | + mda-sha1, + ... -- Extensible + } + -- MD-2 + + mda-md2 DIGEST-ALGORITHM ::= { + IDENTIFIER id-md2 + PARAMS TYPE NULL ARE preferredAbsent + } + + id-md2 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) + digestAlgorithm(2) 2 } + + -- MD-5 + + mda-md5 DIGEST-ALGORITHM ::= { + IDENTIFIER id-md5 + PARAMS TYPE NULL ARE preferredAbsent + } + + id-md5 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) + digestAlgorithm(2) 5 } + + -- SHA-1 + + mda-sha1 DIGEST-ALGORITHM ::= { + IDENTIFIER id-sha1 + PARAMS TYPE NULL ARE preferredAbsent + } + + id-sha1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) oiw(14) secsig(3) + algorithm(2) 26 } + + END diff --git a/priv/mhs/PKIXAttributeCertificate-2009.asn1 b/priv/mhs/PKIXAttributeCertificate-2009.asn1 new file mode 100644 index 0000000..3ab0746 --- /dev/null +++ b/priv/mhs/PKIXAttributeCertificate-2009.asn1 @@ -0,0 +1,292 @@ + PKIXAttributeCertificate-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-attribute-cert-02(47)} + DEFINITIONS IMPLICIT TAGS ::= + BEGIN + IMPORTS + + AttributeSet{}, Extensions{}, SecurityCategory{}, + EXTENSION, ATTRIBUTE, SECURITY-CATEGORY + FROM PKIX-CommonTypes-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57) } + + AlgorithmIdentifier{}, SIGNATURE-ALGORITHM, DIGEST-ALGORITHM + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + + -- IMPORTed module OIDs MAY change if [PKIXPROF] changes + -- PKIX Certificate Extensions + + CertificateSerialNumber, UniqueIdentifier, id-pkix, id-pe, id-kp, + id-ad, id-at, SIGNED{}, SignatureAlgorithms + FROM PKIX1Explicit-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51)} + + GeneralName, GeneralNames, id-ce, ext-AuthorityKeyIdentifier, + ext-AuthorityInfoAccess, ext-CRLDistributionPoints + FROM PKIX1Implicit-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)} + + ContentInfo + FROM CryptographicMessageSyntax-2009 + { iso(1) member-body(2) us(840) rsadsi(113549) + pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2004-02(41) }; + -- Define the set of extensions that can appear. + -- Some of these are imported from PKIX Cert + + AttributeCertExtensions EXTENSION ::= { + ext-auditIdentity | ext-targetInformation | + ext-AuthorityKeyIdentifier | ext-AuthorityInfoAccess | + ext-CRLDistributionPoints | ext-noRevAvail | ext-ac-proxying | + ext-aaControls, ... } + + ext-auditIdentity EXTENSION ::= { SYNTAX + OCTET STRING IDENTIFIED BY id-pe-ac-auditIdentity} + + ext-targetInformation EXTENSION ::= { SYNTAX + Targets IDENTIFIED BY id-ce-targetInformation } + + ext-noRevAvail EXTENSION ::= { SYNTAX + NULL IDENTIFIED BY id-ce-noRevAvail} + + ext-ac-proxying EXTENSION ::= { SYNTAX + ProxyInfo IDENTIFIED BY id-pe-ac-proxying} + + ext-aaControls EXTENSION ::= { SYNTAX + AAControls IDENTIFIED BY id-pe-aaControls} + + -- Define the set of attributes used here + + AttributesDefined ATTRIBUTE ::= { at-authenticationInfo | + at-accesIdentity | at-chargingIdentity | at-group | + at-role | at-clearance | at-encAttrs, ...} + + at-authenticationInfo ATTRIBUTE ::= { TYPE SvceAuthInfo + IDENTIFIED BY id-aca-authenticationInfo} + + at-accesIdentity ATTRIBUTE ::= { TYPE SvceAuthInfo + IDENTIFIED BY id-aca-accessIdentity} + + at-chargingIdentity ATTRIBUTE ::= { TYPE IetfAttrSyntax + IDENTIFIED BY id-aca-chargingIdentity} + + at-group ATTRIBUTE ::= { TYPE IetfAttrSyntax + IDENTIFIED BY id-aca-group} + + at-role ATTRIBUTE ::= { TYPE RoleSyntax + IDENTIFIED BY id-at-role} + + at-clearance ATTRIBUTE ::= { TYPE Clearance + IDENTIFIED BY id-at-clearance} + at-clearance-RFC3281 ATTRIBUTE ::= {TYPE Clearance-rfc3281 + IDENTIFIED BY id-at-clearance-rfc3281 } + + at-encAttrs ATTRIBUTE ::= { TYPE ContentInfo + IDENTIFIED BY id-aca-encAttrs} + + -- + -- OIDs used by Attribute Certificate Extensions + -- + + id-pe-ac-auditIdentity OBJECT IDENTIFIER ::= { id-pe 4 } + id-pe-aaControls OBJECT IDENTIFIER ::= { id-pe 6 } + id-pe-ac-proxying OBJECT IDENTIFIER ::= { id-pe 10 } + id-ce-targetInformation OBJECT IDENTIFIER ::= { id-ce 55 } + id-ce-noRevAvail OBJECT IDENTIFIER ::= { id-ce 56 } + + -- + -- OIDs used by Attribute Certificate Attributes + -- + + id-aca OBJECT IDENTIFIER ::= { id-pkix 10 } + + id-aca-authenticationInfo OBJECT IDENTIFIER ::= { id-aca 1 } + id-aca-accessIdentity OBJECT IDENTIFIER ::= { id-aca 2 } + id-aca-chargingIdentity OBJECT IDENTIFIER ::= { id-aca 3 } + id-aca-group OBJECT IDENTIFIER ::= { id-aca 4 } + -- { id-aca 5 } is reserved + id-aca-encAttrs OBJECT IDENTIFIER ::= { id-aca 6 } + + id-at-role OBJECT IDENTIFIER ::= { id-at 72} + id-at-clearance OBJECT IDENTIFIER ::= { + joint-iso-ccitt(2) ds(5) attributeType(4) clearance (55) } + + -- Uncomment the following declaration and comment the above line if + -- using the id-at-clearance attribute as defined in [RFC3281] + -- id-at-clearance ::= id-at-clearance-3281 + + id-at-clearance-rfc3281 OBJECT IDENTIFIER ::= { + joint-iso-ccitt(2) ds(5) module(1) selected-attribute-types(5) + clearance (55) } + + -- + -- The syntax of an Attribute Certificate + -- + + AttributeCertificate ::= SIGNED{AttributeCertificateInfo} + + AttributeCertificateInfo ::= SEQUENCE { + version AttCertVersion, -- version is v2 + holder Holder, + issuer AttCertIssuer, + signature AlgorithmIdentifier{SIGNATURE-ALGORITHM, + {SignatureAlgorithms}}, + serialNumber CertificateSerialNumber, + attrCertValidityPeriod AttCertValidityPeriod, + attributes SEQUENCE OF + AttributeSet{{AttributesDefined}}, + issuerUniqueID UniqueIdentifier OPTIONAL, + extensions Extensions{{AttributeCertExtensions}} OPTIONAL + } + + AttCertVersion ::= INTEGER { v2(1) } + + Holder ::= SEQUENCE { + baseCertificateID [0] IssuerSerial OPTIONAL, + -- the issuer and serial number of + -- the holder's Public Key Certificate + entityName [1] GeneralNames OPTIONAL, + -- the name of the claimant or role + objectDigestInfo [2] ObjectDigestInfo OPTIONAL + -- used to directly authenticate the + -- holder, for example, an executable + } + + ObjectDigestInfo ::= SEQUENCE { + digestedObjectType ENUMERATED { + publicKey (0), + publicKeyCert (1), + otherObjectTypes (2) }, + -- otherObjectTypes MUST NOT + -- be used in this profile + otherObjectTypeID OBJECT IDENTIFIER OPTIONAL, + digestAlgorithm AlgorithmIdentifier{DIGEST-ALGORITHM, {...}}, + objectDigest BIT STRING + } + + AttCertIssuer ::= CHOICE { + v1Form GeneralNames, -- MUST NOT be used in this + -- profile + v2Form [0] V2Form -- v2 only + } + + V2Form ::= SEQUENCE { + issuerName GeneralNames OPTIONAL, + baseCertificateID [0] IssuerSerial OPTIONAL, + objectDigestInfo [1] ObjectDigestInfo OPTIONAL + -- issuerName MUST be present in this profile + -- baseCertificateID and objectDigestInfo MUST + -- NOT be present in this profile + } + + IssuerSerial ::= SEQUENCE { + issuer GeneralNames, + serial CertificateSerialNumber, + issuerUID UniqueIdentifier OPTIONAL + } + + AttCertValidityPeriod ::= SEQUENCE { + notBeforeTime GeneralizedTime, + notAfterTime GeneralizedTime + } + + -- + -- Syntax used by Attribute Certificate Extensions + -- + + Targets ::= SEQUENCE OF Target + + Target ::= CHOICE { + targetName [0] GeneralName, + targetGroup [1] GeneralName, + targetCert [2] TargetCert + } + + TargetCert ::= SEQUENCE { + targetCertificate IssuerSerial, + targetName GeneralName OPTIONAL, + certDigestInfo ObjectDigestInfo OPTIONAL + } + + AAControls ::= SEQUENCE { + pathLenConstraint INTEGER (0..MAX) OPTIONAL, + permittedAttrs [0] AttrSpec OPTIONAL, + excludedAttrs [1] AttrSpec OPTIONAL, + permitUnSpecified BOOLEAN DEFAULT TRUE + } + + AttrSpec::= SEQUENCE OF OBJECT IDENTIFIER + + ProxyInfo ::= SEQUENCE OF Targets + + -- + -- Syntax used by Attribute Certificate Attributes + -- + IetfAttrSyntax ::= SEQUENCE { + policyAuthority[0] GeneralNames OPTIONAL, + values SEQUENCE OF CHOICE { + octets OCTET STRING, + oid OBJECT IDENTIFIER, + string UTF8String + } + } + + SvceAuthInfo ::= SEQUENCE { + service GeneralName, + ident GeneralName, + authInfo OCTET STRING OPTIONAL + } + + RoleSyntax ::= SEQUENCE { + roleAuthority [0] GeneralNames OPTIONAL, + roleName [1] GeneralName + } + + Clearance ::= SEQUENCE { + policyId OBJECT IDENTIFIER, + classList ClassList DEFAULT {unclassified}, + securityCategories SET OF SecurityCategory + {{SupportedSecurityCategories}} OPTIONAL + } + + -- Uncomment the following lines to support deprecated clearance + -- syntax and comment out previous Clearance. + + -- Clearance ::= Clearance-rfc3281 + + Clearance-rfc3281 ::= SEQUENCE { + policyId [0] OBJECT IDENTIFIER, + classList [1] ClassList DEFAULT {unclassified}, + securityCategories [2] SET OF SecurityCategory-rfc3281 + {{SupportedSecurityCategories}} OPTIONAL + } + + ClassList ::= BIT STRING { + unmarked (0), + unclassified (1), + restricted (2), + confidential (3), + secret (4), + topSecret (5) + } + SupportedSecurityCategories SECURITY-CATEGORY ::= { ... } + + SecurityCategory-rfc3281{SECURITY-CATEGORY:Supported} ::= SEQUENCE { + type [0] IMPLICIT SECURITY-CATEGORY. + &id({Supported}), + value [1] EXPLICIT SECURITY-CATEGORY. + &Type({Supported}{@type}) + } + + ACClearAttrs ::= SEQUENCE { + acIssuer GeneralName, + acSerial INTEGER, + attrs SEQUENCE OF AttributeSet{{AttributesDefined}} + } + + END diff --git a/priv/mhs/Protected-Part-Descriptors.asn1 b/priv/mhs/Protected-Part-Descriptors.asn1 new file mode 100644 index 0000000..5512f15 --- /dev/null +++ b/priv/mhs/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/priv/mhs/ProtocolObjectIdentifiers.asn1 b/priv/mhs/ProtocolObjectIdentifiers.asn1 new file mode 100644 index 0000000..d6e88a2 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Raster-Gr-Coding-Attributes.asn1 b/priv/mhs/Raster-Gr-Coding-Attributes.asn1 new file mode 100644 index 0000000..258c5f0 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Raster-Gr-Presentation-Attributes.asn1 b/priv/mhs/Raster-Gr-Presentation-Attributes.asn1 new file mode 100644 index 0000000..c8f3a2f --- /dev/null +++ b/priv/mhs/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/priv/mhs/Raster-Gr-Profile-Attributes.asn1 b/priv/mhs/Raster-Gr-Profile-Attributes.asn1 new file mode 100644 index 0000000..365144f --- /dev/null +++ b/priv/mhs/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/priv/mhs/Reliable-Transfer-APDU.asn1 b/priv/mhs/Reliable-Transfer-APDU.asn1 new file mode 100644 index 0000000..d00570b --- /dev/null +++ b/priv/mhs/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/priv/mhs/Remote-Operations-Abstract-Syntaxes.asn1 b/priv/mhs/Remote-Operations-Abstract-Syntaxes.asn1 new file mode 100644 index 0000000..a9cf651 --- /dev/null +++ b/priv/mhs/Remote-Operations-Abstract-Syntaxes.asn1 @@ -0,0 +1,105 @@ +-- 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 ALL; + +-- 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/priv/mhs/Remote-Operations-Generic-ROS-PDUs.asn1 b/priv/mhs/Remote-Operations-Generic-ROS-PDUs.asn1 new file mode 100644 index 0000000..e55ea3c --- /dev/null +++ b/priv/mhs/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/priv/mhs/Remote-Operations-Information-Objects-extensions.asn1 b/priv/mhs/Remote-Operations-Information-Objects-extensions.asn1 new file mode 100644 index 0000000..671cf0e --- /dev/null +++ b/priv/mhs/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/priv/mhs/Remote-Operations-Information-Objects.asn1 b/priv/mhs/Remote-Operations-Information-Objects.asn1 new file mode 100644 index 0000000..b497e41 --- /dev/null +++ b/priv/mhs/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, + ¶meterTypeOptional BOOLEAN OPTIONAL, + &ErrorPriority Priority OPTIONAL, + &errorCode Code UNIQUE OPTIONAL +} +WITH SYNTAX { + [PARAMETER &ParameterType + [OPTIONAL ¶meterTypeOptional]] + [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/priv/mhs/Remote-Operations-Realizations.asn1 b/priv/mhs/Remote-Operations-Realizations.asn1 new file mode 100644 index 0000000..73b49c8 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Remote-Operations-Useful-Definitions.asn1 b/priv/mhs/Remote-Operations-Useful-Definitions.asn1 new file mode 100644 index 0000000..e526ff4 --- /dev/null +++ b/priv/mhs/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/priv/mhs/SecureMimeMessageV3dot1-2009.asn1 b/priv/mhs/SecureMimeMessageV3dot1-2009.asn1 new file mode 100644 index 0000000..2bd2aaa --- /dev/null +++ b/priv/mhs/SecureMimeMessageV3dot1-2009.asn1 @@ -0,0 +1,122 @@ + SecureMimeMessageV3dot1-2009 + {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) modules(0) id-mod-msg-v3dot1-02(39)} + DEFINITIONS IMPLICIT TAGS ::= + BEGIN + IMPORTS + + SMIME-CAPS, SMIMECapabilities{} + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + + ATTRIBUTE + FROM PKIX-CommonTypes-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)} + + SubjectKeyIdentifier, IssuerAndSerialNumber, RecipientKeyIdentifier + FROM CryptographicMessageSyntax-2009 + {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) modules(0) id-mod-cms-2004-02(41)} + + rc2-cbc, SMimeCaps + FROM CryptographicMessageSyntaxAlgorithms-2009 + {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) modules(0) id-mod-cmsalg-2001-02(37)} + + SMimeCaps + FROM PKIXAlgs-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-algorithms2008-02(56)} + + SMimeCaps + FROM PKIX1-PSS-OAEP-Algorithms-2009 + {iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-rsa-pkalgs-02(54)}; + + SMimeAttributeSet ATTRIBUTE ::= + { aa-smimeCapabilities | aa-encrypKeyPref, ... } + + -- id-aa is the arc with all new authenticated and unauthenticated + -- attributes produced by the S/MIME Working Group + + id-aa OBJECT IDENTIFIER ::= + { iso(1) member-body(2) usa(840) rsadsi(113549) pkcs(1) pkcs-9(9) + smime(16) attributes(2)} + + -- The S/MIME Capabilities attribute provides a method of broadcasting + -- the symmetric capabilities understood. Algorithms SHOULD be ordered + -- by preference and grouped by type + + aa-smimeCapabilities ATTRIBUTE ::= + { TYPE SMIMECapabilities{{SMimeCapsSet}} IDENTIFIED BY + smimeCapabilities } + smimeCapabilities OBJECT IDENTIFIER ::= + { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + 15 } + + SMimeCapsSet SMIME-CAPS ::= + { cap-preferBinaryInside | cap-RC2CBC | + PKIXAlgs-2009.SMimeCaps | + CryptographicMessageSyntaxAlgorithms-2009.SMimeCaps | + PKIX1-PSS-OAEP-Algorithms-2009.SMimeCaps, ... } + + -- Encryption Key Preference provides a method of broadcasting the + -- preferred encryption certificate. + + aa-encrypKeyPref ATTRIBUTE ::= + { TYPE SMIMEEncryptionKeyPreference + IDENTIFIED BY id-aa-encrypKeyPref } + + id-aa-encrypKeyPref OBJECT IDENTIFIER ::= {id-aa 11} + + SMIMEEncryptionKeyPreference ::= CHOICE { + issuerAndSerialNumber [0] IssuerAndSerialNumber, + receipentKeyId [1] RecipientKeyIdentifier, + subjectAltKeyIdentifier [2] SubjectKeyIdentifier + } + + -- receipentKeyId is spelt incorrectly, but kept for historical + -- reasons. + + id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2) + us(840) rsadsi(113549) pkcs(1) pkcs9(9) 16 } + + id-cap OBJECT IDENTIFIER ::= { id-smime 11 } + + -- The preferBinaryInside indicates an ability to receive messages + -- with binary encoding inside the CMS wrapper + + cap-preferBinaryInside SMIME-CAPS ::= + { -- No value -- IDENTIFIED BY id-cap-preferBinaryInside } + + id-cap-preferBinaryInside OBJECT IDENTIFIER ::= { id-cap 1 } + + -- The following list OIDs to be used with S/MIME V3 + + -- Signature Algorithms Not Found in [RFC3370] + -- + -- md2WithRSAEncryption OBJECT IDENTIFIER ::= + -- {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) + -- 2} + -- + -- Other Signed Attributes + -- + -- signingTime OBJECT IDENTIFIER ::= + -- {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) + -- 5} + -- See [RFC5652] for a description of how to encode the attribute + -- value. + + cap-RC2CBC SMIME-CAPS ::= + { TYPE SMIMECapabilitiesParametersForRC2CBC + IDENTIFIED BY rc2-cbc} + + SMIMECapabilitiesParametersForRC2CBC ::= INTEGER (40 | 128, ...) + -- (RC2 Key Length (number of bits)) + + END diff --git a/priv/mhs/SelectedAttributeTypes.asn1 b/priv/mhs/SelectedAttributeTypes.asn1 new file mode 100644 index 0000000..07bba30 --- /dev/null +++ b/priv/mhs/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/priv/mhs/SpkmGssTokens.asn1 b/priv/mhs/SpkmGssTokens.asn1 new file mode 100644 index 0000000..02205bd --- /dev/null +++ b/priv/mhs/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/priv/mhs/Style-Descriptors.asn1 b/priv/mhs/Style-Descriptors.asn1 new file mode 100644 index 0000000..8f033ea --- /dev/null +++ b/priv/mhs/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/priv/mhs/Subprofiles.asn1 b/priv/mhs/Subprofiles.asn1 new file mode 100644 index 0000000..bfcd0b5 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Temporal-Relationships.asn1 b/priv/mhs/Temporal-Relationships.asn1 new file mode 100644 index 0000000..9633995 --- /dev/null +++ b/priv/mhs/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/priv/mhs/Text-Units.asn1 b/priv/mhs/Text-Units.asn1 new file mode 100644 index 0000000..ccc64a5 --- /dev/null +++ b/priv/mhs/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/priv/mhs/UpperBounds.asn1 b/priv/mhs/UpperBounds.asn1 new file mode 100644 index 0000000..c97c83a --- /dev/null +++ b/priv/mhs/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/priv/mhs/UsefulDefinitions.asn1 b/priv/mhs/UsefulDefinitions.asn1 new file mode 100644 index 0000000..d9601bb --- /dev/null +++ b/priv/mhs/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/priv/mhs/Videotex-Coding-Attributes.asn1 b/priv/mhs/Videotex-Coding-Attributes.asn1 new file mode 100644 index 0000000..18e51cb --- /dev/null +++ b/priv/mhs/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 + diff --git a/priv/mhs/clean.sh b/priv/mhs/clean.sh new file mode 100755 index 0000000..a897f52 --- /dev/null +++ b/priv/mhs/clean.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +rm *.asn1db *.beam *.erl *.hrl *.c *.h *.json *_files \ No newline at end of file diff --git a/src/IPMSAbstractService.erl b/src/IPMSAbstractService.erl new file mode 100644 index 0000000..411f41d --- /dev/null +++ b/src/IPMSAbstractService.erl @@ -0,0 +1,1574 @@ +%% Generated by the Erlang ASN.1 BER compiler. Version: 5.1 +%% Purpose: Encoding and decoding of the types in IPMSAbstractService. + +-module('IPMSAbstractService'). +-compile(nowarn_unused_vars). +-dialyzer(no_improper_lists). +-dialyzer(no_match). +-asn1_info([{vsn,'5.1'}, + {module,'IPMSAbstractService'}, + {options,[warnings,ber,errors, + {cwd,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {outdir,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {i,"."}, + {i,"/Users/maxim/depot/synrc/mail/priv/mhs"}]}]). + +-export([encoding_rule/0,maps/0,bit_string_format/0, + legacy_erlang_types/0]). +-export(['dialyzer-suppressions'/1]). +-export([ +enc_SubscriptionProblem/2 +]). + +-export([ +dec_SubscriptionProblem/2 +]). + +-export([ +'enc_originate-probe'/3, +'enc_originate-ipm'/3, +'enc_originate-rn'/3, +'enc_originate-on'/3, +'enc_receive-report'/3, +'enc_receive-ipm'/3, +'enc_receive-rn'/3, +'enc_receive-nrn'/3, +'enc_receive-on'/3, +'enc_change-auto-discard'/3, +'enc_change-auto-acknowledgment'/3, +'enc_change-auto-forwarding'/3, +'enc_subscription-error'/3 +]). + +-export([ +'dec_originate-probe'/3, +'dec_originate-ipm'/3, +'dec_originate-rn'/3, +'dec_originate-on'/3, +'dec_receive-report'/3, +'dec_receive-ipm'/3, +'dec_receive-rn'/3, +'dec_receive-nrn'/3, +'dec_receive-on'/3, +'dec_change-auto-discard'/3, +'dec_change-auto-acknowledgment'/3, +'dec_change-auto-forwarding'/3, +'dec_subscription-error'/3 +]). + +-export([info/0]). + +-export([encode/2,decode/2]). + +encoding_rule() -> ber. + +maps() -> false. + +bit_string_format() -> bitstring. + +legacy_erlang_types() -> false. + +encode(Type, Data) -> +try iolist_to_binary(element(1, encode_disp(Type, Data))) of + Bytes -> + {ok,Bytes} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +decode(Type, Data) -> +try + Result = decode_disp(Type, element(1, ber_decode_nif(Data))), + {ok,Result} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +encode_disp('SubscriptionProblem', Data) -> enc_SubscriptionProblem(Data); +encode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +decode_disp('SubscriptionProblem', Data) -> dec_SubscriptionProblem(Data); +decode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +info() -> + case ?MODULE:module_info(attributes) of + Attributes when is_list(Attributes) -> + case lists:keyfind(asn1_info, 1, Attributes) of + {_,Info} when is_list(Info) -> + Info; + _ -> + [] + end; + _ -> + [] + end. + + +%%================================ +%% SubscriptionProblem +%%================================ +enc_SubscriptionProblem(Val) -> + enc_SubscriptionProblem(Val, [<<10>>]). + +enc_SubscriptionProblem(Val, TagIn) -> +case Val of +'ipms-eos-not-subscribed' -> encode_tags(TagIn, [0], 1); +'mts-eos-not-subscribed' -> encode_tags(TagIn, [1], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end. + + +dec_SubscriptionProblem(Tlv) -> + dec_SubscriptionProblem(Tlv, [10]). + +dec_SubscriptionProblem(Tlv, TagIn) -> +case decode_integer(Tlv, TagIn) of +0 -> 'ipms-eos-not-subscribed'; +1 -> 'mts-eos-not-subscribed'; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end. + + + + +%%================================ +%% originate-probe +%%================================ +'enc_originate-probe'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_originate-probe_ArgumentType'(Val,[<<49>>]); +'enc_originate-probe'('ResultType', Val, _RestPrimFieldName) -> + 'enc_originate-probe_ResultType'(Val,[<<49>>]). + + + +%%================================ +%% originate-probe_ResultType +%%================================ +'enc_originate-probe_ResultType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute submission-identifier(1) External MTSAbstractService:ProbeSubmissionIdentifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_ProbeSubmissionIdentifier'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute submission-time(2) with type UTCTime +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_restricted_string(Cindex2, [<<129>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +%%================================ +%% originate-probe_ArgumentType +%%================================ +'enc_originate-probe_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:ProbeSubmissionEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_ProbeSubmissionEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:IPM +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_IPM'(Cindex2, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_originate-probe'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_originate-probe_ArgumentType'(Tlv,[17]); +'dec_originate-probe'('ResultType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_originate-probe_ResultType'(Tlv,[17]). + + + +'dec_originate-probe_ResultType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %submission-identifier +TTlv = {131072,_} -> + {1, TTlv}; + %submission-time +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute submission-identifier(1) External MTSAbstractService:ProbeSubmissionIdentifier +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_ProbeSubmissionIdentifier'(V1, [131072]), + +%%------------------------------------------------- +%% attribute submission-time(2) with type UTCTime +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = begin +binary_to_list(decode_restricted_string(V2, [131073])) +end +, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'originate-probe_ResultType',Term1,Term2}, +Res1. + + +'dec_originate-probe_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %content +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:ProbeSubmissionEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_ProbeSubmissionEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:IPM +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'IPMSInformationObjects':'dec_IPM'(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'originate-probe_ArgumentType',Term1,Term2}, +Res1. +tlv_format(Bytes) when is_binary(Bytes) -> + {Tlv,_} = ber_decode_nif(Bytes), + Tlv; +tlv_format(Bytes) -> + Bytes. + + + +%%================================ +%% originate-ipm +%%================================ +'enc_originate-ipm'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_originate-ipm_ArgumentType'(Val,[<<49>>]); +'enc_originate-ipm'('ResultType', Val, _RestPrimFieldName) -> + 'enc_originate-ipm_ResultType'(Val,[<<49>>]). + + + +%%================================ +%% originate-ipm_ResultType +%%================================ +'enc_originate-ipm_ResultType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute submission-identifier(1) External MTSAbstractService:MessageSubmissionIdentifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageSubmissionIdentifier'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute submission-time(2) with type UTCTime +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_restricted_string(Cindex2, [<<129>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +%%================================ +%% originate-ipm_ArgumentType +%%================================ +'enc_originate-ipm_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageSubmissionEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageSubmissionEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:IPM +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_IPM'(Cindex2, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_originate-ipm'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_originate-ipm_ArgumentType'(Tlv,[17]); +'dec_originate-ipm'('ResultType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_originate-ipm_ResultType'(Tlv,[17]). + + + +'dec_originate-ipm_ResultType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %submission-identifier +TTlv = {131072,_} -> + {1, TTlv}; + %submission-time +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute submission-identifier(1) External MTSAbstractService:MessageSubmissionIdentifier +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageSubmissionIdentifier'(V1, [131072]), + +%%------------------------------------------------- +%% attribute submission-time(2) with type UTCTime +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = begin +binary_to_list(decode_restricted_string(V2, [131073])) +end +, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'originate-ipm_ResultType',Term1,Term2}, +Res1. + + +'dec_originate-ipm_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %content +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageSubmissionEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageSubmissionEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:IPM +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'IPMSInformationObjects':'dec_IPM'(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'originate-ipm_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% originate-rn +%%================================ +'enc_originate-rn'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_originate-rn_ArgumentType'(Val,[<<49>>]); +'enc_originate-rn'('ResultType', Val, _RestPrimFieldName) -> + 'enc_originate-rn_ResultType'(Val,[<<49>>]). + + + +%%================================ +%% originate-rn_ResultType +%%================================ +'enc_originate-rn_ResultType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute submission-identifier(1) External MTSAbstractService:MessageSubmissionIdentifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageSubmissionIdentifier'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute submission-time(2) with type UTCTime +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_restricted_string(Cindex2, [<<129>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +%%================================ +%% originate-rn_ArgumentType +%%================================ +'enc_originate-rn_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageSubmissionEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageSubmissionEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:RN +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_RN'(Cindex2, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_originate-rn'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_originate-rn_ArgumentType'(Tlv,[17]); +'dec_originate-rn'('ResultType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_originate-rn_ResultType'(Tlv,[17]). + + + +'dec_originate-rn_ResultType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %submission-identifier +TTlv = {131072,_} -> + {1, TTlv}; + %submission-time +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute submission-identifier(1) External MTSAbstractService:MessageSubmissionIdentifier +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageSubmissionIdentifier'(V1, [131072]), + +%%------------------------------------------------- +%% attribute submission-time(2) with type UTCTime +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = begin +binary_to_list(decode_restricted_string(V2, [131073])) +end +, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'originate-rn_ResultType',Term1,Term2}, +Res1. + + +'dec_originate-rn_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %content +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageSubmissionEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageSubmissionEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:RN +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'IPMSInformationObjects':'dec_RN'(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'originate-rn_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% originate-on +%%================================ +'enc_originate-on'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_originate-on_ArgumentType'(Val,[<<49>>]); +'enc_originate-on'('ResultType', Val, _RestPrimFieldName) -> + 'enc_originate-on_ResultType'(Val,[<<49>>]). + + + +%%================================ +%% originate-on_ResultType +%%================================ +'enc_originate-on_ResultType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute submission-identifier(1) External MTSAbstractService:MessageSubmissionIdentifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageSubmissionIdentifier'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute submission-time(2) with type UTCTime +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_restricted_string(Cindex2, [<<129>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +%%================================ +%% originate-on_ArgumentType +%%================================ +'enc_originate-on_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageSubmissionEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageSubmissionEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:ON +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_ON'(Cindex2, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_originate-on'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_originate-on_ArgumentType'(Tlv,[17]); +'dec_originate-on'('ResultType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_originate-on_ResultType'(Tlv,[17]). + + + +'dec_originate-on_ResultType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %submission-identifier +TTlv = {131072,_} -> + {1, TTlv}; + %submission-time +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute submission-identifier(1) External MTSAbstractService:MessageSubmissionIdentifier +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageSubmissionIdentifier'(V1, [131072]), + +%%------------------------------------------------- +%% attribute submission-time(2) with type UTCTime +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = begin +binary_to_list(decode_restricted_string(V2, [131073])) +end +, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'originate-on_ResultType',Term1,Term2}, +Res1. + + +'dec_originate-on_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %content +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageSubmissionEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageSubmissionEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:ON +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'IPMSInformationObjects':'dec_ON'(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'originate-on_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% receive-report +%%================================ +'enc_receive-report'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_receive-report_ArgumentType'(Val,[<<49>>]); +'enc_receive-report'('ResultType', Val, _RestPrimFieldName) -> + {Val,0}. + + + +%%================================ +%% receive-report_ArgumentType +%%================================ +'enc_receive-report_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:ReportDeliveryEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_ReportDeliveryEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute undelivered-object(2) External IPMSInformationObjects:InformationObject OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'IPMSInformationObjects':'enc_InformationObject'(Cindex2, [<<161>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_receive-report'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_receive-report_ArgumentType'(Tlv,[17]); +'dec_receive-report'('ResultType', Bytes,_) -> + Bytes. + + + +'dec_receive-report_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %undelivered-object +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:ReportDeliveryEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_ReportDeliveryEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute undelivered-object(2) External IPMSInformationObjects:InformationObject OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'IPMSInformationObjects':'dec_InformationObject'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'receive-report_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% receive-ipm +%%================================ +'enc_receive-ipm'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_receive-ipm_ArgumentType'(Val,[<<49>>]); +'enc_receive-ipm'('ResultType', Val, _RestPrimFieldName) -> + {Val,0}. + + + +%%================================ +%% receive-ipm_ArgumentType +%%================================ +'enc_receive-ipm_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageDeliveryEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageDeliveryEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:IPM +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_IPM'(Cindex2, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_receive-ipm'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_receive-ipm_ArgumentType'(Tlv,[17]); +'dec_receive-ipm'('ResultType', Bytes,_) -> + Bytes. + + + +'dec_receive-ipm_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %content +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageDeliveryEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageDeliveryEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:IPM +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'IPMSInformationObjects':'dec_IPM'(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'receive-ipm_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% receive-rn +%%================================ +'enc_receive-rn'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_receive-rn_ArgumentType'(Val,[<<49>>]); +'enc_receive-rn'('ResultType', Val, _RestPrimFieldName) -> + {Val,0}. + + + +%%================================ +%% receive-rn_ArgumentType +%%================================ +'enc_receive-rn_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageDeliveryEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageDeliveryEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:RN +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_RN'(Cindex2, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_receive-rn'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_receive-rn_ArgumentType'(Tlv,[17]); +'dec_receive-rn'('ResultType', Bytes,_) -> + Bytes. + + + +'dec_receive-rn_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %content +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageDeliveryEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageDeliveryEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:RN +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'IPMSInformationObjects':'dec_RN'(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'receive-rn_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% receive-nrn +%%================================ +'enc_receive-nrn'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_receive-nrn_ArgumentType'(Val,[<<49>>]); +'enc_receive-nrn'('ResultType', Val, _RestPrimFieldName) -> + {Val,0}. + + + +%%================================ +%% receive-nrn_ArgumentType +%%================================ +'enc_receive-nrn_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageDeliveryEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageDeliveryEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:NRN +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_NRN'(Cindex2, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_receive-nrn'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_receive-nrn_ArgumentType'(Tlv,[17]); +'dec_receive-nrn'('ResultType', Bytes,_) -> + Bytes. + + + +'dec_receive-nrn_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %content +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageDeliveryEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageDeliveryEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:NRN +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'IPMSInformationObjects':'dec_NRN'(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'receive-nrn_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% receive-on +%%================================ +'enc_receive-on'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_receive-on_ArgumentType'(Val,[<<49>>]); +'enc_receive-on'('ResultType', Val, _RestPrimFieldName) -> + {Val,0}. + + + +%%================================ +%% receive-on_ArgumentType +%%================================ +'enc_receive-on_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageDeliveryEnvelope +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_MessageDeliveryEnvelope'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:ON +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_ON'(Cindex2, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_receive-on'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_receive-on_ArgumentType'(Tlv,[17]); +'dec_receive-on'('ResultType', Bytes,_) -> + Bytes. + + + +'dec_receive-on_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %envelope +TTlv = {131072,_} -> + {1, TTlv}; + %content +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute envelope(1) External MTSAbstractService:MessageDeliveryEnvelope +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_MessageDeliveryEnvelope'(V1, [131072]), + +%%------------------------------------------------- +%% attribute content(2) External IPMSInformationObjects:ON +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'IPMSInformationObjects':'dec_ON'(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'receive-on_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% change-auto-discard +%%================================ +'enc_change-auto-discard'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_change-auto-discard_ArgumentType'(Val,[<<49>>]); +'enc_change-auto-discard'('ResultType', Val, _RestPrimFieldName) -> + {Val,0}. + + + +%%================================ +%% change-auto-discard_ArgumentType +%%================================ +'enc_change-auto-discard_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute auto-discard-expired-IPMs(1) with type BOOLEAN +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_boolean(Cindex1, [<<128>>]), + +%%------------------------------------------------- +%% attribute auto-discard-obsolete-IPMs(2) with type BOOLEAN +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_boolean(Cindex2, [<<129>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_change-auto-discard'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_change-auto-discard_ArgumentType'(Tlv,[17]); +'dec_change-auto-discard'('ResultType', Bytes,_) -> + Bytes. + + + +'dec_change-auto-discard_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %auto-discard-expired-IPMs +TTlv = {131072,_} -> + {1, TTlv}; + %auto-discard-obsolete-IPMs +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute auto-discard-expired-IPMs(1) with type BOOLEAN +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = decode_boolean(V1, [131072]), + +%%------------------------------------------------- +%% attribute auto-discard-obsolete-IPMs(2) with type BOOLEAN +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = decode_boolean(V2, [131073]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'change-auto-discard_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% change-auto-acknowledgment +%%================================ +'enc_change-auto-acknowledgment'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_change-auto-acknowledgment_ArgumentType'(Val,[<<49>>]); +'enc_change-auto-acknowledgment'('ResultType', Val, _RestPrimFieldName) -> + {Val,0}. + + + +%%================================ +%% change-auto-acknowledgment_ArgumentType +%%================================ +'enc_change-auto-acknowledgment_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute auto-acknowledge-IPMs(1) with type BOOLEAN +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_boolean(Cindex1, [<<128>>]), + +%%------------------------------------------------- +%% attribute auto-acknowledge-suppl-receipt-info(2) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<129>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_change-auto-acknowledgment'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_change-auto-acknowledgment_ArgumentType'(Tlv,[17]); +'dec_change-auto-acknowledgment'('ResultType', Bytes,_) -> + Bytes. + + + +'dec_change-auto-acknowledgment_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %auto-acknowledge-IPMs +TTlv = {131072,_} -> + {1, TTlv}; + %auto-acknowledge-suppl-receipt-info +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute auto-acknowledge-IPMs(1) with type BOOLEAN +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = decode_boolean(V1, [131072]), + +%%------------------------------------------------- +%% attribute auto-acknowledge-suppl-receipt-info(2) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 1 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'change-auto-acknowledgment_ArgumentType',Term1,Term2}, +Res1. + + + +%%================================ +%% change-auto-forwarding +%%================================ +'enc_change-auto-forwarding'('ArgumentType', Val, _RestPrimFieldName) -> + 'enc_change-auto-forwarding_ArgumentType'(Val,[<<49>>]); +'enc_change-auto-forwarding'('ResultType', Val, _RestPrimFieldName) -> + {Val,0}. + + + +%%================================ +%% change-auto-forwarding_ArgumentType +%%================================ +'enc_change-auto-forwarding_ArgumentType'(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4} = Val, + +%%------------------------------------------------- +%% attribute auto-forward-IPMs(1) with type BOOLEAN +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_boolean(Cindex1, [<<128>>]), + +%%------------------------------------------------- +%% attribute auto-forward-recipients(2) with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_change-auto-forwarding_ArgumentType_auto-forward-recipients'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute auto-forward-heading(3) External IPMSInformationObjects:Heading OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'IPMSInformationObjects':'enc_Heading'(Cindex3, [<<162>>]) + end, + +%%------------------------------------------------- +%% attribute auto-forward-comment(4) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex4, [<<131>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% change-auto-forwarding_ArgumentType_auto-forward-recipients +%%================================ +'enc_change-auto-forwarding_ArgumentType_auto-forward-recipients'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_change-auto-forwarding_ArgumentType_auto-forward-recipients_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_change-auto-forwarding_ArgumentType_auto-forward-recipients_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_change-auto-forwarding_ArgumentType_auto-forward-recipients_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'MTSAbstractService':'enc_ORName'(H, [<<96>>]), + 'enc_change-auto-forwarding_ArgumentType_auto-forward-recipients_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + +'dec_change-auto-forwarding'('ArgumentType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_change-auto-forwarding_ArgumentType'(Tlv,[17]); +'dec_change-auto-forwarding'('ResultType', Bytes,_) -> + Bytes. + + + +'dec_change-auto-forwarding_ArgumentType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %auto-forward-IPMs +TTlv = {131072,_} -> + {1, TTlv}; + %auto-forward-recipients +TTlv = {131073,_} -> + {2, TTlv}; + %auto-forward-heading +TTlv = {131074,_} -> + {3, TTlv}; + %auto-forward-comment +TTlv = {131075,_} -> + {4, TTlv}; + Else -> + {5, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute auto-forward-IPMs(1) with type BOOLEAN +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = decode_boolean(V1, [131072]), + +%%------------------------------------------------- +%% attribute auto-forward-recipients(2) with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'dec_change-auto-forwarding_ArgumentType_auto-forward-recipients'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute auto-forward-heading(3) External IPMSInformationObjects:Heading OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {'IPMSInformationObjects':'dec_Heading'(V3, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute auto-forward-comment(4) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{131075,V4}|TempTlv6] -> + {begin +Val1 = decode_restricted_string(V4, []), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +case Tlv6 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv6}}}) % extra fields not allowed +end, +Res1 = {'change-auto-forwarding_ArgumentType',Term1,Term2,Term3,Term4}, +Res1. +'dec_change-auto-forwarding_ArgumentType_auto-forward-recipients'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['MTSAbstractService':'dec_ORName'(V1, [65536]) || V1 <- Tlv1]. + + + + + +%%================================ +%% subscription-error +%%================================ +'enc_subscription-error'('ParameterType', Val, _RestPrimFieldName) -> + 'enc_subscription-error_ParameterType'(Val,[<<49>>]). + + + +%%================================ +%% subscription-error_ParameterType +%%================================ +'enc_subscription-error_ParameterType'(Val, TagIn) -> +{_,Cindex1} = Val, + +%%------------------------------------------------- +%% attribute problem(1) with type ENUMERATED +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of +'ipms-eos-not-subscribed' -> encode_tags([<<128>>], [0], 1); +'mts-eos-not-subscribed' -> encode_tags([<<128>>], [1], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end, + + BytesSoFar = [EncBytes1], +LenSoFar = EncLen1, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_subscription-error'('ParameterType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_subscription-error_ParameterType'(Tlv,[17]). + + + +'dec_subscription-error_ParameterType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %problem +TTlv = {131072,_} -> + {1, TTlv}; + Else -> + {2, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute problem(1) with type ENUMERATED +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = case decode_integer(V1, [131072]) of +0 -> 'ipms-eos-not-subscribed'; +1 -> 'mts-eos-not-subscribed'; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'subscription-error_ParameterType',Term1}, +Res1. + +%%% +%%% Run-time functions. +%%% + +'dialyzer-suppressions'(Arg) -> + ok. + +ber_decode_nif(B) -> + asn1rt_nif:decode_ber_tlv(B). + +collect_parts(TlvList) -> + collect_parts(TlvList, []). + +collect_parts([{_, L} | Rest], Acc) when is_list(L) -> + collect_parts(Rest, [collect_parts(L) | Acc]); +collect_parts([{3, <>} | Rest], _Acc) -> + collect_parts_bit(Rest, [Bits], Unused); +collect_parts([{_T, V} | Rest], Acc) -> + collect_parts(Rest, [V | Acc]); +collect_parts([], Acc) -> + list_to_binary(lists:reverse(Acc)). + +collect_parts_bit([{3, <>} | Rest], Acc, Uacc) -> + collect_parts_bit(Rest, [Bits | Acc], Unused + Uacc); +collect_parts_bit([], Acc, Uacc) -> + list_to_binary([Uacc | lists:reverse(Acc)]). + +decode_boolean(Tlv, TagIn) -> + Val = match_tags(Tlv, TagIn), + case Val of + <<0:8>> -> + false; + <<_:8>> -> + true; + _ -> + exit({error, {asn1, {decode_boolean, Val}}}) + end. + +decode_integer(Tlv, TagIn) -> + Bin = match_tags(Tlv, TagIn), + Len = byte_size(Bin), + <> = Bin, + Int. + +decode_restricted_string(Tlv, TagsIn) -> + match_and_collect(Tlv, TagsIn). + +encode_boolean(true, TagIn) -> + encode_tags(TagIn, [255], 1); +encode_boolean(false, TagIn) -> + encode_tags(TagIn, [0], 1); +encode_boolean(X, _) -> + exit({error, {asn1, {encode_boolean, X}}}). + +encode_length(L) when L =< 127 -> + {[L], 1}; +encode_length(L) -> + Oct = minimum_octets(L), + Len = length(Oct), + if + Len =< 126 -> + {[128 bor Len | Oct], Len + 1}; + true -> + exit({error, {asn1, too_long_length_oct, Len}}) + end. + +encode_restricted_string(OctetList, TagIn) when is_binary(OctetList) -> + encode_tags(TagIn, OctetList, byte_size(OctetList)); +encode_restricted_string(OctetList, TagIn) when is_list(OctetList) -> + encode_tags(TagIn, OctetList, length(OctetList)). + +encode_tags([Tag | Trest], BytesSoFar, LenSoFar) -> + {Bytes2, L2} = encode_length(LenSoFar), + encode_tags(Trest, + [Tag, Bytes2 | BytesSoFar], + LenSoFar + byte_size(Tag) + L2); +encode_tags([], BytesSoFar, LenSoFar) -> + {BytesSoFar, LenSoFar}. + +match_and_collect(Tlv, TagsIn) -> + Val = match_tags(Tlv, TagsIn), + case Val of + [_ | _] = PartList -> + collect_parts(PartList); + Bin when is_binary(Bin) -> + Bin + end. + +match_tags({T, V}, [T]) -> + V; +match_tags({T, V}, [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, V}], [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, _V} | _] = Vlist, [T]) -> + Vlist; +match_tags(Tlv, []) -> + Tlv; +match_tags({Tag, _V} = Tlv, [T | _Tt]) -> + exit({error, {asn1, {wrong_tag, {{expected, T}, {got, Tag, Tlv}}}}}). + +minimum_octets(0, Acc) -> + Acc; +minimum_octets(Val, Acc) -> + minimum_octets(Val bsr 8, [Val band 255 | Acc]). + +minimum_octets(Val) -> + minimum_octets(Val, []). diff --git a/src/IPMSAutoActionTypes.erl b/src/IPMSAutoActionTypes.erl new file mode 100644 index 0000000..bbf5e70 --- /dev/null +++ b/src/IPMSAutoActionTypes.erl @@ -0,0 +1,3196 @@ +%% Generated by the Erlang ASN.1 BER compiler. Version: 5.1 +%% Purpose: Encoding and decoding of the types in IPMSAutoActionTypes. + +-module('IPMSAutoActionTypes'). +-compile(nowarn_unused_vars). +-dialyzer(no_improper_lists). +-dialyzer(no_match). +-include("IPMSAutoActionTypes.hrl"). +-asn1_info([{vsn,'5.1'}, + {module,'IPMSAutoActionTypes'}, + {options,[warnings,ber,errors, + {cwd,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {outdir,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {i,"."}, + {i,"/Users/maxim/depot/synrc/mail/priv/mhs"}]}]). + +-export([encoding_rule/0,maps/0,bit_string_format/0, + legacy_erlang_types/0]). +-export(['dialyzer-suppressions'/1]). +-export([ +enc_IPMAutoForwardRegistrationParameter/2, +enc_IPMAutoForwardOptions/2, +enc_AutoForwardRegistrationParameter88/2, +enc_AutoForwardArguments/2, +enc_PerMessageAutoForwardFields/2, +enc_PerRecipientAutoForwardFields/2, +enc_EncodedForwardingInformation/2, +enc_ForwardingInformation1988/2, +enc_IPMAutoAcknowledgementRegistrationParameter/2, +enc_IPMAutoDiscardRegistrationParameter/2, +enc_IPMAutoAdviseRegistrationParameter/2, +enc_AutoDiscardProblem/2, +enc_EXTERNAL/2 +]). + +-export([ +dec_IPMAutoForwardRegistrationParameter/2, +dec_IPMAutoForwardOptions/2, +dec_AutoForwardRegistrationParameter88/2, +dec_AutoForwardArguments/2, +dec_PerMessageAutoForwardFields/2, +dec_PerRecipientAutoForwardFields/2, +dec_EncodedForwardingInformation/2, +dec_ForwardingInformation1988/2, +dec_IPMAutoAcknowledgementRegistrationParameter/2, +dec_IPMAutoDiscardRegistrationParameter/2, +dec_IPMAutoAdviseRegistrationParameter/2, +dec_AutoDiscardProblem/2, +dec_EXTERNAL/2 +]). + +-export([ +'enc_ipm-auto-forward'/3, +'enc_ipm-auto-acknowledgement'/3, +'enc_ipm-auto-correlate'/3, +'enc_ipm-auto-discard'/3, +'enc_ipm-auto-advise'/3, +'enc_auto-forwarding-loop'/3, +'enc_duplicate-ipn'/3, +'enc_ipm-auto-discard-error'/3 +]). + +-export([ +'dec_ipm-auto-forward'/3, +'dec_ipm-auto-acknowledgement'/3, +'dec_ipm-auto-correlate'/3, +'dec_ipm-auto-discard'/3, +'dec_ipm-auto-advise'/3, +'dec_auto-forwarding-loop'/3, +'dec_duplicate-ipn'/3, +'dec_ipm-auto-discard-error'/3 +]). + +-export([ +getenc_IPMAutoActions/1, +getenc_IPMAutoActionErrorTable/1, +getenc_internal_object_set_argument_18/1, +getenc_internal_object_set_argument_17/1, +getenc_internal_object_set_argument_16/1, +getenc_internal_object_set_argument_15/1 +]). + +-export([ +getdec_IPMAutoActions/1, +getdec_IPMAutoActionErrorTable/1, +getdec_internal_object_set_argument_18/1, +getdec_internal_object_set_argument_17/1, +getdec_internal_object_set_argument_16/1, +getdec_internal_object_set_argument_15/1 +]). + +-export([info/0]). + +-export([encode/2,decode/2]). + +encoding_rule() -> ber. + +maps() -> false. + +bit_string_format() -> bitstring. + +legacy_erlang_types() -> false. + +encode(Type, Data) -> +try iolist_to_binary(element(1, encode_disp(Type, Data))) of + Bytes -> + {ok,Bytes} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +decode(Type, Data) -> +try + Result = decode_disp(Type, element(1, ber_decode_nif(Data))), + {ok,Result} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +encode_disp('IPMAutoForwardRegistrationParameter', Data) -> enc_IPMAutoForwardRegistrationParameter(Data); +encode_disp('IPMAutoForwardOptions', Data) -> enc_IPMAutoForwardOptions(Data); +encode_disp('AutoForwardRegistrationParameter88', Data) -> enc_AutoForwardRegistrationParameter88(Data); +encode_disp('AutoForwardArguments', Data) -> enc_AutoForwardArguments(Data); +encode_disp('PerMessageAutoForwardFields', Data) -> enc_PerMessageAutoForwardFields(Data); +encode_disp('PerRecipientAutoForwardFields', Data) -> enc_PerRecipientAutoForwardFields(Data); +encode_disp('EncodedForwardingInformation', Data) -> enc_EncodedForwardingInformation(Data); +encode_disp('ForwardingInformation1988', Data) -> enc_ForwardingInformation1988(Data); +encode_disp('IPMAutoAcknowledgementRegistrationParameter', Data) -> enc_IPMAutoAcknowledgementRegistrationParameter(Data); +encode_disp('IPMAutoDiscardRegistrationParameter', Data) -> enc_IPMAutoDiscardRegistrationParameter(Data); +encode_disp('IPMAutoAdviseRegistrationParameter', Data) -> enc_IPMAutoAdviseRegistrationParameter(Data); +encode_disp('AutoDiscardProblem', Data) -> enc_AutoDiscardProblem(Data); +encode_disp('EXTERNAL', Data) -> enc_EXTERNAL(Data); +encode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +decode_disp('IPMAutoForwardRegistrationParameter', Data) -> dec_IPMAutoForwardRegistrationParameter(Data); +decode_disp('IPMAutoForwardOptions', Data) -> dec_IPMAutoForwardOptions(Data); +decode_disp('AutoForwardRegistrationParameter88', Data) -> dec_AutoForwardRegistrationParameter88(Data); +decode_disp('AutoForwardArguments', Data) -> dec_AutoForwardArguments(Data); +decode_disp('PerMessageAutoForwardFields', Data) -> dec_PerMessageAutoForwardFields(Data); +decode_disp('PerRecipientAutoForwardFields', Data) -> dec_PerRecipientAutoForwardFields(Data); +decode_disp('EncodedForwardingInformation', Data) -> dec_EncodedForwardingInformation(Data); +decode_disp('ForwardingInformation1988', Data) -> dec_ForwardingInformation1988(Data); +decode_disp('IPMAutoAcknowledgementRegistrationParameter', Data) -> dec_IPMAutoAcknowledgementRegistrationParameter(Data); +decode_disp('IPMAutoDiscardRegistrationParameter', Data) -> dec_IPMAutoDiscardRegistrationParameter(Data); +decode_disp('IPMAutoAdviseRegistrationParameter', Data) -> dec_IPMAutoAdviseRegistrationParameter(Data); +decode_disp('AutoDiscardProblem', Data) -> dec_AutoDiscardProblem(Data); +decode_disp('EXTERNAL', Data) -> dec_EXTERNAL(Data); +decode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +info() -> + case ?MODULE:module_info(attributes) of + Attributes when is_list(Attributes) -> + case lists:keyfind(asn1_info, 1, Attributes) of + {_,Info} when is_list(Info) -> + Info; + _ -> + [] + end; + _ -> + [] + end. + + +%%================================ +%% IPMAutoForwardRegistrationParameter +%%================================ +enc_IPMAutoForwardRegistrationParameter(Val) -> + enc_IPMAutoForwardRegistrationParameter(Val, [<<48>>]). + +enc_IPMAutoForwardRegistrationParameter(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6,Cindex7} = Val, + +%%------------------------------------------------- +%% attribute filter(1) External MSAbstractService:Filter OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MSAbstractService':'enc_Filter'(Cindex1, [<<160>>]) + end, + +%%------------------------------------------------- +%% attribute forwarding-envelope(2) External MTSAbstractService:MessageSubmissionEnvelope +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'MTSAbstractService':'enc_MessageSubmissionEnvelope'(Cindex2, [<<49>>,<<161>>]), + +%%------------------------------------------------- +%% attribute forwarding-heading(3) External IPMSInformationObjects:Heading +%%------------------------------------------------- + {EncBytes3,EncLen3} = 'IPMSInformationObjects':'enc_Heading'(Cindex3, [<<49>>,<<162>>]), + +%%------------------------------------------------- +%% attribute forwarding-cover-note(4) External IPMSInformationObjects:BodyPart OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'IPMSInformationObjects':'enc_BodyPart'(Cindex4, [<<163>>]) + end, + +%%------------------------------------------------- +%% attribute submission-options(5) External MSAbstractService:MSSubmissionOptions OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MSAbstractService':'enc_MSSubmissionOptions'(Cindex5, [<<49>>,<<164>>]) + end, + +%%------------------------------------------------- +%% attribute nrn-comment(6) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case Cindex6 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex6, [<<19>>,<<165>>]) + end, + +%%------------------------------------------------- +%% attribute ipm-auto-forward-options(7) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- + {EncBytes7,EncLen7} = case Cindex7 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex7 =:= [] -> + {<<>>,0}; + _ -> + encode_named_bit_string(Cindex7, [{'forward-all-object-types',0},{'include-returned-content',1},{'include-returned-ipm',2},{'forwarded-content-prohibited',3},{'preserve-retrieval-status',4},{'delete-delivered-object',5}], [<<3>>,<<166>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IPMAutoForwardRegistrationParameter(Tlv) -> + dec_IPMAutoForwardRegistrationParameter(Tlv, [16]). + +dec_IPMAutoForwardRegistrationParameter(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute filter(1) External MSAbstractService:Filter OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{131072,V1}|TempTlv2] -> + {'MSAbstractService':'dec_Filter'(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute forwarding-envelope(2) External MTSAbstractService:MessageSubmissionEnvelope +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'MTSAbstractService':'dec_MessageSubmissionEnvelope'(V2, [131073,17]), + +%%------------------------------------------------- +%% attribute forwarding-heading(3) External IPMSInformationObjects:Heading +%%------------------------------------------------- +[V3|Tlv4] = Tlv3, +Term3 = 'IPMSInformationObjects':'dec_Heading'(V3, [131074,17]), + +%%------------------------------------------------- +%% attribute forwarding-cover-note(4) External IPMSInformationObjects:BodyPart OPTIONAL +%%------------------------------------------------- +{Term4,Tlv5} = case Tlv4 of +[{131075,V4}|TempTlv5] -> + {'IPMSInformationObjects':'dec_BodyPart'(V4, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute submission-options(5) External MSAbstractService:MSSubmissionOptions OPTIONAL +%%------------------------------------------------- +{Term5,Tlv6} = case Tlv5 of +[{131076,V5}|TempTlv6] -> + {'MSAbstractService':'dec_MSSubmissionOptions'(V5, [17]), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +%%------------------------------------------------- +%% attribute nrn-comment(6) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term6,Tlv7} = case Tlv6 of +[{131077,V6}|TempTlv7] -> + {begin +Val1 = decode_restricted_string(V6, [19]), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv7}; + _ -> + { asn1_NOVALUE, Tlv6} +end, + +%%------------------------------------------------- +%% attribute ipm-auto-forward-options(7) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- +{Term7,Tlv8} = case Tlv7 of +[{131078,V7}|TempTlv8] -> + {decode_named_bit_string(V7, [{'forward-all-object-types',0},{'include-returned-content',1},{'include-returned-ipm',2},{'forwarded-content-prohibited',3},{'preserve-retrieval-status',4},{'delete-delivered-object',5}], [3]), TempTlv8}; + _ -> + {[],Tlv7} +end, + +case Tlv8 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv8}}}) % extra fields not allowed +end, +Res1 = {'IPMAutoForwardRegistrationParameter',Term1,Term2,Term3,Term4,Term5,Term6,Term7}, +Res1. + + +%%================================ +%% IPMAutoForwardOptions +%%================================ +enc_IPMAutoForwardOptions(Val) -> + enc_IPMAutoForwardOptions(Val, [<<3>>]). + +enc_IPMAutoForwardOptions(Val, TagIn) -> +encode_named_bit_string(Val, [{'forward-all-object-types',0},{'include-returned-content',1},{'include-returned-ipm',2},{'forwarded-content-prohibited',3},{'preserve-retrieval-status',4},{'delete-delivered-object',5}], TagIn). + + +dec_IPMAutoForwardOptions(Tlv) -> + dec_IPMAutoForwardOptions(Tlv, [3]). + +dec_IPMAutoForwardOptions(Tlv, TagIn) -> +decode_named_bit_string(Tlv, [{'forward-all-object-types',0},{'include-returned-content',1},{'include-returned-ipm',2},{'forwarded-content-prohibited',3},{'preserve-retrieval-status',4},{'delete-delivered-object',5}], TagIn). + + + +%%================================ +%% AutoForwardRegistrationParameter88 +%%================================ +enc_AutoForwardRegistrationParameter88(Val) -> + enc_AutoForwardRegistrationParameter88(Val, [<<49>>]). + +enc_AutoForwardRegistrationParameter88(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4} = Val, + +%%------------------------------------------------- +%% attribute filter(1) External MSAbstractService:Filter OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MSAbstractService':'enc_Filter'(Cindex1, [<<160>>]) + end, + +%%------------------------------------------------- +%% attribute auto-forward-arguments(2) External IPMSAutoActionTypes:AutoForwardArguments +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_AutoForwardArguments'(Cindex2, [<<49>>,<<161>>]), + +%%------------------------------------------------- +%% attribute delete-after-auto-forwarding(3) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex3 =:= false -> + {<<>>,0}; + _ -> + encode_boolean(Cindex3, [<<1>>,<<162>>]) + end, + +%%------------------------------------------------- +%% attribute forwarding-information(4) with type OCTET STRING +%%------------------------------------------------- + {EncBytes4,EncLen4} = encode_restricted_string(Cindex4, [<<4>>,<<163>>]), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_AutoForwardRegistrationParameter88(Tlv) -> + dec_AutoForwardRegistrationParameter88(Tlv, [17]). + +dec_AutoForwardRegistrationParameter88(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %filter +TTlv = {131072,_} -> + {1, TTlv}; + %auto-forward-arguments +TTlv = {131073,_} -> + {2, TTlv}; + %delete-after-auto-forwarding +TTlv = {131074,_} -> + {3, TTlv}; + %forwarding-information +TTlv = {131075,_} -> + {4, TTlv}; + Else -> + {5, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute filter(1) External MSAbstractService:Filter OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {'MSAbstractService':'dec_Filter'(V1, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute auto-forward-arguments(2) External IPMSAutoActionTypes:AutoForwardArguments +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'dec_AutoForwardArguments'(V2, [131073,17]), + +%%------------------------------------------------- +%% attribute delete-after-auto-forwarding(3) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {decode_boolean(V3, [1]), TempTlv5}; + _ -> + {false,Tlv4} +end, + +%%------------------------------------------------- +%% attribute forwarding-information(4) with type OCTET STRING +%%------------------------------------------------- +[V4|Tlv6] = Tlv5, +Term4 = decode_octet_string(V4, [131075,4]), + +case Tlv6 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv6}}}) % extra fields not allowed +end, +Res1 = {'AutoForwardRegistrationParameter88',Term1,Term2,Term3,Term4}, +Res1. + + +%%================================ +%% AutoForwardArguments +%%================================ +enc_AutoForwardArguments(Val) -> + enc_AutoForwardArguments(Val, [<<49>>]). + +enc_AutoForwardArguments(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6,Cindex7} = Val, + +%%------------------------------------------------- +%% attribute originator-name(1) External MTSAbstractService:OriginatorName +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_OriginatorName'(Cindex1, [<<96>>]), + +%%------------------------------------------------- +%% attribute content-identifier(2) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<74>>]) + end, + +%%------------------------------------------------- +%% attribute priority(3) with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case Cindex3 of +normal -> encode_tags([<<71>>], [0], 1); +'non-urgent' -> encode_tags([<<71>>], [1], 1); +urgent -> encode_tags([<<71>>], [2], 1); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end + end, + +%%------------------------------------------------- +%% attribute per-message-indicators(4) with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_named_bit_string(16, Cindex4, [{'disclosure-of-other-recipients',0},{'implicit-conversion-prohibited',1},{'alternate-recipient-allowed',2},{'content-return-request',3},{reserved,4},{'bit-5',5},{'bit-6',6},{'service-message',7}], [<<72>>]) + end, + +%%------------------------------------------------- +%% attribute deferred-delivery-time(5) with type UTCTime OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex5, [<<128>>]) + end, + +%%------------------------------------------------- +%% attribute extensions(6) with type SET OF DEFAULT = [] +%%------------------------------------------------- + {EncBytes6,EncLen6} = case Cindex6 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex6 =:= [] -> + {<<>>,0}; + _ -> + 'enc_AutoForwardArguments_extensions'(Cindex6, [<<162>>]) + end, + +%%------------------------------------------------- +%% attribute per-recipient-fields(7) with type SEQUENCE OF +%%------------------------------------------------- + {EncBytes7,EncLen7} = 'enc_AutoForwardArguments_per-recipient-fields'(Cindex7, [<<161>>]), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% AutoForwardArguments_extensions +%%================================ +enc_AutoForwardArguments_extensions(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_AutoForwardArguments_extensions_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_AutoForwardArguments_extensions_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_AutoForwardArguments_extensions_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_AutoForwardArguments_extensions_ExtensionField'(H, [<<48>>]), + 'enc_AutoForwardArguments_extensions_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% AutoForwardArguments_extensions_ExtensionField +%%================================ +enc_AutoForwardArguments_extensions_ExtensionField(Val, TagIn) -> + {_,Cindex1,Cindex2,Cindex3} = Val, +Objtype = + 'IPMSAutoActionTypes':'getenc_internal_object_set_argument_15'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) External MTSAbstractService:ExtensionType +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_ExtensionType'(Cindex1, []), + +%%------------------------------------------------- +%% attribute criticality(2) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= [] -> + {<<>>,0}; + _ -> + encode_named_bit_string(16, Cindex2, [{'for-submission',0},{'for-transfer',1},{'for-delivery',2}], [<<129>>]) + end, + +%%------------------------------------------------- +%% attribute value(3) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex3 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes3,_ } = Objtype('Type', Cindex3, []), + encode_open_type(TmpBytes3, [<<162>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% AutoForwardArguments_per-recipient-fields +%%================================ +'enc_AutoForwardArguments_per-recipient-fields'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_AutoForwardArguments_per-recipient-fields_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_AutoForwardArguments_per-recipient-fields_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_AutoForwardArguments_per-recipient-fields_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_PerRecipientAutoForwardFields'(H, [<<49>>]), + 'enc_AutoForwardArguments_per-recipient-fields_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_AutoForwardArguments(Tlv) -> + dec_AutoForwardArguments(Tlv, [17]). + +dec_AutoForwardArguments(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %originator-name +TTlv = {65536,_} -> + {1, TTlv}; + %content-identifier +TTlv = {65546,_} -> + {2, TTlv}; + %priority +TTlv = {65543,_} -> + {3, TTlv}; + %per-message-indicators +TTlv = {65544,_} -> + {4, TTlv}; + %deferred-delivery-time +TTlv = {131072,_} -> + {5, TTlv}; + %extensions +TTlv = {131074,_} -> + {6, TTlv}; + %per-recipient-fields +TTlv = {131073,_} -> + {7, TTlv}; + Else -> + {8, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute originator-name(1) External MTSAbstractService:OriginatorName +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_OriginatorName'(V1, [65536]), + +%%------------------------------------------------- +%% attribute content-identifier(2) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{65546,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 1 =< C1, C1 =< 16 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute priority(3) with type ENUMERATED OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{65543,V3}|TempTlv5] -> + {case decode_integer(V3, []) of +0 -> normal; +1 -> 'non-urgent'; +2 -> urgent; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end, TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute per-message-indicators(4) with type BIT STRING OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{65544,V4}|TempTlv6] -> + {decode_named_bit_string(V4, [{'disclosure-of-other-recipients',0},{'implicit-conversion-prohibited',1},{'alternate-recipient-allowed',2},{'content-return-request',3},{reserved,4},{'bit-5',5},{'bit-6',6},{'service-message',7}], []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +%%------------------------------------------------- +%% attribute deferred-delivery-time(5) with type UTCTime OPTIONAL +%%------------------------------------------------- +{Term5,Tlv7} = case Tlv6 of +[{131072,V5}|TempTlv7] -> + {begin +binary_to_list(decode_restricted_string(V5, [])) +end +, TempTlv7}; + _ -> + { asn1_NOVALUE, Tlv6} +end, + +%%------------------------------------------------- +%% attribute extensions(6) with type SET OF DEFAULT = [] +%%------------------------------------------------- +{Term6,Tlv8} = case Tlv7 of +[{131074,V6}|TempTlv8] -> + {'dec_AutoForwardArguments_extensions'(V6, []), TempTlv8}; + _ -> + {[],Tlv7} +end, + +%%------------------------------------------------- +%% attribute per-recipient-fields(7) with type SEQUENCE OF +%%------------------------------------------------- +[V7|Tlv9] = Tlv8, +Term7 = 'dec_AutoForwardArguments_per-recipient-fields'(V7, [131073]), + +case Tlv9 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv9}}}) % extra fields not allowed +end, +Res1 = {'AutoForwardArguments',Term1,Term2,Term3,Term4,Term5,Term6,Term7}, +Res1. +'dec_AutoForwardArguments_extensions'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_AutoForwardArguments_extensions_ExtensionField'(V1, [16]) || V1 <- Tlv1]. + + +'dec_AutoForwardArguments_extensions_ExtensionField'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) External MTSAbstractService:ExtensionType +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'MTSAbstractService':'dec_ExtensionType'(V1, []), + +%%------------------------------------------------- +%% attribute criticality(2) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {decode_named_bit_string(V2, [{'for-submission',0},{'for-transfer',1},{'for-delivery',2}], []), TempTlv3}; + _ -> + {[],Tlv2} +end, + +%%------------------------------------------------- +%% attribute value(3) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv4} = case Tlv3 of +[{131074,V3}|TempTlv4] -> + {decode_open_type(V3, []), TempTlv4}; + _ -> + {'NULL',Tlv3} +end, + +DecObjtypeTerm1 = + 'IPMSAutoActionTypes':'getdec_internal_object_set_argument_15'(Term1), +Term3 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'ExtensionField',Term1,Term2,Term3}, +Res1. +'dec_AutoForwardArguments_per-recipient-fields'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_PerRecipientAutoForwardFields'(V1, [17]) || V1 <- Tlv1]. + + + + +%%================================ +%% PerMessageAutoForwardFields +%%================================ +enc_PerMessageAutoForwardFields(Val) -> + enc_PerMessageAutoForwardFields(Val, [<<49>>]). + +enc_PerMessageAutoForwardFields(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6} = Val, + +%%------------------------------------------------- +%% attribute originator-name(1) External MTSAbstractService:OriginatorName +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_OriginatorName'(Cindex1, [<<96>>]), + +%%------------------------------------------------- +%% attribute content-identifier(2) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<74>>]) + end, + +%%------------------------------------------------- +%% attribute priority(3) with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case Cindex3 of +normal -> encode_tags([<<71>>], [0], 1); +'non-urgent' -> encode_tags([<<71>>], [1], 1); +urgent -> encode_tags([<<71>>], [2], 1); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end + end, + +%%------------------------------------------------- +%% attribute per-message-indicators(4) with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_named_bit_string(16, Cindex4, [{'disclosure-of-other-recipients',0},{'implicit-conversion-prohibited',1},{'alternate-recipient-allowed',2},{'content-return-request',3},{reserved,4},{'bit-5',5},{'bit-6',6},{'service-message',7}], [<<72>>]) + end, + +%%------------------------------------------------- +%% attribute deferred-delivery-time(5) with type UTCTime OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex5, [<<128>>]) + end, + +%%------------------------------------------------- +%% attribute extensions(6) with type SET OF DEFAULT = [] +%%------------------------------------------------- + {EncBytes6,EncLen6} = case Cindex6 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex6 =:= [] -> + {<<>>,0}; + _ -> + 'enc_PerMessageAutoForwardFields_extensions'(Cindex6, [<<162>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% PerMessageAutoForwardFields_extensions +%%================================ +enc_PerMessageAutoForwardFields_extensions(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_PerMessageAutoForwardFields_extensions_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_PerMessageAutoForwardFields_extensions_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_PerMessageAutoForwardFields_extensions_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_PerMessageAutoForwardFields_extensions_ExtensionField'(H, [<<48>>]), + 'enc_PerMessageAutoForwardFields_extensions_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% PerMessageAutoForwardFields_extensions_ExtensionField +%%================================ +enc_PerMessageAutoForwardFields_extensions_ExtensionField(Val, TagIn) -> + {_,Cindex1,Cindex2,Cindex3} = Val, +Objtype = + 'IPMSAutoActionTypes':'getenc_internal_object_set_argument_17'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) External MTSAbstractService:ExtensionType +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_ExtensionType'(Cindex1, []), + +%%------------------------------------------------- +%% attribute criticality(2) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= [] -> + {<<>>,0}; + _ -> + encode_named_bit_string(16, Cindex2, [{'for-submission',0},{'for-transfer',1},{'for-delivery',2}], [<<129>>]) + end, + +%%------------------------------------------------- +%% attribute value(3) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex3 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes3,_ } = Objtype('Type', Cindex3, []), + encode_open_type(TmpBytes3, [<<162>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_PerMessageAutoForwardFields(Tlv) -> + dec_PerMessageAutoForwardFields(Tlv, [17]). + +dec_PerMessageAutoForwardFields(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %originator-name +TTlv = {65536,_} -> + {1, TTlv}; + %content-identifier +TTlv = {65546,_} -> + {2, TTlv}; + %priority +TTlv = {65543,_} -> + {3, TTlv}; + %per-message-indicators +TTlv = {65544,_} -> + {4, TTlv}; + %deferred-delivery-time +TTlv = {131072,_} -> + {5, TTlv}; + %extensions +TTlv = {131074,_} -> + {6, TTlv}; + Else -> + {7, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute originator-name(1) External MTSAbstractService:OriginatorName +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_OriginatorName'(V1, [65536]), + +%%------------------------------------------------- +%% attribute content-identifier(2) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{65546,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 1 =< C1, C1 =< 16 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute priority(3) with type ENUMERATED OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{65543,V3}|TempTlv5] -> + {case decode_integer(V3, []) of +0 -> normal; +1 -> 'non-urgent'; +2 -> urgent; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end, TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute per-message-indicators(4) with type BIT STRING OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{65544,V4}|TempTlv6] -> + {decode_named_bit_string(V4, [{'disclosure-of-other-recipients',0},{'implicit-conversion-prohibited',1},{'alternate-recipient-allowed',2},{'content-return-request',3},{reserved,4},{'bit-5',5},{'bit-6',6},{'service-message',7}], []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +%%------------------------------------------------- +%% attribute deferred-delivery-time(5) with type UTCTime OPTIONAL +%%------------------------------------------------- +{Term5,Tlv7} = case Tlv6 of +[{131072,V5}|TempTlv7] -> + {begin +binary_to_list(decode_restricted_string(V5, [])) +end +, TempTlv7}; + _ -> + { asn1_NOVALUE, Tlv6} +end, + +%%------------------------------------------------- +%% attribute extensions(6) with type SET OF DEFAULT = [] +%%------------------------------------------------- +{Term6,Tlv8} = case Tlv7 of +[{131074,V6}|TempTlv8] -> + {'dec_PerMessageAutoForwardFields_extensions'(V6, []), TempTlv8}; + _ -> + {[],Tlv7} +end, + +case Tlv8 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv8}}}) % extra fields not allowed +end, +Res1 = {'PerMessageAutoForwardFields',Term1,Term2,Term3,Term4,Term5,Term6}, +Res1. +'dec_PerMessageAutoForwardFields_extensions'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_PerMessageAutoForwardFields_extensions_ExtensionField'(V1, [16]) || V1 <- Tlv1]. + + +'dec_PerMessageAutoForwardFields_extensions_ExtensionField'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) External MTSAbstractService:ExtensionType +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'MTSAbstractService':'dec_ExtensionType'(V1, []), + +%%------------------------------------------------- +%% attribute criticality(2) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {decode_named_bit_string(V2, [{'for-submission',0},{'for-transfer',1},{'for-delivery',2}], []), TempTlv3}; + _ -> + {[],Tlv2} +end, + +%%------------------------------------------------- +%% attribute value(3) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv4} = case Tlv3 of +[{131074,V3}|TempTlv4] -> + {decode_open_type(V3, []), TempTlv4}; + _ -> + {'NULL',Tlv3} +end, + +DecObjtypeTerm1 = + 'IPMSAutoActionTypes':'getdec_internal_object_set_argument_17'(Term1), +Term3 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'ExtensionField',Term1,Term2,Term3}, +Res1. + + +%%================================ +%% PerRecipientAutoForwardFields +%%================================ +enc_PerRecipientAutoForwardFields(Val) -> + enc_PerRecipientAutoForwardFields(Val, [<<49>>]). + +enc_PerRecipientAutoForwardFields(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4} = Val, + +%%------------------------------------------------- +%% attribute recipient-name(1) External MTSAbstractService:RecipientName +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_RecipientName'(Cindex1, [<<96>>]), + +%%------------------------------------------------- +%% attribute originator-report-request(2) with type BIT STRING +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_named_bit_string(16, Cindex2, [{report,3},{'non-delivery-report',4}], [<<128>>]), + +%%------------------------------------------------- +%% attribute explicit-conversion(3) with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_integer(Cindex3, [{'ia5-text-to-teletex',0},{'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},{'videotex-to-ia5-text',16},{'videotex-to-teletex',17}], [<<129>>]) + end, + +%%------------------------------------------------- +%% attribute extensions(4) with type SET OF DEFAULT = [] +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex4 =:= [] -> + {<<>>,0}; + _ -> + 'enc_PerRecipientAutoForwardFields_extensions'(Cindex4, [<<162>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% PerRecipientAutoForwardFields_extensions +%%================================ +enc_PerRecipientAutoForwardFields_extensions(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_PerRecipientAutoForwardFields_extensions_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_PerRecipientAutoForwardFields_extensions_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_PerRecipientAutoForwardFields_extensions_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_PerRecipientAutoForwardFields_extensions_ExtensionField'(H, [<<48>>]), + 'enc_PerRecipientAutoForwardFields_extensions_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% PerRecipientAutoForwardFields_extensions_ExtensionField +%%================================ +enc_PerRecipientAutoForwardFields_extensions_ExtensionField(Val, TagIn) -> + {_,Cindex1,Cindex2,Cindex3} = Val, +Objtype = + 'IPMSAutoActionTypes':'getenc_internal_object_set_argument_16'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) External MTSAbstractService:ExtensionType +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_ExtensionType'(Cindex1, []), + +%%------------------------------------------------- +%% attribute criticality(2) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= [] -> + {<<>>,0}; + _ -> + encode_named_bit_string(16, Cindex2, [{'for-submission',0},{'for-transfer',1},{'for-delivery',2}], [<<129>>]) + end, + +%%------------------------------------------------- +%% attribute value(3) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex3 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes3,_ } = Objtype('Type', Cindex3, []), + encode_open_type(TmpBytes3, [<<162>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_PerRecipientAutoForwardFields(Tlv) -> + dec_PerRecipientAutoForwardFields(Tlv, [17]). + +dec_PerRecipientAutoForwardFields(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %recipient-name +TTlv = {65536,_} -> + {1, TTlv}; + %originator-report-request +TTlv = {131072,_} -> + {2, TTlv}; + %explicit-conversion +TTlv = {131073,_} -> + {3, TTlv}; + %extensions +TTlv = {131074,_} -> + {4, TTlv}; + Else -> + {5, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute recipient-name(1) External MTSAbstractService:RecipientName +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'MTSAbstractService':'dec_RecipientName'(V1, [65536]), + +%%------------------------------------------------- +%% attribute originator-report-request(2) with type BIT STRING +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = decode_named_bit_string(V2, [{report,3},{'non-delivery-report',4}], [131072]), + +%%------------------------------------------------- +%% attribute explicit-conversion(3) with type INTEGER OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131073,V3}|TempTlv5] -> + {begin +Val1 = decode_integer(V3, []), +if 0 =< Val1, Val1 =< 256 -> +Val2 = Val1, +number2name(Val2, [{'ia5-text-to-teletex',0},{'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},{'videotex-to-ia5-text',16},{'videotex-to-teletex',17}]); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute extensions(4) with type SET OF DEFAULT = [] +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{131074,V4}|TempTlv6] -> + {'dec_PerRecipientAutoForwardFields_extensions'(V4, []), TempTlv6}; + _ -> + {[],Tlv5} +end, + +case Tlv6 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv6}}}) % extra fields not allowed +end, +Res1 = {'PerRecipientAutoForwardFields',Term1,Term2,Term3,Term4}, +Res1. +'dec_PerRecipientAutoForwardFields_extensions'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_PerRecipientAutoForwardFields_extensions_ExtensionField'(V1, [16]) || V1 <- Tlv1]. + + +'dec_PerRecipientAutoForwardFields_extensions_ExtensionField'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) External MTSAbstractService:ExtensionType +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'MTSAbstractService':'dec_ExtensionType'(V1, []), + +%%------------------------------------------------- +%% attribute criticality(2) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {decode_named_bit_string(V2, [{'for-submission',0},{'for-transfer',1},{'for-delivery',2}], []), TempTlv3}; + _ -> + {[],Tlv2} +end, + +%%------------------------------------------------- +%% attribute value(3) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv4} = case Tlv3 of +[{131074,V3}|TempTlv4] -> + {decode_open_type(V3, []), TempTlv4}; + _ -> + {'NULL',Tlv3} +end, + +DecObjtypeTerm1 = + 'IPMSAutoActionTypes':'getdec_internal_object_set_argument_16'(Term1), +Term3 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'ExtensionField',Term1,Term2,Term3}, +Res1. + + +%%================================ +%% EncodedForwardingInformation +%%================================ +enc_EncodedForwardingInformation(Val) -> + enc_EncodedForwardingInformation(Val, [<<4>>]). + +enc_EncodedForwardingInformation(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_EncodedForwardingInformation(Tlv) -> + dec_EncodedForwardingInformation(Tlv, [4]). + +dec_EncodedForwardingInformation(Tlv, TagIn) -> +decode_octet_string(Tlv, TagIn). + + + +%%================================ +%% ForwardingInformation1988 +%%================================ +enc_ForwardingInformation1988(Val) -> + enc_ForwardingInformation1988(Val, [<<49>>]). + +enc_ForwardingInformation1988(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3} = Val, + +%%------------------------------------------------- +%% attribute auto-forwarding-comment(1) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex1, [<<128>>]) + end, + +%%------------------------------------------------- +%% attribute ia5-cover-note(2) External IPMSInformationObjects:IA5TextBodyPart OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'IPMSInformationObjects':'enc_IA5TextBodyPart'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute this-ipm-prefix(3) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex3, [<<130>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_ForwardingInformation1988(Tlv) -> + dec_ForwardingInformation1988(Tlv, [17]). + +dec_ForwardingInformation1988(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %auto-forwarding-comment +TTlv = {131072,_} -> + {1, TTlv}; + %ia5-cover-note +TTlv = {131073,_} -> + {2, TTlv}; + %this-ipm-prefix +TTlv = {131074,_} -> + {3, TTlv}; + Else -> + {4, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute auto-forwarding-comment(1) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {begin +Val1 = decode_restricted_string(V1, []), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute ia5-cover-note(2) External IPMSInformationObjects:IA5TextBodyPart OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'IPMSInformationObjects':'dec_IA5TextBodyPart'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute this-ipm-prefix(3) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {begin +Val2 = decode_restricted_string(V3, []), +C2 = byte_size(Val2), +if 1 =< C2, C2 =< 2 -> +binary_to_list(Val2); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +case Tlv5 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed +end, +Res1 = {'ForwardingInformation1988',Term1,Term2,Term3}, +Res1. + + +%%================================ +%% IPMAutoAcknowledgementRegistrationParameter +%%================================ +enc_IPMAutoAcknowledgementRegistrationParameter(Val) -> + enc_IPMAutoAcknowledgementRegistrationParameter(Val, [<<49>>]). + +enc_IPMAutoAcknowledgementRegistrationParameter(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute auto-acknowledge-suppl-receipt-info(1) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex1, [<<19>>,<<160>>]) + end, + +%%------------------------------------------------- +%% attribute submission-options(2) External MSAbstractService:MSSubmissionOptions OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MSAbstractService':'enc_MSSubmissionOptions'(Cindex2, [<<49>>,<<161>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IPMAutoAcknowledgementRegistrationParameter(Tlv) -> + dec_IPMAutoAcknowledgementRegistrationParameter(Tlv, [17]). + +dec_IPMAutoAcknowledgementRegistrationParameter(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %auto-acknowledge-suppl-receipt-info +TTlv = {131072,_} -> + {1, TTlv}; + %submission-options +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute auto-acknowledge-suppl-receipt-info(1) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {begin +Val1 = decode_restricted_string(V1, [19]), +C1 = byte_size(Val1), +if 1 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute submission-options(2) External MSAbstractService:MSSubmissionOptions OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'MSAbstractService':'dec_MSSubmissionOptions'(V2, [17]), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'IPMAutoAcknowledgementRegistrationParameter',Term1,Term2}, +Res1. + + +%%================================ +%% IPMAutoDiscardRegistrationParameter +%%================================ +enc_IPMAutoDiscardRegistrationParameter(Val) -> + enc_IPMAutoDiscardRegistrationParameter(Val, [<<49>>]). + +enc_IPMAutoDiscardRegistrationParameter(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5} = Val, + +%%------------------------------------------------- +%% attribute filter(1) External MSAbstractService:Filter OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MSAbstractService':'enc_Filter'(Cindex1, [<<160>>]) + end, + +%%------------------------------------------------- +%% attribute submission-options(2) External MSAbstractService:MSSubmissionOptions OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MSAbstractService':'enc_MSSubmissionOptions'(Cindex2, [<<49>>,<<161>>]) + end, + +%%------------------------------------------------- +%% attribute auto-discard-expired-ipms(3) with type BOOLEAN +%%------------------------------------------------- + {EncBytes3,EncLen3} = encode_boolean(Cindex3, [<<1>>,<<162>>]), + +%%------------------------------------------------- +%% attribute auto-discard-obsoleted-ipms(4) with type BOOLEAN +%%------------------------------------------------- + {EncBytes4,EncLen4} = encode_boolean(Cindex4, [<<1>>,<<163>>]), + +%%------------------------------------------------- +%% attribute restrict-obsoleting-to-originator(5) with type BOOLEAN +%%------------------------------------------------- + {EncBytes5,EncLen5} = encode_boolean(Cindex5, [<<1>>,<<164>>]), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IPMAutoDiscardRegistrationParameter(Tlv) -> + dec_IPMAutoDiscardRegistrationParameter(Tlv, [17]). + +dec_IPMAutoDiscardRegistrationParameter(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %filter +TTlv = {131072,_} -> + {1, TTlv}; + %submission-options +TTlv = {131073,_} -> + {2, TTlv}; + %auto-discard-expired-ipms +TTlv = {131074,_} -> + {3, TTlv}; + %auto-discard-obsoleted-ipms +TTlv = {131075,_} -> + {4, TTlv}; + %restrict-obsoleting-to-originator +TTlv = {131076,_} -> + {5, TTlv}; + Else -> + {6, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute filter(1) External MSAbstractService:Filter OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {'MSAbstractService':'dec_Filter'(V1, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute submission-options(2) External MSAbstractService:MSSubmissionOptions OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'MSAbstractService':'dec_MSSubmissionOptions'(V2, [17]), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute auto-discard-expired-ipms(3) with type BOOLEAN +%%------------------------------------------------- +[V3|Tlv5] = Tlv4, +Term3 = decode_boolean(V3, [131074,1]), + +%%------------------------------------------------- +%% attribute auto-discard-obsoleted-ipms(4) with type BOOLEAN +%%------------------------------------------------- +[V4|Tlv6] = Tlv5, +Term4 = decode_boolean(V4, [131075,1]), + +%%------------------------------------------------- +%% attribute restrict-obsoleting-to-originator(5) with type BOOLEAN +%%------------------------------------------------- +[V5|Tlv7] = Tlv6, +Term5 = decode_boolean(V5, [131076,1]), + +case Tlv7 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv7}}}) % extra fields not allowed +end, +Res1 = {'IPMAutoDiscardRegistrationParameter',Term1,Term2,Term3,Term4,Term5}, +Res1. + + +%%================================ +%% IPMAutoAdviseRegistrationParameter +%%================================ +enc_IPMAutoAdviseRegistrationParameter(Val) -> + enc_IPMAutoAdviseRegistrationParameter(Val, [<<49>>]). + +enc_IPMAutoAdviseRegistrationParameter(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6} = Val, + +%%------------------------------------------------- +%% attribute enabled(1) with type BOOLEAN DEFAULT = true +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex1 =:= true -> + {<<>>,0}; + _ -> + encode_boolean(Cindex1, [<<1>>,<<160>>]) + end, + +%%------------------------------------------------- +%% attribute filter(2) External MSAbstractService:Filter OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MSAbstractService':'enc_Filter'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute advice-notifications(3) with type SET OF +%%------------------------------------------------- + {EncBytes3,EncLen3} = 'enc_IPMAutoAdviseRegistrationParameter_advice-notifications'(Cindex3, [<<49>>,<<162>>]), + +%%------------------------------------------------- +%% attribute suppress-subsequent-notifications(4) with type BOOLEAN DEFAULT = true +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex4 =:= true -> + {<<>>,0}; + _ -> + encode_boolean(Cindex4, [<<1>>,<<163>>]) + end, + +%%------------------------------------------------- +%% attribute use-ipm-if-an-not-supported(5) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex5 =:= false -> + {<<>>,0}; + _ -> + encode_boolean(Cindex5, [<<1>>,<<164>>]) + end, + +%%------------------------------------------------- +%% attribute submission-options(6) External MSAbstractService:MSSubmissionOptions OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case Cindex6 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MSAbstractService':'enc_MSSubmissionOptions'(Cindex6, [<<49>>,<<165>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% IPMAutoAdviseRegistrationParameter_advice-notifications +%%================================ +'enc_IPMAutoAdviseRegistrationParameter_advice-notifications'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_IPMAutoAdviseRegistrationParameter_advice-notifications_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_IPMAutoAdviseRegistrationParameter_advice-notifications_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_IPMAutoAdviseRegistrationParameter_advice-notifications_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_IPMAutoAdviseRegistrationParameter_advice-notifications_IPMSExtension'(H, [<<48>>]), + 'enc_IPMAutoAdviseRegistrationParameter_advice-notifications_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% IPMAutoAdviseRegistrationParameter_advice-notifications_IPMSExtension +%%================================ +'enc_IPMAutoAdviseRegistrationParameter_advice-notifications_IPMSExtension'(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, +Objtype = + 'IPMSAutoActionTypes':'getenc_internal_object_set_argument_18'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes2,_ } = Objtype('Type', Cindex2, []), + encode_open_type(TmpBytes2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IPMAutoAdviseRegistrationParameter(Tlv) -> + dec_IPMAutoAdviseRegistrationParameter(Tlv, [17]). + +dec_IPMAutoAdviseRegistrationParameter(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %enabled +TTlv = {131072,_} -> + {1, TTlv}; + %filter +TTlv = {131073,_} -> + {2, TTlv}; + %advice-notifications +TTlv = {131074,_} -> + {3, TTlv}; + %suppress-subsequent-notifications +TTlv = {131075,_} -> + {4, TTlv}; + %use-ipm-if-an-not-supported +TTlv = {131076,_} -> + {5, TTlv}; + %submission-options +TTlv = {131077,_} -> + {6, TTlv}; + Else -> + {7, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute enabled(1) with type BOOLEAN DEFAULT = true +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {decode_boolean(V1, [1]), TempTlv3}; + _ -> + {true,Tlv2} +end, + +%%------------------------------------------------- +%% attribute filter(2) External MSAbstractService:Filter OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'MSAbstractService':'dec_Filter'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute advice-notifications(3) with type SET OF +%%------------------------------------------------- +[V3|Tlv5] = Tlv4, +Term3 = 'dec_IPMAutoAdviseRegistrationParameter_advice-notifications'(V3, [131074,17]), + +%%------------------------------------------------- +%% attribute suppress-subsequent-notifications(4) with type BOOLEAN DEFAULT = true +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{131075,V4}|TempTlv6] -> + {decode_boolean(V4, [1]), TempTlv6}; + _ -> + {true,Tlv5} +end, + +%%------------------------------------------------- +%% attribute use-ipm-if-an-not-supported(5) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- +{Term5,Tlv7} = case Tlv6 of +[{131076,V5}|TempTlv7] -> + {decode_boolean(V5, [1]), TempTlv7}; + _ -> + {false,Tlv6} +end, + +%%------------------------------------------------- +%% attribute submission-options(6) External MSAbstractService:MSSubmissionOptions OPTIONAL +%%------------------------------------------------- +{Term6,Tlv8} = case Tlv7 of +[{131077,V6}|TempTlv8] -> + {'MSAbstractService':'dec_MSSubmissionOptions'(V6, [17]), TempTlv8}; + _ -> + { asn1_NOVALUE, Tlv7} +end, + +case Tlv8 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv8}}}) % extra fields not allowed +end, +Res1 = {'IPMAutoAdviseRegistrationParameter',Term1,Term2,Term3,Term4,Term5,Term6}, +Res1. +'dec_IPMAutoAdviseRegistrationParameter_advice-notifications'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_IPMAutoAdviseRegistrationParameter_advice-notifications_IPMSExtension'(V1, [16]) || V1 <- Tlv1]. + + +'dec_IPMAutoAdviseRegistrationParameter_advice-notifications_IPMSExtension'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv3} = case Tlv2 of +[V2|TempTlv3] -> + {decode_open_type(V2, []), TempTlv3}; + _ -> + {'NULL',Tlv2} +end, + +DecObjtypeTerm1 = + 'IPMSAutoActionTypes':'getdec_internal_object_set_argument_18'(Term1), +Term2 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPMSExtension',Term1,Term2}, +Res1. + + +%%================================ +%% AutoDiscardProblem +%%================================ +enc_AutoDiscardProblem(Val) -> + enc_AutoDiscardProblem(Val, [<<2>>]). + +enc_AutoDiscardProblem(Val, TagIn) -> +encode_integer(Val, [{'not-obsoleted-by-originator',0}], TagIn). + + +dec_AutoDiscardProblem(Tlv) -> + dec_AutoDiscardProblem(Tlv, [2]). + +dec_AutoDiscardProblem(Tlv, TagIn) -> +begin +Val1 = decode_integer(Tlv, TagIn), +number2name(Val1, [{'not-obsoleted-by-originator',0}]) +end +. + + + +%%================================ +%% EXTERNAL +%%================================ +enc_EXTERNAL(Val) -> + enc_EXTERNAL(Val, [<<40>>]). + +enc_EXTERNAL(Val, TagIn) -> + NewVal = transform_to_EXTERNAL1990(Val), +{_,Cindex1,Cindex2,Cindex3,Cindex4} = NewVal, + +%%------------------------------------------------- +%% attribute direct-reference(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_object_identifier(Cindex1, [<<6>>]) + end, + +%%------------------------------------------------- +%% attribute indirect-reference(2) with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_integer(Cindex2, [<<2>>]) + end, + +%%------------------------------------------------- +%% attribute data-value-descriptor(3) with type ObjectDescriptor OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex3, [<<7>>]) + end, + +%%------------------------------------------------- +%% attribute encoding(4) with type CHOICE +%%------------------------------------------------- + {EncBytes4,EncLen4} = 'enc_EXTERNAL_encoding'(Cindex4, []), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% EXTERNAL_encoding +%%================================ +enc_EXTERNAL_encoding(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'single-ASN1-type' -> + encode_open_type(element(2,Val), [<<160>>]); + 'octet-aligned' -> + encode_restricted_string(element(2,Val), [<<129>>]); + arbitrary -> + encode_unnamed_bit_string(element(2,Val), [<<130>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_EXTERNAL(Tlv) -> + dec_EXTERNAL(Tlv, [8]). + +dec_EXTERNAL(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute direct-reference(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{6,V1}|TempTlv2] -> + {decode_object_identifier(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute indirect-reference(2) with type INTEGER OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{2,V2}|TempTlv3] -> + {decode_integer(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute data-value-descriptor(3) with type ObjectDescriptor OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{7,V3}|TempTlv4] -> + {begin +binary_to_list(decode_restricted_string(V3, [])) +end +, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute encoding(4) with type CHOICE +%%------------------------------------------------- +[V4|Tlv5] = Tlv4, +Term4 = 'dec_EXTERNAL_encoding'(V4, []), + +case Tlv5 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed +end, +OldFormat={'EXTERNAL',Term1,Term2,Term3,Term4}, +transform_to_EXTERNAL1994(OldFormat). +'dec_EXTERNAL_encoding'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'single-ASN1-type' + {131072, V1} -> + {'single-ASN1-type', decode_open_type_as_binary(V1, [])}; + + +%% 'octet-aligned' + {131073, V1} -> + {'octet-aligned', decode_octet_string(V1, [])}; + + +%% 'arbitrary' + {131074, V1} -> + {arbitrary, decode_native_bit_string(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + + +%%================================ +%% ipm-auto-forward +%%================================ +'enc_ipm-auto-forward'('RegistrationParameter', Val, _RestPrimFieldName) -> + 'enc_ipm-auto-forward_RegistrationParameter'(Val,[]). + + + +%%================================ +%% ipm-auto-forward_RegistrationParameter +%%================================ +'enc_ipm-auto-forward_RegistrationParameter'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'ipm-auto-forward-registration-parameter' -> + 'enc_IPMAutoForwardRegistrationParameter'(element(2,Val), [<<48>>]); + 'auto-forward-registration-parameter-88' -> + 'enc_AutoForwardRegistrationParameter88'(element(2,Val), [<<49>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + +'dec_ipm-auto-forward'('RegistrationParameter', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_ipm-auto-forward_RegistrationParameter'(Tlv,[]). + + + +'dec_ipm-auto-forward_RegistrationParameter'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'ipm-auto-forward-registration-parameter' + {16, V1} -> + {'ipm-auto-forward-registration-parameter', 'dec_IPMAutoForwardRegistrationParameter'(V1, [])}; + + +%% 'auto-forward-registration-parameter-88' + {17, V1} -> + {'auto-forward-registration-parameter-88', 'dec_AutoForwardRegistrationParameter88'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. +tlv_format(Bytes) when is_binary(Bytes) -> + {Tlv,_} = ber_decode_nif(Bytes), + Tlv; +tlv_format(Bytes) -> + Bytes. + + + +%%================================ +%% ipm-auto-acknowledgement +%%================================ +'enc_ipm-auto-acknowledgement'('RegistrationParameter', Val, _RestPrimFieldName) -> + enc_IPMAutoAcknowledgementRegistrationParameter(Val, [<<49>>]). + + +'dec_ipm-auto-acknowledgement'('RegistrationParameter', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_IPMAutoAcknowledgementRegistrationParameter(Tlv, [17]). + + + + +%%================================ +%% ipm-auto-correlate +%%================================ +'enc_ipm-auto-correlate'('RegistrationParameter', Val, _RestPrimFieldName) -> + {Val,0}. + + +'dec_ipm-auto-correlate'('RegistrationParameter', Bytes,_) -> + Bytes. + + + + +%%================================ +%% ipm-auto-discard +%%================================ +'enc_ipm-auto-discard'('RegistrationParameter', Val, _RestPrimFieldName) -> + enc_IPMAutoDiscardRegistrationParameter(Val, [<<49>>]). + + +'dec_ipm-auto-discard'('RegistrationParameter', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_IPMAutoDiscardRegistrationParameter(Tlv, [17]). + + + + +%%================================ +%% ipm-auto-advise +%%================================ +'enc_ipm-auto-advise'('RegistrationParameter', Val, _RestPrimFieldName) -> + enc_IPMAutoAdviseRegistrationParameter(Val, [<<49>>]). + + +'dec_ipm-auto-advise'('RegistrationParameter', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_IPMAutoAdviseRegistrationParameter(Tlv, [17]). + + + + +%%================================ +%% auto-forwarding-loop +%%================================ +'enc_auto-forwarding-loop'('ParameterType', Val, _RestPrimFieldName) -> + {Val,0}. + + +'dec_auto-forwarding-loop'('ParameterType', Bytes,_) -> + Bytes. + + + + +%%================================ +%% duplicate-ipn +%%================================ +'enc_duplicate-ipn'('ParameterType', Val, _RestPrimFieldName) -> + {Val,0}. + + +'dec_duplicate-ipn'('ParameterType', Bytes,_) -> + Bytes. + + + + +%%================================ +%% ipm-auto-discard-error +%%================================ +'enc_ipm-auto-discard-error'('ParameterType', Val, _RestPrimFieldName) -> + 'enc_ipm-auto-discard-error_ParameterType'(Val,[<<49>>]). + + + +%%================================ +%% ipm-auto-discard-error_ParameterType +%%================================ +'enc_ipm-auto-discard-error_ParameterType'(Val, TagIn) -> +{_,Cindex1} = Val, + +%%------------------------------------------------- +%% attribute problem(1) with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_integer(Cindex1, [{'not-obsoleted-by-originator',0}], [<<2>>,<<160>>]), + + BytesSoFar = [EncBytes1], +LenSoFar = EncLen1, +encode_tags(TagIn, BytesSoFar, LenSoFar). + +'dec_ipm-auto-discard-error'('ParameterType', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'dec_ipm-auto-discard-error_ParameterType'(Tlv,[17]). + + + +'dec_ipm-auto-discard-error_ParameterType'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %problem +TTlv = {131072,_} -> + {1, TTlv}; + Else -> + {2, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute problem(1) with type INTEGER +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = begin +Val1 = decode_integer(V1, [131072,2]), +number2name(Val1, [{'not-obsoleted-by-originator',0}]) +end +, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'ipm-auto-discard-error_ParameterType',Term1}, +Res1. + + + +%%================================ +%% IPMAutoActions +%%================================ +getenc_IPMAutoActions(Id) when Id =:= {2,6,1,15,0} -> + fun 'enc_ipm-auto-acknowledgement'/3; +getenc_IPMAutoActions(Id) when Id =:= {2,6,1,15,1} -> + fun 'enc_ipm-auto-correlate'/3; +getenc_IPMAutoActions(Id) when Id =:= {2,6,1,15,2} -> + fun 'enc_ipm-auto-discard'/3; +getenc_IPMAutoActions(Id) when Id =:= {2,6,1,15,3} -> + fun 'enc_ipm-auto-advise'/3; +getenc_IPMAutoActions(Id) when Id =:= {2,6,4,4,0} -> + fun 'enc_ipm-auto-forward'/3; +getenc_IPMAutoActions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_IPMAutoActions(Id) when Id =:= {2,6,1,15,0} -> + fun 'dec_ipm-auto-acknowledgement'/3; +getdec_IPMAutoActions(Id) when Id =:= {2,6,1,15,1} -> + fun 'dec_ipm-auto-correlate'/3; +getdec_IPMAutoActions(Id) when Id =:= {2,6,1,15,2} -> + fun 'dec_ipm-auto-discard'/3; +getdec_IPMAutoActions(Id) when Id =:= {2,6,1,15,3} -> + fun 'dec_ipm-auto-advise'/3; +getdec_IPMAutoActions(Id) when Id =:= {2,6,4,4,0} -> + fun 'dec_ipm-auto-forward'/3; +getdec_IPMAutoActions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% IPMAutoActionErrorTable +%%================================ +getenc_IPMAutoActionErrorTable(Id) when Id =:= {global,{2,6,1,16,0}} -> + fun 'enc_ipm-auto-discard-error'/3; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {global,{2,6,1,16,1}} -> + fun 'enc_auto-forwarding-loop'/3; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {global,{2,6,1,16,2}} -> + fun 'enc_duplicate-ipn'/3; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,1} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_submission-control-violated'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,2} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_originator-invalid'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,3} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_recipient-improperly-specified'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,4} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_element-of-service-not-subscribed'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,11} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_inconsistent-request'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,12} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_security-error'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,13} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_unsupported-critical-function'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,15} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_remote-bind-error'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,27} -> + fun(T,V,O) -> 'MSAbstractService':'enc_service-error'(T,V,O) end; +getenc_IPMAutoActionErrorTable(Id) when Id =:= {local,31} -> + fun(T,V,O) -> 'MSAbstractService':'enc_ms-extension-error'(T,V,O) end; +getenc_IPMAutoActionErrorTable(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_IPMAutoActionErrorTable(Id) when Id =:= {global,{2,6,1,16,0}} -> + fun 'dec_ipm-auto-discard-error'/3; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {global,{2,6,1,16,1}} -> + fun 'dec_auto-forwarding-loop'/3; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {global,{2,6,1,16,2}} -> + fun 'dec_duplicate-ipn'/3; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,1} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_submission-control-violated'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,2} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_originator-invalid'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,3} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_recipient-improperly-specified'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,4} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_element-of-service-not-subscribed'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,11} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_inconsistent-request'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,12} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_security-error'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,13} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_unsupported-critical-function'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,15} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_remote-bind-error'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,27} -> + fun(T,V,O) -> 'MSAbstractService':'dec_service-error'(T,V,O) end; +getdec_IPMAutoActionErrorTable(Id) when Id =:= {local,31} -> + fun(T,V,O) -> 'MSAbstractService':'dec_ms-extension-error'(T,V,O) end; +getdec_IPMAutoActionErrorTable(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_18 +%%================================ +getenc_internal_object_set_argument_18(Id) when Id =:= {2,6,1,19,0} -> + fun(T,V,O) -> 'IPMSInformationObjects':'enc_absence-advice'(T,V,O) end; +getenc_internal_object_set_argument_18(Id) when Id =:= {2,6,1,19,1} -> + fun(T,V,O) -> 'IPMSInformationObjects':'enc_change-of-address-advice'(T,V,O) end; +getenc_internal_object_set_argument_18(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_18(Id) when Id =:= {2,6,1,19,0} -> + fun(T,V,O) -> 'IPMSInformationObjects':'dec_absence-advice'(T,V,O) end; +getdec_internal_object_set_argument_18(Id) when Id =:= {2,6,1,19,1} -> + fun(T,V,O) -> 'IPMSInformationObjects':'dec_change-of-address-advice'(T,V,O) end; +getdec_internal_object_set_argument_18(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_17 +%%================================ +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',1} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_recipient-reassignment-prohibited'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',3} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_dl-expansion-prohibited'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',4} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_conversion-with-loss-prohibited'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',5} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_latest-delivery-time'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',13} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_originator-return-address'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',15} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_originator-certificate'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',17} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_content-confidentiality-algorithm-identifier'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',19} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_message-origin-authentication-check'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',20} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_message-security-label'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',21} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_proof-of-submission-request'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',23} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_content-correlator'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',36} -> + fun(T,V,O) -> 'MSAbstractService':'enc_forwarding-request'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',40} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_multiple-originator-certificates'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',42} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_dl-exempted-recipients'(T,V,O) end; +getenc_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',45} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_certificate-selectors'(T,V,O) end; +getenc_internal_object_set_argument_17(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',1} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_recipient-reassignment-prohibited'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',3} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_dl-expansion-prohibited'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',4} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_conversion-with-loss-prohibited'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',5} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_latest-delivery-time'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',13} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_originator-return-address'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',15} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_originator-certificate'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',17} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_content-confidentiality-algorithm-identifier'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',19} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_message-origin-authentication-check'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',20} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_message-security-label'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',21} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_proof-of-submission-request'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',23} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_content-correlator'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',36} -> + fun(T,V,O) -> 'MSAbstractService':'dec_forwarding-request'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',40} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_multiple-originator-certificates'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',42} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_dl-exempted-recipients'(T,V,O) end; +getdec_internal_object_set_argument_17(Id) when Id =:= {'standard-extension',45} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_certificate-selectors'(T,V,O) end; +getdec_internal_object_set_argument_17(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_16 +%%================================ +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',2} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_originator-requested-alternate-recipient'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',6} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_requested-delivery-method'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',7} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_physical-forwarding-prohibited'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',8} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_physical-forwarding-address-request'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',9} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_physical-delivery-modes'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',10} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_registered-mail-type'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',11} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_recipient-number-for-advice'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',12} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_physical-rendition-attributes'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',14} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_physical-delivery-report-request'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',16} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_message-token'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',18} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_content-integrity-check'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',22} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_proof-of-delivery-request'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',28} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_recipient-certificate'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',41} -> + fun(T,V,O) -> 'IPMSInformationObjects':'enc_blind-copy-recipients'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',43} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'enc_body-part-encryption-token'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',44} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'enc_forwarded-content-token'(T,V,O) end; +getenc_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',46} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_certificate-selectors-override'(T,V,O) end; +getenc_internal_object_set_argument_16(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',2} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_originator-requested-alternate-recipient'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',6} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_requested-delivery-method'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',7} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_physical-forwarding-prohibited'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',8} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_physical-forwarding-address-request'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',9} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_physical-delivery-modes'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',10} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_registered-mail-type'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',11} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_recipient-number-for-advice'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',12} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_physical-rendition-attributes'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',14} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_physical-delivery-report-request'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',16} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_message-token'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',18} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_content-integrity-check'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',22} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_proof-of-delivery-request'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',28} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_recipient-certificate'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',41} -> + fun(T,V,O) -> 'IPMSInformationObjects':'dec_blind-copy-recipients'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',43} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'dec_body-part-encryption-token'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',44} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'dec_forwarded-content-token'(T,V,O) end; +getdec_internal_object_set_argument_16(Id) when Id =:= {'standard-extension',46} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_certificate-selectors-override'(T,V,O) end; +getdec_internal_object_set_argument_16(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_15 +%%================================ +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',1} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_recipient-reassignment-prohibited'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',3} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_dl-expansion-prohibited'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',4} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_conversion-with-loss-prohibited'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',5} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_latest-delivery-time'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',13} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_originator-return-address'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',15} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_originator-certificate'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',17} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_content-confidentiality-algorithm-identifier'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',19} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_message-origin-authentication-check'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',20} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_message-security-label'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',21} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_proof-of-submission-request'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',23} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_content-correlator'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',36} -> + fun(T,V,O) -> 'MSAbstractService':'enc_forwarding-request'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',40} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_multiple-originator-certificates'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',42} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_dl-exempted-recipients'(T,V,O) end; +getenc_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',45} -> + fun(T,V,O) -> 'MTSAbstractService':'enc_certificate-selectors'(T,V,O) end; +getenc_internal_object_set_argument_15(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',1} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_recipient-reassignment-prohibited'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',3} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_dl-expansion-prohibited'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',4} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_conversion-with-loss-prohibited'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',5} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_latest-delivery-time'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',13} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_originator-return-address'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',15} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_originator-certificate'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',17} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_content-confidentiality-algorithm-identifier'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',19} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_message-origin-authentication-check'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',20} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_message-security-label'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',21} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_proof-of-submission-request'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',23} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_content-correlator'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',36} -> + fun(T,V,O) -> 'MSAbstractService':'dec_forwarding-request'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',40} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_multiple-originator-certificates'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',42} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_dl-exempted-recipients'(T,V,O) end; +getdec_internal_object_set_argument_15(Id) when Id =:= {'standard-extension',45} -> + fun(T,V,O) -> 'MTSAbstractService':'dec_certificate-selectors'(T,V,O) end; +getdec_internal_object_set_argument_15(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + +%%% +%%% Run-time functions. +%%% + +'dialyzer-suppressions'(Arg) -> + ok. + +ber_decode_nif(B) -> + asn1rt_nif:decode_ber_tlv(B). + +ber_encode([Tlv]) -> + ber_encode(Tlv); +ber_encode(Tlv) when is_binary(Tlv) -> + Tlv; +ber_encode(Tlv) -> + asn1rt_nif:encode_ber_tlv(Tlv). + +collect_parts(TlvList) -> + collect_parts(TlvList, []). + +collect_parts([{_, L} | Rest], Acc) when is_list(L) -> + collect_parts(Rest, [collect_parts(L) | Acc]); +collect_parts([{3, <>} | Rest], _Acc) -> + collect_parts_bit(Rest, [Bits], Unused); +collect_parts([{_T, V} | Rest], Acc) -> + collect_parts(Rest, [V | Acc]); +collect_parts([], Acc) -> + list_to_binary(lists:reverse(Acc)). + +collect_parts_bit([{3, <>} | Rest], Acc, Uacc) -> + collect_parts_bit(Rest, [Bits | Acc], Unused + Uacc); +collect_parts_bit([], Acc, Uacc) -> + list_to_binary([Uacc | lists:reverse(Acc)]). + +dec_subidentifiers(<<>>, _Av, Al) -> + lists:reverse(Al); +dec_subidentifiers(<<1:1,H:7,T/binary>>, Av, Al) -> + dec_subidentifiers(T, Av bsl 7 + H, Al); +dec_subidentifiers(<>, Av, Al) -> + dec_subidentifiers(T, 0, [Av bsl 7 + H | Al]). + +decode_bitstring2(1, Unused, + <>) -> + lists:sublist([B7, B6, B5, B4, B3, B2, B1, B0], 8 - Unused); +decode_bitstring2(Len, Unused, + <>) -> + [B7, B6, B5, B4, B3, B2, B1, B0 | + decode_bitstring2(Len - 1, Unused, Buffer)]. + +decode_bitstring_NNL(BitList, NamedNumberList) -> + decode_bitstring_NNL(BitList, NamedNumberList, 0, []). + +decode_bitstring_NNL([], _, _No, Result) -> + lists:reverse(Result); +decode_bitstring_NNL([B | BitList], + [{Name, No} | NamedNumberList], + No, Result) -> + if + B =:= 0 -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + Result); + true -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + [Name | Result]) + end; +decode_bitstring_NNL([1 | BitList], NamedNumberList, No, Result) -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + [{bit, No} | Result]); +decode_bitstring_NNL([0 | BitList], NamedNumberList, No, Result) -> + decode_bitstring_NNL(BitList, NamedNumberList, No + 1, Result). + +decode_boolean(Tlv, TagIn) -> + Val = match_tags(Tlv, TagIn), + case Val of + <<0:8>> -> + false; + <<_:8>> -> + true; + _ -> + exit({error, {asn1, {decode_boolean, Val}}}) + end. + +decode_integer(Tlv, TagIn) -> + Bin = match_tags(Tlv, TagIn), + Len = byte_size(Bin), + <> = Bin, + Int. + +decode_named_bit_string(Buffer, NamedNumberList, Tags) -> + case match_and_collect(Buffer, Tags) of + <<0>> -> + []; + <> -> + BitString = decode_bitstring2(byte_size(Bits), Unused, Bits), + decode_bitstring_NNL(BitString, NamedNumberList) + end. + +decode_native_bit_string(Buffer, Tags) -> + case match_and_collect(Buffer, Tags) of + <<0>> -> + <<>>; + <> -> + Size = bit_size(Bits) - Unused, + <> = Bits, + Val + end. + +decode_object_identifier(Tlv, Tags) -> + Val = match_tags(Tlv, Tags), + [AddedObjVal | ObjVals] = dec_subidentifiers(Val, 0, []), + {Val1, Val2} = + if + AddedObjVal < 40 -> + {0, AddedObjVal}; + AddedObjVal < 80 -> + {1, AddedObjVal - 40}; + true -> + {2, AddedObjVal - 80} + end, + list_to_tuple([Val1, Val2 | ObjVals]). + +decode_octet_string(Tlv, TagsIn) -> + Bin = match_and_collect(Tlv, TagsIn), + binary:copy(Bin). + +decode_open_type(Tlv, TagIn) -> + case match_tags(Tlv, TagIn) of + Bin when is_binary(Bin) -> + {InnerTlv, _} = ber_decode_nif(Bin), + InnerTlv; + TlvBytes -> + TlvBytes + end. + +decode_open_type_as_binary(Tlv, TagIn) -> + ber_encode(match_tags(Tlv, TagIn)). + +decode_restricted_string(Tlv, TagsIn) -> + match_and_collect(Tlv, TagsIn). + +do_encode_named_bit_string(Size, + [FirstVal | RestVal], + NamedBitList, TagIn) -> + ToSetPos = get_all_bitposes([FirstVal | RestVal], NamedBitList, []), + BitList = make_and_set_list(Size, ToSetPos, 0), + {Len, Unused, OctetList} = encode_bitstring(BitList), + encode_tags(TagIn, [Unused | OctetList], Len + 1). + +do_encode_named_bit_string([FirstVal | RestVal], NamedBitList, TagIn) -> + ToSetPos = get_all_bitposes([FirstVal | RestVal], NamedBitList, []), + Size = lists:max(ToSetPos) + 1, + BitList = make_and_set_list(Size, ToSetPos, 0), + {Len, Unused, OctetList} = encode_bitstring(BitList), + encode_tags(TagIn, [Unused | OctetList], Len + 1). + +e_object_identifier({'OBJECT IDENTIFIER', V}) -> + e_object_identifier(V); +e_object_identifier(V) when is_tuple(V) -> + e_object_identifier(tuple_to_list(V)); +e_object_identifier([E1, E2 | Tail]) -> + Head = 40 * E1 + E2, + {H, Lh} = mk_object_val(Head), + {R, Lr} = lists:mapfoldl(fun enc_obj_id_tail/2, 0, Tail), + {[H | R], Lh + Lr}. + +enc_obj_id_tail(H, Len) -> + {B, L} = mk_object_val(H), + {B, Len + L}. + +encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest]) -> + Val = + B8 bsl 7 bor (B7 bsl 6) bor (B6 bsl 5) bor (B5 bsl 4) + bor + (B4 bsl 3) + bor + (B3 bsl 2) + bor + (B2 bsl 1) + bor + B1, + encode_bitstring(Rest, [Val], 1); +encode_bitstring(Val) -> + {Unused, Octet} = unused_bitlist(Val, 7, 0), + {1, Unused, [Octet]}. + +encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest], Ack, Len) -> + Val = + B8 bsl 7 bor (B7 bsl 6) bor (B6 bsl 5) bor (B5 bsl 4) + bor + (B4 bsl 3) + bor + (B3 bsl 2) + bor + (B2 bsl 1) + bor + B1, + encode_bitstring(Rest, [Ack, Val], Len + 1); +encode_bitstring([], Ack, Len) -> + {Len, 0, Ack}; +encode_bitstring(Rest, Ack, Len) -> + {Unused, Val} = unused_bitlist(Rest, 7, 0), + {Len + 1, Unused, [Ack, Val]}. + +encode_boolean(true, TagIn) -> + encode_tags(TagIn, [255], 1); +encode_boolean(false, TagIn) -> + encode_tags(TagIn, [0], 1); +encode_boolean(X, _) -> + exit({error, {asn1, {encode_boolean, X}}}). + +encode_integer(Val) -> + Bytes = + if + Val >= 0 -> + encode_integer_pos(Val, []); + true -> + encode_integer_neg(Val, []) + end, + {Bytes, length(Bytes)}. + +encode_integer(Val, NamedNumberList, Tag) when is_atom(Val) -> + case lists:keyfind(Val, 1, NamedNumberList) of + {_, NewVal} -> + encode_tags(Tag, encode_integer(NewVal)); + _ -> + exit({error, {asn1, {encode_integer_namednumber, Val}}}) + end; +encode_integer(Val, _NamedNumberList, Tag) -> + encode_tags(Tag, encode_integer(Val)). + +encode_integer(Val, Tag) when is_integer(Val) -> + encode_tags(Tag, encode_integer(Val)); +encode_integer(Val, _Tag) -> + exit({error, {asn1, {encode_integer, Val}}}). + +encode_integer_neg(-1, [B1 | _T] = L) when B1 > 127 -> + L; +encode_integer_neg(N, Acc) -> + encode_integer_neg(N bsr 8, [N band 255 | Acc]). + +encode_integer_pos(0, [B | _Acc] = L) when B < 128 -> + L; +encode_integer_pos(N, Acc) -> + encode_integer_pos(N bsr 8, [N band 255 | Acc]). + +encode_length(L) when L =< 127 -> + {[L], 1}; +encode_length(L) -> + Oct = minimum_octets(L), + Len = length(Oct), + if + Len =< 126 -> + {[128 bor Len | Oct], Len + 1}; + true -> + exit({error, {asn1, too_long_length_oct, Len}}) + end. + +encode_named_bit_string(C, [H | _] = Bits, NamedBitList, TagIn) + when is_atom(H) -> + do_encode_named_bit_string(C, Bits, NamedBitList, TagIn); +encode_named_bit_string(C, [{bit, _} | _] = Bits, NamedBitList, TagIn) -> + do_encode_named_bit_string(C, Bits, NamedBitList, TagIn); +encode_named_bit_string(C, [], _NamedBitList, TagIn) -> + encode_unnamed_bit_string(C, <<>>, TagIn); +encode_named_bit_string(C, Bits, _NamedBitList, TagIn) + when is_bitstring(Bits) -> + encode_unnamed_bit_string(C, Bits, TagIn). + +encode_named_bit_string([H | _] = Bits, NamedBitList, TagIn) + when is_atom(H) -> + do_encode_named_bit_string(Bits, NamedBitList, TagIn); +encode_named_bit_string([{bit, _} | _] = Bits, NamedBitList, TagIn) -> + do_encode_named_bit_string(Bits, NamedBitList, TagIn); +encode_named_bit_string([], _NamedBitList, TagIn) -> + encode_unnamed_bit_string(<<>>, TagIn); +encode_named_bit_string(Bits, _NamedBitList, TagIn) + when is_bitstring(Bits) -> + encode_unnamed_bit_string(Bits, TagIn). + +encode_object_identifier(Val, TagIn) -> + encode_tags(TagIn, e_object_identifier(Val)). + +encode_open_type(Val, T) when is_list(Val) -> + encode_open_type(list_to_binary(Val), T); +encode_open_type(Val, Tag) -> + encode_tags(Tag, Val, byte_size(Val)). + +encode_restricted_string(OctetList, TagIn) when is_binary(OctetList) -> + encode_tags(TagIn, OctetList, byte_size(OctetList)); +encode_restricted_string(OctetList, TagIn) when is_list(OctetList) -> + encode_tags(TagIn, OctetList, length(OctetList)). + +encode_tags(TagIn, {BytesSoFar, LenSoFar}) -> + encode_tags(TagIn, BytesSoFar, LenSoFar). + +encode_tags([Tag | Trest], BytesSoFar, LenSoFar) -> + {Bytes2, L2} = encode_length(LenSoFar), + encode_tags(Trest, + [Tag, Bytes2 | BytesSoFar], + LenSoFar + byte_size(Tag) + L2); +encode_tags([], BytesSoFar, LenSoFar) -> + {BytesSoFar, LenSoFar}. + +encode_unnamed_bit_string(Bits, TagIn) -> + Unused = (8 - bit_size(Bits) band 7) band 7, + Bin = <>, + encode_tags(TagIn, Bin, byte_size(Bin)). + +encode_unnamed_bit_string(MaxBits, Bits, TagIn) -> + NumBits = bit_size(Bits), + Unused = (8 - NumBits band 7) band 7, + Bin = <>, + if + NumBits > MaxBits -> + exit({error, + {asn1, + {bitstring_length, + {{was, NumBits}, {maximum, MaxBits}}}}}); + true -> + encode_tags(TagIn, Bin, byte_size(Bin)) + end. + +get_all_bitposes([{bit, ValPos} | Rest], NamedBitList, Ack) -> + get_all_bitposes(Rest, NamedBitList, [ValPos | Ack]); +get_all_bitposes([Val | Rest], NamedBitList, Ack) when is_atom(Val) -> + case lists:keyfind(Val, 1, NamedBitList) of + {_ValName, ValPos} -> + get_all_bitposes(Rest, NamedBitList, [ValPos | Ack]); + _ -> + exit({error, {asn1, {bitstring_namedbit, Val}}}) + end; +get_all_bitposes([], _NamedBitList, Ack) -> + lists:sort(Ack). + +make_and_set_list(0, [], _) -> + []; +make_and_set_list(0, _, _) -> + exit({error, {asn1, bitstring_sizeconstraint}}); +make_and_set_list(Len, [XPos | SetPos], XPos) -> + [1 | make_and_set_list(Len - 1, SetPos, XPos + 1)]; +make_and_set_list(Len, [Pos | SetPos], XPos) -> + [0 | make_and_set_list(Len - 1, [Pos | SetPos], XPos + 1)]; +make_and_set_list(Len, [], XPos) -> + [0 | make_and_set_list(Len - 1, [], XPos + 1)]. + +match_and_collect(Tlv, TagsIn) -> + Val = match_tags(Tlv, TagsIn), + case Val of + [_ | _] = PartList -> + collect_parts(PartList); + Bin when is_binary(Bin) -> + Bin + end. + +match_tags({T, V}, [T]) -> + V; +match_tags({T, V}, [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, V}], [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, _V} | _] = Vlist, [T]) -> + Vlist; +match_tags(Tlv, []) -> + Tlv; +match_tags({Tag, _V} = Tlv, [T | _Tt]) -> + exit({error, {asn1, {wrong_tag, {{expected, T}, {got, Tag, Tlv}}}}}). + +minimum_octets(0, Acc) -> + Acc; +minimum_octets(Val, Acc) -> + minimum_octets(Val bsr 8, [Val band 255 | Acc]). + +minimum_octets(Val) -> + minimum_octets(Val, []). + +mk_object_val(0, Ack, Len) -> + {Ack, Len}; +mk_object_val(Val, Ack, Len) -> + mk_object_val(Val bsr 7, [Val band 127 bor 128 | Ack], Len + 1). + +mk_object_val(Val) when Val =< 127 -> + {[255 band Val], 1}; +mk_object_val(Val) -> + mk_object_val(Val bsr 7, [Val band 127], 1). + +number2name(Int, NamedNumberList) -> + case lists:keyfind(Int, 2, NamedNumberList) of + {NamedVal, _} -> + NamedVal; + _ -> + Int + end. + +transform_to_EXTERNAL1990(['EXTERNAL' | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, ['EXTERNAL' | Acc]); +transform_to_EXTERNAL1990([{syntax, Syntax} | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, [asn1_NOVALUE, Syntax | Acc]); +transform_to_EXTERNAL1990([{'presentation-context-id', PCid} | Rest], + Acc) -> + transform_to_EXTERNAL1990(Rest, [PCid, asn1_NOVALUE | Acc]); +transform_to_EXTERNAL1990([{'context-negotiation', Context_negot} | + Rest], + Acc) -> + {_, Presentation_Cid, Transfer_syntax} = Context_negot, + transform_to_EXTERNAL1990(Rest, + [Presentation_Cid, Transfer_syntax | Acc]); +transform_to_EXTERNAL1990([asn1_NOVALUE | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, [asn1_NOVALUE | Acc]); +transform_to_EXTERNAL1990([Data_val_desc, Data_value], Acc) + when is_list(Data_value); is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'octet-aligned', Data_value}, + Data_val_desc | Acc])); +transform_to_EXTERNAL1990([Data_val_desc, Data_value], Acc) + when is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'single-ASN1-type', Data_value}, + Data_val_desc | Acc])); +transform_to_EXTERNAL1990([Data_value], Acc) + when is_list(Data_value); is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'octet-aligned', Data_value} | Acc])). + +transform_to_EXTERNAL1990({_, _, _, _} = Val) -> + transform_to_EXTERNAL1990(tuple_to_list(Val), []); +transform_to_EXTERNAL1990(Val) when is_tuple(Val) -> + Val. + +transform_to_EXTERNAL1994({'EXTERNAL', DRef, IndRef, Data_v_desc, + Encoding} = + V) -> + Identification = + case {DRef, IndRef} of + {DRef, asn1_NOVALUE} -> + {syntax, DRef}; + {asn1_NOVALUE, IndRef} -> + {'presentation-context-id', IndRef}; + _ -> + {'context-negotiation', + {'EXTERNAL_identification_context-negotiation', IndRef, + DRef}} + end, + case Encoding of + {'octet-aligned', Val} when is_list(Val); is_binary(Val) -> + {'EXTERNAL', Identification, Data_v_desc, Val}; + _ -> + V + end. + +unused_bitlist([], Trail, Ack) -> + {Trail + 1, Ack}; +unused_bitlist([Bit | Rest], Trail, Ack) -> + unused_bitlist(Rest, Trail - 1, Bit bsl Trail bor Ack). diff --git a/src/IPMSAutoActionTypes.hrl b/src/IPMSAutoActionTypes.hrl new file mode 100644 index 0000000..a3a31cc --- /dev/null +++ b/src/IPMSAutoActionTypes.hrl @@ -0,0 +1,110 @@ +%% Generated by the Erlang ASN.1 compiler. Version: 5.1 +%% Purpose: Erlang record definitions for each named and unnamed +%% SEQUENCE and SET, and macro definitions for each value +%% definition in module IPMSAutoActionTypes. + +-ifndef(_IPMSAUTOACTIONTYPES_HRL_). +-define(_IPMSAUTOACTIONTYPES_HRL_, true). + +-record('IPMAutoForwardRegistrationParameter', { + filter = asn1_NOVALUE, + 'forwarding-envelope', + 'forwarding-heading', + 'forwarding-cover-note' = asn1_NOVALUE, + 'submission-options' = asn1_NOVALUE, + 'nrn-comment' = asn1_NOVALUE, + 'ipm-auto-forward-options' = asn1_DEFAULT +}). + +-record('AutoForwardRegistrationParameter88', { + filter = asn1_NOVALUE, + 'auto-forward-arguments', + 'delete-after-auto-forwarding' = asn1_DEFAULT, + 'forwarding-information' +}). + +-record('AutoForwardArguments', { + 'originator-name', + 'content-identifier' = asn1_NOVALUE, + priority = asn1_NOVALUE, + 'per-message-indicators' = asn1_NOVALUE, + 'deferred-delivery-time' = asn1_NOVALUE, + extensions = asn1_DEFAULT, + 'per-recipient-fields' +}). + +-record('AutoForwardArguments_extensions_SETOF', { + type, + criticality = asn1_DEFAULT, + value = asn1_DEFAULT +}). + +-record('PerMessageAutoForwardFields', { + 'originator-name', + 'content-identifier' = asn1_NOVALUE, + priority = asn1_NOVALUE, + 'per-message-indicators' = asn1_NOVALUE, + 'deferred-delivery-time' = asn1_NOVALUE, + extensions = asn1_DEFAULT +}). + +-record('PerMessageAutoForwardFields_extensions_SETOF', { + type, + criticality = asn1_DEFAULT, + value = asn1_DEFAULT +}). + +-record('PerRecipientAutoForwardFields', { + 'recipient-name', + 'originator-report-request', + 'explicit-conversion' = asn1_NOVALUE, + extensions = asn1_DEFAULT +}). + +-record('PerRecipientAutoForwardFields_extensions_SETOF', { + type, + criticality = asn1_DEFAULT, + value = asn1_DEFAULT +}). + +-record('ForwardingInformation1988', { + 'auto-forwarding-comment' = asn1_NOVALUE, + 'ia5-cover-note' = asn1_NOVALUE, + 'this-ipm-prefix' = asn1_NOVALUE +}). + +-record('IPMAutoAcknowledgementRegistrationParameter', { + 'auto-acknowledge-suppl-receipt-info' = asn1_NOVALUE, + 'submission-options' = asn1_NOVALUE +}). + +-record('IPMAutoDiscardRegistrationParameter', { + filter = asn1_NOVALUE, + 'submission-options' = asn1_NOVALUE, + 'auto-discard-expired-ipms', + 'auto-discard-obsoleted-ipms', + 'restrict-obsoleting-to-originator' +}). + +-record('IPMAutoAdviseRegistrationParameter', { + enabled = asn1_DEFAULT, + filter = asn1_NOVALUE, + 'advice-notifications', + 'suppress-subsequent-notifications' = asn1_DEFAULT, + 'use-ipm-if-an-not-supported' = asn1_DEFAULT, + 'submission-options' = asn1_NOVALUE +}). + +-record('IPMAutoAdviseRegistrationParameter_advice-notifications_SETOF', { + type, + value = asn1_DEFAULT +}). + +-record('EXTERNAL', { + 'direct-reference' = asn1_NOVALUE, + 'indirect-reference' = asn1_NOVALUE, + 'data-value-descriptor' = asn1_NOVALUE, + encoding +}). + +-endif. %% _IPMSAUTOACTIONTYPES_HRL_ diff --git a/src/IPMSFileTransferBodyPartType.erl b/src/IPMSFileTransferBodyPartType.erl new file mode 100644 index 0000000..a24e36d --- /dev/null +++ b/src/IPMSFileTransferBodyPartType.erl @@ -0,0 +1,2980 @@ +%% Generated by the Erlang ASN.1 BER compiler. Version: 5.1 +%% Purpose: Encoding and decoding of the types in IPMSFileTransferBodyPartType. + +-module('IPMSFileTransferBodyPartType'). +-compile(nowarn_unused_vars). +-dialyzer(no_improper_lists). +-dialyzer(no_match). +-include("IPMSFileTransferBodyPartType.hrl"). +-asn1_info([{vsn,'5.1'}, + {module,'IPMSFileTransferBodyPartType'}, + {options,[warnings,ber,errors, + {cwd,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {outdir,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {i,"."}, + {i,"/Users/maxim/depot/synrc/mail/priv/mhs"}]}]). + +-export([encoding_rule/0,maps/0,bit_string_format/0, + legacy_erlang_types/0]). +-export(['dialyzer-suppressions'/1]). +-export([ +enc_FileTransferParameters/2, +enc_FileTransferData/2, +enc_RelatedStoredFile/2, +enc_FileIdentifier/2, +enc_PathnameandVersion/2, +enc_CrossReference/2, +enc_MessageReference/2, +enc_Relationship/2, +enc_ExplicitRelationship/2, +enc_ContentsTypeParameter/2, +'enc_Contents-Type-Attribute'/2, +'enc_Document-Type-Name'/2, +'enc_Constraint-Set-Name'/2, +'enc_Abstract-Syntax-Name'/2, +enc_EnvironmentParameter/2, +enc_GeneralIdentifier/2, +enc_CompressionParameter/2, +enc_FileAttributes/2, +'enc_Pathname-Attribute'/2, +'enc_Account-Attribute'/2, +enc_Account/2, +'enc_User-Identity-Attribute'/2, +'enc_User-Identity'/2, +'enc_Access-Control-Attribute'/2, +'enc_Access-Control-Element'/2, +'enc_Access-Request'/2, +'enc_Access-Passwords'/2, +enc_Password/2, +'enc_Pass-Passwords'/2, +'enc_Application-Entity-Title'/2, +enc_EXTERNAL/2 +]). + +-export([ +dec_FileTransferParameters/2, +dec_FileTransferData/2, +dec_RelatedStoredFile/2, +dec_FileIdentifier/2, +dec_PathnameandVersion/2, +dec_CrossReference/2, +dec_MessageReference/2, +dec_Relationship/2, +dec_ExplicitRelationship/2, +dec_ContentsTypeParameter/2, +'dec_Contents-Type-Attribute'/2, +'dec_Document-Type-Name'/2, +'dec_Constraint-Set-Name'/2, +'dec_Abstract-Syntax-Name'/2, +dec_EnvironmentParameter/2, +dec_GeneralIdentifier/2, +dec_CompressionParameter/2, +dec_FileAttributes/2, +'dec_Pathname-Attribute'/2, +'dec_Account-Attribute'/2, +dec_Account/2, +'dec_User-Identity-Attribute'/2, +'dec_User-Identity'/2, +'dec_Access-Control-Attribute'/2, +'dec_Access-Control-Element'/2, +'dec_Access-Request'/2, +'dec_Access-Passwords'/2, +dec_Password/2, +'dec_Pass-Passwords'/2, +'dec_Application-Entity-Title'/2, +dec_EXTERNAL/2 +]). + +-export([ +'enc_file-transfer-body-part'/3, +'enc_file-transfer-body-part_parameters'/3, +'enc_file-transfer-body-part_data'/3 +]). + +-export([ +'dec_file-transfer-body-part'/3, +'dec_file-transfer-body-part_parameters'/3, +'dec_file-transfer-body-part_data'/3 +]). + +-export([ +getenc_CompressionAlgorithmTable/1 +]). + +-export([ +getdec_CompressionAlgorithmTable/1 +]). + +-export([info/0]). + +-export([encode/2,decode/2]). + +encoding_rule() -> ber. + +maps() -> false. + +bit_string_format() -> bitstring. + +legacy_erlang_types() -> false. + +encode(Type, Data) -> +try iolist_to_binary(element(1, encode_disp(Type, Data))) of + Bytes -> + {ok,Bytes} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +decode(Type, Data) -> +try + Result = decode_disp(Type, element(1, ber_decode_nif(Data))), + {ok,Result} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +encode_disp('FileTransferParameters', Data) -> enc_FileTransferParameters(Data); +encode_disp('FileTransferData', Data) -> enc_FileTransferData(Data); +encode_disp('RelatedStoredFile', Data) -> enc_RelatedStoredFile(Data); +encode_disp('FileIdentifier', Data) -> enc_FileIdentifier(Data); +encode_disp('PathnameandVersion', Data) -> enc_PathnameandVersion(Data); +encode_disp('CrossReference', Data) -> enc_CrossReference(Data); +encode_disp('MessageReference', Data) -> enc_MessageReference(Data); +encode_disp('Relationship', Data) -> enc_Relationship(Data); +encode_disp('ExplicitRelationship', Data) -> enc_ExplicitRelationship(Data); +encode_disp('ContentsTypeParameter', Data) -> enc_ContentsTypeParameter(Data); +encode_disp('Contents-Type-Attribute', Data) -> 'enc_Contents-Type-Attribute'(Data); +encode_disp('Document-Type-Name', Data) -> 'enc_Document-Type-Name'(Data); +encode_disp('Constraint-Set-Name', Data) -> 'enc_Constraint-Set-Name'(Data); +encode_disp('Abstract-Syntax-Name', Data) -> 'enc_Abstract-Syntax-Name'(Data); +encode_disp('EnvironmentParameter', Data) -> enc_EnvironmentParameter(Data); +encode_disp('GeneralIdentifier', Data) -> enc_GeneralIdentifier(Data); +encode_disp('CompressionParameter', Data) -> enc_CompressionParameter(Data); +encode_disp('FileAttributes', Data) -> enc_FileAttributes(Data); +encode_disp('Pathname-Attribute', Data) -> 'enc_Pathname-Attribute'(Data); +encode_disp('Account-Attribute', Data) -> 'enc_Account-Attribute'(Data); +encode_disp('Account', Data) -> enc_Account(Data); +encode_disp('User-Identity-Attribute', Data) -> 'enc_User-Identity-Attribute'(Data); +encode_disp('User-Identity', Data) -> 'enc_User-Identity'(Data); +encode_disp('Access-Control-Attribute', Data) -> 'enc_Access-Control-Attribute'(Data); +encode_disp('Access-Control-Element', Data) -> 'enc_Access-Control-Element'(Data); +encode_disp('Access-Request', Data) -> 'enc_Access-Request'(Data); +encode_disp('Access-Passwords', Data) -> 'enc_Access-Passwords'(Data); +encode_disp('Password', Data) -> enc_Password(Data); +encode_disp('Pass-Passwords', Data) -> 'enc_Pass-Passwords'(Data); +encode_disp('Application-Entity-Title', Data) -> 'enc_Application-Entity-Title'(Data); +encode_disp('EXTERNAL', Data) -> enc_EXTERNAL(Data); +encode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +decode_disp('FileTransferParameters', Data) -> dec_FileTransferParameters(Data); +decode_disp('FileTransferData', Data) -> dec_FileTransferData(Data); +decode_disp('RelatedStoredFile', Data) -> dec_RelatedStoredFile(Data); +decode_disp('FileIdentifier', Data) -> dec_FileIdentifier(Data); +decode_disp('PathnameandVersion', Data) -> dec_PathnameandVersion(Data); +decode_disp('CrossReference', Data) -> dec_CrossReference(Data); +decode_disp('MessageReference', Data) -> dec_MessageReference(Data); +decode_disp('Relationship', Data) -> dec_Relationship(Data); +decode_disp('ExplicitRelationship', Data) -> dec_ExplicitRelationship(Data); +decode_disp('ContentsTypeParameter', Data) -> dec_ContentsTypeParameter(Data); +decode_disp('Contents-Type-Attribute', Data) -> 'dec_Contents-Type-Attribute'(Data); +decode_disp('Document-Type-Name', Data) -> 'dec_Document-Type-Name'(Data); +decode_disp('Constraint-Set-Name', Data) -> 'dec_Constraint-Set-Name'(Data); +decode_disp('Abstract-Syntax-Name', Data) -> 'dec_Abstract-Syntax-Name'(Data); +decode_disp('EnvironmentParameter', Data) -> dec_EnvironmentParameter(Data); +decode_disp('GeneralIdentifier', Data) -> dec_GeneralIdentifier(Data); +decode_disp('CompressionParameter', Data) -> dec_CompressionParameter(Data); +decode_disp('FileAttributes', Data) -> dec_FileAttributes(Data); +decode_disp('Pathname-Attribute', Data) -> 'dec_Pathname-Attribute'(Data); +decode_disp('Account-Attribute', Data) -> 'dec_Account-Attribute'(Data); +decode_disp('Account', Data) -> dec_Account(Data); +decode_disp('User-Identity-Attribute', Data) -> 'dec_User-Identity-Attribute'(Data); +decode_disp('User-Identity', Data) -> 'dec_User-Identity'(Data); +decode_disp('Access-Control-Attribute', Data) -> 'dec_Access-Control-Attribute'(Data); +decode_disp('Access-Control-Element', Data) -> 'dec_Access-Control-Element'(Data); +decode_disp('Access-Request', Data) -> 'dec_Access-Request'(Data); +decode_disp('Access-Passwords', Data) -> 'dec_Access-Passwords'(Data); +decode_disp('Password', Data) -> dec_Password(Data); +decode_disp('Pass-Passwords', Data) -> 'dec_Pass-Passwords'(Data); +decode_disp('Application-Entity-Title', Data) -> 'dec_Application-Entity-Title'(Data); +decode_disp('EXTERNAL', Data) -> dec_EXTERNAL(Data); +decode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +info() -> + case ?MODULE:module_info(attributes) of + Attributes when is_list(Attributes) -> + case lists:keyfind(asn1_info, 1, Attributes) of + {_,Info} when is_list(Info) -> + Info; + _ -> + [] + end; + _ -> + [] + end. + + +%%================================ +%% FileTransferParameters +%%================================ +enc_FileTransferParameters(Val) -> + enc_FileTransferParameters(Val, [<<48>>]). + +enc_FileTransferParameters(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6} = Val, + +%%------------------------------------------------- +%% attribute related-stored-file(1) External IPMSFileTransferBodyPartType:RelatedStoredFile OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_RelatedStoredFile'(Cindex1, [<<160>>]) + end, + +%%------------------------------------------------- +%% attribute contents-type(2) External IPMSFileTransferBodyPartType:ContentsTypeParameter DEFAULT = {'document-type',{'Contents-Type-Attribute_document-type',{1,0,8571,5,3},asn1_NOVALUE}} +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= {'document-type',{'Contents-Type-Attribute_document-type',{1,0,8571,5,3},asn1_NOVALUE}} -> + {<<>>,0}; + _ -> + 'enc_ContentsTypeParameter'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute environment(3) External IPMSFileTransferBodyPartType:EnvironmentParameter OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_EnvironmentParameter'(Cindex3, [<<162>>]) + end, + +%%------------------------------------------------- +%% attribute compression(4) External IPMSFileTransferBodyPartType:CompressionParameter OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_CompressionParameter'(Cindex4, [<<163>>]) + end, + +%%------------------------------------------------- +%% attribute file-attributes(5) External IPMSFileTransferBodyPartType:FileAttributes OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_FileAttributes'(Cindex5, [<<164>>]) + end, + +%%------------------------------------------------- +%% attribute extensions(6) External IPMSInformationObjects:ExtensionsField OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case Cindex6 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'IPMSInformationObjects':'enc_ExtensionsField'(Cindex6, [<<165>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_FileTransferParameters(Tlv) -> + dec_FileTransferParameters(Tlv, [16]). + +dec_FileTransferParameters(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute related-stored-file(1) External IPMSFileTransferBodyPartType:RelatedStoredFile OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{131072,V1}|TempTlv2] -> + {'dec_RelatedStoredFile'(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute contents-type(2) External IPMSFileTransferBodyPartType:ContentsTypeParameter DEFAULT = {'document-type',{'Contents-Type-Attribute_document-type',{1,0,8571,5,3},asn1_NOVALUE}} +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {'dec_ContentsTypeParameter'(V2, []), TempTlv3}; + _ -> + {{'document-type',{'Contents-Type-Attribute_document-type',{1,0,8571,5,3},asn1_NOVALUE}},Tlv2} +end, + +%%------------------------------------------------- +%% attribute environment(3) External IPMSFileTransferBodyPartType:EnvironmentParameter OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{131074,V3}|TempTlv4] -> + {'dec_EnvironmentParameter'(V3, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute compression(4) External IPMSFileTransferBodyPartType:CompressionParameter OPTIONAL +%%------------------------------------------------- +{Term4,Tlv5} = case Tlv4 of +[{131075,V4}|TempTlv5] -> + {'dec_CompressionParameter'(V4, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute file-attributes(5) External IPMSFileTransferBodyPartType:FileAttributes OPTIONAL +%%------------------------------------------------- +{Term5,Tlv6} = case Tlv5 of +[{131076,V5}|TempTlv6] -> + {'dec_FileAttributes'(V5, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +%%------------------------------------------------- +%% attribute extensions(6) External IPMSInformationObjects:ExtensionsField OPTIONAL +%%------------------------------------------------- +{Term6,Tlv7} = case Tlv6 of +[{131077,V6}|TempTlv7] -> + {'IPMSInformationObjects':'dec_ExtensionsField'(V6, []), TempTlv7}; + _ -> + { asn1_NOVALUE, Tlv6} +end, + +case Tlv7 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv7}}}) % extra fields not allowed +end, +Res1 = {'FileTransferParameters',Term1,Term2,Term3,Term4,Term5,Term6}, +Res1. + + +%%================================ +%% FileTransferData +%%================================ +enc_FileTransferData(Val) -> + enc_FileTransferData(Val, [<<48>>]). + +enc_FileTransferData(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_FileTransferData_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_FileTransferData_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_FileTransferData_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_EXTERNAL'(H, [<<40>>]), + 'enc_FileTransferData_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_FileTransferData(Tlv) -> + dec_FileTransferData(Tlv, [16]). + +dec_FileTransferData(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_EXTERNAL'(V1, [8]) || V1 <- Tlv1]. + + + + +%%================================ +%% RelatedStoredFile +%%================================ +enc_RelatedStoredFile(Val) -> + enc_RelatedStoredFile(Val, [<<49>>]). + +enc_RelatedStoredFile(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_RelatedStoredFile_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_RelatedStoredFile_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_RelatedStoredFile_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_RelatedStoredFile_SETOF'(H, [<<48>>]), + 'enc_RelatedStoredFile_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% RelatedStoredFile_SETOF +%%================================ +enc_RelatedStoredFile_SETOF(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute file-identifier(1) External IPMSFileTransferBodyPartType:FileIdentifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_FileIdentifier'(Cindex1, []), + +%%------------------------------------------------- +%% attribute relationship(2) External IPMSFileTransferBodyPartType:Relationship DEFAULT = {'explicit-relationship',0} +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= {'explicit-relationship',0} -> + {<<>>,0}; + _ -> + 'enc_Relationship'(Cindex2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_RelatedStoredFile(Tlv) -> + dec_RelatedStoredFile(Tlv, [17]). + +dec_RelatedStoredFile(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_RelatedStoredFile_SETOF'(V1, [16]) || V1 <- Tlv1]. + + +'dec_RelatedStoredFile_SETOF'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute file-identifier(1) External IPMSFileTransferBodyPartType:FileIdentifier +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_FileIdentifier'(V1, []), + +%%------------------------------------------------- +%% attribute relationship(2) External IPMSFileTransferBodyPartType:Relationship DEFAULT = {'explicit-relationship',0} +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[V2 = {131072,_}|TempTlv3] -> + {'dec_Relationship'(V2, []), TempTlv3}; +[V2 = {131073,_}|TempTlv3] -> + {'dec_Relationship'(V2, []), TempTlv3}; + _ -> + {{'explicit-relationship',0},Tlv2} +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'RelatedStoredFile_SETOF',Term1,Term2}, +Res1. + + +%%================================ +%% FileIdentifier +%%================================ +enc_FileIdentifier(Val) -> + enc_FileIdentifier(Val, []). + +enc_FileIdentifier(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'pathname-and-version' -> + 'enc_PathnameandVersion'(element(2,Val), [<<160>>]); + 'cross-reference' -> + 'enc_CrossReference'(element(2,Val), [<<161>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_FileIdentifier(Tlv) -> + dec_FileIdentifier(Tlv, []). + +dec_FileIdentifier(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'pathname-and-version' + {131072, V1} -> + {'pathname-and-version', 'dec_PathnameandVersion'(V1, [])}; + + +%% 'cross-reference' + {131073, V1} -> + {'cross-reference', 'dec_CrossReference'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% PathnameandVersion +%%================================ +enc_PathnameandVersion(Val) -> + enc_PathnameandVersion(Val, [<<48>>]). + +enc_PathnameandVersion(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute pathname(1) External IPMSFileTransferBodyPartType:Pathname-Attribute +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_Pathname-Attribute'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute file-version(2) with type GraphicString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<129>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_PathnameandVersion(Tlv) -> + dec_PathnameandVersion(Tlv, [16]). + +dec_PathnameandVersion(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute pathname(1) External IPMSFileTransferBodyPartType:Pathname-Attribute +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_Pathname-Attribute'(V1, [131072]), + +%%------------------------------------------------- +%% attribute file-version(2) with type GraphicString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {begin +binary_to_list(decode_restricted_string(V2, [])) +end +, TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'PathnameandVersion',Term1,Term2}, +Res1. + + +%%================================ +%% CrossReference +%%================================ +enc_CrossReference(Val) -> + enc_CrossReference(Val, [<<48>>]). + +enc_CrossReference(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3} = Val, + +%%------------------------------------------------- +%% attribute application-cross-reference(1) with type OCTET STRING +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_restricted_string(Cindex1, [<<128>>]), + +%%------------------------------------------------- +%% attribute message-reference(2) External IPMSFileTransferBodyPartType:MessageReference OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_MessageReference'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute body-part-reference(3) with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_integer(Cindex3, [<<130>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_CrossReference(Tlv) -> + dec_CrossReference(Tlv, [16]). + +dec_CrossReference(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute application-cross-reference(1) with type OCTET STRING +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_octet_string(V1, [131072]), + +%%------------------------------------------------- +%% attribute message-reference(2) External IPMSFileTransferBodyPartType:MessageReference OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {'dec_MessageReference'(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute body-part-reference(3) with type INTEGER OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{131074,V3}|TempTlv4] -> + {decode_integer(V3, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'CrossReference',Term1,Term2,Term3}, +Res1. + + +%%================================ +%% MessageReference +%%================================ +enc_MessageReference(Val) -> + enc_MessageReference(Val, [<<49>>]). + +enc_MessageReference(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute user(1) External MTSAbstractService:ORName OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MTSAbstractService':'enc_ORName'(Cindex1, [<<160>>]) + end, + +%%------------------------------------------------- +%% attribute user-relative-identifier(2) with type PrintableString +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_restricted_string(Cindex2, [<<129>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_MessageReference(Tlv) -> + dec_MessageReference(Tlv, [17]). + +dec_MessageReference(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %user +TTlv = {131072,_} -> + {1, TTlv}; + %user-relative-identifier +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute user(1) External MTSAbstractService:ORName OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {'MTSAbstractService':'dec_ORName'(V1, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute user-relative-identifier(2) with type PrintableString +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = begin +binary_to_list(decode_restricted_string(V2, [131073])) +end +, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'MessageReference',Term1,Term2}, +Res1. + + +%%================================ +%% Relationship +%%================================ +enc_Relationship(Val) -> + enc_Relationship(Val, []). + +enc_Relationship(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'explicit-relationship' -> + encode_integer(element(2,Val), [{unspecified,0},{'new-file',1},{replacement,2},{extension,3}], [<<128>>]); + 'descriptive-relationship' -> + encode_restricted_string(element(2,Val), [<<129>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_Relationship(Tlv) -> + dec_Relationship(Tlv, []). + +dec_Relationship(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'explicit-relationship' + {131072, V1} -> + {'explicit-relationship', begin +Val1 = decode_integer(V1, []), +number2name(Val1, [{unspecified,0},{'new-file',1},{replacement,2},{extension,3}]) +end +}; + + +%% 'descriptive-relationship' + {131073, V1} -> + {'descriptive-relationship', begin +binary_to_list(decode_restricted_string(V1, [])) +end +}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% ExplicitRelationship +%%================================ +enc_ExplicitRelationship(Val) -> + enc_ExplicitRelationship(Val, [<<2>>]). + +enc_ExplicitRelationship(Val, TagIn) -> +encode_integer(Val, [{unspecified,0},{'new-file',1},{replacement,2},{extension,3}], TagIn). + + +dec_ExplicitRelationship(Tlv) -> + dec_ExplicitRelationship(Tlv, [2]). + +dec_ExplicitRelationship(Tlv, TagIn) -> +begin +Val1 = decode_integer(Tlv, TagIn), +number2name(Val1, [{unspecified,0},{'new-file',1},{replacement,2},{extension,3}]) +end +. + + + +%%================================ +%% ContentsTypeParameter +%%================================ +enc_ContentsTypeParameter(Val) -> + enc_ContentsTypeParameter(Val, []). + +enc_ContentsTypeParameter(Val, TagIn) -> + 'enc_Contents-Type-Attribute'(Val, TagIn). + + +dec_ContentsTypeParameter(Tlv) -> + dec_ContentsTypeParameter(Tlv, []). + +dec_ContentsTypeParameter(Tlv, TagIn) -> +'dec_Contents-Type-Attribute'(Tlv, TagIn). + + + +%%================================ +%% Contents-Type-Attribute +%%================================ +'enc_Contents-Type-Attribute'(Val) -> + 'enc_Contents-Type-Attribute'(Val, []). + +'enc_Contents-Type-Attribute'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'document-type' -> + 'enc_Contents-Type-Attribute_document-type'(element(2,Val), [<<160>>]); + 'constraint-set-and-abstract-syntax' -> + 'enc_Contents-Type-Attribute_constraint-set-and-abstract-syntax'(element(2,Val), [<<161>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + + +%%================================ +%% Contents-Type-Attribute_document-type +%%================================ +'enc_Contents-Type-Attribute_document-type'(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute document-type-name(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute parameter(2) with type ASN1_OPEN_TYPE OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_open_type(Cindex2, [<<160>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% Contents-Type-Attribute_constraint-set-and-abstract-syntax +%%================================ +'enc_Contents-Type-Attribute_constraint-set-and-abstract-syntax'(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute constraint-set-name(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute abstract-syntax-name(2) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_object_identifier(Cindex2, [<<6>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +'dec_Contents-Type-Attribute'(Tlv) -> + 'dec_Contents-Type-Attribute'(Tlv, []). + +'dec_Contents-Type-Attribute'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'document-type' + {131072, V1} -> + {'document-type', 'dec_Contents-Type-Attribute_document-type'(V1, [])}; + + +%% 'constraint-set-and-abstract-syntax' + {131073, V1} -> + {'constraint-set-and-abstract-syntax', 'dec_Contents-Type-Attribute_constraint-set-and-abstract-syntax'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. +'dec_Contents-Type-Attribute_document-type'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute document-type-name(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute parameter(2) with type ASN1_OPEN_TYPE OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131072,V2}|TempTlv3] -> + {decode_open_type_as_binary(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'Contents-Type-Attribute_document-type',Term1,Term2}, +Res1. +'dec_Contents-Type-Attribute_constraint-set-and-abstract-syntax'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute constraint-set-name(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute abstract-syntax-name(2) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = decode_object_identifier(V2, [6]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'Contents-Type-Attribute_constraint-set-and-abstract-syntax',Term1,Term2}, +Res1. + + +%%================================ +%% Document-Type-Name +%%================================ +'enc_Document-Type-Name'(Val) -> + 'enc_Document-Type-Name'(Val, [<<6>>]). + +'enc_Document-Type-Name'(Val, TagIn) -> +encode_object_identifier(Val, TagIn). + + +'dec_Document-Type-Name'(Tlv) -> + 'dec_Document-Type-Name'(Tlv, [6]). + +'dec_Document-Type-Name'(Tlv, TagIn) -> +decode_object_identifier(Tlv, TagIn). + + + +%%================================ +%% Constraint-Set-Name +%%================================ +'enc_Constraint-Set-Name'(Val) -> + 'enc_Constraint-Set-Name'(Val, [<<6>>]). + +'enc_Constraint-Set-Name'(Val, TagIn) -> +encode_object_identifier(Val, TagIn). + + +'dec_Constraint-Set-Name'(Tlv) -> + 'dec_Constraint-Set-Name'(Tlv, [6]). + +'dec_Constraint-Set-Name'(Tlv, TagIn) -> +decode_object_identifier(Tlv, TagIn). + + + +%%================================ +%% Abstract-Syntax-Name +%%================================ +'enc_Abstract-Syntax-Name'(Val) -> + 'enc_Abstract-Syntax-Name'(Val, [<<6>>]). + +'enc_Abstract-Syntax-Name'(Val, TagIn) -> +encode_object_identifier(Val, TagIn). + + +'dec_Abstract-Syntax-Name'(Tlv) -> + 'dec_Abstract-Syntax-Name'(Tlv, [6]). + +'dec_Abstract-Syntax-Name'(Tlv, TagIn) -> +decode_object_identifier(Tlv, TagIn). + + + +%%================================ +%% EnvironmentParameter +%%================================ +enc_EnvironmentParameter(Val) -> + enc_EnvironmentParameter(Val, [<<48>>]). + +enc_EnvironmentParameter(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4} = Val, + +%%------------------------------------------------- +%% attribute application-reference(1) External IPMSFileTransferBodyPartType:GeneralIdentifier OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_GeneralIdentifier'(Cindex1, [<<160>>]) + end, + +%%------------------------------------------------- +%% attribute machine(2) External IPMSFileTransferBodyPartType:GeneralIdentifier OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_GeneralIdentifier'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute operating-system(3) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_object_identifier(Cindex3, [<<130>>]) + end, + +%%------------------------------------------------- +%% attribute user-visible-string(4) with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_EnvironmentParameter_user-visible-string'(Cindex4, [<<163>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% EnvironmentParameter_user-visible-string +%%================================ +'enc_EnvironmentParameter_user-visible-string'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_EnvironmentParameter_user-visible-string_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_EnvironmentParameter_user-visible-string_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_EnvironmentParameter_user-visible-string_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = encode_restricted_string(H, [<<25>>]), + 'enc_EnvironmentParameter_user-visible-string_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_EnvironmentParameter(Tlv) -> + dec_EnvironmentParameter(Tlv, [16]). + +dec_EnvironmentParameter(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute application-reference(1) External IPMSFileTransferBodyPartType:GeneralIdentifier OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{131072,V1}|TempTlv2] -> + {'dec_GeneralIdentifier'(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute machine(2) External IPMSFileTransferBodyPartType:GeneralIdentifier OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {'dec_GeneralIdentifier'(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute operating-system(3) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{131074,V3}|TempTlv4] -> + {decode_object_identifier(V3, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute user-visible-string(4) with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- +{Term4,Tlv5} = case Tlv4 of +[{131075,V4}|TempTlv5] -> + {'dec_EnvironmentParameter_user-visible-string'(V4, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +case Tlv5 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed +end, +Res1 = {'EnvironmentParameter',Term1,Term2,Term3,Term4}, +Res1. +'dec_EnvironmentParameter_user-visible-string'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +[begin +binary_to_list(decode_restricted_string(V1, [25])) +end + || V1 <- Tlv1]. + + + + +%%================================ +%% GeneralIdentifier +%%================================ +enc_GeneralIdentifier(Val) -> + enc_GeneralIdentifier(Val, []). + +enc_GeneralIdentifier(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'registered-identifier' -> + encode_object_identifier(element(2,Val), [<<128>>]); + 'descriptive-identifier' -> + 'enc_GeneralIdentifier_descriptive-identifier'(element(2,Val), [<<161>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + + +%%================================ +%% GeneralIdentifier_descriptive-identifier +%%================================ +'enc_GeneralIdentifier_descriptive-identifier'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_GeneralIdentifier_descriptive-identifier_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_GeneralIdentifier_descriptive-identifier_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_GeneralIdentifier_descriptive-identifier_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = encode_restricted_string(H, [<<25>>]), + 'enc_GeneralIdentifier_descriptive-identifier_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_GeneralIdentifier(Tlv) -> + dec_GeneralIdentifier(Tlv, []). + +dec_GeneralIdentifier(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'registered-identifier' + {131072, V1} -> + {'registered-identifier', decode_object_identifier(V1, [])}; + + +%% 'descriptive-identifier' + {131073, V1} -> + {'descriptive-identifier', 'dec_GeneralIdentifier_descriptive-identifier'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. +'dec_GeneralIdentifier_descriptive-identifier'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +[begin +binary_to_list(decode_restricted_string(V1, [25])) +end + || V1 <- Tlv1]. + + + + +%%================================ +%% CompressionParameter +%%================================ +enc_CompressionParameter(Val) -> + enc_CompressionParameter(Val, [<<48>>]). + +enc_CompressionParameter(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, +Objcompression_algorithm_id = + 'IPMSFileTransferBodyPartType':'getenc_CompressionAlgorithmTable'( Cindex1), + +%%------------------------------------------------- +%% attribute compression-algorithm-id(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<128>>]), + +%%------------------------------------------------- +%% attribute compression-algorithm-param(2) with type typefieldType +%%------------------------------------------------- + {TmpBytes2,_} = Objcompression_algorithm_id('Type', Cindex2, []), + {EncBytes2,EncLen2} = encode_open_type(TmpBytes2, [<<161>>]) +, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_CompressionParameter(Tlv) -> + dec_CompressionParameter(Tlv, [16]). + +dec_CompressionParameter(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute compression-algorithm-id(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [131072]), + +%%------------------------------------------------- +%% attribute compression-algorithm-param(2) with type typefieldType +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, + + Tmpterm1 = decode_open_type(V2, [131073]), + +DecObjcompression_algorithm_idTerm1 = + 'IPMSFileTransferBodyPartType':'getdec_CompressionAlgorithmTable'(Term1), +Term2 = + case (catch DecObjcompression_algorithm_idTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'CompressionParameter',Term1,Term2}, +Res1. + + +%%================================ +%% FileAttributes +%%================================ +enc_FileAttributes(Val) -> + enc_FileAttributes(Val, [<<48>>]). + +enc_FileAttributes(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6,Cindex7,Cindex8,Cindex9,Cindex10,Cindex11,Cindex12,Cindex13,Cindex14,Cindex15,Cindex16,Cindex17,Cindex18} = Val, + +%%------------------------------------------------- +%% attribute pathname(1) External IPMSFileTransferBodyPartType:Pathname-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_Pathname-Attribute'(Cindex1, []) + end, + +%%------------------------------------------------- +%% attribute permitted-actions(2) with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_named_bit_string(Cindex2, [{read,0},{insert,1},{replace,2},{extend,3},{erase,4},{'read-attribute',5},{'change-attribute',6},{'delete-Object',7},{traversal,8},{'reverse-traversal',9},{'random-Order',10},{pass,11},{link,12}], [<<129>>]) + end, + +%%------------------------------------------------- +%% attribute storage-account(3) External IPMSFileTransferBodyPartType:Account-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_Account-Attribute'(Cindex3, [<<163>>]) + end, + +%%------------------------------------------------- +%% attribute date-and-time-of-creation(4) External ISO8571-FTAM:Date-and-Time-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Date-and-Time-Attribute'(Cindex4, [<<164>>]) + end, + +%%------------------------------------------------- +%% attribute date-and-time-of-last-modification(5) External ISO8571-FTAM:Date-and-Time-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Date-and-Time-Attribute'(Cindex5, [<<165>>]) + end, + +%%------------------------------------------------- +%% attribute date-and-time-of-last-read-access(6) External ISO8571-FTAM:Date-and-Time-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case Cindex6 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Date-and-Time-Attribute'(Cindex6, [<<166>>]) + end, + +%%------------------------------------------------- +%% attribute date-and-time-of-last-attribute-modification(7) External ISO8571-FTAM:Date-and-Time-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes7,EncLen7} = case Cindex7 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Date-and-Time-Attribute'(Cindex7, [<<167>>]) + end, + +%%------------------------------------------------- +%% attribute identity-of-creator(8) External IPMSFileTransferBodyPartType:User-Identity-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes8,EncLen8} = case Cindex8 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_User-Identity-Attribute'(Cindex8, [<<168>>]) + end, + +%%------------------------------------------------- +%% attribute identity-of-last-modifier(9) External IPMSFileTransferBodyPartType:User-Identity-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes9,EncLen9} = case Cindex9 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_User-Identity-Attribute'(Cindex9, [<<169>>]) + end, + +%%------------------------------------------------- +%% attribute identity-of-last-reader(10) External IPMSFileTransferBodyPartType:User-Identity-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes10,EncLen10} = case Cindex10 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_User-Identity-Attribute'(Cindex10, [<<170>>]) + end, + +%%------------------------------------------------- +%% attribute identity-of-last-attribute-modifier(11) External IPMSFileTransferBodyPartType:User-Identity-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes11,EncLen11} = case Cindex11 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_User-Identity-Attribute'(Cindex11, [<<171>>]) + end, + +%%------------------------------------------------- +%% attribute object-availability(12) External ISO8571-FTAM:Object-Availability-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes12,EncLen12} = case Cindex12 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Object-Availability-Attribute'(Cindex12, [<<172>>]) + end, + +%%------------------------------------------------- +%% attribute object-size(13) External ISO8571-FTAM:Object-Size-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes13,EncLen13} = case Cindex13 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Object-Size-Attribute'(Cindex13, [<<173>>]) + end, + +%%------------------------------------------------- +%% attribute future-object-size(14) External ISO8571-FTAM:Object-Size-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes14,EncLen14} = case Cindex14 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Object-Size-Attribute'(Cindex14, [<<174>>]) + end, + +%%------------------------------------------------- +%% attribute access-control(15) External IPMSFileTransferBodyPartType:Access-Control-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes15,EncLen15} = case Cindex15 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_Access-Control-Attribute'(Cindex15, [<<175>>]) + end, + +%%------------------------------------------------- +%% attribute legal-qualifications(16) External ISO8571-FTAM:Legal-Qualification-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes16,EncLen16} = case Cindex16 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Legal-Qualification-Attribute'(Cindex16, [<<176>>]) + end, + +%%------------------------------------------------- +%% attribute private-use(17) External ISO8571-FTAM:Private-Use-Attribute OPTIONAL +%%------------------------------------------------- + {EncBytes17,EncLen17} = case Cindex17 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Private-Use-Attribute'(Cindex17, [<<177>>]) + end, + +%%------------------------------------------------- +%% attribute attribute-extensions(18) External ISO8571-FTAM:Attribute-Extensions OPTIONAL +%%------------------------------------------------- + {EncBytes18,EncLen18} = case Cindex18 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Attribute-Extensions'(Cindex18, [<<182>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7, EncBytes8, EncBytes9, EncBytes10, EncBytes11, EncBytes12, EncBytes13, EncBytes14, EncBytes15, EncBytes16, EncBytes17, EncBytes18], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7 + EncLen8 + EncLen9 + EncLen10 + EncLen11 + EncLen12 + EncLen13 + EncLen14 + EncLen15 + EncLen16 + EncLen17 + EncLen18, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_FileAttributes(Tlv) -> + dec_FileAttributes(Tlv, [16]). + +dec_FileAttributes(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute pathname(1) External IPMSFileTransferBodyPartType:Pathname-Attribute OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[V1 = {131072,_}|TempTlv2] -> + {'dec_Pathname-Attribute'(V1, []), TempTlv2}; +[V1 = {131095,_}|TempTlv2] -> + {'dec_Pathname-Attribute'(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute permitted-actions(2) with type BIT STRING OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {decode_named_bit_string(V2, [{read,0},{insert,1},{replace,2},{extend,3},{erase,4},{'read-attribute',5},{'change-attribute',6},{'delete-Object',7},{traversal,8},{'reverse-traversal',9},{'random-Order',10},{pass,11},{link,12}], []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute storage-account(3) External IPMSFileTransferBodyPartType:Account-Attribute OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{131075,V3}|TempTlv4] -> + {'dec_Account-Attribute'(V3, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute date-and-time-of-creation(4) External ISO8571-FTAM:Date-and-Time-Attribute OPTIONAL +%%------------------------------------------------- +{Term4,Tlv5} = case Tlv4 of +[{131076,V4}|TempTlv5] -> + {'ISO8571-FTAM':'dec_Date-and-Time-Attribute'(V4, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute date-and-time-of-last-modification(5) External ISO8571-FTAM:Date-and-Time-Attribute OPTIONAL +%%------------------------------------------------- +{Term5,Tlv6} = case Tlv5 of +[{131077,V5}|TempTlv6] -> + {'ISO8571-FTAM':'dec_Date-and-Time-Attribute'(V5, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +%%------------------------------------------------- +%% attribute date-and-time-of-last-read-access(6) External ISO8571-FTAM:Date-and-Time-Attribute OPTIONAL +%%------------------------------------------------- +{Term6,Tlv7} = case Tlv6 of +[{131078,V6}|TempTlv7] -> + {'ISO8571-FTAM':'dec_Date-and-Time-Attribute'(V6, []), TempTlv7}; + _ -> + { asn1_NOVALUE, Tlv6} +end, + +%%------------------------------------------------- +%% attribute date-and-time-of-last-attribute-modification(7) External ISO8571-FTAM:Date-and-Time-Attribute OPTIONAL +%%------------------------------------------------- +{Term7,Tlv8} = case Tlv7 of +[{131079,V7}|TempTlv8] -> + {'ISO8571-FTAM':'dec_Date-and-Time-Attribute'(V7, []), TempTlv8}; + _ -> + { asn1_NOVALUE, Tlv7} +end, + +%%------------------------------------------------- +%% attribute identity-of-creator(8) External IPMSFileTransferBodyPartType:User-Identity-Attribute OPTIONAL +%%------------------------------------------------- +{Term8,Tlv9} = case Tlv8 of +[{131080,V8}|TempTlv9] -> + {'dec_User-Identity-Attribute'(V8, []), TempTlv9}; + _ -> + { asn1_NOVALUE, Tlv8} +end, + +%%------------------------------------------------- +%% attribute identity-of-last-modifier(9) External IPMSFileTransferBodyPartType:User-Identity-Attribute OPTIONAL +%%------------------------------------------------- +{Term9,Tlv10} = case Tlv9 of +[{131081,V9}|TempTlv10] -> + {'dec_User-Identity-Attribute'(V9, []), TempTlv10}; + _ -> + { asn1_NOVALUE, Tlv9} +end, + +%%------------------------------------------------- +%% attribute identity-of-last-reader(10) External IPMSFileTransferBodyPartType:User-Identity-Attribute OPTIONAL +%%------------------------------------------------- +{Term10,Tlv11} = case Tlv10 of +[{131082,V10}|TempTlv11] -> + {'dec_User-Identity-Attribute'(V10, []), TempTlv11}; + _ -> + { asn1_NOVALUE, Tlv10} +end, + +%%------------------------------------------------- +%% attribute identity-of-last-attribute-modifier(11) External IPMSFileTransferBodyPartType:User-Identity-Attribute OPTIONAL +%%------------------------------------------------- +{Term11,Tlv12} = case Tlv11 of +[{131083,V11}|TempTlv12] -> + {'dec_User-Identity-Attribute'(V11, []), TempTlv12}; + _ -> + { asn1_NOVALUE, Tlv11} +end, + +%%------------------------------------------------- +%% attribute object-availability(12) External ISO8571-FTAM:Object-Availability-Attribute OPTIONAL +%%------------------------------------------------- +{Term12,Tlv13} = case Tlv12 of +[{131084,V12}|TempTlv13] -> + {'ISO8571-FTAM':'dec_Object-Availability-Attribute'(V12, []), TempTlv13}; + _ -> + { asn1_NOVALUE, Tlv12} +end, + +%%------------------------------------------------- +%% attribute object-size(13) External ISO8571-FTAM:Object-Size-Attribute OPTIONAL +%%------------------------------------------------- +{Term13,Tlv14} = case Tlv13 of +[{131085,V13}|TempTlv14] -> + {'ISO8571-FTAM':'dec_Object-Size-Attribute'(V13, []), TempTlv14}; + _ -> + { asn1_NOVALUE, Tlv13} +end, + +%%------------------------------------------------- +%% attribute future-object-size(14) External ISO8571-FTAM:Object-Size-Attribute OPTIONAL +%%------------------------------------------------- +{Term14,Tlv15} = case Tlv14 of +[{131086,V14}|TempTlv15] -> + {'ISO8571-FTAM':'dec_Object-Size-Attribute'(V14, []), TempTlv15}; + _ -> + { asn1_NOVALUE, Tlv14} +end, + +%%------------------------------------------------- +%% attribute access-control(15) External IPMSFileTransferBodyPartType:Access-Control-Attribute OPTIONAL +%%------------------------------------------------- +{Term15,Tlv16} = case Tlv15 of +[{131087,V15}|TempTlv16] -> + {'dec_Access-Control-Attribute'(V15, []), TempTlv16}; + _ -> + { asn1_NOVALUE, Tlv15} +end, + +%%------------------------------------------------- +%% attribute legal-qualifications(16) External ISO8571-FTAM:Legal-Qualification-Attribute OPTIONAL +%%------------------------------------------------- +{Term16,Tlv17} = case Tlv16 of +[{131088,V16}|TempTlv17] -> + {'ISO8571-FTAM':'dec_Legal-Qualification-Attribute'(V16, []), TempTlv17}; + _ -> + { asn1_NOVALUE, Tlv16} +end, + +%%------------------------------------------------- +%% attribute private-use(17) External ISO8571-FTAM:Private-Use-Attribute OPTIONAL +%%------------------------------------------------- +{Term17,Tlv18} = case Tlv17 of +[{131089,V17}|TempTlv18] -> + {'ISO8571-FTAM':'dec_Private-Use-Attribute'(V17, []), TempTlv18}; + _ -> + { asn1_NOVALUE, Tlv17} +end, + +%%------------------------------------------------- +%% attribute attribute-extensions(18) External ISO8571-FTAM:Attribute-Extensions OPTIONAL +%%------------------------------------------------- +{Term18,Tlv19} = case Tlv18 of +[{131094,V18}|TempTlv19] -> + {'ISO8571-FTAM':'dec_Attribute-Extensions'(V18, []), TempTlv19}; + _ -> + { asn1_NOVALUE, Tlv18} +end, + +case Tlv19 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv19}}}) % extra fields not allowed +end, +Res1 = {'FileAttributes',Term1,Term2,Term3,Term4,Term5,Term6,Term7,Term8,Term9,Term10,Term11,Term12,Term13,Term14,Term15,Term16,Term17,Term18}, +Res1. + + +%%================================ +%% Pathname-Attribute +%%================================ +'enc_Pathname-Attribute'(Val) -> + 'enc_Pathname-Attribute'(Val, []). + +'enc_Pathname-Attribute'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'incomplete-pathname' -> + 'ISO8571-FTAM':'enc_Pathname'(element(2,Val), [<<160>>]); + 'complete-pathname' -> + 'ISO8571-FTAM':'enc_Pathname'(element(2,Val), [<<183>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +'dec_Pathname-Attribute'(Tlv) -> + 'dec_Pathname-Attribute'(Tlv, []). + +'dec_Pathname-Attribute'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'incomplete-pathname' + {131072, V1} -> + {'incomplete-pathname', 'ISO8571-FTAM':'dec_Pathname'(V1, [])}; + + +%% 'complete-pathname' + {131095, V1} -> + {'complete-pathname', 'ISO8571-FTAM':'dec_Pathname'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% Account-Attribute +%%================================ +'enc_Account-Attribute'(Val) -> + 'enc_Account-Attribute'(Val, []). + +'enc_Account-Attribute'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'no-value-available' -> + encode_null(element(2,Val), [<<128>>]); + 'actual-values' -> + encode_restricted_string(element(2,Val), [<<25>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +'dec_Account-Attribute'(Tlv) -> + 'dec_Account-Attribute'(Tlv, []). + +'dec_Account-Attribute'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'no-value-available' + {131072, V1} -> + {'no-value-available', decode_null(V1, [])}; + + +%% 'actual-values' + {25, V1} -> + {'actual-values', begin +binary_to_list(decode_restricted_string(V1, [])) +end +}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% Account +%%================================ +enc_Account(Val) -> + enc_Account(Val, [<<25>>]). + +enc_Account(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_Account(Tlv) -> + dec_Account(Tlv, [25]). + +dec_Account(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% User-Identity-Attribute +%%================================ +'enc_User-Identity-Attribute'(Val) -> + 'enc_User-Identity-Attribute'(Val, []). + +'enc_User-Identity-Attribute'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'no-value-available' -> + encode_null(element(2,Val), [<<128>>]); + 'actual-values' -> + encode_restricted_string(element(2,Val), [<<25>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +'dec_User-Identity-Attribute'(Tlv) -> + 'dec_User-Identity-Attribute'(Tlv, []). + +'dec_User-Identity-Attribute'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'no-value-available' + {131072, V1} -> + {'no-value-available', decode_null(V1, [])}; + + +%% 'actual-values' + {25, V1} -> + {'actual-values', begin +binary_to_list(decode_restricted_string(V1, [])) +end +}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% User-Identity +%%================================ +'enc_User-Identity'(Val) -> + 'enc_User-Identity'(Val, [<<25>>]). + +'enc_User-Identity'(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +'dec_User-Identity'(Tlv) -> + 'dec_User-Identity'(Tlv, [25]). + +'dec_User-Identity'(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% Access-Control-Attribute +%%================================ +'enc_Access-Control-Attribute'(Val) -> + 'enc_Access-Control-Attribute'(Val, []). + +'enc_Access-Control-Attribute'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'no-value-available' -> + encode_null(element(2,Val), [<<128>>]); + 'actual-values' -> + 'enc_Access-Control-Attribute_actual-values'(element(2,Val), [<<161>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + + +%%================================ +%% Access-Control-Attribute_actual-values +%%================================ +'enc_Access-Control-Attribute_actual-values'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_Access-Control-Attribute_actual-values_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_Access-Control-Attribute_actual-values_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_Access-Control-Attribute_actual-values_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_Access-Control-Element'(H, [<<48>>]), + 'enc_Access-Control-Attribute_actual-values_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +'dec_Access-Control-Attribute'(Tlv) -> + 'dec_Access-Control-Attribute'(Tlv, []). + +'dec_Access-Control-Attribute'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'no-value-available' + {131072, V1} -> + {'no-value-available', decode_null(V1, [])}; + + +%% 'actual-values' + {131073, V1} -> + {'actual-values', 'dec_Access-Control-Attribute_actual-values'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. +'dec_Access-Control-Attribute_actual-values'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_Access-Control-Element'(V1, [16]) || V1 <- Tlv1]. + + + + +%%================================ +%% Access-Control-Element +%%================================ +'enc_Access-Control-Element'(Val) -> + 'enc_Access-Control-Element'(Val, [<<48>>]). + +'enc_Access-Control-Element'(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5} = Val, + +%%------------------------------------------------- +%% attribute action-list(1) with type BIT STRING +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_named_bit_string(Cindex1, [{read,0},{insert,1},{replace,2},{extend,3},{erase,4},{'read-attribute',5},{'change-attribute',6},{'delete-object',7}], [<<128>>]), + +%%------------------------------------------------- +%% attribute concurrency-access(2) External ISO8571-FTAM:Concurrency-Access OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'ISO8571-FTAM':'enc_Concurrency-Access'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute identity(3) with type GraphicString OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex3, [<<130>>]) + end, + +%%------------------------------------------------- +%% attribute passwords(4) External IPMSFileTransferBodyPartType:Access-Passwords OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_Access-Passwords'(Cindex4, [<<163>>]) + end, + +%%------------------------------------------------- +%% attribute location(5) External IPMSFileTransferBodyPartType:Application-Entity-Title OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_Application-Entity-Title'(Cindex5, [<<164>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +'dec_Access-Control-Element'(Tlv) -> + 'dec_Access-Control-Element'(Tlv, [16]). + +'dec_Access-Control-Element'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute action-list(1) with type BIT STRING +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_named_bit_string(V1, [{read,0},{insert,1},{replace,2},{extend,3},{erase,4},{'read-attribute',5},{'change-attribute',6},{'delete-object',7}], [131072]), + +%%------------------------------------------------- +%% attribute concurrency-access(2) External ISO8571-FTAM:Concurrency-Access OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {'ISO8571-FTAM':'dec_Concurrency-Access'(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute identity(3) with type GraphicString OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{131074,V3}|TempTlv4] -> + {begin +binary_to_list(decode_restricted_string(V3, [])) +end +, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute passwords(4) External IPMSFileTransferBodyPartType:Access-Passwords OPTIONAL +%%------------------------------------------------- +{Term4,Tlv5} = case Tlv4 of +[{131075,V4}|TempTlv5] -> + {'dec_Access-Passwords'(V4, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute location(5) External IPMSFileTransferBodyPartType:Application-Entity-Title OPTIONAL +%%------------------------------------------------- +{Term5,Tlv6} = case Tlv5 of +[{131076,V5}|TempTlv6] -> + {'dec_Application-Entity-Title'(V5, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +case Tlv6 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv6}}}) % extra fields not allowed +end, +Res1 = {'Access-Control-Element',Term1,Term2,Term3,Term4,Term5}, +Res1. + + +%%================================ +%% Access-Request +%%================================ +'enc_Access-Request'(Val) -> + 'enc_Access-Request'(Val, [<<3>>]). + +'enc_Access-Request'(Val, TagIn) -> +encode_named_bit_string(Val, [{read,0},{insert,1},{replace,2},{extend,3},{erase,4},{'read-attribute',5},{'change-attribute',6},{'delete-object',7}], TagIn). + + +'dec_Access-Request'(Tlv) -> + 'dec_Access-Request'(Tlv, [3]). + +'dec_Access-Request'(Tlv, TagIn) -> +decode_named_bit_string(Tlv, [{read,0},{insert,1},{replace,2},{extend,3},{erase,4},{'read-attribute',5},{'change-attribute',6},{'delete-object',7}], TagIn). + + + +%%================================ +%% Access-Passwords +%%================================ +'enc_Access-Passwords'(Val) -> + 'enc_Access-Passwords'(Val, [<<48>>]). + +'enc_Access-Passwords'(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6,Cindex7,Cindex8,Cindex9,Cindex10} = Val, + +%%------------------------------------------------- +%% attribute read-password(1) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_Password'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute insert-password(2) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_Password'(Cindex2, [<<161>>]), + +%%------------------------------------------------- +%% attribute replace-password(3) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes3,EncLen3} = 'enc_Password'(Cindex3, [<<162>>]), + +%%------------------------------------------------- +%% attribute extend-password(4) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes4,EncLen4} = 'enc_Password'(Cindex4, [<<163>>]), + +%%------------------------------------------------- +%% attribute erase-password(5) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes5,EncLen5} = 'enc_Password'(Cindex5, [<<164>>]), + +%%------------------------------------------------- +%% attribute read-attribute-password(6) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes6,EncLen6} = 'enc_Password'(Cindex6, [<<165>>]), + +%%------------------------------------------------- +%% attribute change-attribute-password(7) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes7,EncLen7} = 'enc_Password'(Cindex7, [<<166>>]), + +%%------------------------------------------------- +%% attribute delete-password(8) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes8,EncLen8} = 'enc_Password'(Cindex8, [<<167>>]), + +%%------------------------------------------------- +%% attribute pass-passwords(9) External IPMSFileTransferBodyPartType:Pass-Passwords +%%------------------------------------------------- + {EncBytes9,EncLen9} = 'enc_Pass-Passwords'(Cindex9, [<<168>>]), + +%%------------------------------------------------- +%% attribute link-password(10) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- + {EncBytes10,EncLen10} = 'enc_Password'(Cindex10, [<<169>>]), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7, EncBytes8, EncBytes9, EncBytes10], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7 + EncLen8 + EncLen9 + EncLen10, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +'dec_Access-Passwords'(Tlv) -> + 'dec_Access-Passwords'(Tlv, [16]). + +'dec_Access-Passwords'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute read-password(1) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_Password'(V1, [131072]), + +%%------------------------------------------------- +%% attribute insert-password(2) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'dec_Password'(V2, [131073]), + +%%------------------------------------------------- +%% attribute replace-password(3) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V3|Tlv4] = Tlv3, +Term3 = 'dec_Password'(V3, [131074]), + +%%------------------------------------------------- +%% attribute extend-password(4) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V4|Tlv5] = Tlv4, +Term4 = 'dec_Password'(V4, [131075]), + +%%------------------------------------------------- +%% attribute erase-password(5) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V5|Tlv6] = Tlv5, +Term5 = 'dec_Password'(V5, [131076]), + +%%------------------------------------------------- +%% attribute read-attribute-password(6) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V6|Tlv7] = Tlv6, +Term6 = 'dec_Password'(V6, [131077]), + +%%------------------------------------------------- +%% attribute change-attribute-password(7) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V7|Tlv8] = Tlv7, +Term7 = 'dec_Password'(V7, [131078]), + +%%------------------------------------------------- +%% attribute delete-password(8) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V8|Tlv9] = Tlv8, +Term8 = 'dec_Password'(V8, [131079]), + +%%------------------------------------------------- +%% attribute pass-passwords(9) External IPMSFileTransferBodyPartType:Pass-Passwords +%%------------------------------------------------- +[V9|Tlv10] = Tlv9, +Term9 = 'dec_Pass-Passwords'(V9, [131080]), + +%%------------------------------------------------- +%% attribute link-password(10) External IPMSFileTransferBodyPartType:Password +%%------------------------------------------------- +[V10|Tlv11] = Tlv10, +Term10 = 'dec_Password'(V10, [131081]), + +case Tlv11 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv11}}}) % extra fields not allowed +end, +Res1 = {'Access-Passwords',Term1,Term2,Term3,Term4,Term5,Term6,Term7,Term8,Term9,Term10}, +Res1. + + +%%================================ +%% Password +%%================================ +enc_Password(Val) -> + enc_Password(Val, []). + +enc_Password(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'graphic-string' -> + encode_restricted_string(element(2,Val), [<<25>>]); + 'octet-string' -> + encode_restricted_string(element(2,Val), [<<4>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_Password(Tlv) -> + dec_Password(Tlv, []). + +dec_Password(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'graphic-string' + {25, V1} -> + {'graphic-string', begin +binary_to_list(decode_restricted_string(V1, [])) +end +}; + + +%% 'octet-string' + {4, V1} -> + {'octet-string', decode_octet_string(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% Pass-Passwords +%%================================ +'enc_Pass-Passwords'(Val) -> + 'enc_Pass-Passwords'(Val, [<<48>>]). + +'enc_Pass-Passwords'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_Pass-Passwords_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_Pass-Passwords_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_Pass-Passwords_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_Password'(H, []), + 'enc_Pass-Passwords_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +'dec_Pass-Passwords'(Tlv) -> + 'dec_Pass-Passwords'(Tlv, [16]). + +'dec_Pass-Passwords'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_Password'(V1, []) || V1 <- Tlv1]. + + + + +%%================================ +%% Application-Entity-Title +%%================================ +'enc_Application-Entity-Title'(Val) -> + 'enc_Application-Entity-Title'(Val, [<<48>>]). + +'enc_Application-Entity-Title'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute ap-title(1) External ACSE-1:AP-title +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'ACSE-1':'enc_AP-title'(Cindex1, []), + +%%------------------------------------------------- +%% attribute ae-qualifier(2) External ACSE-1:AE-qualifier +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'ACSE-1':'enc_AE-qualifier'(Cindex2, []), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +'dec_Application-Entity-Title'(Tlv) -> + 'dec_Application-Entity-Title'(Tlv, [16]). + +'dec_Application-Entity-Title'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute ap-title(1) External ACSE-1:AP-title +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'ACSE-1':'dec_AP-title'(V1, []), + +%%------------------------------------------------- +%% attribute ae-qualifier(2) External ACSE-1:AE-qualifier +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'ACSE-1':'dec_AE-qualifier'(V2, []), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'Application-Entity-Title',Term1,Term2}, +Res1. + + +%%================================ +%% EXTERNAL +%%================================ +enc_EXTERNAL(Val) -> + enc_EXTERNAL(Val, [<<40>>]). + +enc_EXTERNAL(Val, TagIn) -> + NewVal = transform_to_EXTERNAL1990(Val), +{_,Cindex1,Cindex2,Cindex3,Cindex4} = NewVal, + +%%------------------------------------------------- +%% attribute direct-reference(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_object_identifier(Cindex1, [<<6>>]) + end, + +%%------------------------------------------------- +%% attribute indirect-reference(2) with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_integer(Cindex2, [<<2>>]) + end, + +%%------------------------------------------------- +%% attribute data-value-descriptor(3) with type ObjectDescriptor OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex3, [<<7>>]) + end, + +%%------------------------------------------------- +%% attribute encoding(4) with type CHOICE +%%------------------------------------------------- + {EncBytes4,EncLen4} = 'enc_EXTERNAL_encoding'(Cindex4, []), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% EXTERNAL_encoding +%%================================ +enc_EXTERNAL_encoding(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'single-ASN1-type' -> + encode_open_type(element(2,Val), [<<160>>]); + 'octet-aligned' -> + encode_restricted_string(element(2,Val), [<<129>>]); + arbitrary -> + encode_unnamed_bit_string(element(2,Val), [<<130>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_EXTERNAL(Tlv) -> + dec_EXTERNAL(Tlv, [8]). + +dec_EXTERNAL(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute direct-reference(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{6,V1}|TempTlv2] -> + {decode_object_identifier(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute indirect-reference(2) with type INTEGER OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{2,V2}|TempTlv3] -> + {decode_integer(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute data-value-descriptor(3) with type ObjectDescriptor OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{7,V3}|TempTlv4] -> + {begin +binary_to_list(decode_restricted_string(V3, [])) +end +, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute encoding(4) with type CHOICE +%%------------------------------------------------- +[V4|Tlv5] = Tlv4, +Term4 = 'dec_EXTERNAL_encoding'(V4, []), + +case Tlv5 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed +end, +OldFormat={'EXTERNAL',Term1,Term2,Term3,Term4}, +transform_to_EXTERNAL1994(OldFormat). +'dec_EXTERNAL_encoding'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'single-ASN1-type' + {131072, V1} -> + {'single-ASN1-type', decode_open_type_as_binary(V1, [])}; + + +%% 'octet-aligned' + {131073, V1} -> + {'octet-aligned', decode_octet_string(V1, [])}; + + +%% 'arbitrary' + {131074, V1} -> + {arbitrary, decode_native_bit_string(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + + +%%================================ +%% file-transfer-body-part +%%================================ +'enc_file-transfer-body-part'(parameters, Val, [H|T]) -> + 'enc_file-transfer-body-part_parameters'(H, Val, T); +'enc_file-transfer-body-part'(data, Val, [H|T]) -> + 'enc_file-transfer-body-part_data'(H, Val, T). + + +'dec_file-transfer-body-part'(parameters, Bytes,[H|T]) -> + 'dec_file-transfer-body-part_parameters'(H, Bytes, T); +'dec_file-transfer-body-part'(data, Bytes,[H|T]) -> + 'dec_file-transfer-body-part_data'(H, Bytes, T). + + + + +%%================================ +%% file-transfer-body-part_parameters +%%================================ +'enc_file-transfer-body-part_parameters'('Type', Val, _RestPrimFieldName) -> + enc_FileTransferParameters(Val, [<<48>>]). + + +'dec_file-transfer-body-part_parameters'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_FileTransferParameters(Tlv, [16]). + +tlv_format(Bytes) when is_binary(Bytes) -> + {Tlv,_} = ber_decode_nif(Bytes), + Tlv; +tlv_format(Bytes) -> + Bytes. + + + +%%================================ +%% file-transfer-body-part_data +%%================================ +'enc_file-transfer-body-part_data'('Type', Val, _RestPrimFieldName) -> + enc_FileTransferData(Val, [<<48>>]). + + +'dec_file-transfer-body-part_data'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_FileTransferData(Tlv, [16]). + + + + +%%================================ +%% CompressionAlgorithmTable +%%================================ +getenc_CompressionAlgorithmTable(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_CompressionAlgorithmTable(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + +%%% +%%% Run-time functions. +%%% + +'dialyzer-suppressions'(Arg) -> + ok. + +ber_decode_nif(B) -> + asn1rt_nif:decode_ber_tlv(B). + +ber_encode([Tlv]) -> + ber_encode(Tlv); +ber_encode(Tlv) when is_binary(Tlv) -> + Tlv; +ber_encode(Tlv) -> + asn1rt_nif:encode_ber_tlv(Tlv). + +collect_parts(TlvList) -> + collect_parts(TlvList, []). + +collect_parts([{_, L} | Rest], Acc) when is_list(L) -> + collect_parts(Rest, [collect_parts(L) | Acc]); +collect_parts([{3, <>} | Rest], _Acc) -> + collect_parts_bit(Rest, [Bits], Unused); +collect_parts([{_T, V} | Rest], Acc) -> + collect_parts(Rest, [V | Acc]); +collect_parts([], Acc) -> + list_to_binary(lists:reverse(Acc)). + +collect_parts_bit([{3, <>} | Rest], Acc, Uacc) -> + collect_parts_bit(Rest, [Bits | Acc], Unused + Uacc); +collect_parts_bit([], Acc, Uacc) -> + list_to_binary([Uacc | lists:reverse(Acc)]). + +dec_subidentifiers(<<>>, _Av, Al) -> + lists:reverse(Al); +dec_subidentifiers(<<1:1,H:7,T/binary>>, Av, Al) -> + dec_subidentifiers(T, Av bsl 7 + H, Al); +dec_subidentifiers(<>, Av, Al) -> + dec_subidentifiers(T, 0, [Av bsl 7 + H | Al]). + +decode_bitstring2(1, Unused, + <>) -> + lists:sublist([B7, B6, B5, B4, B3, B2, B1, B0], 8 - Unused); +decode_bitstring2(Len, Unused, + <>) -> + [B7, B6, B5, B4, B3, B2, B1, B0 | + decode_bitstring2(Len - 1, Unused, Buffer)]. + +decode_bitstring_NNL(BitList, NamedNumberList) -> + decode_bitstring_NNL(BitList, NamedNumberList, 0, []). + +decode_bitstring_NNL([], _, _No, Result) -> + lists:reverse(Result); +decode_bitstring_NNL([B | BitList], + [{Name, No} | NamedNumberList], + No, Result) -> + if + B =:= 0 -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + Result); + true -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + [Name | Result]) + end; +decode_bitstring_NNL([1 | BitList], NamedNumberList, No, Result) -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + [{bit, No} | Result]); +decode_bitstring_NNL([0 | BitList], NamedNumberList, No, Result) -> + decode_bitstring_NNL(BitList, NamedNumberList, No + 1, Result). + +decode_integer(Tlv, TagIn) -> + Bin = match_tags(Tlv, TagIn), + Len = byte_size(Bin), + <> = Bin, + Int. + +decode_named_bit_string(Buffer, NamedNumberList, Tags) -> + case match_and_collect(Buffer, Tags) of + <<0>> -> + []; + <> -> + BitString = decode_bitstring2(byte_size(Bits), Unused, Bits), + decode_bitstring_NNL(BitString, NamedNumberList) + end. + +decode_native_bit_string(Buffer, Tags) -> + case match_and_collect(Buffer, Tags) of + <<0>> -> + <<>>; + <> -> + Size = bit_size(Bits) - Unused, + <> = Bits, + Val + end. + +decode_null(Tlv, Tags) -> + Val = match_tags(Tlv, Tags), + case Val of + <<>> -> + 'NULL'; + _ -> + exit({error, {asn1, {decode_null, Val}}}) + end. + +decode_object_identifier(Tlv, Tags) -> + Val = match_tags(Tlv, Tags), + [AddedObjVal | ObjVals] = dec_subidentifiers(Val, 0, []), + {Val1, Val2} = + if + AddedObjVal < 40 -> + {0, AddedObjVal}; + AddedObjVal < 80 -> + {1, AddedObjVal - 40}; + true -> + {2, AddedObjVal - 80} + end, + list_to_tuple([Val1, Val2 | ObjVals]). + +decode_octet_string(Tlv, TagsIn) -> + Bin = match_and_collect(Tlv, TagsIn), + binary:copy(Bin). + +decode_open_type(Tlv, TagIn) -> + case match_tags(Tlv, TagIn) of + Bin when is_binary(Bin) -> + {InnerTlv, _} = ber_decode_nif(Bin), + InnerTlv; + TlvBytes -> + TlvBytes + end. + +decode_open_type_as_binary(Tlv, TagIn) -> + ber_encode(match_tags(Tlv, TagIn)). + +decode_restricted_string(Tlv, TagsIn) -> + match_and_collect(Tlv, TagsIn). + +do_encode_named_bit_string([FirstVal | RestVal], NamedBitList, TagIn) -> + ToSetPos = get_all_bitposes([FirstVal | RestVal], NamedBitList, []), + Size = lists:max(ToSetPos) + 1, + BitList = make_and_set_list(Size, ToSetPos, 0), + {Len, Unused, OctetList} = encode_bitstring(BitList), + encode_tags(TagIn, [Unused | OctetList], Len + 1). + +e_object_identifier({'OBJECT IDENTIFIER', V}) -> + e_object_identifier(V); +e_object_identifier(V) when is_tuple(V) -> + e_object_identifier(tuple_to_list(V)); +e_object_identifier([E1, E2 | Tail]) -> + Head = 40 * E1 + E2, + {H, Lh} = mk_object_val(Head), + {R, Lr} = lists:mapfoldl(fun enc_obj_id_tail/2, 0, Tail), + {[H | R], Lh + Lr}. + +enc_obj_id_tail(H, Len) -> + {B, L} = mk_object_val(H), + {B, Len + L}. + +encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest]) -> + Val = + B8 bsl 7 bor (B7 bsl 6) bor (B6 bsl 5) bor (B5 bsl 4) + bor + (B4 bsl 3) + bor + (B3 bsl 2) + bor + (B2 bsl 1) + bor + B1, + encode_bitstring(Rest, [Val], 1); +encode_bitstring(Val) -> + {Unused, Octet} = unused_bitlist(Val, 7, 0), + {1, Unused, [Octet]}. + +encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest], Ack, Len) -> + Val = + B8 bsl 7 bor (B7 bsl 6) bor (B6 bsl 5) bor (B5 bsl 4) + bor + (B4 bsl 3) + bor + (B3 bsl 2) + bor + (B2 bsl 1) + bor + B1, + encode_bitstring(Rest, [Ack, Val], Len + 1); +encode_bitstring([], Ack, Len) -> + {Len, 0, Ack}; +encode_bitstring(Rest, Ack, Len) -> + {Unused, Val} = unused_bitlist(Rest, 7, 0), + {Len + 1, Unused, [Ack, Val]}. + +encode_integer(Val) -> + Bytes = + if + Val >= 0 -> + encode_integer_pos(Val, []); + true -> + encode_integer_neg(Val, []) + end, + {Bytes, length(Bytes)}. + +encode_integer(Val, NamedNumberList, Tag) when is_atom(Val) -> + case lists:keyfind(Val, 1, NamedNumberList) of + {_, NewVal} -> + encode_tags(Tag, encode_integer(NewVal)); + _ -> + exit({error, {asn1, {encode_integer_namednumber, Val}}}) + end; +encode_integer(Val, _NamedNumberList, Tag) -> + encode_tags(Tag, encode_integer(Val)). + +encode_integer(Val, Tag) when is_integer(Val) -> + encode_tags(Tag, encode_integer(Val)); +encode_integer(Val, _Tag) -> + exit({error, {asn1, {encode_integer, Val}}}). + +encode_integer_neg(-1, [B1 | _T] = L) when B1 > 127 -> + L; +encode_integer_neg(N, Acc) -> + encode_integer_neg(N bsr 8, [N band 255 | Acc]). + +encode_integer_pos(0, [B | _Acc] = L) when B < 128 -> + L; +encode_integer_pos(N, Acc) -> + encode_integer_pos(N bsr 8, [N band 255 | Acc]). + +encode_length(L) when L =< 127 -> + {[L], 1}; +encode_length(L) -> + Oct = minimum_octets(L), + Len = length(Oct), + if + Len =< 126 -> + {[128 bor Len | Oct], Len + 1}; + true -> + exit({error, {asn1, too_long_length_oct, Len}}) + end. + +encode_named_bit_string([H | _] = Bits, NamedBitList, TagIn) + when is_atom(H) -> + do_encode_named_bit_string(Bits, NamedBitList, TagIn); +encode_named_bit_string([{bit, _} | _] = Bits, NamedBitList, TagIn) -> + do_encode_named_bit_string(Bits, NamedBitList, TagIn); +encode_named_bit_string([], _NamedBitList, TagIn) -> + encode_unnamed_bit_string(<<>>, TagIn); +encode_named_bit_string(Bits, _NamedBitList, TagIn) + when is_bitstring(Bits) -> + encode_unnamed_bit_string(Bits, TagIn). + +encode_null(_Val, TagIn) -> + encode_tags(TagIn, [], 0). + +encode_object_identifier(Val, TagIn) -> + encode_tags(TagIn, e_object_identifier(Val)). + +encode_open_type(Val, T) when is_list(Val) -> + encode_open_type(list_to_binary(Val), T); +encode_open_type(Val, Tag) -> + encode_tags(Tag, Val, byte_size(Val)). + +encode_restricted_string(OctetList, TagIn) when is_binary(OctetList) -> + encode_tags(TagIn, OctetList, byte_size(OctetList)); +encode_restricted_string(OctetList, TagIn) when is_list(OctetList) -> + encode_tags(TagIn, OctetList, length(OctetList)). + +encode_tags(TagIn, {BytesSoFar, LenSoFar}) -> + encode_tags(TagIn, BytesSoFar, LenSoFar). + +encode_tags([Tag | Trest], BytesSoFar, LenSoFar) -> + {Bytes2, L2} = encode_length(LenSoFar), + encode_tags(Trest, + [Tag, Bytes2 | BytesSoFar], + LenSoFar + byte_size(Tag) + L2); +encode_tags([], BytesSoFar, LenSoFar) -> + {BytesSoFar, LenSoFar}. + +encode_unnamed_bit_string(Bits, TagIn) -> + Unused = (8 - bit_size(Bits) band 7) band 7, + Bin = <>, + encode_tags(TagIn, Bin, byte_size(Bin)). + +get_all_bitposes([{bit, ValPos} | Rest], NamedBitList, Ack) -> + get_all_bitposes(Rest, NamedBitList, [ValPos | Ack]); +get_all_bitposes([Val | Rest], NamedBitList, Ack) when is_atom(Val) -> + case lists:keyfind(Val, 1, NamedBitList) of + {_ValName, ValPos} -> + get_all_bitposes(Rest, NamedBitList, [ValPos | Ack]); + _ -> + exit({error, {asn1, {bitstring_namedbit, Val}}}) + end; +get_all_bitposes([], _NamedBitList, Ack) -> + lists:sort(Ack). + +make_and_set_list(0, [], _) -> + []; +make_and_set_list(0, _, _) -> + exit({error, {asn1, bitstring_sizeconstraint}}); +make_and_set_list(Len, [XPos | SetPos], XPos) -> + [1 | make_and_set_list(Len - 1, SetPos, XPos + 1)]; +make_and_set_list(Len, [Pos | SetPos], XPos) -> + [0 | make_and_set_list(Len - 1, [Pos | SetPos], XPos + 1)]; +make_and_set_list(Len, [], XPos) -> + [0 | make_and_set_list(Len - 1, [], XPos + 1)]. + +match_and_collect(Tlv, TagsIn) -> + Val = match_tags(Tlv, TagsIn), + case Val of + [_ | _] = PartList -> + collect_parts(PartList); + Bin when is_binary(Bin) -> + Bin + end. + +match_tags({T, V}, [T]) -> + V; +match_tags({T, V}, [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, V}], [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, _V} | _] = Vlist, [T]) -> + Vlist; +match_tags(Tlv, []) -> + Tlv; +match_tags({Tag, _V} = Tlv, [T | _Tt]) -> + exit({error, {asn1, {wrong_tag, {{expected, T}, {got, Tag, Tlv}}}}}). + +minimum_octets(0, Acc) -> + Acc; +minimum_octets(Val, Acc) -> + minimum_octets(Val bsr 8, [Val band 255 | Acc]). + +minimum_octets(Val) -> + minimum_octets(Val, []). + +mk_object_val(0, Ack, Len) -> + {Ack, Len}; +mk_object_val(Val, Ack, Len) -> + mk_object_val(Val bsr 7, [Val band 127 bor 128 | Ack], Len + 1). + +mk_object_val(Val) when Val =< 127 -> + {[255 band Val], 1}; +mk_object_val(Val) -> + mk_object_val(Val bsr 7, [Val band 127], 1). + +number2name(Int, NamedNumberList) -> + case lists:keyfind(Int, 2, NamedNumberList) of + {NamedVal, _} -> + NamedVal; + _ -> + Int + end. + +transform_to_EXTERNAL1990(['EXTERNAL' | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, ['EXTERNAL' | Acc]); +transform_to_EXTERNAL1990([{syntax, Syntax} | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, [asn1_NOVALUE, Syntax | Acc]); +transform_to_EXTERNAL1990([{'presentation-context-id', PCid} | Rest], + Acc) -> + transform_to_EXTERNAL1990(Rest, [PCid, asn1_NOVALUE | Acc]); +transform_to_EXTERNAL1990([{'context-negotiation', Context_negot} | + Rest], + Acc) -> + {_, Presentation_Cid, Transfer_syntax} = Context_negot, + transform_to_EXTERNAL1990(Rest, + [Presentation_Cid, Transfer_syntax | Acc]); +transform_to_EXTERNAL1990([asn1_NOVALUE | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, [asn1_NOVALUE | Acc]); +transform_to_EXTERNAL1990([Data_val_desc, Data_value], Acc) + when is_list(Data_value); is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'octet-aligned', Data_value}, + Data_val_desc | Acc])); +transform_to_EXTERNAL1990([Data_val_desc, Data_value], Acc) + when is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'single-ASN1-type', Data_value}, + Data_val_desc | Acc])); +transform_to_EXTERNAL1990([Data_value], Acc) + when is_list(Data_value); is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'octet-aligned', Data_value} | Acc])). + +transform_to_EXTERNAL1990({_, _, _, _} = Val) -> + transform_to_EXTERNAL1990(tuple_to_list(Val), []); +transform_to_EXTERNAL1990(Val) when is_tuple(Val) -> + Val. + +transform_to_EXTERNAL1994({'EXTERNAL', DRef, IndRef, Data_v_desc, + Encoding} = + V) -> + Identification = + case {DRef, IndRef} of + {DRef, asn1_NOVALUE} -> + {syntax, DRef}; + {asn1_NOVALUE, IndRef} -> + {'presentation-context-id', IndRef}; + _ -> + {'context-negotiation', + {'EXTERNAL_identification_context-negotiation', IndRef, + DRef}} + end, + case Encoding of + {'octet-aligned', Val} when is_list(Val); is_binary(Val) -> + {'EXTERNAL', Identification, Data_v_desc, Val}; + _ -> + V + end. + +unused_bitlist([], Trail, Ack) -> + {Trail + 1, Ack}; +unused_bitlist([Bit | Rest], Trail, Ack) -> + unused_bitlist(Rest, Trail - 1, Bit bsl Trail bor Ack). diff --git a/src/IPMSFileTransferBodyPartType.hrl b/src/IPMSFileTransferBodyPartType.hrl new file mode 100644 index 0000000..aad9b7b --- /dev/null +++ b/src/IPMSFileTransferBodyPartType.hrl @@ -0,0 +1,115 @@ +%% Generated by the Erlang ASN.1 compiler. Version: 5.1 +%% Purpose: Erlang record definitions for each named and unnamed +%% SEQUENCE and SET, and macro definitions for each value +%% definition in module IPMSFileTransferBodyPartType. + +-ifndef(_IPMSFILETRANSFERBODYPARTTYPE_HRL_). +-define(_IPMSFILETRANSFERBODYPARTTYPE_HRL_, true). + +-record('FileTransferParameters', { + 'related-stored-file' = asn1_NOVALUE, + 'contents-type' = asn1_DEFAULT, + environment = asn1_NOVALUE, + compression = asn1_NOVALUE, + 'file-attributes' = asn1_NOVALUE, + extensions = asn1_NOVALUE +}). + +-record('RelatedStoredFile_SETOF', { + 'file-identifier', + relationship = asn1_DEFAULT +}). + +-record('PathnameandVersion', { + pathname, + 'file-version' = asn1_NOVALUE +}). + +-record('CrossReference', { + 'application-cross-reference', + 'message-reference' = asn1_NOVALUE, + 'body-part-reference' = asn1_NOVALUE +}). + +-record('MessageReference', { + user = asn1_NOVALUE, + 'user-relative-identifier' +}). + +-record('Contents-Type-Attribute_document-type', { + 'document-type-name', + parameter = asn1_NOVALUE +}). + +-record('Contents-Type-Attribute_constraint-set-and-abstract-syntax', { + 'constraint-set-name', + 'abstract-syntax-name' +}). + +-record('EnvironmentParameter', { + 'application-reference' = asn1_NOVALUE, + machine = asn1_NOVALUE, + 'operating-system' = asn1_NOVALUE, + 'user-visible-string' = asn1_NOVALUE +}). + +-record('CompressionParameter', { + 'compression-algorithm-id', + 'compression-algorithm-param' +}). + +-record('FileAttributes', { + pathname = asn1_NOVALUE, + 'permitted-actions' = asn1_NOVALUE, + 'storage-account' = asn1_NOVALUE, + 'date-and-time-of-creation' = asn1_NOVALUE, + 'date-and-time-of-last-modification' = asn1_NOVALUE, + 'date-and-time-of-last-read-access' = asn1_NOVALUE, + 'date-and-time-of-last-attribute-modification' = asn1_NOVALUE, + 'identity-of-creator' = asn1_NOVALUE, + 'identity-of-last-modifier' = asn1_NOVALUE, + 'identity-of-last-reader' = asn1_NOVALUE, + 'identity-of-last-attribute-modifier' = asn1_NOVALUE, + 'object-availability' = asn1_NOVALUE, + 'object-size' = asn1_NOVALUE, + 'future-object-size' = asn1_NOVALUE, + 'access-control' = asn1_NOVALUE, + 'legal-qualifications' = asn1_NOVALUE, + 'private-use' = asn1_NOVALUE, + 'attribute-extensions' = asn1_NOVALUE +}). + +-record('Access-Control-Element', { + 'action-list', + 'concurrency-access' = asn1_NOVALUE, + identity = asn1_NOVALUE, + passwords = asn1_NOVALUE, + location = asn1_NOVALUE +}). + +-record('Access-Passwords', { + 'read-password', + 'insert-password', + 'replace-password', + 'extend-password', + 'erase-password', + 'read-attribute-password', + 'change-attribute-password', + 'delete-password', + 'pass-passwords', + 'link-password' +}). + +-record('Application-Entity-Title', { + 'ap-title', + 'ae-qualifier' +}). + +-record('EXTERNAL', { + 'direct-reference' = asn1_NOVALUE, + 'indirect-reference' = asn1_NOVALUE, + 'data-value-descriptor' = asn1_NOVALUE, + encoding +}). + +-endif. %% _IPMSFILETRANSFERBODYPARTTYPE_HRL_ diff --git a/src/IPMSHeadingExtensions.erl b/src/IPMSHeadingExtensions.erl new file mode 100644 index 0000000..6ef87df --- /dev/null +++ b/src/IPMSHeadingExtensions.erl @@ -0,0 +1,2462 @@ +%% Generated by the Erlang ASN.1 BER compiler. Version: 5.1 +%% Purpose: Encoding and decoding of the types in IPMSHeadingExtensions. + +-module('IPMSHeadingExtensions'). +-compile(nowarn_unused_vars). +-dialyzer(no_improper_lists). +-dialyzer(no_match). +-include("IPMSHeadingExtensions.hrl"). +-asn1_info([{vsn,'5.1'}, + {module,'IPMSHeadingExtensions'}, + {options,[warnings,ber,errors, + {cwd,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {outdir,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {i,"."}, + {i,"/Users/maxim/depot/synrc/mail/priv/mhs"}]}]). + +-export([encoding_rule/0,maps/0,bit_string_format/0, + legacy_erlang_types/0]). +-export(['dialyzer-suppressions'/1]). +-export([ +enc_IncompleteCopy/2, +enc_Language/2, +enc_AutoSubmitted/2, +enc_BodyPartSignatures/2, +enc_BodyPartNumber/2, +enc_BodyPartSignature/2, +enc_IPMSecurityLabel/2, +enc_BodyPartSecurityLabel/2, +enc_AuthorizationTime/2, +enc_CirculationList/2, +enc_CirculationMember/2, +enc_Checkmark/2, +enc_CirculationTime/2, +enc_CirculationSignature/2, +enc_CirculationSignatureAlgorithmIdentifier/2, +enc_DistributionCodes/2, +enc_DistributionCode/2, +enc_AlphaCode/2, +enc_ExtendedSubject/2, +enc_InformationCategories/2, +enc_InformationCategory/2, +enc_DescriptionString/2, +enc_ManualHandlingInstructions/2, +enc_ManualHandlingInstruction/2, +enc_OriginatorsReference/2, +enc_PrecedencePolicyIdentifier/2, +enc_Precedence/2 +]). + +-export([ +dec_IncompleteCopy/2, +dec_Language/2, +dec_AutoSubmitted/2, +dec_BodyPartSignatures/2, +dec_BodyPartNumber/2, +dec_BodyPartSignature/2, +dec_IPMSecurityLabel/2, +dec_BodyPartSecurityLabel/2, +dec_AuthorizationTime/2, +dec_CirculationList/2, +dec_CirculationMember/2, +dec_Checkmark/2, +dec_CirculationTime/2, +dec_CirculationSignature/2, +dec_CirculationSignatureAlgorithmIdentifier/2, +dec_DistributionCodes/2, +dec_DistributionCode/2, +dec_AlphaCode/2, +dec_ExtendedSubject/2, +dec_InformationCategories/2, +dec_InformationCategory/2, +dec_DescriptionString/2, +dec_ManualHandlingInstructions/2, +dec_ManualHandlingInstruction/2, +dec_OriginatorsReference/2, +dec_PrecedencePolicyIdentifier/2, +dec_Precedence/2 +]). + +-export([ +'enc_incomplete-copy'/3, +enc_languages/3, +'enc_auto-submitted'/3, +'enc_body-part-signatures'/3, +'enc_ipm-security-label'/3, +'enc_authorization-time'/3, +'enc_circulation-list-recipients'/3, +'enc_circulation-list-indicator'/3, +'enc_distribution-codes'/3, +'enc_extended-subject'/3, +'enc_information-category'/3, +'enc_manual-handling-instructions'/3, +'enc_originators-reference'/3, +'enc_precedence-policy-identifier'/3, +enc_precedence/3 +]). + +-export([ +'dec_incomplete-copy'/3, +dec_languages/3, +'dec_auto-submitted'/3, +'dec_body-part-signatures'/3, +'dec_ipm-security-label'/3, +'dec_authorization-time'/3, +'dec_circulation-list-recipients'/3, +'dec_circulation-list-indicator'/3, +'dec_distribution-codes'/3, +'dec_extended-subject'/3, +'dec_information-category'/3, +'dec_manual-handling-instructions'/3, +'dec_originators-reference'/3, +'dec_precedence-policy-identifier'/3, +dec_precedence/3 +]). + +-export([info/0]). + +-export([encode/2,decode/2]). + +encoding_rule() -> ber. + +maps() -> false. + +bit_string_format() -> bitstring. + +legacy_erlang_types() -> false. + +encode(Type, Data) -> +try iolist_to_binary(element(1, encode_disp(Type, Data))) of + Bytes -> + {ok,Bytes} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +decode(Type, Data) -> +try + Result = decode_disp(Type, element(1, ber_decode_nif(Data))), + {ok,Result} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +encode_disp('IncompleteCopy', Data) -> enc_IncompleteCopy(Data); +encode_disp('Language', Data) -> enc_Language(Data); +encode_disp('AutoSubmitted', Data) -> enc_AutoSubmitted(Data); +encode_disp('BodyPartSignatures', Data) -> enc_BodyPartSignatures(Data); +encode_disp('BodyPartNumber', Data) -> enc_BodyPartNumber(Data); +encode_disp('BodyPartSignature', Data) -> enc_BodyPartSignature(Data); +encode_disp('IPMSecurityLabel', Data) -> enc_IPMSecurityLabel(Data); +encode_disp('BodyPartSecurityLabel', Data) -> enc_BodyPartSecurityLabel(Data); +encode_disp('AuthorizationTime', Data) -> enc_AuthorizationTime(Data); +encode_disp('CirculationList', Data) -> enc_CirculationList(Data); +encode_disp('CirculationMember', Data) -> enc_CirculationMember(Data); +encode_disp('Checkmark', Data) -> enc_Checkmark(Data); +encode_disp('CirculationTime', Data) -> enc_CirculationTime(Data); +encode_disp('CirculationSignature', Data) -> enc_CirculationSignature(Data); +encode_disp('CirculationSignatureAlgorithmIdentifier', Data) -> enc_CirculationSignatureAlgorithmIdentifier(Data); +encode_disp('DistributionCodes', Data) -> enc_DistributionCodes(Data); +encode_disp('DistributionCode', Data) -> enc_DistributionCode(Data); +encode_disp('AlphaCode', Data) -> enc_AlphaCode(Data); +encode_disp('ExtendedSubject', Data) -> enc_ExtendedSubject(Data); +encode_disp('InformationCategories', Data) -> enc_InformationCategories(Data); +encode_disp('InformationCategory', Data) -> enc_InformationCategory(Data); +encode_disp('DescriptionString', Data) -> enc_DescriptionString(Data); +encode_disp('ManualHandlingInstructions', Data) -> enc_ManualHandlingInstructions(Data); +encode_disp('ManualHandlingInstruction', Data) -> enc_ManualHandlingInstruction(Data); +encode_disp('OriginatorsReference', Data) -> enc_OriginatorsReference(Data); +encode_disp('PrecedencePolicyIdentifier', Data) -> enc_PrecedencePolicyIdentifier(Data); +encode_disp('Precedence', Data) -> enc_Precedence(Data); +encode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +decode_disp('IncompleteCopy', Data) -> dec_IncompleteCopy(Data); +decode_disp('Language', Data) -> dec_Language(Data); +decode_disp('AutoSubmitted', Data) -> dec_AutoSubmitted(Data); +decode_disp('BodyPartSignatures', Data) -> dec_BodyPartSignatures(Data); +decode_disp('BodyPartNumber', Data) -> dec_BodyPartNumber(Data); +decode_disp('BodyPartSignature', Data) -> dec_BodyPartSignature(Data); +decode_disp('IPMSecurityLabel', Data) -> dec_IPMSecurityLabel(Data); +decode_disp('BodyPartSecurityLabel', Data) -> dec_BodyPartSecurityLabel(Data); +decode_disp('AuthorizationTime', Data) -> dec_AuthorizationTime(Data); +decode_disp('CirculationList', Data) -> dec_CirculationList(Data); +decode_disp('CirculationMember', Data) -> dec_CirculationMember(Data); +decode_disp('Checkmark', Data) -> dec_Checkmark(Data); +decode_disp('CirculationTime', Data) -> dec_CirculationTime(Data); +decode_disp('CirculationSignature', Data) -> dec_CirculationSignature(Data); +decode_disp('CirculationSignatureAlgorithmIdentifier', Data) -> dec_CirculationSignatureAlgorithmIdentifier(Data); +decode_disp('DistributionCodes', Data) -> dec_DistributionCodes(Data); +decode_disp('DistributionCode', Data) -> dec_DistributionCode(Data); +decode_disp('AlphaCode', Data) -> dec_AlphaCode(Data); +decode_disp('ExtendedSubject', Data) -> dec_ExtendedSubject(Data); +decode_disp('InformationCategories', Data) -> dec_InformationCategories(Data); +decode_disp('InformationCategory', Data) -> dec_InformationCategory(Data); +decode_disp('DescriptionString', Data) -> dec_DescriptionString(Data); +decode_disp('ManualHandlingInstructions', Data) -> dec_ManualHandlingInstructions(Data); +decode_disp('ManualHandlingInstruction', Data) -> dec_ManualHandlingInstruction(Data); +decode_disp('OriginatorsReference', Data) -> dec_OriginatorsReference(Data); +decode_disp('PrecedencePolicyIdentifier', Data) -> dec_PrecedencePolicyIdentifier(Data); +decode_disp('Precedence', Data) -> dec_Precedence(Data); +decode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +info() -> + case ?MODULE:module_info(attributes) of + Attributes when is_list(Attributes) -> + case lists:keyfind(asn1_info, 1, Attributes) of + {_,Info} when is_list(Info) -> + Info; + _ -> + [] + end; + _ -> + [] + end. + + +%%================================ +%% IncompleteCopy +%%================================ +enc_IncompleteCopy(Val) -> + enc_IncompleteCopy(Val, [<<5>>]). + +enc_IncompleteCopy(Val, TagIn) -> +encode_null(Val, TagIn). + + +dec_IncompleteCopy(Tlv) -> + dec_IncompleteCopy(Tlv, [5]). + +dec_IncompleteCopy(Tlv, TagIn) -> +decode_null(Tlv, TagIn). + + + +%%================================ +%% Language +%%================================ +enc_Language(Val) -> + enc_Language(Val, [<<19>>]). + +enc_Language(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_Language(Tlv) -> + dec_Language(Tlv, [19]). + +dec_Language(Tlv, TagIn) -> +begin +Val1 = decode_restricted_string(Tlv, TagIn), +C1 = byte_size(Val1), +if 2 =< C1, C1 =< 5 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% AutoSubmitted +%%================================ +enc_AutoSubmitted(Val) -> + enc_AutoSubmitted(Val, [<<10>>]). + +enc_AutoSubmitted(Val, TagIn) -> +case Val of +'not-auto-submitted' -> encode_tags(TagIn, [0], 1); +'auto-generated' -> encode_tags(TagIn, [1], 1); +'auto-replied' -> encode_tags(TagIn, [2], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end. + + +dec_AutoSubmitted(Tlv) -> + dec_AutoSubmitted(Tlv, [10]). + +dec_AutoSubmitted(Tlv, TagIn) -> +case decode_integer(Tlv, TagIn) of +0 -> 'not-auto-submitted'; +1 -> 'auto-generated'; +2 -> 'auto-replied'; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end. + + + +%%================================ +%% BodyPartSignatures +%%================================ +enc_BodyPartSignatures(Val) -> + enc_BodyPartSignatures(Val, [<<49>>]). + +enc_BodyPartSignatures(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_BodyPartSignatures_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_BodyPartSignatures_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_BodyPartSignatures_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_BodyPartSignatures_SETOF'(H, [<<49>>]), + 'enc_BodyPartSignatures_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% BodyPartSignatures_SETOF +%%================================ +enc_BodyPartSignatures_SETOF(Val, TagIn) -> + {_,Cindex1,Cindex2,Cindex3,Cindex4} = Val, + +%%------------------------------------------------- +%% attribute body-part-number(1) with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_integer(Cindex1, [<<2>>]), + +%%------------------------------------------------- +%% attribute body-part-signature(2) External IPMSHeadingExtensions:BodyPartSignature +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_BodyPartSignature'(Cindex2, [<<48>>]), + +%%------------------------------------------------- +%% attribute originator-certificate-selector(3) External CertificateExtensions:CertificateAssertion OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CertificateExtensions':'enc_CertificateAssertion'(Cindex3, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute originator-certificates(4) External MTSAbstractService:ExtendedCertificates OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MTSAbstractService':'enc_ExtendedCertificates'(Cindex4, [<<160>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_BodyPartSignatures(Tlv) -> + dec_BodyPartSignatures(Tlv, [17]). + +dec_BodyPartSignatures(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_BodyPartSignatures_SETOF'(V1, [17]) || V1 <- Tlv1]. + + +'dec_BodyPartSignatures_SETOF'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %body-part-number +TTlv = {2,_} -> + {1, TTlv}; + %body-part-signature +TTlv = {16,_} -> + {2, TTlv}; + %originator-certificate-selector +TTlv = {131073,_} -> + {3, TTlv}; + %originator-certificates +TTlv = {131072,_} -> + {4, TTlv}; + Else -> + {5, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute body-part-number(1) with type INTEGER +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = begin +Val1 = decode_integer(V1, [2]), +if 1 =< Val1, Val1 =< 'MAX' -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end, + +%%------------------------------------------------- +%% attribute body-part-signature(2) External IPMSHeadingExtensions:BodyPartSignature +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = 'dec_BodyPartSignature'(V2, [16]), + +%%------------------------------------------------- +%% attribute originator-certificate-selector(3) External CertificateExtensions:CertificateAssertion OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131073,V3}|TempTlv5] -> + {'CertificateExtensions':'dec_CertificateAssertion'(V3, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute originator-certificates(4) External MTSAbstractService:ExtendedCertificates OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{131072,V4}|TempTlv6] -> + {'MTSAbstractService':'dec_ExtendedCertificates'(V4, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +case Tlv6 of [] -> true; _ -> true end, % ... extra fields skipped +Res1 = {'BodyPartSignatures_SETOF',Term1,Term2,Term3,Term4}, +Res1. + + +%%================================ +%% BodyPartNumber +%%================================ +enc_BodyPartNumber(Val) -> + enc_BodyPartNumber(Val, [<<2>>]). + +enc_BodyPartNumber(Val, TagIn) -> +encode_integer(Val, TagIn). + + +dec_BodyPartNumber(Tlv) -> + dec_BodyPartNumber(Tlv, [2]). + +dec_BodyPartNumber(Tlv, TagIn) -> +begin +Val1 = decode_integer(Tlv, TagIn), +if 1 =< Val1, Val1 =< 'MAX' -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% BodyPartSignature +%%================================ +enc_BodyPartSignature(Val) -> + enc_BodyPartSignature(Val, [<<48>>]). + +enc_BodyPartSignature(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute algorithmIdentifier(1) External AuthenticationFramework:AlgorithmIdentifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'AuthenticationFramework':'enc_AlgorithmIdentifier'(Cindex1, [<<48>>]), + +%%------------------------------------------------- +%% attribute encrypted(2) with type BIT STRING +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_unnamed_bit_string(Cindex2, [<<3>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_BodyPartSignature(Tlv) -> + dec_BodyPartSignature(Tlv, [16]). + +dec_BodyPartSignature(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute algorithmIdentifier(1) External AuthenticationFramework:AlgorithmIdentifier +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'AuthenticationFramework':'dec_AlgorithmIdentifier'(V1, [16]), + +%%------------------------------------------------- +%% attribute encrypted(2) with type BIT STRING +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = decode_native_bit_string(V2, [3]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'BodyPartSignature',Term1,Term2}, +Res1. + + +%%================================ +%% IPMSecurityLabel +%%================================ +enc_IPMSecurityLabel(Val) -> + enc_IPMSecurityLabel(Val, [<<48>>]). + +enc_IPMSecurityLabel(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3} = Val, + +%%------------------------------------------------- +%% attribute content-security-label(1) External MTSAbstractService:SecurityLabel +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'MTSAbstractService':'enc_SecurityLabel'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute heading-security-label(2) External MTSAbstractService:SecurityLabel OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MTSAbstractService':'enc_SecurityLabel'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute body-part-security-labels(3) with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_IPMSecurityLabel_body-part-security-labels'(Cindex3, [<<162>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% IPMSecurityLabel_body-part-security-labels +%%================================ +'enc_IPMSecurityLabel_body-part-security-labels'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_IPMSecurityLabel_body-part-security-labels_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_IPMSecurityLabel_body-part-security-labels_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_IPMSecurityLabel_body-part-security-labels_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_BodyPartSecurityLabel'(H, []), + 'enc_IPMSecurityLabel_body-part-security-labels_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_IPMSecurityLabel(Tlv) -> + dec_IPMSecurityLabel(Tlv, [16]). + +dec_IPMSecurityLabel(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute content-security-label(1) External MTSAbstractService:SecurityLabel +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'MTSAbstractService':'dec_SecurityLabel'(V1, [131072]), + +%%------------------------------------------------- +%% attribute heading-security-label(2) External MTSAbstractService:SecurityLabel OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {'MTSAbstractService':'dec_SecurityLabel'(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute body-part-security-labels(3) with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{131074,V3}|TempTlv4] -> + {'dec_IPMSecurityLabel_body-part-security-labels'(V3, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'IPMSecurityLabel',Term1,Term2,Term3}, +Res1. +'dec_IPMSecurityLabel_body-part-security-labels'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_BodyPartSecurityLabel'(V1, []) || V1 <- Tlv1]. + + + + +%%================================ +%% BodyPartSecurityLabel +%%================================ +enc_BodyPartSecurityLabel(Val) -> + enc_BodyPartSecurityLabel(Val, []). + +enc_BodyPartSecurityLabel(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'body-part-unlabelled' -> + encode_null(element(2,Val), [<<128>>]); + 'body-part-security-label' -> + 'MTSAbstractService':'enc_SecurityLabel'(element(2,Val), [<<161>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_BodyPartSecurityLabel(Tlv) -> + dec_BodyPartSecurityLabel(Tlv, []). + +dec_BodyPartSecurityLabel(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'body-part-unlabelled' + {131072, V1} -> + {'body-part-unlabelled', decode_null(V1, [])}; + + +%% 'body-part-security-label' + {131073, V1} -> + {'body-part-security-label', 'MTSAbstractService':'dec_SecurityLabel'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% AuthorizationTime +%%================================ +enc_AuthorizationTime(Val) -> + enc_AuthorizationTime(Val, [<<24>>]). + +enc_AuthorizationTime(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_AuthorizationTime(Tlv) -> + dec_AuthorizationTime(Tlv, [24]). + +dec_AuthorizationTime(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% CirculationList +%%================================ +enc_CirculationList(Val) -> + enc_CirculationList(Val, [<<48>>]). + +enc_CirculationList(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_CirculationList_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_CirculationList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_CirculationList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_CirculationMember'(H, [<<49>>]), + 'enc_CirculationList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_CirculationList(Tlv) -> + dec_CirculationList(Tlv, [16]). + +dec_CirculationList(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_CirculationMember'(V1, [17]) || V1 <- Tlv1]. + + + + +%%================================ +%% CirculationMember +%%================================ +enc_CirculationMember(Val) -> + enc_CirculationMember(Val, [<<49>>]). + +enc_CirculationMember(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute circulation-recipient(1) External IPMSInformationObjects:RecipientSpecifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'IPMSInformationObjects':'enc_RecipientSpecifier'(Cindex1, [<<49>>]), + +%%------------------------------------------------- +%% attribute checked(2) External IPMSHeadingExtensions:Checkmark OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_Checkmark'(Cindex2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_CirculationMember(Tlv) -> + dec_CirculationMember(Tlv, [17]). + +dec_CirculationMember(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %circulation-recipient +TTlv = {17,_} -> + {1, TTlv}; + %checked +TTlv = {5,_} -> + {2, TTlv}; +TTlv = {24,_} -> + {2, TTlv}; +TTlv = {16,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute circulation-recipient(1) External IPMSInformationObjects:RecipientSpecifier +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'IPMSInformationObjects':'dec_RecipientSpecifier'(V1, [17]), + +%%------------------------------------------------- +%% attribute checked(2) External IPMSHeadingExtensions:Checkmark OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[V2 = {5,_}|TempTlv4] -> + {'dec_Checkmark'(V2, []), TempTlv4}; +[V2 = {24,_}|TempTlv4] -> + {'dec_Checkmark'(V2, []), TempTlv4}; +[V2 = {16,_}|TempTlv4] -> + {'dec_Checkmark'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'CirculationMember',Term1,Term2}, +Res1. + + +%%================================ +%% Checkmark +%%================================ +enc_Checkmark(Val) -> + enc_Checkmark(Val, []). + +enc_Checkmark(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + simple -> + encode_null(element(2,Val), [<<5>>]); + timestamped -> + encode_restricted_string(element(2,Val), [<<24>>]); + signed -> + 'enc_CirculationSignature'(element(2,Val), [<<48>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_Checkmark(Tlv) -> + dec_Checkmark(Tlv, []). + +dec_Checkmark(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'simple' + {5, V1} -> + {simple, decode_null(V1, [])}; + + +%% 'timestamped' + {24, V1} -> + {timestamped, begin +binary_to_list(decode_restricted_string(V1, [])) +end +}; + + +%% 'signed' + {16, V1} -> + {signed, 'dec_CirculationSignature'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% CirculationTime +%%================================ +enc_CirculationTime(Val) -> + enc_CirculationTime(Val, [<<24>>]). + +enc_CirculationTime(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_CirculationTime(Tlv) -> + dec_CirculationTime(Tlv, [24]). + +dec_CirculationTime(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% CirculationSignature +%%================================ +enc_CirculationSignature(Val) -> + enc_CirculationSignature(Val, [<<48>>]). + +enc_CirculationSignature(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3} = Val, + +%%------------------------------------------------- +%% attribute toBeSigned(1) with type SEQUENCE +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_CirculationSignature_toBeSigned'(Cindex1, [<<48>>]), + +%%------------------------------------------------- +%% attribute algorithmIdentifier(2) External AuthenticationFramework:AlgorithmIdentifier +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'AuthenticationFramework':'enc_AlgorithmIdentifier'(Cindex2, [<<48>>]), + +%%------------------------------------------------- +%% attribute encrypted(3) with type BIT STRING +%%------------------------------------------------- + {EncBytes3,EncLen3} = encode_unnamed_bit_string(Cindex3, [<<3>>]), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% CirculationSignature_toBeSigned +%%================================ +enc_CirculationSignature_toBeSigned(Val, TagIn) -> + {_,Cindex1,Cindex2,Cindex3} = Val, + +%%------------------------------------------------- +%% attribute algorithm-identifier(1) External IPMSHeadingExtensions:CirculationSignatureAlgorithmIdentifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_CirculationSignatureAlgorithmIdentifier'(Cindex1, [<<48>>]), + +%%------------------------------------------------- +%% attribute this-IPM(2) External IPMSInformationObjects:ThisIPMField +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'IPMSInformationObjects':'enc_ThisIPMField'(Cindex2, [<<107>>]), + +%%------------------------------------------------- +%% attribute timestamp(3) with type GeneralizedTime +%%------------------------------------------------- + {EncBytes3,EncLen3} = encode_restricted_string(Cindex3, [<<24>>]), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_CirculationSignature(Tlv) -> + dec_CirculationSignature(Tlv, [16]). + +dec_CirculationSignature(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute toBeSigned(1) with type SEQUENCE +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_CirculationSignature_toBeSigned'(V1, [16]), + +%%------------------------------------------------- +%% attribute algorithmIdentifier(2) External AuthenticationFramework:AlgorithmIdentifier +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'AuthenticationFramework':'dec_AlgorithmIdentifier'(V2, [16]), + +%%------------------------------------------------- +%% attribute encrypted(3) with type BIT STRING +%%------------------------------------------------- +[V3|Tlv4] = Tlv3, +Term3 = decode_native_bit_string(V3, [3]), + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'CirculationSignature',Term1,Term2,Term3}, +Res1. +'dec_CirculationSignature_toBeSigned'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute algorithm-identifier(1) External IPMSHeadingExtensions:CirculationSignatureAlgorithmIdentifier +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_CirculationSignatureAlgorithmIdentifier'(V1, [16]), + +%%------------------------------------------------- +%% attribute this-IPM(2) External IPMSInformationObjects:ThisIPMField +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'IPMSInformationObjects':'dec_ThisIPMField'(V2, [65547]), + +%%------------------------------------------------- +%% attribute timestamp(3) with type GeneralizedTime +%%------------------------------------------------- +[V3|Tlv4] = Tlv3, +Term3 = begin +binary_to_list(decode_restricted_string(V3, [24])) +end +, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'CirculationSignature_toBeSigned',Term1,Term2,Term3}, +Res1. + + +%%================================ +%% CirculationSignatureAlgorithmIdentifier +%%================================ +enc_CirculationSignatureAlgorithmIdentifier(Val) -> + enc_CirculationSignatureAlgorithmIdentifier(Val, [<<48>>]). + +enc_CirculationSignatureAlgorithmIdentifier(Val, TagIn) -> + 'AuthenticationFramework':enc_AlgorithmIdentifier(Val, TagIn). + + +dec_CirculationSignatureAlgorithmIdentifier(Tlv) -> + dec_CirculationSignatureAlgorithmIdentifier(Tlv, [16]). + +dec_CirculationSignatureAlgorithmIdentifier(Tlv, TagIn) -> +'AuthenticationFramework':'dec_AlgorithmIdentifier'(Tlv, TagIn). + + + +%%================================ +%% DistributionCodes +%%================================ +enc_DistributionCodes(Val) -> + enc_DistributionCodes(Val, [<<48>>]). + +enc_DistributionCodes(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_DistributionCodes_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_DistributionCodes_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_DistributionCodes_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_DistributionCode'(H, [<<48>>]), + 'enc_DistributionCodes_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_DistributionCodes(Tlv) -> + dec_DistributionCodes(Tlv, [16]). + +dec_DistributionCodes(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_DistributionCode'(V1, [16]) || V1 <- Tlv1]. + + + + +%%================================ +%% DistributionCode +%%================================ +enc_DistributionCode(Val) -> + enc_DistributionCode(Val, [<<48>>]). + +enc_DistributionCode(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3} = Val, + +%%------------------------------------------------- +%% attribute oid-code(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_object_identifier(Cindex1, [<<6>>]) + end, + +%%------------------------------------------------- +%% attribute alphanumeric-code(2) External IPMSHeadingExtensions:AlphaCode OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_AlphaCode'(Cindex2, [<<49>>]) + end, + +%%------------------------------------------------- +%% attribute or-descriptor(3) External IPMSInformationObjects:ORDescriptor OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'IPMSInformationObjects':'enc_ORDescriptor'(Cindex3, [<<160>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_DistributionCode(Tlv) -> + dec_DistributionCode(Tlv, [16]). + +dec_DistributionCode(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute oid-code(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{6,V1}|TempTlv2] -> + {decode_object_identifier(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute alphanumeric-code(2) External IPMSHeadingExtensions:AlphaCode OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{17,V2}|TempTlv3] -> + {'dec_AlphaCode'(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute or-descriptor(3) External IPMSInformationObjects:ORDescriptor OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{131072,V3}|TempTlv4] -> + {'IPMSInformationObjects':'dec_ORDescriptor'(V3, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'DistributionCode',Term1,Term2,Term3}, +Res1. + + +%%================================ +%% AlphaCode +%%================================ +enc_AlphaCode(Val) -> + enc_AlphaCode(Val, [<<49>>]). + +enc_AlphaCode(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_AlphaCode_character-encoding'(Cindex1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<19>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% AlphaCode_character-encoding +%%================================ +'enc_AlphaCode_character-encoding'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'two-octets' -> + encode_BMP_string(element(2,Val), [<<30>>]); + 'four-octets' -> + encode_universal_string(element(2,Val), [<<28>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_AlphaCode(Tlv) -> + dec_AlphaCode(Tlv, [17]). + +dec_AlphaCode(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %character-encoding +TTlv = {30,_} -> + {1, TTlv}; +TTlv = {28,_} -> + {1, TTlv}; + %iso-639-language-code +TTlv = {19,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_AlphaCode_character-encoding'(V1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{19,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 2 =< C1, C1 =< 5 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'AlphaCode',Term1,Term2}, +Res1. +'dec_AlphaCode_character-encoding'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'two-octets' + {30, V1} -> + {'two-octets', begin +Val1 = decode_BMP_string(V1, []), +C1 = length(Val1), +if 1 =< C1, C1 =< 16 -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + +%% 'four-octets' + {28, V1} -> + {'four-octets', begin +Val2 = decode_universal_string(V1, []), +C2 = length(Val2), +if 1 =< C2, C2 =< 16 -> +Val2; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% ExtendedSubject +%%================================ +enc_ExtendedSubject(Val) -> + enc_ExtendedSubject(Val, [<<49>>]). + +enc_ExtendedSubject(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_ExtendedSubject_character-encoding'(Cindex1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<19>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% ExtendedSubject_character-encoding +%%================================ +'enc_ExtendedSubject_character-encoding'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'two-octets' -> + encode_BMP_string(element(2,Val), [<<30>>]); + 'four-octets' -> + encode_universal_string(element(2,Val), [<<28>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_ExtendedSubject(Tlv) -> + dec_ExtendedSubject(Tlv, [17]). + +dec_ExtendedSubject(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %character-encoding +TTlv = {30,_} -> + {1, TTlv}; +TTlv = {28,_} -> + {1, TTlv}; + %iso-639-language-code +TTlv = {19,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_ExtendedSubject_character-encoding'(V1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{19,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 2 =< C1, C1 =< 5 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'ExtendedSubject',Term1,Term2}, +Res1. +'dec_ExtendedSubject_character-encoding'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'two-octets' + {30, V1} -> + {'two-octets', begin +Val1 = decode_BMP_string(V1, []), +C1 = length(Val1), +if 1 =< C1, C1 =< 256 -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + +%% 'four-octets' + {28, V1} -> + {'four-octets', begin +Val2 = decode_universal_string(V1, []), +C2 = length(Val2), +if 1 =< C2, C2 =< 256 -> +Val2; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% InformationCategories +%%================================ +enc_InformationCategories(Val) -> + enc_InformationCategories(Val, [<<48>>]). + +enc_InformationCategories(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_InformationCategories_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_InformationCategories_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_InformationCategories_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_InformationCategory'(H, [<<48>>]), + 'enc_InformationCategories_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_InformationCategories(Tlv) -> + dec_InformationCategories(Tlv, [16]). + +dec_InformationCategories(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_InformationCategory'(V1, [16]) || V1 <- Tlv1]. + + + + +%%================================ +%% InformationCategory +%%================================ +enc_InformationCategory(Val) -> + enc_InformationCategory(Val, [<<48>>]). + +enc_InformationCategory(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute reference(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_object_identifier(Cindex1, [<<128>>]) + end, + +%%------------------------------------------------- +%% attribute description(2) External IPMSHeadingExtensions:DescriptionString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_DescriptionString'(Cindex2, [<<161>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_InformationCategory(Tlv) -> + dec_InformationCategory(Tlv, [16]). + +dec_InformationCategory(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute reference(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{131072,V1}|TempTlv2] -> + {decode_object_identifier(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute description(2) External IPMSHeadingExtensions:DescriptionString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {'dec_DescriptionString'(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'InformationCategory',Term1,Term2}, +Res1. + + +%%================================ +%% DescriptionString +%%================================ +enc_DescriptionString(Val) -> + enc_DescriptionString(Val, [<<49>>]). + +enc_DescriptionString(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_DescriptionString_character-encoding'(Cindex1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<19>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% DescriptionString_character-encoding +%%================================ +'enc_DescriptionString_character-encoding'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'two-octets' -> + encode_BMP_string(element(2,Val), [<<30>>]); + 'four-octets' -> + encode_universal_string(element(2,Val), [<<28>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_DescriptionString(Tlv) -> + dec_DescriptionString(Tlv, [17]). + +dec_DescriptionString(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %character-encoding +TTlv = {30,_} -> + {1, TTlv}; +TTlv = {28,_} -> + {1, TTlv}; + %iso-639-language-code +TTlv = {19,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_DescriptionString_character-encoding'(V1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{19,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 2 =< C1, C1 =< 5 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'DescriptionString',Term1,Term2}, +Res1. +'dec_DescriptionString_character-encoding'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'two-octets' + {30, V1} -> + {'two-octets', begin +Val1 = decode_BMP_string(V1, []), +C1 = length(Val1), +if 1 =< C1, C1 =< 64 -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + +%% 'four-octets' + {28, V1} -> + {'four-octets', begin +Val2 = decode_universal_string(V1, []), +C2 = length(Val2), +if 1 =< C2, C2 =< 64 -> +Val2; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% ManualHandlingInstructions +%%================================ +enc_ManualHandlingInstructions(Val) -> + enc_ManualHandlingInstructions(Val, [<<48>>]). + +enc_ManualHandlingInstructions(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_ManualHandlingInstructions_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_ManualHandlingInstructions_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_ManualHandlingInstructions_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_ManualHandlingInstruction'(H, [<<49>>]), + 'enc_ManualHandlingInstructions_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_ManualHandlingInstructions(Tlv) -> + dec_ManualHandlingInstructions(Tlv, [16]). + +dec_ManualHandlingInstructions(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_ManualHandlingInstruction'(V1, [17]) || V1 <- Tlv1]. + + + + +%%================================ +%% ManualHandlingInstruction +%%================================ +enc_ManualHandlingInstruction(Val) -> + enc_ManualHandlingInstruction(Val, [<<49>>]). + +enc_ManualHandlingInstruction(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_ManualHandlingInstruction_character-encoding'(Cindex1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<19>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% ManualHandlingInstruction_character-encoding +%%================================ +'enc_ManualHandlingInstruction_character-encoding'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'two-octets' -> + encode_BMP_string(element(2,Val), [<<30>>]); + 'four-octets' -> + encode_universal_string(element(2,Val), [<<28>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_ManualHandlingInstruction(Tlv) -> + dec_ManualHandlingInstruction(Tlv, [17]). + +dec_ManualHandlingInstruction(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %character-encoding +TTlv = {30,_} -> + {1, TTlv}; +TTlv = {28,_} -> + {1, TTlv}; + %iso-639-language-code +TTlv = {19,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_ManualHandlingInstruction_character-encoding'(V1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{19,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 2 =< C1, C1 =< 5 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'ManualHandlingInstruction',Term1,Term2}, +Res1. +'dec_ManualHandlingInstruction_character-encoding'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'two-octets' + {30, V1} -> + {'two-octets', begin +Val1 = decode_BMP_string(V1, []), +C1 = length(Val1), +if 1 =< C1, C1 =< 128 -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + +%% 'four-octets' + {28, V1} -> + {'four-octets', begin +Val2 = decode_universal_string(V1, []), +C2 = length(Val2), +if 1 =< C2, C2 =< 128 -> +Val2; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% OriginatorsReference +%%================================ +enc_OriginatorsReference(Val) -> + enc_OriginatorsReference(Val, [<<49>>]). + +enc_OriginatorsReference(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_OriginatorsReference_character-encoding'(Cindex1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<19>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% OriginatorsReference_character-encoding +%%================================ +'enc_OriginatorsReference_character-encoding'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'two-octets' -> + encode_BMP_string(element(2,Val), [<<30>>]); + 'four-octets' -> + encode_universal_string(element(2,Val), [<<28>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_OriginatorsReference(Tlv) -> + dec_OriginatorsReference(Tlv, [17]). + +dec_OriginatorsReference(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %character-encoding +TTlv = {30,_} -> + {1, TTlv}; +TTlv = {28,_} -> + {1, TTlv}; + %iso-639-language-code +TTlv = {19,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute character-encoding(1) with type CHOICE +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_OriginatorsReference_character-encoding'(V1, []), + +%%------------------------------------------------- +%% attribute iso-639-language-code(2) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{19,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 2 =< C1, C1 =< 5 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'OriginatorsReference',Term1,Term2}, +Res1. +'dec_OriginatorsReference_character-encoding'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'two-octets' + {30, V1} -> + {'two-octets', begin +Val1 = decode_BMP_string(V1, []), +C1 = length(Val1), +if 1 =< C1, C1 =< 64 -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + +%% 'four-octets' + {28, V1} -> + {'four-octets', begin +Val2 = decode_universal_string(V1, []), +C2 = length(Val2), +if 1 =< C2, C2 =< 64 -> +Val2; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% PrecedencePolicyIdentifier +%%================================ +enc_PrecedencePolicyIdentifier(Val) -> + enc_PrecedencePolicyIdentifier(Val, [<<6>>]). + +enc_PrecedencePolicyIdentifier(Val, TagIn) -> +encode_object_identifier(Val, TagIn). + + +dec_PrecedencePolicyIdentifier(Tlv) -> + dec_PrecedencePolicyIdentifier(Tlv, [6]). + +dec_PrecedencePolicyIdentifier(Tlv, TagIn) -> +decode_object_identifier(Tlv, TagIn). + + + +%%================================ +%% Precedence +%%================================ +enc_Precedence(Val) -> + enc_Precedence(Val, [<<2>>]). + +enc_Precedence(Val, TagIn) -> +encode_integer(Val, TagIn). + + +dec_Precedence(Tlv) -> + dec_Precedence(Tlv, [2]). + +dec_Precedence(Tlv, TagIn) -> +begin +Val1 = decode_integer(Tlv, TagIn), +if 0 =< Val1, Val1 =< 127 -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + + +%%================================ +%% incomplete-copy +%%================================ +'enc_incomplete-copy'('Type', Val, _RestPrimFieldName) -> + enc_IncompleteCopy(Val, [<<5>>]). + + +'dec_incomplete-copy'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_IncompleteCopy(Tlv, [5]). + +tlv_format(Bytes) when is_binary(Bytes) -> + {Tlv,_} = ber_decode_nif(Bytes), + Tlv; +tlv_format(Bytes) -> + Bytes. + + + +%%================================ +%% languages +%%================================ +enc_languages('Type', Val, _RestPrimFieldName) -> + enc_languages_Type(Val,[<<49>>]). + + + +%%================================ +%% languages_Type +%%================================ +enc_languages_Type(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_languages_Type_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_languages_Type_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_languages_Type_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = encode_restricted_string(H, [<<19>>]), + 'enc_languages_Type_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + +dec_languages('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_languages_Type(Tlv,[17]). + + + +'dec_languages_Type'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +[begin +Val1 = decode_restricted_string(V1, [19]), +C1 = byte_size(Val1), +if 2 =< C1, C1 =< 5 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end || V1 <- Tlv1]. + + + + + +%%================================ +%% auto-submitted +%%================================ +'enc_auto-submitted'('Type', Val, _RestPrimFieldName) -> + enc_AutoSubmitted(Val, [<<10>>]). + + +'dec_auto-submitted'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_AutoSubmitted(Tlv, [10]). + + + + +%%================================ +%% body-part-signatures +%%================================ +'enc_body-part-signatures'('Type', Val, _RestPrimFieldName) -> + enc_BodyPartSignatures(Val, [<<49>>]). + + +'dec_body-part-signatures'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_BodyPartSignatures(Tlv, [17]). + + + + +%%================================ +%% ipm-security-label +%%================================ +'enc_ipm-security-label'('Type', Val, _RestPrimFieldName) -> + enc_IPMSecurityLabel(Val, [<<48>>]). + + +'dec_ipm-security-label'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_IPMSecurityLabel(Tlv, [16]). + + + + +%%================================ +%% authorization-time +%%================================ +'enc_authorization-time'('Type', Val, _RestPrimFieldName) -> + enc_AuthorizationTime(Val, [<<24>>]). + + +'dec_authorization-time'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_AuthorizationTime(Tlv, [24]). + + + + +%%================================ +%% circulation-list-recipients +%%================================ +'enc_circulation-list-recipients'('Type', Val, _RestPrimFieldName) -> + enc_CirculationList(Val, [<<48>>]). + + +'dec_circulation-list-recipients'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_CirculationList(Tlv, [16]). + + + + +%%================================ +%% circulation-list-indicator +%%================================ +'enc_circulation-list-indicator'('Type', Val, _RestPrimFieldName) -> +encode_null(Val, [<<5>>]). + + +'dec_circulation-list-indicator'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), +decode_null(Tlv, [5]). + + + + +%%================================ +%% distribution-codes +%%================================ +'enc_distribution-codes'('Type', Val, _RestPrimFieldName) -> + enc_DistributionCodes(Val, [<<48>>]). + + +'dec_distribution-codes'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_DistributionCodes(Tlv, [16]). + + + + +%%================================ +%% extended-subject +%%================================ +'enc_extended-subject'('Type', Val, _RestPrimFieldName) -> + enc_ExtendedSubject(Val, [<<49>>]). + + +'dec_extended-subject'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_ExtendedSubject(Tlv, [17]). + + + + +%%================================ +%% information-category +%%================================ +'enc_information-category'('Type', Val, _RestPrimFieldName) -> + enc_InformationCategories(Val, [<<48>>]). + + +'dec_information-category'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_InformationCategories(Tlv, [16]). + + + + +%%================================ +%% manual-handling-instructions +%%================================ +'enc_manual-handling-instructions'('Type', Val, _RestPrimFieldName) -> + enc_ManualHandlingInstructions(Val, [<<48>>]). + + +'dec_manual-handling-instructions'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_ManualHandlingInstructions(Tlv, [16]). + + + + +%%================================ +%% originators-reference +%%================================ +'enc_originators-reference'('Type', Val, _RestPrimFieldName) -> + enc_OriginatorsReference(Val, [<<49>>]). + + +'dec_originators-reference'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_OriginatorsReference(Tlv, [17]). + + + + +%%================================ +%% precedence-policy-identifier +%%================================ +'enc_precedence-policy-identifier'('Type', Val, _RestPrimFieldName) -> + enc_PrecedencePolicyIdentifier(Val, [<<6>>]). + + +'dec_precedence-policy-identifier'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_PrecedencePolicyIdentifier(Tlv, [6]). + + + + +%%================================ +%% precedence +%%================================ +enc_precedence('Type', Val, _RestPrimFieldName) -> + enc_Precedence(Val, [<<2>>]). + + +dec_precedence('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_Precedence(Tlv, [2]). + + +%%% +%%% Run-time functions. +%%% + +'dialyzer-suppressions'(Arg) -> + ok. + +ber_decode_nif(B) -> + asn1rt_nif:decode_ber_tlv(B). + +collect_parts(TlvList) -> + collect_parts(TlvList, []). + +collect_parts([{_, L} | Rest], Acc) when is_list(L) -> + collect_parts(Rest, [collect_parts(L) | Acc]); +collect_parts([{3, <>} | Rest], _Acc) -> + collect_parts_bit(Rest, [Bits], Unused); +collect_parts([{_T, V} | Rest], Acc) -> + collect_parts(Rest, [V | Acc]); +collect_parts([], Acc) -> + list_to_binary(lists:reverse(Acc)). + +collect_parts_bit([{3, <>} | Rest], Acc, Uacc) -> + collect_parts_bit(Rest, [Bits | Acc], Unused + Uacc); +collect_parts_bit([], Acc, Uacc) -> + list_to_binary([Uacc | lists:reverse(Acc)]). + +dec_subidentifiers(<<>>, _Av, Al) -> + lists:reverse(Al); +dec_subidentifiers(<<1:1,H:7,T/binary>>, Av, Al) -> + dec_subidentifiers(T, Av bsl 7 + H, Al); +dec_subidentifiers(<>, Av, Al) -> + dec_subidentifiers(T, 0, [Av bsl 7 + H | Al]). + +decode_BMP_string(Buffer, Tags) -> + Bin = match_and_collect(Buffer, Tags), + mk_BMP_string(binary_to_list(Bin)). + +decode_integer(Tlv, TagIn) -> + Bin = match_tags(Tlv, TagIn), + Len = byte_size(Bin), + <> = Bin, + Int. + +decode_native_bit_string(Buffer, Tags) -> + case match_and_collect(Buffer, Tags) of + <<0>> -> + <<>>; + <> -> + Size = bit_size(Bits) - Unused, + <> = Bits, + Val + end. + +decode_null(Tlv, Tags) -> + Val = match_tags(Tlv, Tags), + case Val of + <<>> -> + 'NULL'; + _ -> + exit({error, {asn1, {decode_null, Val}}}) + end. + +decode_object_identifier(Tlv, Tags) -> + Val = match_tags(Tlv, Tags), + [AddedObjVal | ObjVals] = dec_subidentifiers(Val, 0, []), + {Val1, Val2} = + if + AddedObjVal < 40 -> + {0, AddedObjVal}; + AddedObjVal < 80 -> + {1, AddedObjVal - 40}; + true -> + {2, AddedObjVal - 80} + end, + list_to_tuple([Val1, Val2 | ObjVals]). + +decode_restricted_string(Tlv, TagsIn) -> + match_and_collect(Tlv, TagsIn). + +decode_universal_string(Buffer, Tags) -> + Bin = match_and_collect(Buffer, Tags), + mk_universal_string(binary_to_list(Bin)). + +e_object_identifier({'OBJECT IDENTIFIER', V}) -> + e_object_identifier(V); +e_object_identifier(V) when is_tuple(V) -> + e_object_identifier(tuple_to_list(V)); +e_object_identifier([E1, E2 | Tail]) -> + Head = 40 * E1 + E2, + {H, Lh} = mk_object_val(Head), + {R, Lr} = lists:mapfoldl(fun enc_obj_id_tail/2, 0, Tail), + {[H | R], Lh + Lr}. + +enc_obj_id_tail(H, Len) -> + {B, L} = mk_object_val(H), + {B, Len + L}. + +encode_BMP_string(BMPString, TagIn) -> + OctetList = mk_BMP_list(BMPString), + encode_tags(TagIn, OctetList, length(OctetList)). + +encode_integer(Val) -> + Bytes = + if + Val >= 0 -> + encode_integer_pos(Val, []); + true -> + encode_integer_neg(Val, []) + end, + {Bytes, length(Bytes)}. + +encode_integer(Val, Tag) when is_integer(Val) -> + encode_tags(Tag, encode_integer(Val)); +encode_integer(Val, _Tag) -> + exit({error, {asn1, {encode_integer, Val}}}). + +encode_integer_neg(-1, [B1 | _T] = L) when B1 > 127 -> + L; +encode_integer_neg(N, Acc) -> + encode_integer_neg(N bsr 8, [N band 255 | Acc]). + +encode_integer_pos(0, [B | _Acc] = L) when B < 128 -> + L; +encode_integer_pos(N, Acc) -> + encode_integer_pos(N bsr 8, [N band 255 | Acc]). + +encode_length(L) when L =< 127 -> + {[L], 1}; +encode_length(L) -> + Oct = minimum_octets(L), + Len = length(Oct), + if + Len =< 126 -> + {[128 bor Len | Oct], Len + 1}; + true -> + exit({error, {asn1, too_long_length_oct, Len}}) + end. + +encode_null(_Val, TagIn) -> + encode_tags(TagIn, [], 0). + +encode_object_identifier(Val, TagIn) -> + encode_tags(TagIn, e_object_identifier(Val)). + +encode_restricted_string(OctetList, TagIn) when is_binary(OctetList) -> + encode_tags(TagIn, OctetList, byte_size(OctetList)); +encode_restricted_string(OctetList, TagIn) when is_list(OctetList) -> + encode_tags(TagIn, OctetList, length(OctetList)). + +encode_tags(TagIn, {BytesSoFar, LenSoFar}) -> + encode_tags(TagIn, BytesSoFar, LenSoFar). + +encode_tags([Tag | Trest], BytesSoFar, LenSoFar) -> + {Bytes2, L2} = encode_length(LenSoFar), + encode_tags(Trest, + [Tag, Bytes2 | BytesSoFar], + LenSoFar + byte_size(Tag) + L2); +encode_tags([], BytesSoFar, LenSoFar) -> + {BytesSoFar, LenSoFar}. + +encode_universal_string(Universal, TagIn) -> + OctetList = mk_uni_list(Universal), + encode_tags(TagIn, OctetList, length(OctetList)). + +encode_unnamed_bit_string(Bits, TagIn) -> + Unused = (8 - bit_size(Bits) band 7) band 7, + Bin = <>, + encode_tags(TagIn, Bin, byte_size(Bin)). + +match_and_collect(Tlv, TagsIn) -> + Val = match_tags(Tlv, TagsIn), + case Val of + [_ | _] = PartList -> + collect_parts(PartList); + Bin when is_binary(Bin) -> + Bin + end. + +match_tags({T, V}, [T]) -> + V; +match_tags({T, V}, [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, V}], [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, _V} | _] = Vlist, [T]) -> + Vlist; +match_tags(Tlv, []) -> + Tlv; +match_tags({Tag, _V} = Tlv, [T | _Tt]) -> + exit({error, {asn1, {wrong_tag, {{expected, T}, {got, Tag, Tlv}}}}}). + +minimum_octets(0, Acc) -> + Acc; +minimum_octets(Val, Acc) -> + minimum_octets(Val bsr 8, [Val band 255 | Acc]). + +minimum_octets(Val) -> + minimum_octets(Val, []). + +mk_BMP_list(In) -> + mk_BMP_list(In, []). + +mk_BMP_list([], List) -> + lists:reverse(List); +mk_BMP_list([{0, 0, C, D} | T], List) -> + mk_BMP_list(T, [D, C | List]); +mk_BMP_list([H | T], List) -> + mk_BMP_list(T, [H, 0 | List]). + +mk_BMP_string(In) -> + mk_BMP_string(In, []). + +mk_BMP_string([], US) -> + lists:reverse(US); +mk_BMP_string([0, B | T], US) -> + mk_BMP_string(T, [B | US]); +mk_BMP_string([C, D | T], US) -> + mk_BMP_string(T, [{0, 0, C, D} | US]). + +mk_object_val(0, Ack, Len) -> + {Ack, Len}; +mk_object_val(Val, Ack, Len) -> + mk_object_val(Val bsr 7, [Val band 127 bor 128 | Ack], Len + 1). + +mk_object_val(Val) when Val =< 127 -> + {[255 band Val], 1}; +mk_object_val(Val) -> + mk_object_val(Val bsr 7, [Val band 127], 1). + +mk_uni_list(In) -> + mk_uni_list(In, []). + +mk_uni_list([], List) -> + lists:reverse(List); +mk_uni_list([{A, B, C, D} | T], List) -> + mk_uni_list(T, [D, C, B, A | List]); +mk_uni_list([H | T], List) -> + mk_uni_list(T, [H, 0, 0, 0 | List]). + +mk_universal_string(In) -> + mk_universal_string(In, []). + +mk_universal_string([], Acc) -> + lists:reverse(Acc); +mk_universal_string([0, 0, 0, D | T], Acc) -> + mk_universal_string(T, [D | Acc]); +mk_universal_string([A, B, C, D | T], Acc) -> + mk_universal_string(T, [{A, B, C, D} | Acc]). diff --git a/src/IPMSHeadingExtensions.hrl b/src/IPMSHeadingExtensions.hrl new file mode 100644 index 0000000..a37c2b7 --- /dev/null +++ b/src/IPMSHeadingExtensions.hrl @@ -0,0 +1,56 @@ +%% Generated by the Erlang ASN.1 compiler. Version: 5.1 +%% Purpose: Erlang record definitions for each named and unnamed +%% SEQUENCE and SET, and macro definitions for each value +%% definition in module IPMSHeadingExtensions. + +-ifndef(_IPMSHEADINGEXTENSIONS_HRL_). +-define(_IPMSHEADINGEXTENSIONS_HRL_, true). + +-record('BodyPartSignatures_SETOF', { + 'body-part-number', + 'body-part-signature', + 'originator-certificate-selector' = asn1_NOVALUE, + 'originator-certificates' = asn1_NOVALUE + %% with extension mark +}). + +-record('BodyPartSignature', { + algorithmIdentifier, + encrypted +}). + +-record('IPMSecurityLabel', { + 'content-security-label', + 'heading-security-label' = asn1_NOVALUE, + 'body-part-security-labels' = asn1_NOVALUE +}). + +-record('CirculationMember', { + 'circulation-recipient', + checked = asn1_NOVALUE +}). + +-record('CirculationSignature', { + toBeSigned, + algorithmIdentifier, + encrypted +}). + +-record('CirculationSignature_toBeSigned', { + 'algorithm-identifier', + 'this-IPM', + timestamp +}). + +-record('DistributionCode', { + 'oid-code' = asn1_NOVALUE, + 'alphanumeric-code' = asn1_NOVALUE, + 'or-descriptor' = asn1_NOVALUE +}). + +-record('InformationCategory', { + reference = asn1_NOVALUE, + description = asn1_NOVALUE +}). + +-endif. %% _IPMSHEADINGEXTENSIONS_HRL_ diff --git a/src/IPMSInformationObjects.erl b/src/IPMSInformationObjects.erl new file mode 100644 index 0000000..97b3330 --- /dev/null +++ b/src/IPMSInformationObjects.erl @@ -0,0 +1,6840 @@ +%% Generated by the Erlang ASN.1 BER compiler. Version: 5.1 +%% Purpose: Encoding and decoding of the types in IPMSInformationObjects. + +-module('IPMSInformationObjects'). +-compile(nowarn_unused_vars). +-dialyzer(no_improper_lists). +-dialyzer(no_match). +-include("IPMSInformationObjects.hrl"). +-asn1_info([{vsn,'5.1'}, + {module,'IPMSInformationObjects'}, + {options,[warnings,ber,errors, + {cwd,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {outdir,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {i,"."}, + {i,"/Users/maxim/depot/synrc/mail/priv/mhs"}]}]). + +-export([encoding_rule/0,maps/0,bit_string_format/0, + legacy_erlang_types/0]). +-export(['dialyzer-suppressions'/1]). +-export([ +enc_Time/2, +enc_InformationObject/2, +enc_IPM/2, +enc_Heading/2, +enc_IPMIdentifier/2, +enc_LocalIPMIdentifier/2, +enc_RecipientSpecifier/2, +enc_ORDescriptor/2, +enc_FreeFormName/2, +enc_TelephoneNumber/2, +enc_NotificationRequests/2, +enc_RecipientExtensionsField/2, +enc_ThisIPMField/2, +enc_OriginatorField/2, +enc_AuthorizingUsersField/2, +enc_AuthorizingUsersSubfield/2, +enc_PrimaryRecipientsField/2, +enc_PrimaryRecipientsSubfield/2, +enc_CopyRecipientsField/2, +enc_CopyRecipientsSubfield/2, +enc_BlindCopyRecipientsField/2, +enc_BlindCopyRecipientsSubfield/2, +enc_RepliedToIPMField/2, +enc_ObsoletedIPMsField/2, +enc_ObsoletedIPMsSubfield/2, +enc_RelatedIPMsField/2, +enc_RelatedIPMsSubfield/2, +enc_SubjectField/2, +enc_ExpiryTimeField/2, +enc_ReplyTimeField/2, +enc_ReplyRecipientsField/2, +enc_ReplyRecipientsSubfield/2, +enc_ImportanceField/2, +enc_SensitivityField/2, +enc_AutoForwardedField/2, +enc_ExtensionsField/2, +enc_Body/2, +enc_BodyPart/2, +enc_IA5TextBodyPart/2, +enc_IA5TextParameters/2, +enc_IA5TextData/2, +enc_Repertoire/2, +enc_G3FacsimileBodyPart/2, +enc_G3FacsimileParameters/2, +enc_G3FacsimileData/2, +enc_G4Class1BodyPart/2, +enc_MixedModeBodyPart/2, +enc_TeletexBodyPart/2, +enc_TeletexParameters/2, +enc_TeletexData/2, +enc_VideotexBodyPart/2, +enc_VideotexParameters/2, +enc_VideotexSyntax/2, +enc_VideotexData/2, +enc_EncryptedBodyPart/2, +enc_EncryptedParameters/2, +enc_EncryptedData/2, +enc_MessageBodyPart/2, +enc_MessageParameters/2, +enc_MessageData/2, +enc_BilaterallyDefinedBodyPart/2, +enc_NationallyDefinedBodyPart/2, +enc_IPN/2, +enc_RN/2, +enc_NRN/2, +enc_ON/2, +enc_CommonFields/2, +enc_NonReceiptFields/2, +enc_ReceiptFields/2, +enc_SubjectIPMField/2, +enc_IPNOriginatorField/2, +enc_IPMIntendedRecipientField/2, +enc_ConversionEITsField/2, +enc_NotificationExtensionsField/2, +enc_NonReceiptReasonField/2, +enc_DiscardReasonField/2, +enc_AutoForwardCommentField/2, +enc_AutoForwardComment/2, +enc_ReturnedIPMField/2, +enc_NRNExtensionsField/2, +enc_ReceiptTimeField/2, +enc_AcknowledgmentModeField/2, +enc_SupplReceiptInfoField/2, +enc_RNExtensionsField/2, +enc_OtherNotificationTypeFields/2, +enc_AbsenceAdvice/2, +enc_ChangeOfAddressAdvice/2, +enc_IPMAssemblyInstructions/2, +enc_BodyPartReferences/2, +enc_BodyPartReference/2, +enc_EXTERNAL/2, +'enc_INSTANCE OF'/2 +]). + +-export([ +dec_Time/2, +dec_InformationObject/2, +dec_IPM/2, +dec_Heading/2, +dec_IPMIdentifier/2, +dec_LocalIPMIdentifier/2, +dec_RecipientSpecifier/2, +dec_ORDescriptor/2, +dec_FreeFormName/2, +dec_TelephoneNumber/2, +dec_NotificationRequests/2, +dec_RecipientExtensionsField/2, +dec_ThisIPMField/2, +dec_OriginatorField/2, +dec_AuthorizingUsersField/2, +dec_AuthorizingUsersSubfield/2, +dec_PrimaryRecipientsField/2, +dec_PrimaryRecipientsSubfield/2, +dec_CopyRecipientsField/2, +dec_CopyRecipientsSubfield/2, +dec_BlindCopyRecipientsField/2, +dec_BlindCopyRecipientsSubfield/2, +dec_RepliedToIPMField/2, +dec_ObsoletedIPMsField/2, +dec_ObsoletedIPMsSubfield/2, +dec_RelatedIPMsField/2, +dec_RelatedIPMsSubfield/2, +dec_SubjectField/2, +dec_ExpiryTimeField/2, +dec_ReplyTimeField/2, +dec_ReplyRecipientsField/2, +dec_ReplyRecipientsSubfield/2, +dec_ImportanceField/2, +dec_SensitivityField/2, +dec_AutoForwardedField/2, +dec_ExtensionsField/2, +dec_Body/2, +dec_BodyPart/2, +dec_IA5TextBodyPart/2, +dec_IA5TextParameters/2, +dec_IA5TextData/2, +dec_Repertoire/2, +dec_G3FacsimileBodyPart/2, +dec_G3FacsimileParameters/2, +dec_G3FacsimileData/2, +dec_G4Class1BodyPart/2, +dec_MixedModeBodyPart/2, +dec_TeletexBodyPart/2, +dec_TeletexParameters/2, +dec_TeletexData/2, +dec_VideotexBodyPart/2, +dec_VideotexParameters/2, +dec_VideotexSyntax/2, +dec_VideotexData/2, +dec_EncryptedBodyPart/2, +dec_EncryptedParameters/2, +dec_EncryptedData/2, +dec_MessageBodyPart/2, +dec_MessageParameters/2, +dec_MessageData/2, +dec_BilaterallyDefinedBodyPart/2, +dec_NationallyDefinedBodyPart/2, +dec_IPN/2, +dec_RN/2, +dec_NRN/2, +dec_ON/2, +dec_CommonFields/2, +dec_NonReceiptFields/2, +dec_ReceiptFields/2, +dec_SubjectIPMField/2, +dec_IPNOriginatorField/2, +dec_IPMIntendedRecipientField/2, +dec_ConversionEITsField/2, +dec_NotificationExtensionsField/2, +dec_NonReceiptReasonField/2, +dec_DiscardReasonField/2, +dec_AutoForwardCommentField/2, +dec_AutoForwardComment/2, +dec_ReturnedIPMField/2, +dec_NRNExtensionsField/2, +dec_ReceiptTimeField/2, +dec_AcknowledgmentModeField/2, +dec_SupplReceiptInfoField/2, +dec_RNExtensionsField/2, +dec_OtherNotificationTypeFields/2, +dec_AbsenceAdvice/2, +dec_ChangeOfAddressAdvice/2, +dec_IPMAssemblyInstructions/2, +dec_BodyPartReferences/2, +dec_BodyPartReference/2, +dec_EXTERNAL/2, +'dec_INSTANCE OF'/2 +]). + +-export([ +'enc_blind-copy-recipients'/3, +'enc_absence-advice'/3, +'enc_change-of-address-advice'/3, +'enc_prevent-nrn-generation'/3, +'enc_suspend-auto-acknowledgement'/3, +'enc_assembly-capability'/3, +'enc_ipm-assembly-instructions'/3, +'enc_originator-body-part-encryption-token'/3, +'enc_originator-forwarded-content-token'/3, +'enc_invalid-assembly-instructions'/3, +'enc_invalid-ipn'/3, +enc_IPMBodyPartTable_parameters/3, +enc_BodyPart_parameters/3, +enc_StandardBodyParts_parameters/3, +enc_IPMBodyPartTable_data/3, +enc_BodyPart_data/3, +enc_StandardBodyParts_data/3 +]). + +-export([ +'dec_blind-copy-recipients'/3, +'dec_absence-advice'/3, +'dec_change-of-address-advice'/3, +'dec_prevent-nrn-generation'/3, +'dec_suspend-auto-acknowledgement'/3, +'dec_assembly-capability'/3, +'dec_ipm-assembly-instructions'/3, +'dec_originator-body-part-encryption-token'/3, +'dec_originator-forwarded-content-token'/3, +'dec_invalid-assembly-instructions'/3, +'dec_invalid-ipn'/3, +dec_IPMBodyPartTable_parameters/3, +dec_BodyPart_parameters/3, +dec_StandardBodyParts_parameters/3, +dec_IPMBodyPartTable_data/3, +dec_BodyPart_data/3, +dec_StandardBodyParts_data/3 +]). + +-export([ +getenc_IPMPerRecipientEnvelopeExtensions/1, +getenc_PrivateIPMSExtensions/1, +getenc_RecipientExtensions/1, +getenc_HeadingExtensions/1, +getenc_NotificationExtensions/1, +getenc_NRNExtensions/1, +getenc_RNExtensions/1, +getenc_OtherNotifications/1, +getenc_AdviceNotifications/1, +getenc_IPMSubmissionOptions/1, +getenc_IPMSubmissionErrors/1, +getenc_internal_object_set_argument_8/1, +getenc_internal_object_set_argument_7/1, +getenc_internal_object_set_argument_6/1, +getenc_internal_object_set_argument_5/1, +getenc_internal_object_set_argument_2/1, +getenc_internal_object_set_argument_1/1 +]). + +-export([ +getdec_IPMPerRecipientEnvelopeExtensions/1, +getdec_PrivateIPMSExtensions/1, +getdec_RecipientExtensions/1, +getdec_HeadingExtensions/1, +getdec_NotificationExtensions/1, +getdec_NRNExtensions/1, +getdec_RNExtensions/1, +getdec_OtherNotifications/1, +getdec_AdviceNotifications/1, +getdec_IPMSubmissionOptions/1, +getdec_IPMSubmissionErrors/1, +getdec_internal_object_set_argument_8/1, +getdec_internal_object_set_argument_7/1, +getdec_internal_object_set_argument_6/1, +getdec_internal_object_set_argument_5/1, +getdec_internal_object_set_argument_2/1, +getdec_internal_object_set_argument_1/1 +]). + +-export([info/0]). + +-export([encode/2,decode/2]). + +encoding_rule() -> ber. + +maps() -> false. + +bit_string_format() -> bitstring. + +legacy_erlang_types() -> false. + +encode(Type, Data) -> +try iolist_to_binary(element(1, encode_disp(Type, Data))) of + Bytes -> + {ok,Bytes} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +decode(Type, Data) -> +try + Result = decode_disp(Type, element(1, ber_decode_nif(Data))), + {ok,Result} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +encode_disp('Time', Data) -> enc_Time(Data); +encode_disp('InformationObject', Data) -> enc_InformationObject(Data); +encode_disp('IPM', Data) -> enc_IPM(Data); +encode_disp('Heading', Data) -> enc_Heading(Data); +encode_disp('IPMIdentifier', Data) -> enc_IPMIdentifier(Data); +encode_disp('LocalIPMIdentifier', Data) -> enc_LocalIPMIdentifier(Data); +encode_disp('RecipientSpecifier', Data) -> enc_RecipientSpecifier(Data); +encode_disp('ORDescriptor', Data) -> enc_ORDescriptor(Data); +encode_disp('FreeFormName', Data) -> enc_FreeFormName(Data); +encode_disp('TelephoneNumber', Data) -> enc_TelephoneNumber(Data); +encode_disp('NotificationRequests', Data) -> enc_NotificationRequests(Data); +encode_disp('RecipientExtensionsField', Data) -> enc_RecipientExtensionsField(Data); +encode_disp('ThisIPMField', Data) -> enc_ThisIPMField(Data); +encode_disp('OriginatorField', Data) -> enc_OriginatorField(Data); +encode_disp('AuthorizingUsersField', Data) -> enc_AuthorizingUsersField(Data); +encode_disp('AuthorizingUsersSubfield', Data) -> enc_AuthorizingUsersSubfield(Data); +encode_disp('PrimaryRecipientsField', Data) -> enc_PrimaryRecipientsField(Data); +encode_disp('PrimaryRecipientsSubfield', Data) -> enc_PrimaryRecipientsSubfield(Data); +encode_disp('CopyRecipientsField', Data) -> enc_CopyRecipientsField(Data); +encode_disp('CopyRecipientsSubfield', Data) -> enc_CopyRecipientsSubfield(Data); +encode_disp('BlindCopyRecipientsField', Data) -> enc_BlindCopyRecipientsField(Data); +encode_disp('BlindCopyRecipientsSubfield', Data) -> enc_BlindCopyRecipientsSubfield(Data); +encode_disp('RepliedToIPMField', Data) -> enc_RepliedToIPMField(Data); +encode_disp('ObsoletedIPMsField', Data) -> enc_ObsoletedIPMsField(Data); +encode_disp('ObsoletedIPMsSubfield', Data) -> enc_ObsoletedIPMsSubfield(Data); +encode_disp('RelatedIPMsField', Data) -> enc_RelatedIPMsField(Data); +encode_disp('RelatedIPMsSubfield', Data) -> enc_RelatedIPMsSubfield(Data); +encode_disp('SubjectField', Data) -> enc_SubjectField(Data); +encode_disp('ExpiryTimeField', Data) -> enc_ExpiryTimeField(Data); +encode_disp('ReplyTimeField', Data) -> enc_ReplyTimeField(Data); +encode_disp('ReplyRecipientsField', Data) -> enc_ReplyRecipientsField(Data); +encode_disp('ReplyRecipientsSubfield', Data) -> enc_ReplyRecipientsSubfield(Data); +encode_disp('ImportanceField', Data) -> enc_ImportanceField(Data); +encode_disp('SensitivityField', Data) -> enc_SensitivityField(Data); +encode_disp('AutoForwardedField', Data) -> enc_AutoForwardedField(Data); +encode_disp('ExtensionsField', Data) -> enc_ExtensionsField(Data); +encode_disp('Body', Data) -> enc_Body(Data); +encode_disp('BodyPart', Data) -> enc_BodyPart(Data); +encode_disp('IA5TextBodyPart', Data) -> enc_IA5TextBodyPart(Data); +encode_disp('IA5TextParameters', Data) -> enc_IA5TextParameters(Data); +encode_disp('IA5TextData', Data) -> enc_IA5TextData(Data); +encode_disp('Repertoire', Data) -> enc_Repertoire(Data); +encode_disp('G3FacsimileBodyPart', Data) -> enc_G3FacsimileBodyPart(Data); +encode_disp('G3FacsimileParameters', Data) -> enc_G3FacsimileParameters(Data); +encode_disp('G3FacsimileData', Data) -> enc_G3FacsimileData(Data); +encode_disp('G4Class1BodyPart', Data) -> enc_G4Class1BodyPart(Data); +encode_disp('MixedModeBodyPart', Data) -> enc_MixedModeBodyPart(Data); +encode_disp('TeletexBodyPart', Data) -> enc_TeletexBodyPart(Data); +encode_disp('TeletexParameters', Data) -> enc_TeletexParameters(Data); +encode_disp('TeletexData', Data) -> enc_TeletexData(Data); +encode_disp('VideotexBodyPart', Data) -> enc_VideotexBodyPart(Data); +encode_disp('VideotexParameters', Data) -> enc_VideotexParameters(Data); +encode_disp('VideotexSyntax', Data) -> enc_VideotexSyntax(Data); +encode_disp('VideotexData', Data) -> enc_VideotexData(Data); +encode_disp('EncryptedBodyPart', Data) -> enc_EncryptedBodyPart(Data); +encode_disp('EncryptedParameters', Data) -> enc_EncryptedParameters(Data); +encode_disp('EncryptedData', Data) -> enc_EncryptedData(Data); +encode_disp('MessageBodyPart', Data) -> enc_MessageBodyPart(Data); +encode_disp('MessageParameters', Data) -> enc_MessageParameters(Data); +encode_disp('MessageData', Data) -> enc_MessageData(Data); +encode_disp('BilaterallyDefinedBodyPart', Data) -> enc_BilaterallyDefinedBodyPart(Data); +encode_disp('NationallyDefinedBodyPart', Data) -> enc_NationallyDefinedBodyPart(Data); +encode_disp('IPN', Data) -> enc_IPN(Data); +encode_disp('RN', Data) -> enc_RN(Data); +encode_disp('NRN', Data) -> enc_NRN(Data); +encode_disp('ON', Data) -> enc_ON(Data); +encode_disp('CommonFields', Data) -> enc_CommonFields(Data); +encode_disp('NonReceiptFields', Data) -> enc_NonReceiptFields(Data); +encode_disp('ReceiptFields', Data) -> enc_ReceiptFields(Data); +encode_disp('SubjectIPMField', Data) -> enc_SubjectIPMField(Data); +encode_disp('IPNOriginatorField', Data) -> enc_IPNOriginatorField(Data); +encode_disp('IPMIntendedRecipientField', Data) -> enc_IPMIntendedRecipientField(Data); +encode_disp('ConversionEITsField', Data) -> enc_ConversionEITsField(Data); +encode_disp('NotificationExtensionsField', Data) -> enc_NotificationExtensionsField(Data); +encode_disp('NonReceiptReasonField', Data) -> enc_NonReceiptReasonField(Data); +encode_disp('DiscardReasonField', Data) -> enc_DiscardReasonField(Data); +encode_disp('AutoForwardCommentField', Data) -> enc_AutoForwardCommentField(Data); +encode_disp('AutoForwardComment', Data) -> enc_AutoForwardComment(Data); +encode_disp('ReturnedIPMField', Data) -> enc_ReturnedIPMField(Data); +encode_disp('NRNExtensionsField', Data) -> enc_NRNExtensionsField(Data); +encode_disp('ReceiptTimeField', Data) -> enc_ReceiptTimeField(Data); +encode_disp('AcknowledgmentModeField', Data) -> enc_AcknowledgmentModeField(Data); +encode_disp('SupplReceiptInfoField', Data) -> enc_SupplReceiptInfoField(Data); +encode_disp('RNExtensionsField', Data) -> enc_RNExtensionsField(Data); +encode_disp('OtherNotificationTypeFields', Data) -> enc_OtherNotificationTypeFields(Data); +encode_disp('AbsenceAdvice', Data) -> enc_AbsenceAdvice(Data); +encode_disp('ChangeOfAddressAdvice', Data) -> enc_ChangeOfAddressAdvice(Data); +encode_disp('IPMAssemblyInstructions', Data) -> enc_IPMAssemblyInstructions(Data); +encode_disp('BodyPartReferences', Data) -> enc_BodyPartReferences(Data); +encode_disp('BodyPartReference', Data) -> enc_BodyPartReference(Data); +encode_disp('EXTERNAL', Data) -> enc_EXTERNAL(Data); +encode_disp('INSTANCE OF', Data) -> 'enc_INSTANCE OF'(Data); +encode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +decode_disp('Time', Data) -> dec_Time(Data); +decode_disp('InformationObject', Data) -> dec_InformationObject(Data); +decode_disp('IPM', Data) -> dec_IPM(Data); +decode_disp('Heading', Data) -> dec_Heading(Data); +decode_disp('IPMIdentifier', Data) -> dec_IPMIdentifier(Data); +decode_disp('LocalIPMIdentifier', Data) -> dec_LocalIPMIdentifier(Data); +decode_disp('RecipientSpecifier', Data) -> dec_RecipientSpecifier(Data); +decode_disp('ORDescriptor', Data) -> dec_ORDescriptor(Data); +decode_disp('FreeFormName', Data) -> dec_FreeFormName(Data); +decode_disp('TelephoneNumber', Data) -> dec_TelephoneNumber(Data); +decode_disp('NotificationRequests', Data) -> dec_NotificationRequests(Data); +decode_disp('RecipientExtensionsField', Data) -> dec_RecipientExtensionsField(Data); +decode_disp('ThisIPMField', Data) -> dec_ThisIPMField(Data); +decode_disp('OriginatorField', Data) -> dec_OriginatorField(Data); +decode_disp('AuthorizingUsersField', Data) -> dec_AuthorizingUsersField(Data); +decode_disp('AuthorizingUsersSubfield', Data) -> dec_AuthorizingUsersSubfield(Data); +decode_disp('PrimaryRecipientsField', Data) -> dec_PrimaryRecipientsField(Data); +decode_disp('PrimaryRecipientsSubfield', Data) -> dec_PrimaryRecipientsSubfield(Data); +decode_disp('CopyRecipientsField', Data) -> dec_CopyRecipientsField(Data); +decode_disp('CopyRecipientsSubfield', Data) -> dec_CopyRecipientsSubfield(Data); +decode_disp('BlindCopyRecipientsField', Data) -> dec_BlindCopyRecipientsField(Data); +decode_disp('BlindCopyRecipientsSubfield', Data) -> dec_BlindCopyRecipientsSubfield(Data); +decode_disp('RepliedToIPMField', Data) -> dec_RepliedToIPMField(Data); +decode_disp('ObsoletedIPMsField', Data) -> dec_ObsoletedIPMsField(Data); +decode_disp('ObsoletedIPMsSubfield', Data) -> dec_ObsoletedIPMsSubfield(Data); +decode_disp('RelatedIPMsField', Data) -> dec_RelatedIPMsField(Data); +decode_disp('RelatedIPMsSubfield', Data) -> dec_RelatedIPMsSubfield(Data); +decode_disp('SubjectField', Data) -> dec_SubjectField(Data); +decode_disp('ExpiryTimeField', Data) -> dec_ExpiryTimeField(Data); +decode_disp('ReplyTimeField', Data) -> dec_ReplyTimeField(Data); +decode_disp('ReplyRecipientsField', Data) -> dec_ReplyRecipientsField(Data); +decode_disp('ReplyRecipientsSubfield', Data) -> dec_ReplyRecipientsSubfield(Data); +decode_disp('ImportanceField', Data) -> dec_ImportanceField(Data); +decode_disp('SensitivityField', Data) -> dec_SensitivityField(Data); +decode_disp('AutoForwardedField', Data) -> dec_AutoForwardedField(Data); +decode_disp('ExtensionsField', Data) -> dec_ExtensionsField(Data); +decode_disp('Body', Data) -> dec_Body(Data); +decode_disp('BodyPart', Data) -> dec_BodyPart(Data); +decode_disp('IA5TextBodyPart', Data) -> dec_IA5TextBodyPart(Data); +decode_disp('IA5TextParameters', Data) -> dec_IA5TextParameters(Data); +decode_disp('IA5TextData', Data) -> dec_IA5TextData(Data); +decode_disp('Repertoire', Data) -> dec_Repertoire(Data); +decode_disp('G3FacsimileBodyPart', Data) -> dec_G3FacsimileBodyPart(Data); +decode_disp('G3FacsimileParameters', Data) -> dec_G3FacsimileParameters(Data); +decode_disp('G3FacsimileData', Data) -> dec_G3FacsimileData(Data); +decode_disp('G4Class1BodyPart', Data) -> dec_G4Class1BodyPart(Data); +decode_disp('MixedModeBodyPart', Data) -> dec_MixedModeBodyPart(Data); +decode_disp('TeletexBodyPart', Data) -> dec_TeletexBodyPart(Data); +decode_disp('TeletexParameters', Data) -> dec_TeletexParameters(Data); +decode_disp('TeletexData', Data) -> dec_TeletexData(Data); +decode_disp('VideotexBodyPart', Data) -> dec_VideotexBodyPart(Data); +decode_disp('VideotexParameters', Data) -> dec_VideotexParameters(Data); +decode_disp('VideotexSyntax', Data) -> dec_VideotexSyntax(Data); +decode_disp('VideotexData', Data) -> dec_VideotexData(Data); +decode_disp('EncryptedBodyPart', Data) -> dec_EncryptedBodyPart(Data); +decode_disp('EncryptedParameters', Data) -> dec_EncryptedParameters(Data); +decode_disp('EncryptedData', Data) -> dec_EncryptedData(Data); +decode_disp('MessageBodyPart', Data) -> dec_MessageBodyPart(Data); +decode_disp('MessageParameters', Data) -> dec_MessageParameters(Data); +decode_disp('MessageData', Data) -> dec_MessageData(Data); +decode_disp('BilaterallyDefinedBodyPart', Data) -> dec_BilaterallyDefinedBodyPart(Data); +decode_disp('NationallyDefinedBodyPart', Data) -> dec_NationallyDefinedBodyPart(Data); +decode_disp('IPN', Data) -> dec_IPN(Data); +decode_disp('RN', Data) -> dec_RN(Data); +decode_disp('NRN', Data) -> dec_NRN(Data); +decode_disp('ON', Data) -> dec_ON(Data); +decode_disp('CommonFields', Data) -> dec_CommonFields(Data); +decode_disp('NonReceiptFields', Data) -> dec_NonReceiptFields(Data); +decode_disp('ReceiptFields', Data) -> dec_ReceiptFields(Data); +decode_disp('SubjectIPMField', Data) -> dec_SubjectIPMField(Data); +decode_disp('IPNOriginatorField', Data) -> dec_IPNOriginatorField(Data); +decode_disp('IPMIntendedRecipientField', Data) -> dec_IPMIntendedRecipientField(Data); +decode_disp('ConversionEITsField', Data) -> dec_ConversionEITsField(Data); +decode_disp('NotificationExtensionsField', Data) -> dec_NotificationExtensionsField(Data); +decode_disp('NonReceiptReasonField', Data) -> dec_NonReceiptReasonField(Data); +decode_disp('DiscardReasonField', Data) -> dec_DiscardReasonField(Data); +decode_disp('AutoForwardCommentField', Data) -> dec_AutoForwardCommentField(Data); +decode_disp('AutoForwardComment', Data) -> dec_AutoForwardComment(Data); +decode_disp('ReturnedIPMField', Data) -> dec_ReturnedIPMField(Data); +decode_disp('NRNExtensionsField', Data) -> dec_NRNExtensionsField(Data); +decode_disp('ReceiptTimeField', Data) -> dec_ReceiptTimeField(Data); +decode_disp('AcknowledgmentModeField', Data) -> dec_AcknowledgmentModeField(Data); +decode_disp('SupplReceiptInfoField', Data) -> dec_SupplReceiptInfoField(Data); +decode_disp('RNExtensionsField', Data) -> dec_RNExtensionsField(Data); +decode_disp('OtherNotificationTypeFields', Data) -> dec_OtherNotificationTypeFields(Data); +decode_disp('AbsenceAdvice', Data) -> dec_AbsenceAdvice(Data); +decode_disp('ChangeOfAddressAdvice', Data) -> dec_ChangeOfAddressAdvice(Data); +decode_disp('IPMAssemblyInstructions', Data) -> dec_IPMAssemblyInstructions(Data); +decode_disp('BodyPartReferences', Data) -> dec_BodyPartReferences(Data); +decode_disp('BodyPartReference', Data) -> dec_BodyPartReference(Data); +decode_disp('EXTERNAL', Data) -> dec_EXTERNAL(Data); +decode_disp('INSTANCE OF', Data) -> 'dec_INSTANCE OF'(Data); +decode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +info() -> + case ?MODULE:module_info(attributes) of + Attributes when is_list(Attributes) -> + case lists:keyfind(asn1_info, 1, Attributes) of + {_,Info} when is_list(Info) -> + Info; + _ -> + [] + end; + _ -> + [] + end. + + +%%================================ +%% Time +%%================================ +enc_Time(Val) -> + enc_Time(Val, [<<23>>]). + +enc_Time(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_Time(Tlv) -> + dec_Time(Tlv, [23]). + +dec_Time(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% InformationObject +%%================================ +enc_InformationObject(Val) -> + enc_InformationObject(Val, []). + +enc_InformationObject(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + ipm -> + 'enc_IPM'(element(2,Val), [<<160>>]); + ipn -> + 'enc_IPN'(element(2,Val), [<<161>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_InformationObject(Tlv) -> + dec_InformationObject(Tlv, []). + +dec_InformationObject(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'ipm' + {131072, V1} -> + {ipm, 'dec_IPM'(V1, [])}; + + +%% 'ipn' + {131073, V1} -> + {ipn, 'dec_IPN'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% IPM +%%================================ +enc_IPM(Val) -> + enc_IPM(Val, [<<48>>]). + +enc_IPM(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute heading(1) External IPMSInformationObjects:Heading +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_Heading'(Cindex1, [<<49>>]), + +%%------------------------------------------------- +%% attribute body(2) External IPMSInformationObjects:Body +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_Body'(Cindex2, [<<48>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IPM(Tlv) -> + dec_IPM(Tlv, [16]). + +dec_IPM(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute heading(1) External IPMSInformationObjects:Heading +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_Heading'(V1, [17]), + +%%------------------------------------------------- +%% attribute body(2) External IPMSInformationObjects:Body +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'dec_Body'(V2, [16]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPM',Term1,Term2}, +Res1. + + +%%================================ +%% Heading +%%================================ +enc_Heading(Val) -> + enc_Heading(Val, [<<49>>]). + +enc_Heading(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6,Cindex7,Cindex8,Cindex9,Cindex10,Cindex11,Cindex12,Cindex13,Cindex14,Cindex15,Cindex16,Cindex17} = Val, + +%%------------------------------------------------- +%% attribute this-IPM(1) External IPMSInformationObjects:ThisIPMField +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_ThisIPMField'(Cindex1, [<<107>>]), + +%%------------------------------------------------- +%% attribute originator(2) External IPMSInformationObjects:OriginatorField OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_OriginatorField'(Cindex2, [<<160>>]) + end, + +%%------------------------------------------------- +%% attribute authorizing-users(3) External IPMSInformationObjects:AuthorizingUsersField OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_AuthorizingUsersField'(Cindex3, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute primary-recipients(4) External IPMSInformationObjects:PrimaryRecipientsField DEFAULT = [] +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex4 =:= [] -> + {<<>>,0}; + _ -> + 'enc_PrimaryRecipientsField'(Cindex4, [<<162>>]) + end, + +%%------------------------------------------------- +%% attribute copy-recipients(5) External IPMSInformationObjects:CopyRecipientsField DEFAULT = [] +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex5 =:= [] -> + {<<>>,0}; + _ -> + 'enc_CopyRecipientsField'(Cindex5, [<<163>>]) + end, + +%%------------------------------------------------- +%% attribute blind-copy-recipients(6) External IPMSInformationObjects:BlindCopyRecipientsField OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case Cindex6 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_BlindCopyRecipientsField'(Cindex6, [<<164>>]) + end, + +%%------------------------------------------------- +%% attribute replied-to-IPM(7) External IPMSInformationObjects:RepliedToIPMField OPTIONAL +%%------------------------------------------------- + {EncBytes7,EncLen7} = case Cindex7 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_RepliedToIPMField'(Cindex7, [<<165>>]) + end, + +%%------------------------------------------------- +%% attribute obsoleted-IPMs(8) External IPMSInformationObjects:ObsoletedIPMsField DEFAULT = [] +%%------------------------------------------------- + {EncBytes8,EncLen8} = case Cindex8 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex8 =:= [] -> + {<<>>,0}; + _ -> + 'enc_ObsoletedIPMsField'(Cindex8, [<<166>>]) + end, + +%%------------------------------------------------- +%% attribute related-IPMs(9) External IPMSInformationObjects:RelatedIPMsField DEFAULT = [] +%%------------------------------------------------- + {EncBytes9,EncLen9} = case Cindex9 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex9 =:= [] -> + {<<>>,0}; + _ -> + 'enc_RelatedIPMsField'(Cindex9, [<<167>>]) + end, + +%%------------------------------------------------- +%% attribute subject(10) with type TeletexString OPTIONAL +%%------------------------------------------------- + {EncBytes10,EncLen10} = case Cindex10 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex10, [<<20>>,<<168>>]) + end, + +%%------------------------------------------------- +%% attribute expiry-time(11) with type UTCTime OPTIONAL +%%------------------------------------------------- + {EncBytes11,EncLen11} = case Cindex11 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex11, [<<137>>]) + end, + +%%------------------------------------------------- +%% attribute reply-time(12) with type UTCTime OPTIONAL +%%------------------------------------------------- + {EncBytes12,EncLen12} = case Cindex12 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex12, [<<138>>]) + end, + +%%------------------------------------------------- +%% attribute reply-recipients(13) External IPMSInformationObjects:ReplyRecipientsField OPTIONAL +%%------------------------------------------------- + {EncBytes13,EncLen13} = case Cindex13 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_ReplyRecipientsField'(Cindex13, [<<171>>]) + end, + +%%------------------------------------------------- +%% attribute importance(14) with type ENUMERATED DEFAULT = normal +%%------------------------------------------------- + {EncBytes14,EncLen14} = case Cindex14 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex14 =:= normal -> + {<<>>,0}; + _ -> + case Cindex14 of +low -> encode_tags([<<140>>], [0], 1); +normal -> encode_tags([<<140>>], [1], 1); +high -> encode_tags([<<140>>], [2], 1); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end + end, + +%%------------------------------------------------- +%% attribute sensitivity(15) with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes15,EncLen15} = case Cindex15 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case Cindex15 of +personal -> encode_tags([<<141>>], [1], 1); +private -> encode_tags([<<141>>], [2], 1); +'company-confidential' -> encode_tags([<<141>>], [3], 1); +Enumval5 -> exit({error,{asn1, {enumerated_not_in_range,Enumval5}}}) +end + end, + +%%------------------------------------------------- +%% attribute auto-forwarded(16) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- + {EncBytes16,EncLen16} = case Cindex16 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex16 =:= false -> + {<<>>,0}; + _ -> + encode_boolean(Cindex16, [<<142>>]) + end, + +%%------------------------------------------------- +%% attribute extensions(17) External IPMSInformationObjects:ExtensionsField DEFAULT = [] +%%------------------------------------------------- + {EncBytes17,EncLen17} = case Cindex17 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex17 =:= [] -> + {<<>>,0}; + _ -> + 'enc_ExtensionsField'(Cindex17, [<<175>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7, EncBytes8, EncBytes9, EncBytes10, EncBytes11, EncBytes12, EncBytes13, EncBytes14, EncBytes15, EncBytes16, EncBytes17], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7 + EncLen8 + EncLen9 + EncLen10 + EncLen11 + EncLen12 + EncLen13 + EncLen14 + EncLen15 + EncLen16 + EncLen17, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_Heading(Tlv) -> + dec_Heading(Tlv, [17]). + +dec_Heading(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %this-IPM +TTlv = {65547,_} -> + {1, TTlv}; + %originator +TTlv = {131072,_} -> + {2, TTlv}; + %authorizing-users +TTlv = {131073,_} -> + {3, TTlv}; + %primary-recipients +TTlv = {131074,_} -> + {4, TTlv}; + %copy-recipients +TTlv = {131075,_} -> + {5, TTlv}; + %blind-copy-recipients +TTlv = {131076,_} -> + {6, TTlv}; + %replied-to-IPM +TTlv = {131077,_} -> + {7, TTlv}; + %obsoleted-IPMs +TTlv = {131078,_} -> + {8, TTlv}; + %related-IPMs +TTlv = {131079,_} -> + {9, TTlv}; + %subject +TTlv = {131080,_} -> + {10, TTlv}; + %expiry-time +TTlv = {131081,_} -> + {11, TTlv}; + %reply-time +TTlv = {131082,_} -> + {12, TTlv}; + %reply-recipients +TTlv = {131083,_} -> + {13, TTlv}; + %importance +TTlv = {131084,_} -> + {14, TTlv}; + %sensitivity +TTlv = {131085,_} -> + {15, TTlv}; + %auto-forwarded +TTlv = {131086,_} -> + {16, TTlv}; + %extensions +TTlv = {131087,_} -> + {17, TTlv}; + Else -> + {18, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute this-IPM(1) External IPMSInformationObjects:ThisIPMField +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_ThisIPMField'(V1, [65547]), + +%%------------------------------------------------- +%% attribute originator(2) External IPMSInformationObjects:OriginatorField OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131072,V2}|TempTlv4] -> + {'dec_OriginatorField'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute authorizing-users(3) External IPMSInformationObjects:AuthorizingUsersField OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131073,V3}|TempTlv5] -> + {'dec_AuthorizingUsersField'(V3, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute primary-recipients(4) External IPMSInformationObjects:PrimaryRecipientsField DEFAULT = [] +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{131074,V4}|TempTlv6] -> + {'dec_PrimaryRecipientsField'(V4, []), TempTlv6}; + _ -> + {[],Tlv5} +end, + +%%------------------------------------------------- +%% attribute copy-recipients(5) External IPMSInformationObjects:CopyRecipientsField DEFAULT = [] +%%------------------------------------------------- +{Term5,Tlv7} = case Tlv6 of +[{131075,V5}|TempTlv7] -> + {'dec_CopyRecipientsField'(V5, []), TempTlv7}; + _ -> + {[],Tlv6} +end, + +%%------------------------------------------------- +%% attribute blind-copy-recipients(6) External IPMSInformationObjects:BlindCopyRecipientsField OPTIONAL +%%------------------------------------------------- +{Term6,Tlv8} = case Tlv7 of +[{131076,V6}|TempTlv8] -> + {'dec_BlindCopyRecipientsField'(V6, []), TempTlv8}; + _ -> + { asn1_NOVALUE, Tlv7} +end, + +%%------------------------------------------------- +%% attribute replied-to-IPM(7) External IPMSInformationObjects:RepliedToIPMField OPTIONAL +%%------------------------------------------------- +{Term7,Tlv9} = case Tlv8 of +[{131077,V7}|TempTlv9] -> + {'dec_RepliedToIPMField'(V7, []), TempTlv9}; + _ -> + { asn1_NOVALUE, Tlv8} +end, + +%%------------------------------------------------- +%% attribute obsoleted-IPMs(8) External IPMSInformationObjects:ObsoletedIPMsField DEFAULT = [] +%%------------------------------------------------- +{Term8,Tlv10} = case Tlv9 of +[{131078,V8}|TempTlv10] -> + {'dec_ObsoletedIPMsField'(V8, []), TempTlv10}; + _ -> + {[],Tlv9} +end, + +%%------------------------------------------------- +%% attribute related-IPMs(9) External IPMSInformationObjects:RelatedIPMsField DEFAULT = [] +%%------------------------------------------------- +{Term9,Tlv11} = case Tlv10 of +[{131079,V9}|TempTlv11] -> + {'dec_RelatedIPMsField'(V9, []), TempTlv11}; + _ -> + {[],Tlv10} +end, + +%%------------------------------------------------- +%% attribute subject(10) with type TeletexString OPTIONAL +%%------------------------------------------------- +{Term10,Tlv12} = case Tlv11 of +[{131080,V10}|TempTlv12] -> + {begin +Val1 = decode_restricted_string(V10, [20]), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 128 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv12}; + _ -> + { asn1_NOVALUE, Tlv11} +end, + +%%------------------------------------------------- +%% attribute expiry-time(11) with type UTCTime OPTIONAL +%%------------------------------------------------- +{Term11,Tlv13} = case Tlv12 of +[{131081,V11}|TempTlv13] -> + {begin +binary_to_list(decode_restricted_string(V11, [])) +end +, TempTlv13}; + _ -> + { asn1_NOVALUE, Tlv12} +end, + +%%------------------------------------------------- +%% attribute reply-time(12) with type UTCTime OPTIONAL +%%------------------------------------------------- +{Term12,Tlv14} = case Tlv13 of +[{131082,V12}|TempTlv14] -> + {begin +binary_to_list(decode_restricted_string(V12, [])) +end +, TempTlv14}; + _ -> + { asn1_NOVALUE, Tlv13} +end, + +%%------------------------------------------------- +%% attribute reply-recipients(13) External IPMSInformationObjects:ReplyRecipientsField OPTIONAL +%%------------------------------------------------- +{Term13,Tlv15} = case Tlv14 of +[{131083,V13}|TempTlv15] -> + {'dec_ReplyRecipientsField'(V13, []), TempTlv15}; + _ -> + { asn1_NOVALUE, Tlv14} +end, + +%%------------------------------------------------- +%% attribute importance(14) with type ENUMERATED DEFAULT = normal +%%------------------------------------------------- +{Term14,Tlv16} = case Tlv15 of +[{131084,V14}|TempTlv16] -> + {case decode_integer(V14, []) of +0 -> low; +1 -> normal; +2 -> high; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end, TempTlv16}; + _ -> + {normal,Tlv15} +end, + +%%------------------------------------------------- +%% attribute sensitivity(15) with type ENUMERATED OPTIONAL +%%------------------------------------------------- +{Term15,Tlv17} = case Tlv16 of +[{131085,V15}|TempTlv17] -> + {case decode_integer(V15, []) of +1 -> personal; +2 -> private; +3 -> 'company-confidential'; +Default2 -> exit({error,{asn1,{illegal_enumerated,Default2}}}) +end, TempTlv17}; + _ -> + { asn1_NOVALUE, Tlv16} +end, + +%%------------------------------------------------- +%% attribute auto-forwarded(16) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- +{Term16,Tlv18} = case Tlv17 of +[{131086,V16}|TempTlv18] -> + {decode_boolean(V16, []), TempTlv18}; + _ -> + {false,Tlv17} +end, + +%%------------------------------------------------- +%% attribute extensions(17) External IPMSInformationObjects:ExtensionsField DEFAULT = [] +%%------------------------------------------------- +{Term17,Tlv19} = case Tlv18 of +[{131087,V17}|TempTlv19] -> + {'dec_ExtensionsField'(V17, []), TempTlv19}; + _ -> + {[],Tlv18} +end, + +case Tlv19 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv19}}}) % extra fields not allowed +end, +Res1 = {'Heading',Term1,Term2,Term3,Term4,Term5,Term6,Term7,Term8,Term9,Term10,Term11,Term12,Term13,Term14,Term15,Term16,Term17}, +Res1. + + +%%================================ +%% IPMIdentifier +%%================================ +enc_IPMIdentifier(Val) -> + enc_IPMIdentifier(Val, [<<107>>]). + +enc_IPMIdentifier(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute user(1) External MTSAbstractService:ORName OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MTSAbstractService':'enc_ORName'(Cindex1, [<<96>>]) + end, + +%%------------------------------------------------- +%% attribute user-relative-identifier(2) with type PrintableString +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_restricted_string(Cindex2, [<<19>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IPMIdentifier(Tlv) -> + dec_IPMIdentifier(Tlv, [65547]). + +dec_IPMIdentifier(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %user +TTlv = {65536,_} -> + {1, TTlv}; + %user-relative-identifier +TTlv = {19,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute user(1) External MTSAbstractService:ORName OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{65536,V1}|TempTlv3] -> + {'MTSAbstractService':'dec_ORName'(V1, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute user-relative-identifier(2) with type PrintableString +%%------------------------------------------------- +[V2|Tlv4] = Tlv3, +Term2 = begin +Val1 = decode_restricted_string(V2, [19]), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 64 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'IPMIdentifier',Term1,Term2}, +Res1. + + +%%================================ +%% LocalIPMIdentifier +%%================================ +enc_LocalIPMIdentifier(Val) -> + enc_LocalIPMIdentifier(Val, [<<19>>]). + +enc_LocalIPMIdentifier(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_LocalIPMIdentifier(Tlv) -> + dec_LocalIPMIdentifier(Tlv, [19]). + +dec_LocalIPMIdentifier(Tlv, TagIn) -> +begin +Val1 = decode_restricted_string(Tlv, TagIn), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 64 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% RecipientSpecifier +%%================================ +enc_RecipientSpecifier(Val) -> + enc_RecipientSpecifier(Val, [<<49>>]). + +enc_RecipientSpecifier(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4} = Val, + +%%------------------------------------------------- +%% attribute recipient(1) External IPMSInformationObjects:ORDescriptor +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_ORDescriptor'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute notification-requests(2) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= [] -> + {<<>>,0}; + _ -> + encode_named_bit_string(Cindex2, [{rn,0},{nrn,1},{'ipm-return',2},{'an-supported',3},{'suppress-an',4}], [<<129>>]) + end, + +%%------------------------------------------------- +%% attribute reply-requested(3) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex3 =:= false -> + {<<>>,0}; + _ -> + encode_boolean(Cindex3, [<<130>>]) + end, + +%%------------------------------------------------- +%% attribute recipient-extensions(4) External IPMSInformationObjects:RecipientExtensionsField OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_RecipientExtensionsField'(Cindex4, [<<163>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_RecipientSpecifier(Tlv) -> + dec_RecipientSpecifier(Tlv, [17]). + +dec_RecipientSpecifier(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %recipient +TTlv = {131072,_} -> + {1, TTlv}; + %notification-requests +TTlv = {131073,_} -> + {2, TTlv}; + %reply-requested +TTlv = {131074,_} -> + {3, TTlv}; + %recipient-extensions +TTlv = {131075,_} -> + {4, TTlv}; + Else -> + {5, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute recipient(1) External IPMSInformationObjects:ORDescriptor +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_ORDescriptor'(V1, [131072]), + +%%------------------------------------------------- +%% attribute notification-requests(2) with type BIT STRING DEFAULT = [] +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {decode_named_bit_string(V2, [{rn,0},{nrn,1},{'ipm-return',2},{'an-supported',3},{'suppress-an',4}], []), TempTlv4}; + _ -> + {[],Tlv3} +end, + +%%------------------------------------------------- +%% attribute reply-requested(3) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {decode_boolean(V3, []), TempTlv5}; + _ -> + {false,Tlv4} +end, + +%%------------------------------------------------- +%% attribute recipient-extensions(4) External IPMSInformationObjects:RecipientExtensionsField OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{131075,V4}|TempTlv6] -> + {'dec_RecipientExtensionsField'(V4, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +case Tlv6 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv6}}}) % extra fields not allowed +end, +Res1 = {'RecipientSpecifier',Term1,Term2,Term3,Term4}, +Res1. + + +%%================================ +%% ORDescriptor +%%================================ +enc_ORDescriptor(Val) -> + enc_ORDescriptor(Val, [<<49>>]). + +enc_ORDescriptor(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3} = Val, + +%%------------------------------------------------- +%% attribute formal-name(1) External MTSAbstractService:ORName OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MTSAbstractService':'enc_ORName'(Cindex1, [<<96>>]) + end, + +%%------------------------------------------------- +%% attribute free-form-name(2) with type TeletexString OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<128>>]) + end, + +%%------------------------------------------------- +%% attribute telephone-number(3) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex3, [<<129>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_ORDescriptor(Tlv) -> + dec_ORDescriptor(Tlv, [17]). + +dec_ORDescriptor(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %formal-name +TTlv = {65536,_} -> + {1, TTlv}; + %free-form-name +TTlv = {131072,_} -> + {2, TTlv}; + %telephone-number +TTlv = {131073,_} -> + {3, TTlv}; + Else -> + {4, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute formal-name(1) External MTSAbstractService:ORName OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{65536,V1}|TempTlv3] -> + {'MTSAbstractService':'dec_ORName'(V1, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute free-form-name(2) with type TeletexString OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131072,V2}|TempTlv4] -> + {begin +Val1 = decode_restricted_string(V2, []), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 64 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute telephone-number(3) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131073,V3}|TempTlv5] -> + {begin +Val2 = decode_restricted_string(V3, []), +C2 = byte_size(Val2), +if 0 =< C2, C2 =< 32 -> +binary_to_list(Val2); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +case Tlv5 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed +end, +Res1 = {'ORDescriptor',Term1,Term2,Term3}, +Res1. + + +%%================================ +%% FreeFormName +%%================================ +enc_FreeFormName(Val) -> + enc_FreeFormName(Val, [<<20>>]). + +enc_FreeFormName(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_FreeFormName(Tlv) -> + dec_FreeFormName(Tlv, [20]). + +dec_FreeFormName(Tlv, TagIn) -> +begin +Val1 = decode_restricted_string(Tlv, TagIn), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 64 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% TelephoneNumber +%%================================ +enc_TelephoneNumber(Val) -> + enc_TelephoneNumber(Val, [<<19>>]). + +enc_TelephoneNumber(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_TelephoneNumber(Tlv) -> + dec_TelephoneNumber(Tlv, [19]). + +dec_TelephoneNumber(Tlv, TagIn) -> +begin +Val1 = decode_restricted_string(Tlv, TagIn), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 32 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% NotificationRequests +%%================================ +enc_NotificationRequests(Val) -> + enc_NotificationRequests(Val, [<<3>>]). + +enc_NotificationRequests(Val, TagIn) -> +encode_named_bit_string(Val, [{rn,0},{nrn,1},{'ipm-return',2},{'an-supported',3},{'suppress-an',4}], TagIn). + + +dec_NotificationRequests(Tlv) -> + dec_NotificationRequests(Tlv, [3]). + +dec_NotificationRequests(Tlv, TagIn) -> +decode_named_bit_string(Tlv, [{rn,0},{nrn,1},{'ipm-return',2},{'an-supported',3},{'suppress-an',4}], TagIn). + + + +%%================================ +%% RecipientExtensionsField +%%================================ +enc_RecipientExtensionsField(Val) -> + enc_RecipientExtensionsField(Val, [<<49>>]). + +enc_RecipientExtensionsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_RecipientExtensionsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_RecipientExtensionsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_RecipientExtensionsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_RecipientExtensionsField_IPMSExtension'(H, [<<48>>]), + 'enc_RecipientExtensionsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% RecipientExtensionsField_IPMSExtension +%%================================ +enc_RecipientExtensionsField_IPMSExtension(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, +Objtype = + 'IPMSInformationObjects':'getenc_internal_object_set_argument_1'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes2,_ } = Objtype('Type', Cindex2, []), + encode_open_type(TmpBytes2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_RecipientExtensionsField(Tlv) -> + dec_RecipientExtensionsField(Tlv, [17]). + +dec_RecipientExtensionsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_RecipientExtensionsField_IPMSExtension'(V1, [16]) || V1 <- Tlv1]. + + +'dec_RecipientExtensionsField_IPMSExtension'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv3} = case Tlv2 of +[V2|TempTlv3] -> + {decode_open_type(V2, []), TempTlv3}; + _ -> + {'NULL',Tlv2} +end, + +DecObjtypeTerm1 = + 'IPMSInformationObjects':'getdec_internal_object_set_argument_1'(Term1), +Term2 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPMSExtension',Term1,Term2}, +Res1. + + +%%================================ +%% ThisIPMField +%%================================ +enc_ThisIPMField(Val) -> + enc_ThisIPMField(Val, [<<107>>]). + +enc_ThisIPMField(Val, TagIn) -> + enc_IPMIdentifier(Val, TagIn). + + +dec_ThisIPMField(Tlv) -> + dec_ThisIPMField(Tlv, [65547]). + +dec_ThisIPMField(Tlv, TagIn) -> +'dec_IPMIdentifier'(Tlv, TagIn). + + + +%%================================ +%% OriginatorField +%%================================ +enc_OriginatorField(Val) -> + enc_OriginatorField(Val, [<<49>>]). + +enc_OriginatorField(Val, TagIn) -> + enc_ORDescriptor(Val, TagIn). + + +dec_OriginatorField(Tlv) -> + dec_OriginatorField(Tlv, [17]). + +dec_OriginatorField(Tlv, TagIn) -> +'dec_ORDescriptor'(Tlv, TagIn). + + + +%%================================ +%% AuthorizingUsersField +%%================================ +enc_AuthorizingUsersField(Val) -> + enc_AuthorizingUsersField(Val, [<<48>>]). + +enc_AuthorizingUsersField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_AuthorizingUsersField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_AuthorizingUsersField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_AuthorizingUsersField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_AuthorizingUsersSubfield'(H, [<<49>>]), + 'enc_AuthorizingUsersField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_AuthorizingUsersField(Tlv) -> + dec_AuthorizingUsersField(Tlv, [16]). + +dec_AuthorizingUsersField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_AuthorizingUsersSubfield'(V1, [17]) || V1 <- Tlv1]. + + + + +%%================================ +%% AuthorizingUsersSubfield +%%================================ +enc_AuthorizingUsersSubfield(Val) -> + enc_AuthorizingUsersSubfield(Val, [<<49>>]). + +enc_AuthorizingUsersSubfield(Val, TagIn) -> + enc_ORDescriptor(Val, TagIn). + + +dec_AuthorizingUsersSubfield(Tlv) -> + dec_AuthorizingUsersSubfield(Tlv, [17]). + +dec_AuthorizingUsersSubfield(Tlv, TagIn) -> +'dec_ORDescriptor'(Tlv, TagIn). + + + +%%================================ +%% PrimaryRecipientsField +%%================================ +enc_PrimaryRecipientsField(Val) -> + enc_PrimaryRecipientsField(Val, [<<48>>]). + +enc_PrimaryRecipientsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_PrimaryRecipientsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_PrimaryRecipientsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_PrimaryRecipientsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_PrimaryRecipientsSubfield'(H, [<<49>>]), + 'enc_PrimaryRecipientsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_PrimaryRecipientsField(Tlv) -> + dec_PrimaryRecipientsField(Tlv, [16]). + +dec_PrimaryRecipientsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_PrimaryRecipientsSubfield'(V1, [17]) || V1 <- Tlv1]. + + + + +%%================================ +%% PrimaryRecipientsSubfield +%%================================ +enc_PrimaryRecipientsSubfield(Val) -> + enc_PrimaryRecipientsSubfield(Val, [<<49>>]). + +enc_PrimaryRecipientsSubfield(Val, TagIn) -> + enc_RecipientSpecifier(Val, TagIn). + + +dec_PrimaryRecipientsSubfield(Tlv) -> + dec_PrimaryRecipientsSubfield(Tlv, [17]). + +dec_PrimaryRecipientsSubfield(Tlv, TagIn) -> +'dec_RecipientSpecifier'(Tlv, TagIn). + + + +%%================================ +%% CopyRecipientsField +%%================================ +enc_CopyRecipientsField(Val) -> + enc_CopyRecipientsField(Val, [<<48>>]). + +enc_CopyRecipientsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_CopyRecipientsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_CopyRecipientsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_CopyRecipientsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_CopyRecipientsSubfield'(H, [<<49>>]), + 'enc_CopyRecipientsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_CopyRecipientsField(Tlv) -> + dec_CopyRecipientsField(Tlv, [16]). + +dec_CopyRecipientsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_CopyRecipientsSubfield'(V1, [17]) || V1 <- Tlv1]. + + + + +%%================================ +%% CopyRecipientsSubfield +%%================================ +enc_CopyRecipientsSubfield(Val) -> + enc_CopyRecipientsSubfield(Val, [<<49>>]). + +enc_CopyRecipientsSubfield(Val, TagIn) -> + enc_RecipientSpecifier(Val, TagIn). + + +dec_CopyRecipientsSubfield(Tlv) -> + dec_CopyRecipientsSubfield(Tlv, [17]). + +dec_CopyRecipientsSubfield(Tlv, TagIn) -> +'dec_RecipientSpecifier'(Tlv, TagIn). + + + +%%================================ +%% BlindCopyRecipientsField +%%================================ +enc_BlindCopyRecipientsField(Val) -> + enc_BlindCopyRecipientsField(Val, [<<48>>]). + +enc_BlindCopyRecipientsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_BlindCopyRecipientsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_BlindCopyRecipientsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_BlindCopyRecipientsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_BlindCopyRecipientsSubfield'(H, [<<49>>]), + 'enc_BlindCopyRecipientsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_BlindCopyRecipientsField(Tlv) -> + dec_BlindCopyRecipientsField(Tlv, [16]). + +dec_BlindCopyRecipientsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_BlindCopyRecipientsSubfield'(V1, [17]) || V1 <- Tlv1]. + + + + +%%================================ +%% BlindCopyRecipientsSubfield +%%================================ +enc_BlindCopyRecipientsSubfield(Val) -> + enc_BlindCopyRecipientsSubfield(Val, [<<49>>]). + +enc_BlindCopyRecipientsSubfield(Val, TagIn) -> + enc_RecipientSpecifier(Val, TagIn). + + +dec_BlindCopyRecipientsSubfield(Tlv) -> + dec_BlindCopyRecipientsSubfield(Tlv, [17]). + +dec_BlindCopyRecipientsSubfield(Tlv, TagIn) -> +'dec_RecipientSpecifier'(Tlv, TagIn). + + + +%%================================ +%% RepliedToIPMField +%%================================ +enc_RepliedToIPMField(Val) -> + enc_RepliedToIPMField(Val, [<<107>>]). + +enc_RepliedToIPMField(Val, TagIn) -> + enc_IPMIdentifier(Val, TagIn). + + +dec_RepliedToIPMField(Tlv) -> + dec_RepliedToIPMField(Tlv, [65547]). + +dec_RepliedToIPMField(Tlv, TagIn) -> +'dec_IPMIdentifier'(Tlv, TagIn). + + + +%%================================ +%% ObsoletedIPMsField +%%================================ +enc_ObsoletedIPMsField(Val) -> + enc_ObsoletedIPMsField(Val, [<<48>>]). + +enc_ObsoletedIPMsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_ObsoletedIPMsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_ObsoletedIPMsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_ObsoletedIPMsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_ObsoletedIPMsSubfield'(H, [<<107>>]), + 'enc_ObsoletedIPMsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_ObsoletedIPMsField(Tlv) -> + dec_ObsoletedIPMsField(Tlv, [16]). + +dec_ObsoletedIPMsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_ObsoletedIPMsSubfield'(V1, [65547]) || V1 <- Tlv1]. + + + + +%%================================ +%% ObsoletedIPMsSubfield +%%================================ +enc_ObsoletedIPMsSubfield(Val) -> + enc_ObsoletedIPMsSubfield(Val, [<<107>>]). + +enc_ObsoletedIPMsSubfield(Val, TagIn) -> + enc_IPMIdentifier(Val, TagIn). + + +dec_ObsoletedIPMsSubfield(Tlv) -> + dec_ObsoletedIPMsSubfield(Tlv, [65547]). + +dec_ObsoletedIPMsSubfield(Tlv, TagIn) -> +'dec_IPMIdentifier'(Tlv, TagIn). + + + +%%================================ +%% RelatedIPMsField +%%================================ +enc_RelatedIPMsField(Val) -> + enc_RelatedIPMsField(Val, [<<48>>]). + +enc_RelatedIPMsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_RelatedIPMsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_RelatedIPMsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_RelatedIPMsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_RelatedIPMsSubfield'(H, [<<107>>]), + 'enc_RelatedIPMsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_RelatedIPMsField(Tlv) -> + dec_RelatedIPMsField(Tlv, [16]). + +dec_RelatedIPMsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_RelatedIPMsSubfield'(V1, [65547]) || V1 <- Tlv1]. + + + + +%%================================ +%% RelatedIPMsSubfield +%%================================ +enc_RelatedIPMsSubfield(Val) -> + enc_RelatedIPMsSubfield(Val, [<<107>>]). + +enc_RelatedIPMsSubfield(Val, TagIn) -> + enc_IPMIdentifier(Val, TagIn). + + +dec_RelatedIPMsSubfield(Tlv) -> + dec_RelatedIPMsSubfield(Tlv, [65547]). + +dec_RelatedIPMsSubfield(Tlv, TagIn) -> +'dec_IPMIdentifier'(Tlv, TagIn). + + + +%%================================ +%% SubjectField +%%================================ +enc_SubjectField(Val) -> + enc_SubjectField(Val, [<<20>>]). + +enc_SubjectField(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_SubjectField(Tlv) -> + dec_SubjectField(Tlv, [20]). + +dec_SubjectField(Tlv, TagIn) -> +begin +Val1 = decode_restricted_string(Tlv, TagIn), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 128 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% ExpiryTimeField +%%================================ +enc_ExpiryTimeField(Val) -> + enc_ExpiryTimeField(Val, [<<23>>]). + +enc_ExpiryTimeField(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_ExpiryTimeField(Tlv) -> + dec_ExpiryTimeField(Tlv, [23]). + +dec_ExpiryTimeField(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% ReplyTimeField +%%================================ +enc_ReplyTimeField(Val) -> + enc_ReplyTimeField(Val, [<<23>>]). + +enc_ReplyTimeField(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_ReplyTimeField(Tlv) -> + dec_ReplyTimeField(Tlv, [23]). + +dec_ReplyTimeField(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% ReplyRecipientsField +%%================================ +enc_ReplyRecipientsField(Val) -> + enc_ReplyRecipientsField(Val, [<<48>>]). + +enc_ReplyRecipientsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_ReplyRecipientsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_ReplyRecipientsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_ReplyRecipientsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_ReplyRecipientsSubfield'(H, [<<49>>]), + 'enc_ReplyRecipientsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_ReplyRecipientsField(Tlv) -> + dec_ReplyRecipientsField(Tlv, [16]). + +dec_ReplyRecipientsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_ReplyRecipientsSubfield'(V1, [17]) || V1 <- Tlv1]. + + + + +%%================================ +%% ReplyRecipientsSubfield +%%================================ +enc_ReplyRecipientsSubfield(Val) -> + enc_ReplyRecipientsSubfield(Val, [<<49>>]). + +enc_ReplyRecipientsSubfield(Val, TagIn) -> + enc_ORDescriptor(Val, TagIn). + + +dec_ReplyRecipientsSubfield(Tlv) -> + dec_ReplyRecipientsSubfield(Tlv, [17]). + +dec_ReplyRecipientsSubfield(Tlv, TagIn) -> +'dec_ORDescriptor'(Tlv, TagIn). + + + +%%================================ +%% ImportanceField +%%================================ +enc_ImportanceField(Val) -> + enc_ImportanceField(Val, [<<10>>]). + +enc_ImportanceField(Val, TagIn) -> +case Val of +low -> encode_tags(TagIn, [0], 1); +normal -> encode_tags(TagIn, [1], 1); +high -> encode_tags(TagIn, [2], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end. + + +dec_ImportanceField(Tlv) -> + dec_ImportanceField(Tlv, [10]). + +dec_ImportanceField(Tlv, TagIn) -> +case decode_integer(Tlv, TagIn) of +0 -> low; +1 -> normal; +2 -> high; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end. + + + +%%================================ +%% SensitivityField +%%================================ +enc_SensitivityField(Val) -> + enc_SensitivityField(Val, [<<10>>]). + +enc_SensitivityField(Val, TagIn) -> +case Val of +personal -> encode_tags(TagIn, [1], 1); +private -> encode_tags(TagIn, [2], 1); +'company-confidential' -> encode_tags(TagIn, [3], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end. + + +dec_SensitivityField(Tlv) -> + dec_SensitivityField(Tlv, [10]). + +dec_SensitivityField(Tlv, TagIn) -> +case decode_integer(Tlv, TagIn) of +1 -> personal; +2 -> private; +3 -> 'company-confidential'; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end. + + + +%%================================ +%% AutoForwardedField +%%================================ +enc_AutoForwardedField(Val) -> + enc_AutoForwardedField(Val, [<<1>>]). + +enc_AutoForwardedField(Val, TagIn) -> +encode_boolean(Val, TagIn). + + +dec_AutoForwardedField(Tlv) -> + dec_AutoForwardedField(Tlv, [1]). + +dec_AutoForwardedField(Tlv, TagIn) -> +decode_boolean(Tlv, TagIn). + + + +%%================================ +%% ExtensionsField +%%================================ +enc_ExtensionsField(Val) -> + enc_ExtensionsField(Val, [<<49>>]). + +enc_ExtensionsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_ExtensionsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_ExtensionsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_ExtensionsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_ExtensionsField_IPMSExtension'(H, [<<48>>]), + 'enc_ExtensionsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% ExtensionsField_IPMSExtension +%%================================ +enc_ExtensionsField_IPMSExtension(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, +Objtype = + 'IPMSInformationObjects':'getenc_internal_object_set_argument_2'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes2,_ } = Objtype('Type', Cindex2, []), + encode_open_type(TmpBytes2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_ExtensionsField(Tlv) -> + dec_ExtensionsField(Tlv, [17]). + +dec_ExtensionsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_ExtensionsField_IPMSExtension'(V1, [16]) || V1 <- Tlv1]. + + +'dec_ExtensionsField_IPMSExtension'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv3} = case Tlv2 of +[V2|TempTlv3] -> + {decode_open_type(V2, []), TempTlv3}; + _ -> + {'NULL',Tlv2} +end, + +DecObjtypeTerm1 = + 'IPMSInformationObjects':'getdec_internal_object_set_argument_2'(Term1), +Term2 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPMSExtension',Term1,Term2}, +Res1. + + +%%================================ +%% Body +%%================================ +enc_Body(Val) -> + enc_Body(Val, [<<48>>]). + +enc_Body(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_Body_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_Body_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_Body_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_BodyPart'(H, []), + 'enc_Body_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_Body(Tlv) -> + dec_Body(Tlv, [16]). + +dec_Body(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_BodyPart'(V1, []) || V1 <- Tlv1]. + + + + +%%================================ +%% BodyPart +%%================================ +enc_BodyPart(Val) -> + enc_BodyPart(Val, []). + +enc_BodyPart(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + basic -> + 'enc_BodyPart_basic'(element(2,Val), []); + extended -> + 'enc_BodyPart_extended'(element(2,Val), [<<175>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + + +%%================================ +%% BodyPart_basic +%%================================ +enc_BodyPart_basic(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'ia5-text' -> + 'enc_IA5TextBodyPart'(element(2,Val), [<<160>>]); + 'g3-facsimile' -> + 'enc_G3FacsimileBodyPart'(element(2,Val), [<<163>>]); + 'g4-class1' -> + 'enc_G4Class1BodyPart'(element(2,Val), [<<164>>]); + teletex -> + 'enc_TeletexBodyPart'(element(2,Val), [<<165>>]); + videotex -> + 'enc_VideotexBodyPart'(element(2,Val), [<<166>>]); + encrypted -> + 'enc_EncryptedBodyPart'(element(2,Val), [<<168>>]); + message -> + 'enc_MessageBodyPart'(element(2,Val), [<<169>>]); + 'mixed-mode' -> + 'enc_MixedModeBodyPart'(element(2,Val), [<<171>>]); + 'bilaterally-defined' -> + encode_restricted_string(element(2,Val), [<<142>>]); + 'nationally-defined' -> + 'enc_NationallyDefinedBodyPart'(element(2,Val), [<<167>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + + +%%================================ +%% BodyPart_extended +%%================================ +enc_BodyPart_extended(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:INSTANCE OF OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_INSTANCE OF'(Cindex1, [<<160>>]) + end, + +%%------------------------------------------------- +%% attribute data(2) External IPMSInformationObjects:INSTANCE OF +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_INSTANCE OF'(Cindex2, [<<40>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_BodyPart(Tlv) -> + dec_BodyPart(Tlv, []). + +dec_BodyPart(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'basic' + V1 = {131072,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131075,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131076,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131077,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131078,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131080,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131081,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131083,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131086,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + V1 = {131079,_} -> + {basic, 'dec_BodyPart_basic'(V1, [])}; + + +%% 'extended' + {131087, V1} -> + {extended, 'dec_BodyPart_extended'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. +'dec_BodyPart_basic'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'ia5-text' + {131072, V1} -> + {'ia5-text', 'dec_IA5TextBodyPart'(V1, [])}; + + +%% 'g3-facsimile' + {131075, V1} -> + {'g3-facsimile', 'dec_G3FacsimileBodyPart'(V1, [])}; + + +%% 'g4-class1' + {131076, V1} -> + {'g4-class1', 'dec_G4Class1BodyPart'(V1, [])}; + + +%% 'teletex' + {131077, V1} -> + {teletex, 'dec_TeletexBodyPart'(V1, [])}; + + +%% 'videotex' + {131078, V1} -> + {videotex, 'dec_VideotexBodyPart'(V1, [])}; + + +%% 'encrypted' + {131080, V1} -> + {encrypted, 'dec_EncryptedBodyPart'(V1, [])}; + + +%% 'message' + {131081, V1} -> + {message, 'dec_MessageBodyPart'(V1, [])}; + + +%% 'mixed-mode' + {131083, V1} -> + {'mixed-mode', 'dec_MixedModeBodyPart'(V1, [])}; + + +%% 'bilaterally-defined' + {131086, V1} -> + {'bilaterally-defined', decode_octet_string(V1, [])}; + + +%% 'nationally-defined' + {131079, V1} -> + {'nationally-defined', 'dec_NationallyDefinedBodyPart'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. +'dec_BodyPart_extended'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:INSTANCE OF OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{131072,V1}|TempTlv2] -> + {'dec_INSTANCE OF'(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute data(2) External IPMSInformationObjects:INSTANCE OF +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'dec_INSTANCE OF'(V2, [8]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'BodyPart_extended',Term1,Term2}, +Res1. + + +%%================================ +%% IA5TextBodyPart +%%================================ +enc_IA5TextBodyPart(Val) -> + enc_IA5TextBodyPart(Val, [<<48>>]). + +enc_IA5TextBodyPart(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:IA5TextParameters +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_IA5TextParameters'(Cindex1, [<<49>>]), + +%%------------------------------------------------- +%% attribute data(2) with type IA5String +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_restricted_string(Cindex2, [<<22>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IA5TextBodyPart(Tlv) -> + dec_IA5TextBodyPart(Tlv, [16]). + +dec_IA5TextBodyPart(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:IA5TextParameters +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_IA5TextParameters'(V1, [17]), + +%%------------------------------------------------- +%% attribute data(2) with type IA5String +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = begin +binary_to_list(decode_restricted_string(V2, [22])) +end +, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IA5TextBodyPart',Term1,Term2}, +Res1. + + +%%================================ +%% IA5TextParameters +%%================================ +enc_IA5TextParameters(Val) -> + enc_IA5TextParameters(Val, [<<49>>]). + +enc_IA5TextParameters(Val, TagIn) -> +{_,Cindex1} = Val, + +%%------------------------------------------------- +%% attribute repertoire(1) with type ENUMERATED DEFAULT = ia5 +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex1 =:= ia5 -> + {<<>>,0}; + _ -> + case Cindex1 of +ita2 -> encode_tags([<<128>>], [2], 1); +ia5 -> encode_tags([<<128>>], [5], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end + end, + + BytesSoFar = [EncBytes1], +LenSoFar = EncLen1, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IA5TextParameters(Tlv) -> + dec_IA5TextParameters(Tlv, [17]). + +dec_IA5TextParameters(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %repertoire +TTlv = {131072,_} -> + {1, TTlv}; + Else -> + {2, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute repertoire(1) with type ENUMERATED DEFAULT = ia5 +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {case decode_integer(V1, []) of +2 -> ita2; +5 -> ia5; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end, TempTlv3}; + _ -> + {ia5,Tlv2} +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IA5TextParameters',Term1}, +Res1. + + +%%================================ +%% IA5TextData +%%================================ +enc_IA5TextData(Val) -> + enc_IA5TextData(Val, [<<22>>]). + +enc_IA5TextData(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_IA5TextData(Tlv) -> + dec_IA5TextData(Tlv, [22]). + +dec_IA5TextData(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% Repertoire +%%================================ +enc_Repertoire(Val) -> + enc_Repertoire(Val, [<<10>>]). + +enc_Repertoire(Val, TagIn) -> +case Val of +ita2 -> encode_tags(TagIn, [2], 1); +ia5 -> encode_tags(TagIn, [5], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end. + + +dec_Repertoire(Tlv) -> + dec_Repertoire(Tlv, [10]). + +dec_Repertoire(Tlv, TagIn) -> +case decode_integer(Tlv, TagIn) of +2 -> ita2; +5 -> ia5; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end. + + + +%%================================ +%% G3FacsimileBodyPart +%%================================ +enc_G3FacsimileBodyPart(Val) -> + enc_G3FacsimileBodyPart(Val, [<<48>>]). + +enc_G3FacsimileBodyPart(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:G3FacsimileParameters +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_G3FacsimileParameters'(Cindex1, [<<49>>]), + +%%------------------------------------------------- +%% attribute data(2) External IPMSInformationObjects:G3FacsimileData +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_G3FacsimileData'(Cindex2, [<<48>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_G3FacsimileBodyPart(Tlv) -> + dec_G3FacsimileBodyPart(Tlv, [16]). + +dec_G3FacsimileBodyPart(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:G3FacsimileParameters +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_G3FacsimileParameters'(V1, [17]), + +%%------------------------------------------------- +%% attribute data(2) External IPMSInformationObjects:G3FacsimileData +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'dec_G3FacsimileData'(V2, [16]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'G3FacsimileBodyPart',Term1,Term2}, +Res1. + + +%%================================ +%% G3FacsimileParameters +%%================================ +enc_G3FacsimileParameters(Val) -> + enc_G3FacsimileParameters(Val, [<<49>>]). + +enc_G3FacsimileParameters(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute number-of-pages(1) with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_integer(Cindex1, [<<128>>]) + end, + +%%------------------------------------------------- +%% attribute non-basic-parameters(2) with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_named_bit_string(Cindex2, [{'two-dimensional',8},{'fine-resolution',9},{'unlimited-length',20},{'b4-length',21},{'a3-width',22},{'b4-width',23},{'t6-coding',25},{uncompressed,30},{'width-middle-864-of-1728',37},{'width-middle-1216-of-1728',38},{'resolution-type',44},{'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}], [<<129>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_G3FacsimileParameters(Tlv) -> + dec_G3FacsimileParameters(Tlv, [17]). + +dec_G3FacsimileParameters(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %number-of-pages +TTlv = {131072,_} -> + {1, TTlv}; + %non-basic-parameters +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute number-of-pages(1) with type INTEGER OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {decode_integer(V1, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute non-basic-parameters(2) with type BIT STRING OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {decode_named_bit_string(V2, [{'two-dimensional',8},{'fine-resolution',9},{'unlimited-length',20},{'b4-length',21},{'a3-width',22},{'b4-width',23},{'t6-coding',25},{uncompressed,30},{'width-middle-864-of-1728',37},{'width-middle-1216-of-1728',38},{'resolution-type',44},{'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}], []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'G3FacsimileParameters',Term1,Term2}, +Res1. + + +%%================================ +%% G3FacsimileData +%%================================ +enc_G3FacsimileData(Val) -> + enc_G3FacsimileData(Val, [<<48>>]). + +enc_G3FacsimileData(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_G3FacsimileData_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_G3FacsimileData_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_G3FacsimileData_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = encode_unnamed_bit_string(H, [<<3>>]), + 'enc_G3FacsimileData_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_G3FacsimileData(Tlv) -> + dec_G3FacsimileData(Tlv, [16]). + +dec_G3FacsimileData(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +[decode_native_bit_string(V1, [3]) || V1 <- Tlv1]. + + + + +%%================================ +%% G4Class1BodyPart +%%================================ +enc_G4Class1BodyPart(Val) -> + enc_G4Class1BodyPart(Val, [<<48>>]). + +enc_G4Class1BodyPart(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_G4Class1BodyPart_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_G4Class1BodyPart_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_G4Class1BodyPart_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'Interchange-Data-Elements':'enc_Interchange-Data-Element'(H, []), + 'enc_G4Class1BodyPart_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_G4Class1BodyPart(Tlv) -> + dec_G4Class1BodyPart(Tlv, [16]). + +dec_G4Class1BodyPart(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['Interchange-Data-Elements':'dec_Interchange-Data-Element'(V1, []) || V1 <- Tlv1]. + + + + +%%================================ +%% MixedModeBodyPart +%%================================ +enc_MixedModeBodyPart(Val) -> + enc_MixedModeBodyPart(Val, [<<48>>]). + +enc_MixedModeBodyPart(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_MixedModeBodyPart_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_MixedModeBodyPart_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_MixedModeBodyPart_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'Interchange-Data-Elements':'enc_Interchange-Data-Element'(H, []), + 'enc_MixedModeBodyPart_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_MixedModeBodyPart(Tlv) -> + dec_MixedModeBodyPart(Tlv, [16]). + +dec_MixedModeBodyPart(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['Interchange-Data-Elements':'dec_Interchange-Data-Element'(V1, []) || V1 <- Tlv1]. + + + + +%%================================ +%% TeletexBodyPart +%%================================ +enc_TeletexBodyPart(Val) -> + enc_TeletexBodyPart(Val, [<<48>>]). + +enc_TeletexBodyPart(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:TeletexParameters +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_TeletexParameters'(Cindex1, [<<49>>]), + +%%------------------------------------------------- +%% attribute data(2) External IPMSInformationObjects:TeletexData +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_TeletexData'(Cindex2, [<<48>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_TeletexBodyPart(Tlv) -> + dec_TeletexBodyPart(Tlv, [16]). + +dec_TeletexBodyPart(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:TeletexParameters +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_TeletexParameters'(V1, [17]), + +%%------------------------------------------------- +%% attribute data(2) External IPMSInformationObjects:TeletexData +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'dec_TeletexData'(V2, [16]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'TeletexBodyPart',Term1,Term2}, +Res1. + + +%%================================ +%% TeletexParameters +%%================================ +enc_TeletexParameters(Val) -> + enc_TeletexParameters(Val, [<<49>>]). + +enc_TeletexParameters(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3} = Val, + +%%------------------------------------------------- +%% attribute number-of-pages(1) with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_integer(Cindex1, [<<128>>]) + end, + +%%------------------------------------------------- +%% attribute telex-compatible(2) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= false -> + {<<>>,0}; + _ -> + encode_boolean(Cindex2, [<<129>>]) + end, + +%%------------------------------------------------- +%% attribute non-basic-parameters(3) External MTSAbstractService:TeletexNonBasicParameters OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MTSAbstractService':'enc_TeletexNonBasicParameters'(Cindex3, [<<162>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], +LenSoFar = EncLen1 + EncLen2 + EncLen3, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_TeletexParameters(Tlv) -> + dec_TeletexParameters(Tlv, [17]). + +dec_TeletexParameters(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %number-of-pages +TTlv = {131072,_} -> + {1, TTlv}; + %telex-compatible +TTlv = {131073,_} -> + {2, TTlv}; + %non-basic-parameters +TTlv = {131074,_} -> + {3, TTlv}; + Else -> + {4, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute number-of-pages(1) with type INTEGER OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {decode_integer(V1, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute telex-compatible(2) with type BOOLEAN DEFAULT = false +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {decode_boolean(V2, []), TempTlv4}; + _ -> + {false,Tlv3} +end, + +%%------------------------------------------------- +%% attribute non-basic-parameters(3) External MTSAbstractService:TeletexNonBasicParameters OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {'MTSAbstractService':'dec_TeletexNonBasicParameters'(V3, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +case Tlv5 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed +end, +Res1 = {'TeletexParameters',Term1,Term2,Term3}, +Res1. + + +%%================================ +%% TeletexData +%%================================ +enc_TeletexData(Val) -> + enc_TeletexData(Val, [<<48>>]). + +enc_TeletexData(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_TeletexData_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_TeletexData_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_TeletexData_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = encode_restricted_string(H, [<<20>>]), + 'enc_TeletexData_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_TeletexData(Tlv) -> + dec_TeletexData(Tlv, [16]). + +dec_TeletexData(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +[begin +binary_to_list(decode_restricted_string(V1, [20])) +end + || V1 <- Tlv1]. + + + + +%%================================ +%% VideotexBodyPart +%%================================ +enc_VideotexBodyPart(Val) -> + enc_VideotexBodyPart(Val, [<<48>>]). + +enc_VideotexBodyPart(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:VideotexParameters +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_VideotexParameters'(Cindex1, [<<49>>]), + +%%------------------------------------------------- +%% attribute data(2) with type VideotexString +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_restricted_string(Cindex2, [<<21>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_VideotexBodyPart(Tlv) -> + dec_VideotexBodyPart(Tlv, [16]). + +dec_VideotexBodyPart(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:VideotexParameters +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_VideotexParameters'(V1, [17]), + +%%------------------------------------------------- +%% attribute data(2) with type VideotexString +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = begin +binary_to_list(decode_restricted_string(V2, [21])) +end +, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'VideotexBodyPart',Term1,Term2}, +Res1. + + +%%================================ +%% VideotexParameters +%%================================ +enc_VideotexParameters(Val) -> + enc_VideotexParameters(Val, [<<49>>]). + +enc_VideotexParameters(Val, TagIn) -> +{_,Cindex1} = Val, + +%%------------------------------------------------- +%% attribute syntax(1) with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_integer(Cindex1, [{ids,0},{'data-syntax1',1},{'data-syntax2',2},{'data-syntax3',3}], [<<128>>]) + end, + + BytesSoFar = [EncBytes1], +LenSoFar = EncLen1, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_VideotexParameters(Tlv) -> + dec_VideotexParameters(Tlv, [17]). + +dec_VideotexParameters(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %syntax +TTlv = {131072,_} -> + {1, TTlv}; + Else -> + {2, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute syntax(1) with type INTEGER OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {begin +Val1 = decode_integer(V1, []), +number2name(Val1, [{ids,0},{'data-syntax1',1},{'data-syntax2',2},{'data-syntax3',3}]) +end +, TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'VideotexParameters',Term1}, +Res1. + + +%%================================ +%% VideotexSyntax +%%================================ +enc_VideotexSyntax(Val) -> + enc_VideotexSyntax(Val, [<<2>>]). + +enc_VideotexSyntax(Val, TagIn) -> +encode_integer(Val, [{ids,0},{'data-syntax1',1},{'data-syntax2',2},{'data-syntax3',3}], TagIn). + + +dec_VideotexSyntax(Tlv) -> + dec_VideotexSyntax(Tlv, [2]). + +dec_VideotexSyntax(Tlv, TagIn) -> +begin +Val1 = decode_integer(Tlv, TagIn), +number2name(Val1, [{ids,0},{'data-syntax1',1},{'data-syntax2',2},{'data-syntax3',3}]) +end +. + + + +%%================================ +%% VideotexData +%%================================ +enc_VideotexData(Val) -> + enc_VideotexData(Val, [<<21>>]). + +enc_VideotexData(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_VideotexData(Tlv) -> + dec_VideotexData(Tlv, [21]). + +dec_VideotexData(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% EncryptedBodyPart +%%================================ +enc_EncryptedBodyPart(Val) -> + enc_EncryptedBodyPart(Val, [<<48>>]). + +enc_EncryptedBodyPart(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:EncryptedParameters +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_EncryptedParameters'(Cindex1, [<<49>>]), + +%%------------------------------------------------- +%% attribute data(2) with type BIT STRING +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_unnamed_bit_string(Cindex2, [<<3>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_EncryptedBodyPart(Tlv) -> + dec_EncryptedBodyPart(Tlv, [16]). + +dec_EncryptedBodyPart(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:EncryptedParameters +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_EncryptedParameters'(V1, [17]), + +%%------------------------------------------------- +%% attribute data(2) with type BIT STRING +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = decode_native_bit_string(V2, [3]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'EncryptedBodyPart',Term1,Term2}, +Res1. + + +%%================================ +%% EncryptedParameters +%%================================ +enc_EncryptedParameters(Val) -> + enc_EncryptedParameters(Val, [<<49>>]). + +enc_EncryptedParameters(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute algorithm-identifier(1) External AuthenticationFramework:AlgorithmIdentifier +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'AuthenticationFramework':'enc_AlgorithmIdentifier'(Cindex1, [<<48>>]), + +%%------------------------------------------------- +%% attribute originator-certificates(2) External MTSAbstractService:ExtendedCertificates OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MTSAbstractService':'enc_ExtendedCertificates'(Cindex2, [<<49>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_EncryptedParameters(Tlv) -> + dec_EncryptedParameters(Tlv, [17]). + +dec_EncryptedParameters(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %algorithm-identifier +TTlv = {16,_} -> + {1, TTlv}; + %originator-certificates +TTlv = {17,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute algorithm-identifier(1) External AuthenticationFramework:AlgorithmIdentifier +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'AuthenticationFramework':'dec_AlgorithmIdentifier'(V1, [16]), + +%%------------------------------------------------- +%% attribute originator-certificates(2) External MTSAbstractService:ExtendedCertificates OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{17,V2}|TempTlv4] -> + {'MTSAbstractService':'dec_ExtendedCertificates'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of [] -> true; _ -> true end, % ... extra fields skipped +Res1 = {'EncryptedParameters',Term1,Term2}, +Res1. + + +%%================================ +%% EncryptedData +%%================================ +enc_EncryptedData(Val) -> + enc_EncryptedData(Val, [<<3>>]). + +enc_EncryptedData(Val, TagIn) -> +encode_unnamed_bit_string(Val, TagIn). + + +dec_EncryptedData(Tlv) -> + dec_EncryptedData(Tlv, [3]). + +dec_EncryptedData(Tlv, TagIn) -> +decode_native_bit_string(Tlv, TagIn). + + + +%%================================ +%% MessageBodyPart +%%================================ +enc_MessageBodyPart(Val) -> + enc_MessageBodyPart(Val, [<<48>>]). + +enc_MessageBodyPart(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:MessageParameters +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_MessageParameters'(Cindex1, [<<49>>]), + +%%------------------------------------------------- +%% attribute data(2) External IPMSInformationObjects:MessageData +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_MessageData'(Cindex2, []), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_MessageBodyPart(Tlv) -> + dec_MessageBodyPart(Tlv, [16]). + +dec_MessageBodyPart(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute parameters(1) External IPMSInformationObjects:MessageParameters +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_MessageParameters'(V1, [17]), + +%%------------------------------------------------- +%% attribute data(2) External IPMSInformationObjects:MessageData +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = 'dec_MessageData'(V2, []), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'MessageBodyPart',Term1,Term2}, +Res1. + + +%%================================ +%% MessageParameters +%%================================ +enc_MessageParameters(Val) -> + enc_MessageParameters(Val, [<<49>>]). + +enc_MessageParameters(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute delivery-time(1) with type UTCTime OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex1, [<<128>>]) + end, + +%%------------------------------------------------- +%% attribute delivery-envelope(2) External MTSAbstractService:OtherMessageDeliveryFields OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'MTSAbstractService':'enc_OtherMessageDeliveryFields'(Cindex2, [<<161>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_MessageParameters(Tlv) -> + dec_MessageParameters(Tlv, [17]). + +dec_MessageParameters(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %delivery-time +TTlv = {131072,_} -> + {1, TTlv}; + %delivery-envelope +TTlv = {131073,_} -> + {2, TTlv}; + Else -> + {3, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute delivery-time(1) with type UTCTime OPTIONAL +%%------------------------------------------------- +{Term1,Tlv3} = case Tlv2 of +[{131072,V1}|TempTlv3] -> + {begin +binary_to_list(decode_restricted_string(V1, [])) +end +, TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute delivery-envelope(2) External MTSAbstractService:OtherMessageDeliveryFields OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'MTSAbstractService':'dec_OtherMessageDeliveryFields'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +case Tlv4 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv4}}}) % extra fields not allowed +end, +Res1 = {'MessageParameters',Term1,Term2}, +Res1. + + +%%================================ +%% MessageData +%%================================ +enc_MessageData(Val) -> + enc_MessageData(Val, []). + +enc_MessageData(Val, TagIn) -> + enc_IPM(Val, TagIn). + + +dec_MessageData(Tlv) -> + dec_MessageData(Tlv, []). + +dec_MessageData(Tlv, TagIn) -> +'dec_IPM'(Tlv, TagIn). + + + +%%================================ +%% BilaterallyDefinedBodyPart +%%================================ +enc_BilaterallyDefinedBodyPart(Val) -> + enc_BilaterallyDefinedBodyPart(Val, [<<4>>]). + +enc_BilaterallyDefinedBodyPart(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_BilaterallyDefinedBodyPart(Tlv) -> + dec_BilaterallyDefinedBodyPart(Tlv, [4]). + +dec_BilaterallyDefinedBodyPart(Tlv, TagIn) -> +decode_octet_string(Tlv, TagIn). + + + +%%================================ +%% NationallyDefinedBodyPart +%%================================ +enc_NationallyDefinedBodyPart(Val) -> + enc_NationallyDefinedBodyPart(Val, []). + +enc_NationallyDefinedBodyPart(Val, TagIn) -> +%% OPEN TYPE +encode_open_type(Val, TagIn). + + +dec_NationallyDefinedBodyPart(Tlv) -> + dec_NationallyDefinedBodyPart(Tlv, []). + +dec_NationallyDefinedBodyPart(Tlv, TagIn) -> +decode_open_type_as_binary(Tlv, TagIn). + + + +%%================================ +%% IPN +%%================================ +enc_IPN(Val) -> + enc_IPN(Val, [<<49>>]). + +enc_IPN(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5,Cindex6} = Val, + +%%------------------------------------------------- +%% attribute subject-ipm(1) External IPMSInformationObjects:SubjectIPMField +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_SubjectIPMField'(Cindex1, [<<107>>]), + +%%------------------------------------------------- +%% attribute ipn-originator(2) External IPMSInformationObjects:IPNOriginatorField OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_IPNOriginatorField'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute ipm-intended-recipient(3) External IPMSInformationObjects:IPMIntendedRecipientField OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_IPMIntendedRecipientField'(Cindex3, [<<162>>]) + end, + +%%------------------------------------------------- +%% attribute conversion-eits(4) External IPMSInformationObjects:ConversionEITsField OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_ConversionEITsField'(Cindex4, [<<101>>]) + end, + +%%------------------------------------------------- +%% attribute notification-extensions(5) External IPMSInformationObjects:NotificationExtensionsField OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_NotificationExtensionsField'(Cindex5, [<<163>>]) + end, + +%%------------------------------------------------- +%% attribute choice(6) with type CHOICE +%%------------------------------------------------- + {EncBytes6,EncLen6} = 'enc_IPN_choice'(Cindex6, [<<160>>]), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% IPN_choice +%%================================ +enc_IPN_choice(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'non-receipt-fields' -> + 'enc_NonReceiptFields'(element(2,Val), [<<160>>]); + 'receipt-fields' -> + 'enc_ReceiptFields'(element(2,Val), [<<161>>]); + 'other-notification-type-fields' -> + 'enc_OtherNotificationTypeFields'(element(2,Val), [<<162>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_IPN(Tlv) -> + dec_IPN(Tlv, [17]). + +dec_IPN(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %subject-ipm +TTlv = {65547,_} -> + {1, TTlv}; + %ipn-originator +TTlv = {131073,_} -> + {2, TTlv}; + %ipm-intended-recipient +TTlv = {131074,_} -> + {3, TTlv}; + %conversion-eits +TTlv = {65541,_} -> + {4, TTlv}; + %notification-extensions +TTlv = {131075,_} -> + {5, TTlv}; + %choice +TTlv = {131072,_} -> + {6, TTlv}; + Else -> + {7, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute subject-ipm(1) External IPMSInformationObjects:SubjectIPMField +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_SubjectIPMField'(V1, [65547]), + +%%------------------------------------------------- +%% attribute ipn-originator(2) External IPMSInformationObjects:IPNOriginatorField OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'dec_IPNOriginatorField'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute ipm-intended-recipient(3) External IPMSInformationObjects:IPMIntendedRecipientField OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {'dec_IPMIntendedRecipientField'(V3, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute conversion-eits(4) External IPMSInformationObjects:ConversionEITsField OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{65541,V4}|TempTlv6] -> + {'dec_ConversionEITsField'(V4, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +%%------------------------------------------------- +%% attribute notification-extensions(5) External IPMSInformationObjects:NotificationExtensionsField OPTIONAL +%%------------------------------------------------- +{Term5,Tlv7} = case Tlv6 of +[{131075,V5}|TempTlv7] -> + {'dec_NotificationExtensionsField'(V5, []), TempTlv7}; + _ -> + { asn1_NOVALUE, Tlv6} +end, + +%%------------------------------------------------- +%% attribute choice(6) with type CHOICE +%%------------------------------------------------- +[V6|Tlv8] = Tlv7, +Term6 = 'dec_IPN_choice'(V6, [131072]), + +case Tlv8 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv8}}}) % extra fields not allowed +end, +Res1 = {'IPN',Term1,Term2,Term3,Term4,Term5,Term6}, +Res1. +'dec_IPN_choice'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'non-receipt-fields' + {131072, V1} -> + {'non-receipt-fields', 'dec_NonReceiptFields'(V1, [])}; + + +%% 'receipt-fields' + {131073, V1} -> + {'receipt-fields', 'dec_ReceiptFields'(V1, [])}; + + +%% 'other-notification-type-fields' + {131074, V1} -> + {'other-notification-type-fields', 'dec_OtherNotificationTypeFields'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% RN +%%================================ +enc_RN(Val) -> + enc_RN(Val, [<<49>>]). + +enc_RN(Val, TagIn) -> + enc_IPN(Val, TagIn). + + +dec_RN(Tlv) -> + dec_RN(Tlv, [17]). + +dec_RN(Tlv, TagIn) -> +'dec_IPN'(Tlv, TagIn). + + + +%%================================ +%% NRN +%%================================ +enc_NRN(Val) -> + enc_NRN(Val, [<<49>>]). + +enc_NRN(Val, TagIn) -> + enc_IPN(Val, TagIn). + + +dec_NRN(Tlv) -> + dec_NRN(Tlv, [17]). + +dec_NRN(Tlv, TagIn) -> +'dec_IPN'(Tlv, TagIn). + + + +%%================================ +%% ON +%%================================ +enc_ON(Val) -> + enc_ON(Val, [<<49>>]). + +enc_ON(Val, TagIn) -> + enc_IPN(Val, TagIn). + + +dec_ON(Tlv) -> + dec_ON(Tlv, [17]). + +dec_ON(Tlv, TagIn) -> +'dec_IPN'(Tlv, TagIn). + + + +%%================================ +%% CommonFields +%%================================ +enc_CommonFields(Val) -> + enc_CommonFields(Val, [<<49>>]). + +enc_CommonFields(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5} = Val, + +%%------------------------------------------------- +%% attribute subject-ipm(1) External IPMSInformationObjects:SubjectIPMField +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_SubjectIPMField'(Cindex1, [<<107>>]), + +%%------------------------------------------------- +%% attribute ipn-originator(2) External IPMSInformationObjects:IPNOriginatorField OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_IPNOriginatorField'(Cindex2, [<<161>>]) + end, + +%%------------------------------------------------- +%% attribute ipm-intended-recipient(3) External IPMSInformationObjects:IPMIntendedRecipientField OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_IPMIntendedRecipientField'(Cindex3, [<<162>>]) + end, + +%%------------------------------------------------- +%% attribute conversion-eits(4) External IPMSInformationObjects:ConversionEITsField OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_ConversionEITsField'(Cindex4, [<<101>>]) + end, + +%%------------------------------------------------- +%% attribute notification-extensions(5) External IPMSInformationObjects:NotificationExtensionsField OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_NotificationExtensionsField'(Cindex5, [<<163>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_CommonFields(Tlv) -> + dec_CommonFields(Tlv, [17]). + +dec_CommonFields(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %subject-ipm +TTlv = {65547,_} -> + {1, TTlv}; + %ipn-originator +TTlv = {131073,_} -> + {2, TTlv}; + %ipm-intended-recipient +TTlv = {131074,_} -> + {3, TTlv}; + %conversion-eits +TTlv = {65541,_} -> + {4, TTlv}; + %notification-extensions +TTlv = {131075,_} -> + {5, TTlv}; + Else -> + {6, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute subject-ipm(1) External IPMSInformationObjects:SubjectIPMField +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_SubjectIPMField'(V1, [65547]), + +%%------------------------------------------------- +%% attribute ipn-originator(2) External IPMSInformationObjects:IPNOriginatorField OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {'dec_IPNOriginatorField'(V2, []), TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute ipm-intended-recipient(3) External IPMSInformationObjects:IPMIntendedRecipientField OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {'dec_IPMIntendedRecipientField'(V3, []), TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute conversion-eits(4) External IPMSInformationObjects:ConversionEITsField OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{65541,V4}|TempTlv6] -> + {'dec_ConversionEITsField'(V4, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +%%------------------------------------------------- +%% attribute notification-extensions(5) External IPMSInformationObjects:NotificationExtensionsField OPTIONAL +%%------------------------------------------------- +{Term5,Tlv7} = case Tlv6 of +[{131075,V5}|TempTlv7] -> + {'dec_NotificationExtensionsField'(V5, []), TempTlv7}; + _ -> + { asn1_NOVALUE, Tlv6} +end, + +case Tlv7 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv7}}}) % extra fields not allowed +end, +Res1 = {'CommonFields',Term1,Term2,Term3,Term4,Term5}, +Res1. + + +%%================================ +%% NonReceiptFields +%%================================ +enc_NonReceiptFields(Val) -> + enc_NonReceiptFields(Val, [<<49>>]). + +enc_NonReceiptFields(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4,Cindex5} = Val, + +%%------------------------------------------------- +%% attribute non-receipt-reason(1) with type ENUMERATED +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of +'ipm-discarded' -> encode_tags([<<128>>], [0], 1); +'ipm-auto-forwarded' -> encode_tags([<<128>>], [1], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end, + +%%------------------------------------------------- +%% attribute discard-reason(2) with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case Cindex2 of +'ipm-expired' -> encode_tags([<<129>>], [0], 1); +'ipm-obsoleted' -> encode_tags([<<129>>], [1], 1); +'user-subscription-terminated' -> encode_tags([<<129>>], [2], 1); +'not-used' -> encode_tags([<<129>>], [3], 1); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end + end, + +%%------------------------------------------------- +%% attribute auto-forward-comment(3) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex3, [<<130>>]) + end, + +%%------------------------------------------------- +%% attribute returned-ipm(4) External IPMSInformationObjects:ReturnedIPMField OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_ReturnedIPMField'(Cindex4, [<<163>>]) + end, + +%%------------------------------------------------- +%% attribute nrn-extensions(5) External IPMSInformationObjects:NRNExtensionsField OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case Cindex5 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_NRNExtensionsField'(Cindex5, [<<164>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_NonReceiptFields(Tlv) -> + dec_NonReceiptFields(Tlv, [17]). + +dec_NonReceiptFields(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %non-receipt-reason +TTlv = {131072,_} -> + {1, TTlv}; + %discard-reason +TTlv = {131073,_} -> + {2, TTlv}; + %auto-forward-comment +TTlv = {131074,_} -> + {3, TTlv}; + %returned-ipm +TTlv = {131075,_} -> + {4, TTlv}; + %nrn-extensions +TTlv = {131076,_} -> + {5, TTlv}; + Else -> + {6, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute non-receipt-reason(1) with type ENUMERATED +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = case decode_integer(V1, [131072]) of +0 -> 'ipm-discarded'; +1 -> 'ipm-auto-forwarded'; +Default1 -> {asn1_enum,Default1} +end, + +%%------------------------------------------------- +%% attribute discard-reason(2) with type ENUMERATED OPTIONAL +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {case decode_integer(V2, []) of +0 -> 'ipm-expired'; +1 -> 'ipm-obsoleted'; +2 -> 'user-subscription-terminated'; +3 -> 'not-used'; +Default2 -> exit({error,{asn1,{illegal_enumerated,Default2}}}) +end, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute auto-forward-comment(3) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {begin +Val1 = decode_restricted_string(V3, []), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute returned-ipm(4) External IPMSInformationObjects:ReturnedIPMField OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{131075,V4}|TempTlv6] -> + {'dec_ReturnedIPMField'(V4, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +%%------------------------------------------------- +%% attribute nrn-extensions(5) External IPMSInformationObjects:NRNExtensionsField OPTIONAL +%%------------------------------------------------- +{Term5,Tlv7} = case Tlv6 of +[{131076,V5}|TempTlv7] -> + {'dec_NRNExtensionsField'(V5, []), TempTlv7}; + _ -> + { asn1_NOVALUE, Tlv6} +end, + +case Tlv7 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv7}}}) % extra fields not allowed +end, +Res1 = {'NonReceiptFields',Term1,Term2,Term3,Term4,Term5}, +Res1. + + +%%================================ +%% ReceiptFields +%%================================ +enc_ReceiptFields(Val) -> + enc_ReceiptFields(Val, [<<49>>]). + +enc_ReceiptFields(Val, TagIn) -> +{_,Cindex1,Cindex2,Cindex3,Cindex4} = Val, + +%%------------------------------------------------- +%% attribute receipt-time(1) with type UTCTime +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_restricted_string(Cindex1, [<<128>>]), + +%%------------------------------------------------- +%% attribute acknowledgment-mode(2) with type ENUMERATED DEFAULT = manual +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= manual -> + {<<>>,0}; + _ -> + case Cindex2 of +manual -> encode_tags([<<129>>], [0], 1); +automatic -> encode_tags([<<129>>], [1], 1); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end + end, + +%%------------------------------------------------- +%% attribute suppl-receipt-info(3) with type PrintableString OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex3, [<<130>>]) + end, + +%%------------------------------------------------- +%% attribute rn-extensions(4) External IPMSInformationObjects:RNExtensionsField OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case Cindex4 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_RNExtensionsField'(Cindex4, [<<163>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_ReceiptFields(Tlv) -> + dec_ReceiptFields(Tlv, [17]). + +dec_ReceiptFields(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %receipt-time +TTlv = {131072,_} -> + {1, TTlv}; + %acknowledgment-mode +TTlv = {131073,_} -> + {2, TTlv}; + %suppl-receipt-info +TTlv = {131074,_} -> + {3, TTlv}; + %rn-extensions +TTlv = {131075,_} -> + {4, TTlv}; + Else -> + {5, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute receipt-time(1) with type UTCTime +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = begin +binary_to_list(decode_restricted_string(V1, [131072])) +end +, + +%%------------------------------------------------- +%% attribute acknowledgment-mode(2) with type ENUMERATED DEFAULT = manual +%%------------------------------------------------- +{Term2,Tlv4} = case Tlv3 of +[{131073,V2}|TempTlv4] -> + {case decode_integer(V2, []) of +0 -> manual; +1 -> automatic; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end, TempTlv4}; + _ -> + {manual,Tlv3} +end, + +%%------------------------------------------------- +%% attribute suppl-receipt-info(3) with type PrintableString OPTIONAL +%%------------------------------------------------- +{Term3,Tlv5} = case Tlv4 of +[{131074,V3}|TempTlv5] -> + {begin +Val1 = decode_restricted_string(V3, []), +C1 = byte_size(Val1), +if 1 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end, TempTlv5}; + _ -> + { asn1_NOVALUE, Tlv4} +end, + +%%------------------------------------------------- +%% attribute rn-extensions(4) External IPMSInformationObjects:RNExtensionsField OPTIONAL +%%------------------------------------------------- +{Term4,Tlv6} = case Tlv5 of +[{131075,V4}|TempTlv6] -> + {'dec_RNExtensionsField'(V4, []), TempTlv6}; + _ -> + { asn1_NOVALUE, Tlv5} +end, + +case Tlv6 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv6}}}) % extra fields not allowed +end, +Res1 = {'ReceiptFields',Term1,Term2,Term3,Term4}, +Res1. + + +%%================================ +%% SubjectIPMField +%%================================ +enc_SubjectIPMField(Val) -> + enc_SubjectIPMField(Val, [<<107>>]). + +enc_SubjectIPMField(Val, TagIn) -> + enc_IPMIdentifier(Val, TagIn). + + +dec_SubjectIPMField(Tlv) -> + dec_SubjectIPMField(Tlv, [65547]). + +dec_SubjectIPMField(Tlv, TagIn) -> +'dec_IPMIdentifier'(Tlv, TagIn). + + + +%%================================ +%% IPNOriginatorField +%%================================ +enc_IPNOriginatorField(Val) -> + enc_IPNOriginatorField(Val, [<<49>>]). + +enc_IPNOriginatorField(Val, TagIn) -> + enc_ORDescriptor(Val, TagIn). + + +dec_IPNOriginatorField(Tlv) -> + dec_IPNOriginatorField(Tlv, [17]). + +dec_IPNOriginatorField(Tlv, TagIn) -> +'dec_ORDescriptor'(Tlv, TagIn). + + + +%%================================ +%% IPMIntendedRecipientField +%%================================ +enc_IPMIntendedRecipientField(Val) -> + enc_IPMIntendedRecipientField(Val, [<<49>>]). + +enc_IPMIntendedRecipientField(Val, TagIn) -> + enc_ORDescriptor(Val, TagIn). + + +dec_IPMIntendedRecipientField(Tlv) -> + dec_IPMIntendedRecipientField(Tlv, [17]). + +dec_IPMIntendedRecipientField(Tlv, TagIn) -> +'dec_ORDescriptor'(Tlv, TagIn). + + + +%%================================ +%% ConversionEITsField +%%================================ +enc_ConversionEITsField(Val) -> + enc_ConversionEITsField(Val, [<<101>>]). + +enc_ConversionEITsField(Val, TagIn) -> + 'MTSAbstractService':enc_EncodedInformationTypes(Val, TagIn). + + +dec_ConversionEITsField(Tlv) -> + dec_ConversionEITsField(Tlv, [65541]). + +dec_ConversionEITsField(Tlv, TagIn) -> +'MTSAbstractService':'dec_EncodedInformationTypes'(Tlv, TagIn). + + + +%%================================ +%% NotificationExtensionsField +%%================================ +enc_NotificationExtensionsField(Val) -> + enc_NotificationExtensionsField(Val, [<<49>>]). + +enc_NotificationExtensionsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_NotificationExtensionsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_NotificationExtensionsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_NotificationExtensionsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_NotificationExtensionsField_IPMSExtension'(H, [<<48>>]), + 'enc_NotificationExtensionsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% NotificationExtensionsField_IPMSExtension +%%================================ +enc_NotificationExtensionsField_IPMSExtension(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, +Objtype = + 'IPMSInformationObjects':'getenc_internal_object_set_argument_5'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes2,_ } = Objtype('Type', Cindex2, []), + encode_open_type(TmpBytes2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_NotificationExtensionsField(Tlv) -> + dec_NotificationExtensionsField(Tlv, [17]). + +dec_NotificationExtensionsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_NotificationExtensionsField_IPMSExtension'(V1, [16]) || V1 <- Tlv1]. + + +'dec_NotificationExtensionsField_IPMSExtension'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv3} = case Tlv2 of +[V2|TempTlv3] -> + {decode_open_type(V2, []), TempTlv3}; + _ -> + {'NULL',Tlv2} +end, + +DecObjtypeTerm1 = + 'IPMSInformationObjects':'getdec_internal_object_set_argument_5'(Term1), +Term2 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPMSExtension',Term1,Term2}, +Res1. + + +%%================================ +%% NonReceiptReasonField +%%================================ +enc_NonReceiptReasonField(Val) -> + enc_NonReceiptReasonField(Val, [<<10>>]). + +enc_NonReceiptReasonField(Val, TagIn) -> +case Val of +'ipm-discarded' -> encode_tags(TagIn, [0], 1); +'ipm-auto-forwarded' -> encode_tags(TagIn, [1], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end. + + +dec_NonReceiptReasonField(Tlv) -> + dec_NonReceiptReasonField(Tlv, [10]). + +dec_NonReceiptReasonField(Tlv, TagIn) -> +case decode_integer(Tlv, TagIn) of +0 -> 'ipm-discarded'; +1 -> 'ipm-auto-forwarded'; +Default1 -> {asn1_enum,Default1} +end. + + + +%%================================ +%% DiscardReasonField +%%================================ +enc_DiscardReasonField(Val) -> + enc_DiscardReasonField(Val, [<<10>>]). + +enc_DiscardReasonField(Val, TagIn) -> +case Val of +'ipm-expired' -> encode_tags(TagIn, [0], 1); +'ipm-obsoleted' -> encode_tags(TagIn, [1], 1); +'user-subscription-terminated' -> encode_tags(TagIn, [2], 1); +'not-used' -> encode_tags(TagIn, [3], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end. + + +dec_DiscardReasonField(Tlv) -> + dec_DiscardReasonField(Tlv, [10]). + +dec_DiscardReasonField(Tlv, TagIn) -> +case decode_integer(Tlv, TagIn) of +0 -> 'ipm-expired'; +1 -> 'ipm-obsoleted'; +2 -> 'user-subscription-terminated'; +3 -> 'not-used'; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end. + + + +%%================================ +%% AutoForwardCommentField +%%================================ +enc_AutoForwardCommentField(Val) -> + enc_AutoForwardCommentField(Val, [<<19>>]). + +enc_AutoForwardCommentField(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_AutoForwardCommentField(Tlv) -> + dec_AutoForwardCommentField(Tlv, [19]). + +dec_AutoForwardCommentField(Tlv, TagIn) -> +begin +Val1 = decode_restricted_string(Tlv, TagIn), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% AutoForwardComment +%%================================ +enc_AutoForwardComment(Val) -> + enc_AutoForwardComment(Val, [<<19>>]). + +enc_AutoForwardComment(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_AutoForwardComment(Tlv) -> + dec_AutoForwardComment(Tlv, [19]). + +dec_AutoForwardComment(Tlv, TagIn) -> +begin +Val1 = decode_restricted_string(Tlv, TagIn), +C1 = byte_size(Val1), +if 0 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% ReturnedIPMField +%%================================ +enc_ReturnedIPMField(Val) -> + enc_ReturnedIPMField(Val, [<<48>>]). + +enc_ReturnedIPMField(Val, TagIn) -> + enc_IPM(Val, TagIn). + + +dec_ReturnedIPMField(Tlv) -> + dec_ReturnedIPMField(Tlv, [16]). + +dec_ReturnedIPMField(Tlv, TagIn) -> +'dec_IPM'(Tlv, TagIn). + + + +%%================================ +%% NRNExtensionsField +%%================================ +enc_NRNExtensionsField(Val) -> + enc_NRNExtensionsField(Val, [<<49>>]). + +enc_NRNExtensionsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_NRNExtensionsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_NRNExtensionsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_NRNExtensionsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_NRNExtensionsField_IPMSExtension'(H, [<<48>>]), + 'enc_NRNExtensionsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% NRNExtensionsField_IPMSExtension +%%================================ +enc_NRNExtensionsField_IPMSExtension(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, +Objtype = + 'IPMSInformationObjects':'getenc_internal_object_set_argument_6'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes2,_ } = Objtype('Type', Cindex2, []), + encode_open_type(TmpBytes2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_NRNExtensionsField(Tlv) -> + dec_NRNExtensionsField(Tlv, [17]). + +dec_NRNExtensionsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_NRNExtensionsField_IPMSExtension'(V1, [16]) || V1 <- Tlv1]. + + +'dec_NRNExtensionsField_IPMSExtension'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv3} = case Tlv2 of +[V2|TempTlv3] -> + {decode_open_type(V2, []), TempTlv3}; + _ -> + {'NULL',Tlv2} +end, + +DecObjtypeTerm1 = + 'IPMSInformationObjects':'getdec_internal_object_set_argument_6'(Term1), +Term2 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPMSExtension',Term1,Term2}, +Res1. + + +%%================================ +%% ReceiptTimeField +%%================================ +enc_ReceiptTimeField(Val) -> + enc_ReceiptTimeField(Val, [<<23>>]). + +enc_ReceiptTimeField(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_ReceiptTimeField(Tlv) -> + dec_ReceiptTimeField(Tlv, [23]). + +dec_ReceiptTimeField(Tlv, TagIn) -> +begin +binary_to_list(decode_restricted_string(Tlv, TagIn)) +end +. + + + +%%================================ +%% AcknowledgmentModeField +%%================================ +enc_AcknowledgmentModeField(Val) -> + enc_AcknowledgmentModeField(Val, [<<10>>]). + +enc_AcknowledgmentModeField(Val, TagIn) -> +case Val of +manual -> encode_tags(TagIn, [0], 1); +automatic -> encode_tags(TagIn, [1], 1); +Enumval1 -> exit({error,{asn1, {enumerated_not_in_range,Enumval1}}}) +end. + + +dec_AcknowledgmentModeField(Tlv) -> + dec_AcknowledgmentModeField(Tlv, [10]). + +dec_AcknowledgmentModeField(Tlv, TagIn) -> +case decode_integer(Tlv, TagIn) of +0 -> manual; +1 -> automatic; +Default1 -> exit({error,{asn1,{illegal_enumerated,Default1}}}) +end. + + + +%%================================ +%% SupplReceiptInfoField +%%================================ +enc_SupplReceiptInfoField(Val) -> + enc_SupplReceiptInfoField(Val, [<<19>>]). + +enc_SupplReceiptInfoField(Val, TagIn) -> +encode_restricted_string(Val, TagIn). + + +dec_SupplReceiptInfoField(Tlv) -> + dec_SupplReceiptInfoField(Tlv, [19]). + +dec_SupplReceiptInfoField(Tlv, TagIn) -> +begin +Val1 = decode_restricted_string(Tlv, TagIn), +C1 = byte_size(Val1), +if 1 =< C1, C1 =< 256 -> +binary_to_list(Val1); +true -> +exit({error,{asn1,bad_range}}) +end +end. + + + +%%================================ +%% RNExtensionsField +%%================================ +enc_RNExtensionsField(Val) -> + enc_RNExtensionsField(Val, [<<49>>]). + +enc_RNExtensionsField(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_RNExtensionsField_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_RNExtensionsField_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_RNExtensionsField_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_RNExtensionsField_IPMSExtension'(H, [<<48>>]), + 'enc_RNExtensionsField_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% RNExtensionsField_IPMSExtension +%%================================ +enc_RNExtensionsField_IPMSExtension(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, +Objtype = + 'IPMSInformationObjects':'getenc_internal_object_set_argument_7'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes2,_ } = Objtype('Type', Cindex2, []), + encode_open_type(TmpBytes2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_RNExtensionsField(Tlv) -> + dec_RNExtensionsField(Tlv, [17]). + +dec_RNExtensionsField(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_RNExtensionsField_IPMSExtension'(V1, [16]) || V1 <- Tlv1]. + + +'dec_RNExtensionsField_IPMSExtension'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv3} = case Tlv2 of +[V2|TempTlv3] -> + {decode_open_type(V2, []), TempTlv3}; + _ -> + {'NULL',Tlv2} +end, + +DecObjtypeTerm1 = + 'IPMSInformationObjects':'getdec_internal_object_set_argument_7'(Term1), +Term2 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPMSExtension',Term1,Term2}, +Res1. + + +%%================================ +%% OtherNotificationTypeFields +%%================================ +enc_OtherNotificationTypeFields(Val) -> + enc_OtherNotificationTypeFields(Val, [<<49>>]). + +enc_OtherNotificationTypeFields(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_OtherNotificationTypeFields_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_OtherNotificationTypeFields_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_OtherNotificationTypeFields_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_OtherNotificationTypeFields_IPMSExtension'(H, [<<48>>]), + 'enc_OtherNotificationTypeFields_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% OtherNotificationTypeFields_IPMSExtension +%%================================ +enc_OtherNotificationTypeFields_IPMSExtension(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, +Objtype = + 'IPMSInformationObjects':'getenc_internal_object_set_argument_8'( Cindex1), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_DEFAULT -> + {<<>>,0}; + _ when Cindex2 =:= 'NULL' -> + {<<>>,0}; + _ -> + {TmpBytes2,_ } = Objtype('Type', Cindex2, []), + encode_open_type(TmpBytes2, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_OtherNotificationTypeFields(Tlv) -> + dec_OtherNotificationTypeFields(Tlv, [17]). + +dec_OtherNotificationTypeFields(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_OtherNotificationTypeFields_IPMSExtension'(V1, [16]) || V1 <- Tlv1]. + + +'dec_OtherNotificationTypeFields_IPMSExtension'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute value(2) with type typefieldType DEFAULT = 'NULL' +%%------------------------------------------------- +{Tmpterm1,Tlv3} = case Tlv2 of +[V2|TempTlv3] -> + {decode_open_type(V2, []), TempTlv3}; + _ -> + {'NULL',Tlv2} +end, + +DecObjtypeTerm1 = + 'IPMSInformationObjects':'getdec_internal_object_set_argument_8'(Term1), +Term2 = + case Tmpterm1 of + 'NULL' ->'NULL'; + _ -> + case (catch DecObjtypeTerm1('Type', Tmpterm1, [])) of + {'EXIT', Reason1} -> + exit({'Type not compatible with table constraint',Reason1}); + Tmpterm2 -> + Tmpterm2 + end + end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPMSExtension',Term1,Term2}, +Res1. + + +%%================================ +%% AbsenceAdvice +%%================================ +enc_AbsenceAdvice(Val) -> + enc_AbsenceAdvice(Val, [<<48>>]). + +enc_AbsenceAdvice(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute advice(1) External IPMSInformationObjects:BodyPart OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_BodyPart'(Cindex1, []) + end, + +%%------------------------------------------------- +%% attribute next-available(2) with type UTCTime OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<23>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_AbsenceAdvice(Tlv) -> + dec_AbsenceAdvice(Tlv, [16]). + +dec_AbsenceAdvice(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute advice(1) External IPMSInformationObjects:BodyPart OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[V1 = {131072,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131075,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131076,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131077,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131078,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131080,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131081,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131083,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131086,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131079,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; +[V1 = {131087,_}|TempTlv2] -> + {'dec_BodyPart'(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute next-available(2) with type UTCTime OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{23,V2}|TempTlv3] -> + {begin +binary_to_list(decode_restricted_string(V2, [])) +end +, TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'AbsenceAdvice',Term1,Term2}, +Res1. + + +%%================================ +%% ChangeOfAddressAdvice +%%================================ +enc_ChangeOfAddressAdvice(Val) -> + enc_ChangeOfAddressAdvice(Val, [<<48>>]). + +enc_ChangeOfAddressAdvice(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute new-address(1) External IPMSInformationObjects:ORDescriptor +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_ORDescriptor'(Cindex1, [<<160>>]), + +%%------------------------------------------------- +%% attribute effective-from(2) with type UTCTime OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex2, [<<129>>]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_ChangeOfAddressAdvice(Tlv) -> + dec_ChangeOfAddressAdvice(Tlv, [16]). + +dec_ChangeOfAddressAdvice(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute new-address(1) External IPMSInformationObjects:ORDescriptor +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = 'dec_ORDescriptor'(V1, [131072]), + +%%------------------------------------------------- +%% attribute effective-from(2) with type UTCTime OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{131073,V2}|TempTlv3] -> + {begin +binary_to_list(decode_restricted_string(V2, [])) +end +, TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'ChangeOfAddressAdvice',Term1,Term2}, +Res1. + + +%%================================ +%% IPMAssemblyInstructions +%%================================ +enc_IPMAssemblyInstructions(Val) -> + enc_IPMAssemblyInstructions(Val, [<<49>>]). + +enc_IPMAssemblyInstructions(Val, TagIn) -> +{_,Cindex1} = Val, + +%%------------------------------------------------- +%% attribute assembly-instructions(1) External IPMSInformationObjects:BodyPartReferences +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_BodyPartReferences'(Cindex1, [<<160>>]), + + BytesSoFar = [EncBytes1], +LenSoFar = EncLen1, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_IPMAssemblyInstructions(Tlv) -> + dec_IPMAssemblyInstructions(Tlv, [17]). + +dec_IPMAssemblyInstructions(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +SetFun = fun(FunTlv) -> +case FunTlv of + %assembly-instructions +TTlv = {131072,_} -> + {1, TTlv}; + Else -> + {2, Else} + end + end, +PositionList = [SetFun(TempTlv)|| TempTlv <- Tlv1], +Tlv2 = [Stlv || {_,Stlv} <- lists:sort(PositionList)], + +%%------------------------------------------------- +%% attribute assembly-instructions(1) External IPMSInformationObjects:BodyPartReferences +%%------------------------------------------------- +[V1|Tlv3] = Tlv2, +Term1 = 'dec_BodyPartReferences'(V1, [131072]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'IPMAssemblyInstructions',Term1}, +Res1. + + +%%================================ +%% BodyPartReferences +%%================================ +enc_BodyPartReferences(Val) -> + enc_BodyPartReferences(Val, [<<48>>]). + +enc_BodyPartReferences(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_BodyPartReferences_components'(Val,[],0), + encode_tags(TagIn, EncBytes, EncLen). + +'enc_BodyPartReferences_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_BodyPartReferences_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_BodyPartReference'(H, []), + 'enc_BodyPartReferences_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +dec_BodyPartReferences(Tlv) -> + dec_BodyPartReferences(Tlv, [16]). + +dec_BodyPartReferences(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), +['dec_BodyPartReference'(V1, []) || V1 <- Tlv1]. + + + + +%%================================ +%% BodyPartReference +%%================================ +enc_BodyPartReference(Val) -> + enc_BodyPartReference(Val, []). + +enc_BodyPartReference(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'stored-entry' -> + encode_integer(element(2,Val), [<<128>>]); + 'stored-content' -> + encode_integer(element(2,Val), [<<129>>]); + 'submitted-body-part' -> + encode_integer(element(2,Val), [<<130>>]); + 'stored-body-part' -> + 'enc_BodyPartReference_stored-body-part'(element(2,Val), [<<163>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + + +%%================================ +%% BodyPartReference_stored-body-part +%%================================ +'enc_BodyPartReference_stored-body-part'(Val, TagIn) -> + {_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute message-entry(1) with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_integer(Cindex1, [<<2>>]), + +%%------------------------------------------------- +%% attribute body-part-number(2) with type INTEGER +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_integer(Cindex2, [<<2>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +dec_BodyPartReference(Tlv) -> + dec_BodyPartReference(Tlv, []). + +dec_BodyPartReference(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'stored-entry' + {131072, V1} -> + {'stored-entry', begin +Val1 = decode_integer(V1, []), +if 0 =< Val1, Val1 =< 2147483647 -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + +%% 'stored-content' + {131073, V1} -> + {'stored-content', begin +Val2 = decode_integer(V1, []), +if 0 =< Val2, Val2 =< 2147483647 -> +Val2; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + +%% 'submitted-body-part' + {131074, V1} -> + {'submitted-body-part', begin +Val3 = decode_integer(V1, []), +if 1 =< Val3, Val3 =< 'MAX' -> +Val3; +true -> +exit({error,{asn1,bad_range}}) +end +end}; + + +%% 'stored-body-part' + {131075, V1} -> + {'stored-body-part', 'dec_BodyPartReference_stored-body-part'(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. +'dec_BodyPartReference_stored-body-part'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute message-entry(1) with type INTEGER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = begin +Val1 = decode_integer(V1, [2]), +if 0 =< Val1, Val1 =< 2147483647 -> +Val1; +true -> +exit({error,{asn1,bad_range}}) +end +end, + +%%------------------------------------------------- +%% attribute body-part-number(2) with type INTEGER +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = begin +Val2 = decode_integer(V2, [2]), +if 1 =< Val2, Val2 =< 'MAX' -> +Val2; +true -> +exit({error,{asn1,bad_range}}) +end +end, + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'BodyPartReference_stored-body-part',Term1,Term2}, +Res1. + + +%%================================ +%% EXTERNAL +%%================================ +enc_EXTERNAL(Val) -> + enc_EXTERNAL(Val, [<<40>>]). + +enc_EXTERNAL(Val, TagIn) -> + NewVal = transform_to_EXTERNAL1990(Val), +{_,Cindex1,Cindex2,Cindex3,Cindex4} = NewVal, + +%%------------------------------------------------- +%% attribute direct-reference(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case Cindex1 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_object_identifier(Cindex1, [<<6>>]) + end, + +%%------------------------------------------------- +%% attribute indirect-reference(2) with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case Cindex2 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_integer(Cindex2, [<<2>>]) + end, + +%%------------------------------------------------- +%% attribute data-value-descriptor(3) with type ObjectDescriptor OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case Cindex3 of + asn1_NOVALUE -> {<<>>,0}; + _ -> + encode_restricted_string(Cindex3, [<<7>>]) + end, + +%%------------------------------------------------- +%% attribute encoding(4) with type CHOICE +%%------------------------------------------------- + {EncBytes4,EncLen4} = 'enc_EXTERNAL_encoding'(Cindex4, []), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], +LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + + +%%================================ +%% EXTERNAL_encoding +%%================================ +enc_EXTERNAL_encoding(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + 'single-ASN1-type' -> + encode_open_type(element(2,Val), [<<160>>]); + 'octet-aligned' -> + encode_restricted_string(element(2,Val), [<<129>>]); + arbitrary -> + encode_unnamed_bit_string(element(2,Val), [<<130>>]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +encode_tags(TagIn, EncBytes, EncLen). + + + + +dec_EXTERNAL(Tlv) -> + dec_EXTERNAL(Tlv, [8]). + +dec_EXTERNAL(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute direct-reference(1) with type OBJECT IDENTIFIER OPTIONAL +%%------------------------------------------------- +{Term1,Tlv2} = case Tlv1 of +[{6,V1}|TempTlv2] -> + {decode_object_identifier(V1, []), TempTlv2}; + _ -> + { asn1_NOVALUE, Tlv1} +end, + +%%------------------------------------------------- +%% attribute indirect-reference(2) with type INTEGER OPTIONAL +%%------------------------------------------------- +{Term2,Tlv3} = case Tlv2 of +[{2,V2}|TempTlv3] -> + {decode_integer(V2, []), TempTlv3}; + _ -> + { asn1_NOVALUE, Tlv2} +end, + +%%------------------------------------------------- +%% attribute data-value-descriptor(3) with type ObjectDescriptor OPTIONAL +%%------------------------------------------------- +{Term3,Tlv4} = case Tlv3 of +[{7,V3}|TempTlv4] -> + {begin +binary_to_list(decode_restricted_string(V3, [])) +end +, TempTlv4}; + _ -> + { asn1_NOVALUE, Tlv3} +end, + +%%------------------------------------------------- +%% attribute encoding(4) with type CHOICE +%%------------------------------------------------- +[V4|Tlv5] = Tlv4, +Term4 = 'dec_EXTERNAL_encoding'(V4, []), + +case Tlv5 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv5}}}) % extra fields not allowed +end, +OldFormat={'EXTERNAL',Term1,Term2,Term3,Term4}, +transform_to_EXTERNAL1994(OldFormat). +'dec_EXTERNAL_encoding'(Tlv, TagIn) -> +Tlv1 = match_tags(Tlv, TagIn), +case (case Tlv1 of [CtempTlv1] -> CtempTlv1; _ -> Tlv1 end) of + +%% 'single-ASN1-type' + {131072, V1} -> + {'single-ASN1-type', decode_open_type_as_binary(V1, [])}; + + +%% 'octet-aligned' + {131073, V1} -> + {'octet-aligned', decode_octet_string(V1, [])}; + + +%% 'arbitrary' + {131074, V1} -> + {arbitrary, decode_native_bit_string(V1, [])}; + + Else -> + exit({error,{asn1,{invalid_choice_tag,Else}}}) + end +. + + +%%================================ +%% INSTANCE OF +%%================================ +'enc_INSTANCE OF'(Val) -> + 'enc_INSTANCE OF'(Val, [<<40>>]). + +'enc_INSTANCE OF'(Val, TagIn) -> +{_,Cindex1,Cindex2} = Val, + +%%------------------------------------------------- +%% attribute type-id(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- + {EncBytes1,EncLen1} = encode_object_identifier(Cindex1, [<<6>>]), + +%%------------------------------------------------- +%% attribute value(2) with type ASN1_OPEN_TYPE +%%------------------------------------------------- + {EncBytes2,EncLen2} = encode_open_type(Cindex2, [<<160>>]), + + BytesSoFar = [EncBytes1, EncBytes2], +LenSoFar = EncLen1 + EncLen2, +encode_tags(TagIn, BytesSoFar, LenSoFar). + + +'dec_INSTANCE OF'(Tlv) -> + 'dec_INSTANCE OF'(Tlv, [8]). + +'dec_INSTANCE OF'(Tlv, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- +Tlv1 = match_tags(Tlv, TagIn), + +%%------------------------------------------------- +%% attribute type-id(1) with type OBJECT IDENTIFIER +%%------------------------------------------------- +[V1|Tlv2] = Tlv1, +Term1 = decode_object_identifier(V1, [6]), + +%%------------------------------------------------- +%% attribute value(2) with type ASN1_OPEN_TYPE +%%------------------------------------------------- +[V2|Tlv3] = Tlv2, +Term2 = decode_open_type_as_binary(V2, [131072]), + +case Tlv3 of +[] -> true;_ -> exit({error,{asn1, {unexpected,Tlv3}}}) % extra fields not allowed +end, +Res1 = {'INSTANCE OF',Term1,Term2}, +Res1. + + + +%%================================ +%% blind-copy-recipients +%%================================ +'enc_blind-copy-recipients'('Type', Val, _RestPrimFieldName) -> + enc_BlindCopyRecipientsField(Val, [<<48>>]). + + +'dec_blind-copy-recipients'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_BlindCopyRecipientsField(Tlv, [16]). + +tlv_format(Bytes) when is_binary(Bytes) -> + {Tlv,_} = ber_decode_nif(Bytes), + Tlv; +tlv_format(Bytes) -> + Bytes. + + + +%%================================ +%% absence-advice +%%================================ +'enc_absence-advice'('Type', Val, _RestPrimFieldName) -> + enc_AbsenceAdvice(Val, [<<48>>]). + + +'dec_absence-advice'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_AbsenceAdvice(Tlv, [16]). + + + + +%%================================ +%% change-of-address-advice +%%================================ +'enc_change-of-address-advice'('Type', Val, _RestPrimFieldName) -> + enc_ChangeOfAddressAdvice(Val, [<<48>>]). + + +'dec_change-of-address-advice'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_ChangeOfAddressAdvice(Tlv, [16]). + + + + +%%================================ +%% prevent-nrn-generation +%%================================ +'enc_prevent-nrn-generation'('Type', Val, _RestPrimFieldName) -> +encode_null(Val, [<<5>>]). + + +'dec_prevent-nrn-generation'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), +decode_null(Tlv, [5]). + + + + +%%================================ +%% suspend-auto-acknowledgement +%%================================ +'enc_suspend-auto-acknowledgement'('Type', Val, _RestPrimFieldName) -> +encode_null(Val, [<<5>>]). + + +'dec_suspend-auto-acknowledgement'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), +decode_null(Tlv, [5]). + + + + +%%================================ +%% assembly-capability +%%================================ +'enc_assembly-capability'('Type', Val, _RestPrimFieldName) -> +encode_null(Val, [<<5>>]). + + +'dec_assembly-capability'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), +decode_null(Tlv, [5]). + + + + +%%================================ +%% ipm-assembly-instructions +%%================================ +'enc_ipm-assembly-instructions'('Type', Val, _RestPrimFieldName) -> + enc_IPMAssemblyInstructions(Val, [<<49>>]). + + +'dec_ipm-assembly-instructions'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_IPMAssemblyInstructions(Tlv, [17]). + + + + +%%================================ +%% originator-body-part-encryption-token +%%================================ +'enc_originator-body-part-encryption-token'('Type', Val, _RestPrimFieldName) -> + 'IPMSSecurityExtensions':enc_BodyPartTokens(Val, [<<49>>]). + + +'dec_originator-body-part-encryption-token'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'IPMSSecurityExtensions':dec_BodyPartTokens(Tlv, [17]). + + + + +%%================================ +%% originator-forwarded-content-token +%%================================ +'enc_originator-forwarded-content-token'('Type', Val, _RestPrimFieldName) -> + 'IPMSSecurityExtensions':enc_ForwardedContentToken(Val, [<<49>>]). + + +'dec_originator-forwarded-content-token'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'IPMSSecurityExtensions':dec_ForwardedContentToken(Tlv, [17]). + + + + +%%================================ +%% invalid-assembly-instructions +%%================================ +'enc_invalid-assembly-instructions'('Type', Val, _RestPrimFieldName) -> + enc_BodyPartReferences(Val, [<<48>>]). + + +'dec_invalid-assembly-instructions'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + dec_BodyPartReferences(Tlv, [16]). + + + + +%%================================ +%% invalid-ipn +%%================================ +'enc_invalid-ipn'('Type', Val, _RestPrimFieldName) -> +encode_null(Val, [<<5>>]). + + +'dec_invalid-ipn'('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), +decode_null(Tlv, [5]). + + + + +%%================================ +%% IPMBodyPartTable_parameters +%%================================ +enc_IPMBodyPartTable_parameters('Type', Val, _RestPrimFieldName) -> + 'IPMSForwardedContentBodyPartType':enc_ForwardedContentParameters(Val, [<<49>>]). + + +dec_IPMBodyPartTable_parameters('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'IPMSForwardedContentBodyPartType':dec_ForwardedContentParameters(Tlv, [17]). + + + + +%%================================ +%% BodyPart_parameters +%%================================ +enc_BodyPart_parameters('Type', Val, _RestPrimFieldName) -> + 'IPMSForwardedContentBodyPartType':enc_ForwardedContentParameters(Val, [<<49>>]). + + +dec_BodyPart_parameters('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'IPMSForwardedContentBodyPartType':dec_ForwardedContentParameters(Tlv, [17]). + + + + +%%================================ +%% StandardBodyParts_parameters +%%================================ +enc_StandardBodyParts_parameters('Type', Val, _RestPrimFieldName) -> + 'IPMSForwardedContentBodyPartType':enc_ForwardedContentParameters(Val, [<<49>>]). + + +dec_StandardBodyParts_parameters('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'IPMSForwardedContentBodyPartType':dec_ForwardedContentParameters(Tlv, [17]). + + + + +%%================================ +%% IPMBodyPartTable_data +%%================================ +enc_IPMBodyPartTable_data('Type', Val, _RestPrimFieldName) -> + 'PKCS-7':enc_ContentInfo(Val, [<<48>>]). + + +dec_IPMBodyPartTable_data('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'PKCS-7':dec_ContentInfo(Tlv, [16]). + + + + +%%================================ +%% BodyPart_data +%%================================ +enc_BodyPart_data('Type', Val, _RestPrimFieldName) -> + 'PKCS-7':enc_ContentInfo(Val, [<<48>>]). + + +dec_BodyPart_data('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'PKCS-7':dec_ContentInfo(Tlv, [16]). + + + + +%%================================ +%% StandardBodyParts_data +%%================================ +enc_StandardBodyParts_data('Type', Val, _RestPrimFieldName) -> + 'PKCS-7':enc_ContentInfo(Val, [<<48>>]). + + +dec_StandardBodyParts_data('Type', Bytes,_) -> + Tlv = tlv_format(Bytes), + 'PKCS-7':dec_ContentInfo(Tlv, [16]). + + + + +%%================================ +%% IPMPerRecipientEnvelopeExtensions +%%================================ +getenc_IPMPerRecipientEnvelopeExtensions(Id) when Id =:= {'standard-extension',41} -> + fun 'enc_blind-copy-recipients'/3; +getenc_IPMPerRecipientEnvelopeExtensions(Id) when Id =:= {'standard-extension',43} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'enc_body-part-encryption-token'(T,V,O) end; +getenc_IPMPerRecipientEnvelopeExtensions(Id) when Id =:= {'standard-extension',44} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'enc_forwarded-content-token'(T,V,O) end; +getenc_IPMPerRecipientEnvelopeExtensions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_IPMPerRecipientEnvelopeExtensions(Id) when Id =:= {'standard-extension',41} -> + fun 'dec_blind-copy-recipients'/3; +getdec_IPMPerRecipientEnvelopeExtensions(Id) when Id =:= {'standard-extension',43} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'dec_body-part-encryption-token'(T,V,O) end; +getdec_IPMPerRecipientEnvelopeExtensions(Id) when Id =:= {'standard-extension',44} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'dec_forwarded-content-token'(T,V,O) end; +getdec_IPMPerRecipientEnvelopeExtensions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% PrivateIPMSExtensions +%%================================ +getenc_PrivateIPMSExtensions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_PrivateIPMSExtensions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% RecipientExtensions +%%================================ +getenc_RecipientExtensions(Id) when Id =:= {2,6,1,18,0} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'enc_recipient-security-request'(T,V,O) end; +getenc_RecipientExtensions(Id) when Id =:= {2,6,1,20,0} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_circulation-list-indicator'(T,V,O) end; +getenc_RecipientExtensions(Id) when Id =:= {2,6,1,20,1} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_precedence'(T,V,O) end; +getenc_RecipientExtensions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_RecipientExtensions(Id) when Id =:= {2,6,1,18,0} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'dec_recipient-security-request'(T,V,O) end; +getdec_RecipientExtensions(Id) when Id =:= {2,6,1,20,0} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_circulation-list-indicator'(T,V,O) end; +getdec_RecipientExtensions(Id) when Id =:= {2,6,1,20,1} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_precedence'(T,V,O) end; +getdec_RecipientExtensions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% HeadingExtensions +%%================================ +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,0} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_incomplete-copy'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,1} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_languages'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,2} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_auto-submitted'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,3} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_body-part-signatures'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,4} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_ipm-security-label'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,5} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_authorization-time'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,6} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_circulation-list-recipients'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,7} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_distribution-codes'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,8} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_extended-subject'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,9} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_information-category'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,10} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_manual-handling-instructions'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,11} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_originators-reference'(T,V,O) end; +getenc_HeadingExtensions(Id) when Id =:= {2,6,1,5,12} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_precedence-policy-identifier'(T,V,O) end; +getenc_HeadingExtensions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,0} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_incomplete-copy'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,1} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_languages'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,2} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_auto-submitted'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,3} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_body-part-signatures'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,4} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_ipm-security-label'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,5} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_authorization-time'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,6} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_circulation-list-recipients'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,7} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_distribution-codes'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,8} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_extended-subject'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,9} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_information-category'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,10} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_manual-handling-instructions'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,11} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_originators-reference'(T,V,O) end; +getdec_HeadingExtensions(Id) when Id =:= {2,6,1,5,12} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_precedence-policy-identifier'(T,V,O) end; +getdec_HeadingExtensions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% NotificationExtensions +%%================================ +getenc_NotificationExtensions(Id) when Id =:= {2,6,1,18,1} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'enc_ipn-security-response'(T,V,O) end; +getenc_NotificationExtensions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_NotificationExtensions(Id) when Id =:= {2,6,1,18,1} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'dec_ipn-security-response'(T,V,O) end; +getdec_NotificationExtensions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% NRNExtensions +%%================================ +getenc_NRNExtensions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_NRNExtensions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% RNExtensions +%%================================ +getenc_RNExtensions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_RNExtensions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% OtherNotifications +%%================================ +getenc_OtherNotifications(Id) when Id =:= {2,6,1,19,0} -> + fun 'enc_absence-advice'/3; +getenc_OtherNotifications(Id) when Id =:= {2,6,1,19,1} -> + fun 'enc_change-of-address-advice'/3; +getenc_OtherNotifications(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_OtherNotifications(Id) when Id =:= {2,6,1,19,0} -> + fun 'dec_absence-advice'/3; +getdec_OtherNotifications(Id) when Id =:= {2,6,1,19,1} -> + fun 'dec_change-of-address-advice'/3; +getdec_OtherNotifications(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% AdviceNotifications +%%================================ +getenc_AdviceNotifications(Id) when Id =:= {2,6,1,19,0} -> + fun 'enc_absence-advice'/3; +getenc_AdviceNotifications(Id) when Id =:= {2,6,1,19,1} -> + fun 'enc_change-of-address-advice'/3; +getenc_AdviceNotifications(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_AdviceNotifications(Id) when Id =:= {2,6,1,19,0} -> + fun 'dec_absence-advice'/3; +getdec_AdviceNotifications(Id) when Id =:= {2,6,1,19,1} -> + fun 'dec_change-of-address-advice'/3; +getdec_AdviceNotifications(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% IPMSubmissionOptions +%%================================ +getenc_IPMSubmissionOptions(Id) when Id =:= {2,6,1,17,2} -> + fun 'enc_ipm-assembly-instructions'/3; +getenc_IPMSubmissionOptions(Id) when Id =:= {2,6,1,17,5} -> + fun 'enc_originator-body-part-encryption-token'/3; +getenc_IPMSubmissionOptions(Id) when Id =:= {2,6,1,17,6} -> + fun 'enc_originator-forwarded-content-token'/3; +getenc_IPMSubmissionOptions(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_IPMSubmissionOptions(Id) when Id =:= {2,6,1,17,2} -> + fun 'dec_ipm-assembly-instructions'/3; +getdec_IPMSubmissionOptions(Id) when Id =:= {2,6,1,17,5} -> + fun 'dec_originator-body-part-encryption-token'/3; +getdec_IPMSubmissionOptions(Id) when Id =:= {2,6,1,17,6} -> + fun 'dec_originator-forwarded-content-token'/3; +getdec_IPMSubmissionOptions(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% IPMSubmissionErrors +%%================================ +getenc_IPMSubmissionErrors(Id) when Id =:= {2,6,1,17,0} -> + fun 'enc_invalid-assembly-instructions'/3; +getenc_IPMSubmissionErrors(Id) when Id =:= {2,6,1,17,1} -> + fun 'enc_invalid-ipn'/3; +getenc_IPMSubmissionErrors(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_IPMSubmissionErrors(Id) when Id =:= {2,6,1,17,0} -> + fun 'dec_invalid-assembly-instructions'/3; +getdec_IPMSubmissionErrors(Id) when Id =:= {2,6,1,17,1} -> + fun 'dec_invalid-ipn'/3; +getdec_IPMSubmissionErrors(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_8 +%%================================ +getenc_internal_object_set_argument_8(Id) when Id =:= {2,6,1,19,0} -> + fun 'enc_absence-advice'/3; +getenc_internal_object_set_argument_8(Id) when Id =:= {2,6,1,19,1} -> + fun 'enc_change-of-address-advice'/3; +getenc_internal_object_set_argument_8(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_8(Id) when Id =:= {2,6,1,19,0} -> + fun 'dec_absence-advice'/3; +getdec_internal_object_set_argument_8(Id) when Id =:= {2,6,1,19,1} -> + fun 'dec_change-of-address-advice'/3; +getdec_internal_object_set_argument_8(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_7 +%%================================ +getenc_internal_object_set_argument_7(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_7(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_6 +%%================================ +getenc_internal_object_set_argument_6(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_6(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_5 +%%================================ +getenc_internal_object_set_argument_5(Id) when Id =:= {2,6,1,18,1} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'enc_ipn-security-response'(T,V,O) end; +getenc_internal_object_set_argument_5(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_5(Id) when Id =:= {2,6,1,18,1} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'dec_ipn-security-response'(T,V,O) end; +getdec_internal_object_set_argument_5(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_2 +%%================================ +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,0} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_incomplete-copy'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,1} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_languages'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,2} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_auto-submitted'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,3} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_body-part-signatures'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,4} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_ipm-security-label'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,5} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_authorization-time'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,6} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_circulation-list-recipients'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,7} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_distribution-codes'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,8} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_extended-subject'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,9} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_information-category'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,10} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_manual-handling-instructions'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,11} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_originators-reference'(T,V,O) end; +getenc_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,12} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_precedence-policy-identifier'(T,V,O) end; +getenc_internal_object_set_argument_2(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,0} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_incomplete-copy'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,1} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_languages'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,2} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_auto-submitted'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,3} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_body-part-signatures'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,4} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_ipm-security-label'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,5} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_authorization-time'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,6} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_circulation-list-recipients'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,7} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_distribution-codes'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,8} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_extended-subject'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,9} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_information-category'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,10} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_manual-handling-instructions'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,11} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_originators-reference'(T,V,O) end; +getdec_internal_object_set_argument_2(Id) when Id =:= {2,6,1,5,12} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_precedence-policy-identifier'(T,V,O) end; +getdec_internal_object_set_argument_2(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + + + +%%================================ +%% internal_object_set_argument_1 +%%================================ +getenc_internal_object_set_argument_1(Id) when Id =:= {2,6,1,18,0} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'enc_recipient-security-request'(T,V,O) end; +getenc_internal_object_set_argument_1(Id) when Id =:= {2,6,1,20,0} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_circulation-list-indicator'(T,V,O) end; +getenc_internal_object_set_argument_1(Id) when Id =:= {2,6,1,20,1} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'enc_precedence'(T,V,O) end; +getenc_internal_object_set_argument_1(_) -> + fun(_, Val, _RestPrimFieldName) -> + case Val of + {asn1_OPENTYPE,Bin} when is_binary(Bin) -> + {Bin,byte_size(Bin)} + end + end. + +getdec_internal_object_set_argument_1(Id) when Id =:= {2,6,1,18,0} -> + fun(T,V,O) -> 'IPMSSecurityExtensions':'dec_recipient-security-request'(T,V,O) end; +getdec_internal_object_set_argument_1(Id) when Id =:= {2,6,1,20,0} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_circulation-list-indicator'(T,V,O) end; +getdec_internal_object_set_argument_1(Id) when Id =:= {2,6,1,20,1} -> + fun(T,V,O) -> 'IPMSHeadingExtensions':'dec_precedence'(T,V,O) end; +getdec_internal_object_set_argument_1(_) -> + fun(_,Bytes, _RestPrimFieldName) -> + case Bytes of + Bin when is_binary(Bin) -> + {asn1_OPENTYPE,Bin}; + _ -> + {asn1_OPENTYPE,ber_encode(Bytes)} + end + end. + + + +%%% +%%% Run-time functions. +%%% + +'dialyzer-suppressions'(Arg) -> + ok. + +ber_decode_nif(B) -> + asn1rt_nif:decode_ber_tlv(B). + +ber_encode([Tlv]) -> + ber_encode(Tlv); +ber_encode(Tlv) when is_binary(Tlv) -> + Tlv; +ber_encode(Tlv) -> + asn1rt_nif:encode_ber_tlv(Tlv). + +collect_parts(TlvList) -> + collect_parts(TlvList, []). + +collect_parts([{_, L} | Rest], Acc) when is_list(L) -> + collect_parts(Rest, [collect_parts(L) | Acc]); +collect_parts([{3, <>} | Rest], _Acc) -> + collect_parts_bit(Rest, [Bits], Unused); +collect_parts([{_T, V} | Rest], Acc) -> + collect_parts(Rest, [V | Acc]); +collect_parts([], Acc) -> + list_to_binary(lists:reverse(Acc)). + +collect_parts_bit([{3, <>} | Rest], Acc, Uacc) -> + collect_parts_bit(Rest, [Bits | Acc], Unused + Uacc); +collect_parts_bit([], Acc, Uacc) -> + list_to_binary([Uacc | lists:reverse(Acc)]). + +dec_subidentifiers(<<>>, _Av, Al) -> + lists:reverse(Al); +dec_subidentifiers(<<1:1,H:7,T/binary>>, Av, Al) -> + dec_subidentifiers(T, Av bsl 7 + H, Al); +dec_subidentifiers(<>, Av, Al) -> + dec_subidentifiers(T, 0, [Av bsl 7 + H | Al]). + +decode_bitstring2(1, Unused, + <>) -> + lists:sublist([B7, B6, B5, B4, B3, B2, B1, B0], 8 - Unused); +decode_bitstring2(Len, Unused, + <>) -> + [B7, B6, B5, B4, B3, B2, B1, B0 | + decode_bitstring2(Len - 1, Unused, Buffer)]. + +decode_bitstring_NNL(BitList, NamedNumberList) -> + decode_bitstring_NNL(BitList, NamedNumberList, 0, []). + +decode_bitstring_NNL([], _, _No, Result) -> + lists:reverse(Result); +decode_bitstring_NNL([B | BitList], + [{Name, No} | NamedNumberList], + No, Result) -> + if + B =:= 0 -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + Result); + true -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + [Name | Result]) + end; +decode_bitstring_NNL([1 | BitList], NamedNumberList, No, Result) -> + decode_bitstring_NNL(BitList, NamedNumberList, + No + 1, + [{bit, No} | Result]); +decode_bitstring_NNL([0 | BitList], NamedNumberList, No, Result) -> + decode_bitstring_NNL(BitList, NamedNumberList, No + 1, Result). + +decode_boolean(Tlv, TagIn) -> + Val = match_tags(Tlv, TagIn), + case Val of + <<0:8>> -> + false; + <<_:8>> -> + true; + _ -> + exit({error, {asn1, {decode_boolean, Val}}}) + end. + +decode_integer(Tlv, TagIn) -> + Bin = match_tags(Tlv, TagIn), + Len = byte_size(Bin), + <> = Bin, + Int. + +decode_named_bit_string(Buffer, NamedNumberList, Tags) -> + case match_and_collect(Buffer, Tags) of + <<0>> -> + []; + <> -> + BitString = decode_bitstring2(byte_size(Bits), Unused, Bits), + decode_bitstring_NNL(BitString, NamedNumberList) + end. + +decode_native_bit_string(Buffer, Tags) -> + case match_and_collect(Buffer, Tags) of + <<0>> -> + <<>>; + <> -> + Size = bit_size(Bits) - Unused, + <> = Bits, + Val + end. + +decode_null(Tlv, Tags) -> + Val = match_tags(Tlv, Tags), + case Val of + <<>> -> + 'NULL'; + _ -> + exit({error, {asn1, {decode_null, Val}}}) + end. + +decode_object_identifier(Tlv, Tags) -> + Val = match_tags(Tlv, Tags), + [AddedObjVal | ObjVals] = dec_subidentifiers(Val, 0, []), + {Val1, Val2} = + if + AddedObjVal < 40 -> + {0, AddedObjVal}; + AddedObjVal < 80 -> + {1, AddedObjVal - 40}; + true -> + {2, AddedObjVal - 80} + end, + list_to_tuple([Val1, Val2 | ObjVals]). + +decode_octet_string(Tlv, TagsIn) -> + Bin = match_and_collect(Tlv, TagsIn), + binary:copy(Bin). + +decode_open_type(Tlv, TagIn) -> + case match_tags(Tlv, TagIn) of + Bin when is_binary(Bin) -> + {InnerTlv, _} = ber_decode_nif(Bin), + InnerTlv; + TlvBytes -> + TlvBytes + end. + +decode_open_type_as_binary(Tlv, TagIn) -> + ber_encode(match_tags(Tlv, TagIn)). + +decode_restricted_string(Tlv, TagsIn) -> + match_and_collect(Tlv, TagsIn). + +do_encode_named_bit_string([FirstVal | RestVal], NamedBitList, TagIn) -> + ToSetPos = get_all_bitposes([FirstVal | RestVal], NamedBitList, []), + Size = lists:max(ToSetPos) + 1, + BitList = make_and_set_list(Size, ToSetPos, 0), + {Len, Unused, OctetList} = encode_bitstring(BitList), + encode_tags(TagIn, [Unused | OctetList], Len + 1). + +e_object_identifier({'OBJECT IDENTIFIER', V}) -> + e_object_identifier(V); +e_object_identifier(V) when is_tuple(V) -> + e_object_identifier(tuple_to_list(V)); +e_object_identifier([E1, E2 | Tail]) -> + Head = 40 * E1 + E2, + {H, Lh} = mk_object_val(Head), + {R, Lr} = lists:mapfoldl(fun enc_obj_id_tail/2, 0, Tail), + {[H | R], Lh + Lr}. + +enc_obj_id_tail(H, Len) -> + {B, L} = mk_object_val(H), + {B, Len + L}. + +encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest]) -> + Val = + B8 bsl 7 bor (B7 bsl 6) bor (B6 bsl 5) bor (B5 bsl 4) + bor + (B4 bsl 3) + bor + (B3 bsl 2) + bor + (B2 bsl 1) + bor + B1, + encode_bitstring(Rest, [Val], 1); +encode_bitstring(Val) -> + {Unused, Octet} = unused_bitlist(Val, 7, 0), + {1, Unused, [Octet]}. + +encode_bitstring([B8, B7, B6, B5, B4, B3, B2, B1 | Rest], Ack, Len) -> + Val = + B8 bsl 7 bor (B7 bsl 6) bor (B6 bsl 5) bor (B5 bsl 4) + bor + (B4 bsl 3) + bor + (B3 bsl 2) + bor + (B2 bsl 1) + bor + B1, + encode_bitstring(Rest, [Ack, Val], Len + 1); +encode_bitstring([], Ack, Len) -> + {Len, 0, Ack}; +encode_bitstring(Rest, Ack, Len) -> + {Unused, Val} = unused_bitlist(Rest, 7, 0), + {Len + 1, Unused, [Ack, Val]}. + +encode_boolean(true, TagIn) -> + encode_tags(TagIn, [255], 1); +encode_boolean(false, TagIn) -> + encode_tags(TagIn, [0], 1); +encode_boolean(X, _) -> + exit({error, {asn1, {encode_boolean, X}}}). + +encode_integer(Val) -> + Bytes = + if + Val >= 0 -> + encode_integer_pos(Val, []); + true -> + encode_integer_neg(Val, []) + end, + {Bytes, length(Bytes)}. + +encode_integer(Val, NamedNumberList, Tag) when is_atom(Val) -> + case lists:keyfind(Val, 1, NamedNumberList) of + {_, NewVal} -> + encode_tags(Tag, encode_integer(NewVal)); + _ -> + exit({error, {asn1, {encode_integer_namednumber, Val}}}) + end; +encode_integer(Val, _NamedNumberList, Tag) -> + encode_tags(Tag, encode_integer(Val)). + +encode_integer(Val, Tag) when is_integer(Val) -> + encode_tags(Tag, encode_integer(Val)); +encode_integer(Val, _Tag) -> + exit({error, {asn1, {encode_integer, Val}}}). + +encode_integer_neg(-1, [B1 | _T] = L) when B1 > 127 -> + L; +encode_integer_neg(N, Acc) -> + encode_integer_neg(N bsr 8, [N band 255 | Acc]). + +encode_integer_pos(0, [B | _Acc] = L) when B < 128 -> + L; +encode_integer_pos(N, Acc) -> + encode_integer_pos(N bsr 8, [N band 255 | Acc]). + +encode_length(L) when L =< 127 -> + {[L], 1}; +encode_length(L) -> + Oct = minimum_octets(L), + Len = length(Oct), + if + Len =< 126 -> + {[128 bor Len | Oct], Len + 1}; + true -> + exit({error, {asn1, too_long_length_oct, Len}}) + end. + +encode_named_bit_string([H | _] = Bits, NamedBitList, TagIn) + when is_atom(H) -> + do_encode_named_bit_string(Bits, NamedBitList, TagIn); +encode_named_bit_string([{bit, _} | _] = Bits, NamedBitList, TagIn) -> + do_encode_named_bit_string(Bits, NamedBitList, TagIn); +encode_named_bit_string([], _NamedBitList, TagIn) -> + encode_unnamed_bit_string(<<>>, TagIn); +encode_named_bit_string(Bits, _NamedBitList, TagIn) + when is_bitstring(Bits) -> + encode_unnamed_bit_string(Bits, TagIn). + +encode_null(_Val, TagIn) -> + encode_tags(TagIn, [], 0). + +encode_object_identifier(Val, TagIn) -> + encode_tags(TagIn, e_object_identifier(Val)). + +encode_open_type(Val, T) when is_list(Val) -> + encode_open_type(list_to_binary(Val), T); +encode_open_type(Val, Tag) -> + encode_tags(Tag, Val, byte_size(Val)). + +encode_restricted_string(OctetList, TagIn) when is_binary(OctetList) -> + encode_tags(TagIn, OctetList, byte_size(OctetList)); +encode_restricted_string(OctetList, TagIn) when is_list(OctetList) -> + encode_tags(TagIn, OctetList, length(OctetList)). + +encode_tags(TagIn, {BytesSoFar, LenSoFar}) -> + encode_tags(TagIn, BytesSoFar, LenSoFar). + +encode_tags([Tag | Trest], BytesSoFar, LenSoFar) -> + {Bytes2, L2} = encode_length(LenSoFar), + encode_tags(Trest, + [Tag, Bytes2 | BytesSoFar], + LenSoFar + byte_size(Tag) + L2); +encode_tags([], BytesSoFar, LenSoFar) -> + {BytesSoFar, LenSoFar}. + +encode_unnamed_bit_string(Bits, TagIn) -> + Unused = (8 - bit_size(Bits) band 7) band 7, + Bin = <>, + encode_tags(TagIn, Bin, byte_size(Bin)). + +get_all_bitposes([{bit, ValPos} | Rest], NamedBitList, Ack) -> + get_all_bitposes(Rest, NamedBitList, [ValPos | Ack]); +get_all_bitposes([Val | Rest], NamedBitList, Ack) when is_atom(Val) -> + case lists:keyfind(Val, 1, NamedBitList) of + {_ValName, ValPos} -> + get_all_bitposes(Rest, NamedBitList, [ValPos | Ack]); + _ -> + exit({error, {asn1, {bitstring_namedbit, Val}}}) + end; +get_all_bitposes([], _NamedBitList, Ack) -> + lists:sort(Ack). + +make_and_set_list(0, [], _) -> + []; +make_and_set_list(0, _, _) -> + exit({error, {asn1, bitstring_sizeconstraint}}); +make_and_set_list(Len, [XPos | SetPos], XPos) -> + [1 | make_and_set_list(Len - 1, SetPos, XPos + 1)]; +make_and_set_list(Len, [Pos | SetPos], XPos) -> + [0 | make_and_set_list(Len - 1, [Pos | SetPos], XPos + 1)]; +make_and_set_list(Len, [], XPos) -> + [0 | make_and_set_list(Len - 1, [], XPos + 1)]. + +match_and_collect(Tlv, TagsIn) -> + Val = match_tags(Tlv, TagsIn), + case Val of + [_ | _] = PartList -> + collect_parts(PartList); + Bin when is_binary(Bin) -> + Bin + end. + +match_tags({T, V}, [T]) -> + V; +match_tags({T, V}, [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, V}], [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, _V} | _] = Vlist, [T]) -> + Vlist; +match_tags(Tlv, []) -> + Tlv; +match_tags({Tag, _V} = Tlv, [T | _Tt]) -> + exit({error, {asn1, {wrong_tag, {{expected, T}, {got, Tag, Tlv}}}}}). + +minimum_octets(0, Acc) -> + Acc; +minimum_octets(Val, Acc) -> + minimum_octets(Val bsr 8, [Val band 255 | Acc]). + +minimum_octets(Val) -> + minimum_octets(Val, []). + +mk_object_val(0, Ack, Len) -> + {Ack, Len}; +mk_object_val(Val, Ack, Len) -> + mk_object_val(Val bsr 7, [Val band 127 bor 128 | Ack], Len + 1). + +mk_object_val(Val) when Val =< 127 -> + {[255 band Val], 1}; +mk_object_val(Val) -> + mk_object_val(Val bsr 7, [Val band 127], 1). + +number2name(Int, NamedNumberList) -> + case lists:keyfind(Int, 2, NamedNumberList) of + {NamedVal, _} -> + NamedVal; + _ -> + Int + end. + +transform_to_EXTERNAL1990(['EXTERNAL' | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, ['EXTERNAL' | Acc]); +transform_to_EXTERNAL1990([{syntax, Syntax} | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, [asn1_NOVALUE, Syntax | Acc]); +transform_to_EXTERNAL1990([{'presentation-context-id', PCid} | Rest], + Acc) -> + transform_to_EXTERNAL1990(Rest, [PCid, asn1_NOVALUE | Acc]); +transform_to_EXTERNAL1990([{'context-negotiation', Context_negot} | + Rest], + Acc) -> + {_, Presentation_Cid, Transfer_syntax} = Context_negot, + transform_to_EXTERNAL1990(Rest, + [Presentation_Cid, Transfer_syntax | Acc]); +transform_to_EXTERNAL1990([asn1_NOVALUE | Rest], Acc) -> + transform_to_EXTERNAL1990(Rest, [asn1_NOVALUE | Acc]); +transform_to_EXTERNAL1990([Data_val_desc, Data_value], Acc) + when is_list(Data_value); is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'octet-aligned', Data_value}, + Data_val_desc | Acc])); +transform_to_EXTERNAL1990([Data_val_desc, Data_value], Acc) + when is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'single-ASN1-type', Data_value}, + Data_val_desc | Acc])); +transform_to_EXTERNAL1990([Data_value], Acc) + when is_list(Data_value); is_binary(Data_value) -> + list_to_tuple(lists:reverse([{'octet-aligned', Data_value} | Acc])). + +transform_to_EXTERNAL1990({_, _, _, _} = Val) -> + transform_to_EXTERNAL1990(tuple_to_list(Val), []); +transform_to_EXTERNAL1990(Val) when is_tuple(Val) -> + Val. + +transform_to_EXTERNAL1994({'EXTERNAL', DRef, IndRef, Data_v_desc, + Encoding} = + V) -> + Identification = + case {DRef, IndRef} of + {DRef, asn1_NOVALUE} -> + {syntax, DRef}; + {asn1_NOVALUE, IndRef} -> + {'presentation-context-id', IndRef}; + _ -> + {'context-negotiation', + {'EXTERNAL_identification_context-negotiation', IndRef, + DRef}} + end, + case Encoding of + {'octet-aligned', Val} when is_list(Val); is_binary(Val) -> + {'EXTERNAL', Identification, Data_v_desc, Val}; + _ -> + V + end. + +unused_bitlist([], Trail, Ack) -> + {Trail + 1, Ack}; +unused_bitlist([Bit | Rest], Trail, Ack) -> + unused_bitlist(Rest, Trail - 1, Bit bsl Trail bor Ack). diff --git a/src/IPMSInformationObjects.hrl b/src/IPMSInformationObjects.hrl new file mode 100644 index 0000000..b0c7eab --- /dev/null +++ b/src/IPMSInformationObjects.hrl @@ -0,0 +1,220 @@ +%% Generated by the Erlang ASN.1 compiler. Version: 5.1 +%% Purpose: Erlang record definitions for each named and unnamed +%% SEQUENCE and SET, and macro definitions for each value +%% definition in module IPMSInformationObjects. + +-ifndef(_IPMSINFORMATIONOBJECTS_HRL_). +-define(_IPMSINFORMATIONOBJECTS_HRL_, true). + +-record('IPMSExtension', { + type, + value = asn1_DEFAULT +}). + +-record('ExtendedBodyPart', { + parameters = asn1_NOVALUE, + data +}). + +-record('IPM', { + heading, + body +}). + +-record('Heading', { + 'this-IPM', + originator = asn1_NOVALUE, + 'authorizing-users' = asn1_NOVALUE, + 'primary-recipients' = asn1_DEFAULT, + 'copy-recipients' = asn1_DEFAULT, + 'blind-copy-recipients' = asn1_NOVALUE, + 'replied-to-IPM' = asn1_NOVALUE, + 'obsoleted-IPMs' = asn1_DEFAULT, + 'related-IPMs' = asn1_DEFAULT, + subject = asn1_NOVALUE, + 'expiry-time' = asn1_NOVALUE, + 'reply-time' = asn1_NOVALUE, + 'reply-recipients' = asn1_NOVALUE, + importance = asn1_DEFAULT, + sensitivity = asn1_NOVALUE, + 'auto-forwarded' = asn1_DEFAULT, + extensions = asn1_DEFAULT +}). + +-record('IPMIdentifier', { + user = asn1_NOVALUE, + 'user-relative-identifier' +}). + +-record('RecipientSpecifier', { + recipient, + 'notification-requests' = asn1_DEFAULT, + 'reply-requested' = asn1_DEFAULT, + 'recipient-extensions' = asn1_NOVALUE +}). + +-record('ORDescriptor', { + 'formal-name' = asn1_NOVALUE, + 'free-form-name' = asn1_NOVALUE, + 'telephone-number' = asn1_NOVALUE +}). + +-record('RecipientExtensionsField_SETOF', { + type, + value = asn1_DEFAULT +}). + +-record('ExtensionsField_SETOF', { + type, + value = asn1_DEFAULT +}). + +-record('BodyPart_extended', { + parameters = asn1_NOVALUE, + data +}). + +-record('IA5TextBodyPart', { + parameters, + data +}). + +-record('IA5TextParameters', { + repertoire = asn1_DEFAULT +}). + +-record('G3FacsimileBodyPart', { + parameters, + data +}). + +-record('G3FacsimileParameters', { + 'number-of-pages' = asn1_NOVALUE, + 'non-basic-parameters' = asn1_NOVALUE +}). + +-record('TeletexBodyPart', { + parameters, + data +}). + +-record('TeletexParameters', { + 'number-of-pages' = asn1_NOVALUE, + 'telex-compatible' = asn1_DEFAULT, + 'non-basic-parameters' = asn1_NOVALUE +}). + +-record('VideotexBodyPart', { + parameters, + data +}). + +-record('VideotexParameters', { + syntax = asn1_NOVALUE +}). + +-record('EncryptedBodyPart', { + parameters, + data +}). + +-record('EncryptedParameters', { + 'algorithm-identifier', + 'originator-certificates' = asn1_NOVALUE + %% with extension mark +}). + +-record('MessageBodyPart', { + parameters, + data +}). + +-record('MessageParameters', { + 'delivery-time' = asn1_NOVALUE, + 'delivery-envelope' = asn1_NOVALUE +}). + +-record('IPN', { + 'subject-ipm', + 'ipn-originator' = asn1_NOVALUE, + 'ipm-intended-recipient' = asn1_NOVALUE, + 'conversion-eits' = asn1_NOVALUE, + 'notification-extensions' = asn1_NOVALUE, + choice +}). + +-record('CommonFields', { + 'subject-ipm', + 'ipn-originator' = asn1_NOVALUE, + 'ipm-intended-recipient' = asn1_NOVALUE, + 'conversion-eits' = asn1_NOVALUE, + 'notification-extensions' = asn1_NOVALUE +}). + +-record('NonReceiptFields', { + 'non-receipt-reason', + 'discard-reason' = asn1_NOVALUE, + 'auto-forward-comment' = asn1_NOVALUE, + 'returned-ipm' = asn1_NOVALUE, + 'nrn-extensions' = asn1_NOVALUE +}). + +-record('ReceiptFields', { + 'receipt-time', + 'acknowledgment-mode' = asn1_DEFAULT, + 'suppl-receipt-info' = asn1_NOVALUE, + 'rn-extensions' = asn1_NOVALUE +}). + +-record('NotificationExtensionsField_SETOF', { + type, + value = asn1_DEFAULT +}). + +-record('NRNExtensionsField_SETOF', { + type, + value = asn1_DEFAULT +}). + +-record('RNExtensionsField_SETOF', { + type, + value = asn1_DEFAULT +}). + +-record('OtherNotificationTypeFields_SETOF', { + type, + value = asn1_DEFAULT +}). + +-record('AbsenceAdvice', { + advice = asn1_NOVALUE, + 'next-available' = asn1_NOVALUE +}). + +-record('ChangeOfAddressAdvice', { + 'new-address', + 'effective-from' = asn1_NOVALUE +}). + +-record('IPMAssemblyInstructions', { + 'assembly-instructions' +}). + +-record('BodyPartReference_stored-body-part', { + 'message-entry', + 'body-part-number' +}). + +-record('EXTERNAL', { + 'direct-reference' = asn1_NOVALUE, + 'indirect-reference' = asn1_NOVALUE, + 'data-value-descriptor' = asn1_NOVALUE, + encoding +}). + +-record('INSTANCE OF', { + 'type-id', + value +}). + +-endif. %% _IPMSINFORMATIONOBJECTS_HRL_ diff --git a/src/IPMSObjectIdentifiers.erl b/src/IPMSObjectIdentifiers.erl new file mode 100644 index 0000000..cd18057 --- /dev/null +++ b/src/IPMSObjectIdentifiers.erl @@ -0,0 +1,1132 @@ +%% Generated by the Erlang ASN.1 BER compiler. Version: 5.1 +%% Purpose: Encoding and decoding of the types in IPMSObjectIdentifiers. + +-module('IPMSObjectIdentifiers'). +-compile(nowarn_unused_vars). +-dialyzer(no_improper_lists). +-dialyzer(no_match). +-include("IPMSObjectIdentifiers.hrl"). +-asn1_info([{vsn,'5.1'}, + {module,'IPMSObjectIdentifiers'}, + {options,[warnings,ber,errors, + {cwd,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {outdir,"/Users/maxim/depot/synrc/mail/priv/mhs"}, + {i,"."}, + {i,"/Users/maxim/depot/synrc/mail/priv/mhs"}]}]). + +-export([encoding_rule/0,maps/0,bit_string_format/0, + legacy_erlang_types/0]). +-export(['dialyzer-suppressions'/1]). +-export([ +enc_ID/2 +]). + +-export([ +dec_ID/2 +]). + +-export([ +'id-ipms'/0, +'id-mod'/0, +'id-ot'/0, +'id-pt'/0, +'id-et'/0, +'id-hex'/0, +'id-sat'/0, +'id-hat'/0, +'id-bat'/0, +'id-nat'/0, +'id-mct'/0, +'id-ep'/0, +'id-eit'/0, +'id-cat'/0, +'id-mr'/0, +'id-aa'/0, +'id-aae'/0, +'id-mst'/0, +'id-sec'/0, +'id-on'/0, +'id-rex'/0, +'id-mod-object-identifiers'/0, +'id-mod-functional-objects'/0, +'id-mod-information-objects'/0, +'id-mod-abstract-service'/0, +'id-mod-heading-extensions'/0, +'id-mod-extended-body-part-types'/0, +'id-mod-message-store-attributes'/0, +'id-mod-file-transfer-body-part-type'/0, +'id-mod-upper-bounds'/0, +'id-mod-extended-voice-body-part-type'/0, +'id-mod-forwarded-report-body-part-type'/0, +'id-mod-auto-actions'/0, +'id-mod-ipm-security-extensions'/0, +'id-mod-forwarded-content-body-part-type'/0, +'id-mod-pkcs7-body-part-type'/0, +'id-ot-ipms-user'/0, +'id-ot-ipms'/0, +'id-pt-origination'/0, +'id-pt-reception'/0, +'id-pt-management'/0, +'id-et-ia5-text'/0, +'id-et-g3-facsimile'/0, +'id-et-g4-class1'/0, +'id-et-teletex'/0, +'id-et-videotex'/0, +'id-et-encrypted'/0, +'id-et-message'/0, +'id-et-mixed-mode'/0, +'id-et-bilaterally-defined'/0, +'id-et-nationally-defined'/0, +'id-et-general-text'/0, +'id-et-file-transfer'/0, +'id-et-report'/0, +'id-et-notification'/0, +'id-et-voice'/0, +'id-et-content'/0, +'id-et-pkcs7'/0, +'id-hex-incomplete-copy'/0, +'id-hex-languages'/0, +'id-hex-auto-submitted'/0, +'id-hex-body-part-signatures'/0, +'id-hex-ipm-security-label'/0, +'id-hex-authorization-time'/0, +'id-hex-circulation-list-recipients'/0, +'id-hex-distribution-codes'/0, +'id-hex-extended-subject'/0, +'id-hex-information-category'/0, +'id-hex-manual-handling-instructions'/0, +'id-hex-originators-reference'/0, +'id-hex-precedence-policy-id'/0, +'id-sat-ipm-entry-type'/0, +'id-sat-ipm-synopsis'/0, +'id-sat-body-parts-summary'/0, +'id-sat-ipm-auto-discarded'/0, +'id-hat-heading'/0, +'id-hat-this-ipm'/0, +'id-hat-originator'/0, +'id-hat-replied-to-IPM'/0, +'id-hat-subject'/0, +'id-hat-expiry-time'/0, +'id-hat-reply-time'/0, +'id-hat-importance'/0, +'id-hat-sensitivity'/0, +'id-hat-auto-forwarded'/0, +'id-hat-authorizing-users'/0, +'id-hat-primary-recipients'/0, +'id-hat-copy-recipients'/0, +'id-hat-blind-copy-recipients'/0, +'id-hat-obsoleted-IPMs'/0, +'id-hat-related-IPMs'/0, +'id-hat-reply-recipients'/0, +'id-hat-incomplete-copy'/0, +'id-hat-languages'/0, +'id-hat-rn-requestors'/0, +'id-hat-nrn-requestors'/0, +'id-hat-reply-requestors'/0, +'id-hat-auto-submitted'/0, +'id-hat-body-part-signatures'/0, +'id-hat-ipm-security-label'/0, +'id-hat-body-part-security-label'/0, +'id-hat-body-part-encryption-token'/0, +'id-hat-authorization-time'/0, +'id-hat-circulation-list-recipients'/0, +'id-hat-distribution-codes'/0, +'id-hat-extended-subject'/0, +'id-hat-information-category'/0, +'id-hat-manual-handling-instructions'/0, +'id-hat-originators-reference'/0, +'id-hat-precedence-policy-id'/0, +'id-hat-forwarded-content-token'/0, +'id-hat-forwarding-token'/0, +'id-hat-precedence'/0, +'id-hat-body-part-signature-verification-status'/0, +'id-bat-body'/0, +'id-bat-ia5-text-body-parts'/0, +'id-bat-g3-facsimile-body-parts'/0, +'id-bat-g4-class1-body-parts'/0, +'id-bat-teletex-body-parts'/0, +'id-bat-videotex-body-parts'/0, +'id-bat-encrypted-body-parts'/0, +'id-bat-message-body-parts'/0, +'id-bat-mixed-mode-body-parts'/0, +'id-bat-bilaterally-defined-body-parts'/0, +'id-bat-nationally-defined-body-parts'/0, +'id-bat-extended-body-part-types'/0, +'id-bat-ia5-text-parameters'/0, +'id-bat-g3-facsimile-parameters'/0, +'id-bat-teletex-parameters'/0, +'id-bat-videotex-parameters'/0, +'id-bat-encrypted-parameters'/0, +'id-bat-message-parameters'/0, +'id-bat-ia5-text-data'/0, +'id-bat-g3-facsimile-data'/0, +'id-bat-teletex-data'/0, +'id-bat-videotex-data'/0, +'id-bat-encrypted-data'/0, +'id-bat-message-data'/0, +'id-nat-subject-ipm'/0, +'id-nat-ipn-originator'/0, +'id-nat-ipm-intended-recipient'/0, +'id-nat-conversion-eits'/0, +'id-nat-non-receipt-reason'/0, +'id-nat-discard-reason'/0, +'id-nat-auto-forward-comment'/0, +'id-nat-returned-ipm'/0, +'id-nat-receipt-time'/0, +'id-nat-acknowledgment-mode'/0, +'id-nat-suppl-receipt-info'/0, +'id-nat-notification-extensions'/0, +'id-nat-nrn-extensions'/0, +'id-nat-rn-extensions'/0, +'id-nat-other-notification-type-fields'/0, +'id-cat-correlated-delivered-ipns'/0, +'id-cat-correlated-delivered-replies'/0, +'id-cat-delivered-ipn-summary'/0, +'id-cat-delivered-replies-summary'/0, +'id-cat-forwarded-ipms'/0, +'id-cat-forwarding-ipms'/0, +'id-cat-ipm-recipients'/0, +'id-cat-obsoleted-ipms'/0, +'id-cat-obsoleting-ipms'/0, +'id-cat-related-ipms'/0, +'id-cat-relating-ipms'/0, +'id-cat-replied-to-ipm'/0, +'id-cat-replying-ipms'/0, +'id-cat-revised-reply-time'/0, +'id-cat-submitted-ipn-status'/0, +'id-cat-submitted-ipns'/0, +'id-cat-submitted-reply-status'/0, +'id-cat-subject-ipm'/0, +'id-cat-recipient-category'/0, +'id-mct-p2-1984'/0, +'id-mct-p2-1988'/0, +'id-ep-ia5-text'/0, +'id-ep-g3-facsimile'/0, +'id-ep-teletex'/0, +'id-ep-videotex'/0, +'id-ep-encrypted'/0, +'id-ep-message'/0, +'id-ep-general-text'/0, +'id-ep-file-transfer'/0, +'id-ep-notification'/0, +'id-ep-voice'/0, +'id-ep-content'/0, +'id-eit-file-transfer'/0, +'id-eit-voice'/0, +'id-voice-11khz-sample'/0, +'id-voice-22khz-sample'/0, +'id-voice-cd-quality'/0, +'id-voice-g711-mu-law'/0, +'id-voice-g726-32k-adpcm'/0, +'id-voice-g728-16k-ld-celp'/0, +'id-mr-ipm-identifier'/0, +'id-mr-or-descriptor'/0, +'id-mr-or-descriptor-elements'/0, +'id-mr-or-descriptor-substring-elements'/0, +'id-mr-recipient-specifier'/0, +'id-mr-recipient-specifier-elements'/0, +'id-mr-recipient-specifier-substring-elements'/0, +'id-mr-ipm-location'/0, +'id-mr-or-descriptor-single-element'/0, +'id-mr-recipient-specifier-single-element'/0, +'id-mr-circulation-member'/0, +'id-mr-circulation-member-elements'/0, +'id-mr-circulation-member-substring-elements'/0, +'id-mr-circulation-member-single-element'/0, +'id-mr-circulation-member-checkmark'/0, +'id-mr-distribution-code'/0, +'id-mr-information-category'/0, +'id-aa-ipm-auto-acknowledgement'/0, +'id-aa-ipm-auto-correlate'/0, +'id-aa-ipm-auto-discard'/0, +'id-aa-ipm-auto-advise'/0, +'id-aae-auto-discard-error'/0, +'id-aae-auto-forwarding-loop'/0, +'id-aae-duplicate-ipn'/0, +'id-mst-invalid-assembly-instructions'/0, +'id-mst-invalid-ipn'/0, +'id-mst-assembly-instructions'/0, +'id-mst-suspend-auto-acknowledgement'/0, +'id-mst-prevent-nrn-generation'/0, +'id-mst-originator-body-part-encryption-token'/0, +'id-mst-originator-forwarded-content-token'/0, +'id-mst-assembly-capability'/0, +'id-sec-ipm-security-request'/0, +'id-sec-security-common-fields'/0, +'id-on-absence-advice'/0, +'id-on-change-of-address-advice'/0, +'id-rex-circulation-list-indicator'/0, +'id-rex-precedence'/0 +]). + +-export([info/0]). + +-export([encode/2,decode/2]). + +encoding_rule() -> ber. + +maps() -> false. + +bit_string_format() -> bitstring. + +legacy_erlang_types() -> false. + +encode(Type, Data) -> +try iolist_to_binary(element(1, encode_disp(Type, Data))) of + Bytes -> + {ok,Bytes} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +decode(Type, Data) -> +try + Result = decode_disp(Type, element(1, ber_decode_nif(Data))), + {ok,Result} + catch + Class:Exception:Stk when Class =:= error; Class =:= exit -> + case Exception of + {error,{asn1,Reason}} -> + {error,{asn1,{Reason,Stk}}}; + Reason -> + {error,{asn1,{Reason,Stk}}} + end +end. + +encode_disp('ID', Data) -> enc_ID(Data); +encode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +decode_disp('ID', Data) -> dec_ID(Data); +decode_disp(Type, _Data) -> exit({error,{asn1,{undefined_type,Type}}}). + +info() -> + case ?MODULE:module_info(attributes) of + Attributes when is_list(Attributes) -> + case lists:keyfind(asn1_info, 1, Attributes) of + {_,Info} when is_list(Info) -> + Info; + _ -> + [] + end; + _ -> + [] + end. + + +%%================================ +%% ID +%%================================ +enc_ID(Val) -> + enc_ID(Val, [<<6>>]). + +enc_ID(Val, TagIn) -> +encode_object_identifier(Val, TagIn). + + +dec_ID(Tlv) -> + dec_ID(Tlv, [6]). + +dec_ID(Tlv, TagIn) -> +decode_object_identifier(Tlv, TagIn). + +'id-ipms'() -> +{2,6,1}. + +'id-mod'() -> +{2,6,1,0}. + +'id-ot'() -> +{2,6,1,1}. + +'id-pt'() -> +{2,6,1,2}. + +'id-et'() -> +{2,6,1,4}. + +'id-hex'() -> +{2,6,1,5}. + +'id-sat'() -> +{2,6,1,6}. + +'id-hat'() -> +{2,6,1,7}. + +'id-bat'() -> +{2,6,1,8}. + +'id-nat'() -> +{2,6,1,9}. + +'id-mct'() -> +{2,6,1,10}. + +'id-ep'() -> +{2,6,1,11}. + +'id-eit'() -> +{2,6,1,12}. + +'id-cat'() -> +{2,6,1,13}. + +'id-mr'() -> +{2,6,1,14}. + +'id-aa'() -> +{2,6,1,15}. + +'id-aae'() -> +{2,6,1,16}. + +'id-mst'() -> +{2,6,1,17}. + +'id-sec'() -> +{2,6,1,18}. + +'id-on'() -> +{2,6,1,19}. + +'id-rex'() -> +{2,6,1,20}. + +'id-mod-object-identifiers'() -> +{2,6,1,0,0}. + +'id-mod-functional-objects'() -> +{2,6,1,0,1}. + +'id-mod-information-objects'() -> +{2,6,1,0,2}. + +'id-mod-abstract-service'() -> +{2,6,1,0,3}. + +'id-mod-heading-extensions'() -> +{2,6,1,0,6}. + +'id-mod-extended-body-part-types'() -> +{2,6,1,0,7}. + +'id-mod-message-store-attributes'() -> +{2,6,1,0,8}. + +'id-mod-file-transfer-body-part-type'() -> +{2,6,1,0,9}. + +'id-mod-upper-bounds'() -> +{2,6,1,0,10}. + +'id-mod-extended-voice-body-part-type'() -> +{2,6,1,0,11}. + +'id-mod-forwarded-report-body-part-type'() -> +{2,6,1,0,12}. + +'id-mod-auto-actions'() -> +{2,6,1,0,13}. + +'id-mod-ipm-security-extensions'() -> +{2,6,1,0,14}. + +'id-mod-forwarded-content-body-part-type'() -> +{2,6,1,0,15}. + +'id-mod-pkcs7-body-part-type'() -> +{2,6,1,0,16}. + +'id-ot-ipms-user'() -> +{2,6,1,1,1}. + +'id-ot-ipms'() -> +{2,6,1,1,2}. + +'id-pt-origination'() -> +{2,6,1,2,0}. + +'id-pt-reception'() -> +{2,6,1,2,1}. + +'id-pt-management'() -> +{2,6,1,2,2}. + +'id-et-ia5-text'() -> +{2,6,1,4,0}. + +'id-et-g3-facsimile'() -> +{2,6,1,4,2}. + +'id-et-g4-class1'() -> +{2,6,1,4,3}. + +'id-et-teletex'() -> +{2,6,1,4,4}. + +'id-et-videotex'() -> +{2,6,1,4,5}. + +'id-et-encrypted'() -> +{2,6,1,4,6}. + +'id-et-message'() -> +{2,6,1,4,7}. + +'id-et-mixed-mode'() -> +{2,6,1,4,8}. + +'id-et-bilaterally-defined'() -> +{2,6,1,4,9}. + +'id-et-nationally-defined'() -> +{2,6,1,4,10}. + +'id-et-general-text'() -> +{2,6,1,4,11}. + +'id-et-file-transfer'() -> +{2,6,1,4,12}. + +'id-et-report'() -> +{2,6,1,4,14}. + +'id-et-notification'() -> +{2,6,1,4,15}. + +'id-et-voice'() -> +{2,6,1,4,16}. + +'id-et-content'() -> +{2,6,1,4,17}. + +'id-et-pkcs7'() -> +{2,6,1,4,18}. + +'id-hex-incomplete-copy'() -> +{2,6,1,5,0}. + +'id-hex-languages'() -> +{2,6,1,5,1}. + +'id-hex-auto-submitted'() -> +{2,6,1,5,2}. + +'id-hex-body-part-signatures'() -> +{2,6,1,5,3}. + +'id-hex-ipm-security-label'() -> +{2,6,1,5,4}. + +'id-hex-authorization-time'() -> +{2,6,1,5,5}. + +'id-hex-circulation-list-recipients'() -> +{2,6,1,5,6}. + +'id-hex-distribution-codes'() -> +{2,6,1,5,7}. + +'id-hex-extended-subject'() -> +{2,6,1,5,8}. + +'id-hex-information-category'() -> +{2,6,1,5,9}. + +'id-hex-manual-handling-instructions'() -> +{2,6,1,5,10}. + +'id-hex-originators-reference'() -> +{2,6,1,5,11}. + +'id-hex-precedence-policy-id'() -> +{2,6,1,5,12}. + +'id-sat-ipm-entry-type'() -> +{2,6,1,6,0}. + +'id-sat-ipm-synopsis'() -> +{2,6,1,6,1}. + +'id-sat-body-parts-summary'() -> +{2,6,1,6,2}. + +'id-sat-ipm-auto-discarded'() -> +{2,6,1,6,3}. + +'id-hat-heading'() -> +{2,6,1,7,0}. + +'id-hat-this-ipm'() -> +{2,6,1,7,1}. + +'id-hat-originator'() -> +{2,6,1,7,2}. + +'id-hat-replied-to-IPM'() -> +{2,6,1,7,3}. + +'id-hat-subject'() -> +{2,6,1,7,4}. + +'id-hat-expiry-time'() -> +{2,6,1,7,5}. + +'id-hat-reply-time'() -> +{2,6,1,7,6}. + +'id-hat-importance'() -> +{2,6,1,7,7}. + +'id-hat-sensitivity'() -> +{2,6,1,7,8}. + +'id-hat-auto-forwarded'() -> +{2,6,1,7,9}. + +'id-hat-authorizing-users'() -> +{2,6,1,7,10}. + +'id-hat-primary-recipients'() -> +{2,6,1,7,11}. + +'id-hat-copy-recipients'() -> +{2,6,1,7,12}. + +'id-hat-blind-copy-recipients'() -> +{2,6,1,7,13}. + +'id-hat-obsoleted-IPMs'() -> +{2,6,1,7,14}. + +'id-hat-related-IPMs'() -> +{2,6,1,7,15}. + +'id-hat-reply-recipients'() -> +{2,6,1,7,16}. + +'id-hat-incomplete-copy'() -> +{2,6,1,7,17}. + +'id-hat-languages'() -> +{2,6,1,7,18}. + +'id-hat-rn-requestors'() -> +{2,6,1,7,19}. + +'id-hat-nrn-requestors'() -> +{2,6,1,7,20}. + +'id-hat-reply-requestors'() -> +{2,6,1,7,21}. + +'id-hat-auto-submitted'() -> +{2,6,1,7,22}. + +'id-hat-body-part-signatures'() -> +{2,6,1,7,23}. + +'id-hat-ipm-security-label'() -> +{2,6,1,7,24}. + +'id-hat-body-part-security-label'() -> +{2,6,1,7,25}. + +'id-hat-body-part-encryption-token'() -> +{2,6,1,7,26}. + +'id-hat-authorization-time'() -> +{2,6,1,7,27}. + +'id-hat-circulation-list-recipients'() -> +{2,6,1,7,28}. + +'id-hat-distribution-codes'() -> +{2,6,1,7,29}. + +'id-hat-extended-subject'() -> +{2,6,1,7,30}. + +'id-hat-information-category'() -> +{2,6,1,7,31}. + +'id-hat-manual-handling-instructions'() -> +{2,6,1,7,32}. + +'id-hat-originators-reference'() -> +{2,6,1,7,33}. + +'id-hat-precedence-policy-id'() -> +{2,6,1,7,34}. + +'id-hat-forwarded-content-token'() -> +{2,6,1,7,35}. + +'id-hat-forwarding-token'() -> +{2,6,1,7,36}. + +'id-hat-precedence'() -> +{2,6,1,7,37}. + +'id-hat-body-part-signature-verification-status'() -> +{2,6,1,7,38}. + +'id-bat-body'() -> +{2,6,1,8,0}. + +'id-bat-ia5-text-body-parts'() -> +{2,6,1,8,1}. + +'id-bat-g3-facsimile-body-parts'() -> +{2,6,1,8,3}. + +'id-bat-g4-class1-body-parts'() -> +{2,6,1,8,4}. + +'id-bat-teletex-body-parts'() -> +{2,6,1,8,5}. + +'id-bat-videotex-body-parts'() -> +{2,6,1,8,6}. + +'id-bat-encrypted-body-parts'() -> +{2,6,1,8,7}. + +'id-bat-message-body-parts'() -> +{2,6,1,8,8}. + +'id-bat-mixed-mode-body-parts'() -> +{2,6,1,8,9}. + +'id-bat-bilaterally-defined-body-parts'() -> +{2,6,1,8,10}. + +'id-bat-nationally-defined-body-parts'() -> +{2,6,1,8,11}. + +'id-bat-extended-body-part-types'() -> +{2,6,1,8,12}. + +'id-bat-ia5-text-parameters'() -> +{2,6,1,8,13}. + +'id-bat-g3-facsimile-parameters'() -> +{2,6,1,8,15}. + +'id-bat-teletex-parameters'() -> +{2,6,1,8,16}. + +'id-bat-videotex-parameters'() -> +{2,6,1,8,17}. + +'id-bat-encrypted-parameters'() -> +{2,6,1,8,18}. + +'id-bat-message-parameters'() -> +{2,6,1,8,19}. + +'id-bat-ia5-text-data'() -> +{2,6,1,8,20}. + +'id-bat-g3-facsimile-data'() -> +{2,6,1,8,22}. + +'id-bat-teletex-data'() -> +{2,6,1,8,23}. + +'id-bat-videotex-data'() -> +{2,6,1,8,24}. + +'id-bat-encrypted-data'() -> +{2,6,1,8,25}. + +'id-bat-message-data'() -> +{2,6,1,8,26}. + +'id-nat-subject-ipm'() -> +{2,6,1,9,0}. + +'id-nat-ipn-originator'() -> +{2,6,1,9,1}. + +'id-nat-ipm-intended-recipient'() -> +{2,6,1,9,2}. + +'id-nat-conversion-eits'() -> +{2,6,1,9,3}. + +'id-nat-non-receipt-reason'() -> +{2,6,1,9,4}. + +'id-nat-discard-reason'() -> +{2,6,1,9,5}. + +'id-nat-auto-forward-comment'() -> +{2,6,1,9,6}. + +'id-nat-returned-ipm'() -> +{2,6,1,9,7}. + +'id-nat-receipt-time'() -> +{2,6,1,9,8}. + +'id-nat-acknowledgment-mode'() -> +{2,6,1,9,9}. + +'id-nat-suppl-receipt-info'() -> +{2,6,1,9,10}. + +'id-nat-notification-extensions'() -> +{2,6,1,9,11}. + +'id-nat-nrn-extensions'() -> +{2,6,1,9,12}. + +'id-nat-rn-extensions'() -> +{2,6,1,9,13}. + +'id-nat-other-notification-type-fields'() -> +{2,6,1,9,14}. + +'id-cat-correlated-delivered-ipns'() -> +{2,6,1,13,0}. + +'id-cat-correlated-delivered-replies'() -> +{2,6,1,13,1}. + +'id-cat-delivered-ipn-summary'() -> +{2,6,1,13,2}. + +'id-cat-delivered-replies-summary'() -> +{2,6,1,13,3}. + +'id-cat-forwarded-ipms'() -> +{2,6,1,13,4}. + +'id-cat-forwarding-ipms'() -> +{2,6,1,13,5}. + +'id-cat-ipm-recipients'() -> +{2,6,1,13,6}. + +'id-cat-obsoleted-ipms'() -> +{2,6,1,13,7}. + +'id-cat-obsoleting-ipms'() -> +{2,6,1,13,8}. + +'id-cat-related-ipms'() -> +{2,6,1,13,9}. + +'id-cat-relating-ipms'() -> +{2,6,1,13,10}. + +'id-cat-replied-to-ipm'() -> +{2,6,1,13,11}. + +'id-cat-replying-ipms'() -> +{2,6,1,13,12}. + +'id-cat-revised-reply-time'() -> +{2,6,1,13,13}. + +'id-cat-submitted-ipn-status'() -> +{2,6,1,13,14}. + +'id-cat-submitted-ipns'() -> +{2,6,1,13,15}. + +'id-cat-submitted-reply-status'() -> +{2,6,1,13,16}. + +'id-cat-subject-ipm'() -> +{2,6,1,13,17}. + +'id-cat-recipient-category'() -> +{2,6,1,13,18}. + +'id-mct-p2-1984'() -> +{2,6,1,10,0}. + +'id-mct-p2-1988'() -> +{2,6,1,10,1}. + +'id-ep-ia5-text'() -> +{2,6,1,11,0}. + +'id-ep-g3-facsimile'() -> +{2,6,1,11,2}. + +'id-ep-teletex'() -> +{2,6,1,11,4}. + +'id-ep-videotex'() -> +{2,6,1,11,5}. + +'id-ep-encrypted'() -> +{2,6,1,11,6}. + +'id-ep-message'() -> +{2,6,1,11,7}. + +'id-ep-general-text'() -> +{2,6,1,11,11}. + +'id-ep-file-transfer'() -> +{2,6,1,11,12}. + +'id-ep-notification'() -> +{2,6,1,11,15}. + +'id-ep-voice'() -> +{2,6,1,11,16}. + +'id-ep-content'() -> +{2,6,1,11,17}. + +'id-eit-file-transfer'() -> +{2,6,1,12,0}. + +'id-eit-voice'() -> +{2,6,1,12,1}. + +'id-voice-11khz-sample'() -> +{2,6,1,12,1,0}. + +'id-voice-22khz-sample'() -> +{2,6,1,12,1,1}. + +'id-voice-cd-quality'() -> +{2,6,1,12,1,2}. + +'id-voice-g711-mu-law'() -> +{2,6,1,12,1,3}. + +'id-voice-g726-32k-adpcm'() -> +{2,6,1,12,1,4}. + +'id-voice-g728-16k-ld-celp'() -> +{2,6,1,12,1,5}. + +'id-mr-ipm-identifier'() -> +{2,6,1,14,0}. + +'id-mr-or-descriptor'() -> +{2,6,1,14,1}. + +'id-mr-or-descriptor-elements'() -> +{2,6,1,14,2}. + +'id-mr-or-descriptor-substring-elements'() -> +{2,6,1,14,3}. + +'id-mr-recipient-specifier'() -> +{2,6,1,14,4}. + +'id-mr-recipient-specifier-elements'() -> +{2,6,1,14,5}. + +'id-mr-recipient-specifier-substring-elements'() -> +{2,6,1,14,6}. + +'id-mr-ipm-location'() -> +{2,6,1,14,7}. + +'id-mr-or-descriptor-single-element'() -> +{2,6,1,14,8}. + +'id-mr-recipient-specifier-single-element'() -> +{2,6,1,14,9}. + +'id-mr-circulation-member'() -> +{2,6,1,14,10}. + +'id-mr-circulation-member-elements'() -> +{2,6,1,14,11}. + +'id-mr-circulation-member-substring-elements'() -> +{2,6,1,14,12}. + +'id-mr-circulation-member-single-element'() -> +{2,6,1,14,13}. + +'id-mr-circulation-member-checkmark'() -> +{2,6,1,14,14}. + +'id-mr-distribution-code'() -> +{2,6,1,14,15}. + +'id-mr-information-category'() -> +{2,6,1,14,16}. + +'id-aa-ipm-auto-acknowledgement'() -> +{2,6,1,15,0}. + +'id-aa-ipm-auto-correlate'() -> +{2,6,1,15,1}. + +'id-aa-ipm-auto-discard'() -> +{2,6,1,15,2}. + +'id-aa-ipm-auto-advise'() -> +{2,6,1,15,3}. + +'id-aae-auto-discard-error'() -> +{2,6,1,16,0}. + +'id-aae-auto-forwarding-loop'() -> +{2,6,1,16,1}. + +'id-aae-duplicate-ipn'() -> +{2,6,1,16,2}. + +'id-mst-invalid-assembly-instructions'() -> +{2,6,1,17,0}. + +'id-mst-invalid-ipn'() -> +{2,6,1,17,1}. + +'id-mst-assembly-instructions'() -> +{2,6,1,17,2}. + +'id-mst-suspend-auto-acknowledgement'() -> +{2,6,1,17,3}. + +'id-mst-prevent-nrn-generation'() -> +{2,6,1,17,4}. + +'id-mst-originator-body-part-encryption-token'() -> +{2,6,1,17,5}. + +'id-mst-originator-forwarded-content-token'() -> +{2,6,1,17,6}. + +'id-mst-assembly-capability'() -> +{2,6,1,17,7}. + +'id-sec-ipm-security-request'() -> +{2,6,1,18,0}. + +'id-sec-security-common-fields'() -> +{2,6,1,18,1}. + +'id-on-absence-advice'() -> +{2,6,1,19,0}. + +'id-on-change-of-address-advice'() -> +{2,6,1,19,1}. + +'id-rex-circulation-list-indicator'() -> +{2,6,1,20,0}. + +'id-rex-precedence'() -> +{2,6,1,20,1}. + + +%%% +%%% Run-time functions. +%%% + +'dialyzer-suppressions'(Arg) -> + ok. + +ber_decode_nif(B) -> + asn1rt_nif:decode_ber_tlv(B). + +dec_subidentifiers(<<>>, _Av, Al) -> + lists:reverse(Al); +dec_subidentifiers(<<1:1,H:7,T/binary>>, Av, Al) -> + dec_subidentifiers(T, Av bsl 7 + H, Al); +dec_subidentifiers(<>, Av, Al) -> + dec_subidentifiers(T, 0, [Av bsl 7 + H | Al]). + +decode_object_identifier(Tlv, Tags) -> + Val = match_tags(Tlv, Tags), + [AddedObjVal | ObjVals] = dec_subidentifiers(Val, 0, []), + {Val1, Val2} = + if + AddedObjVal < 40 -> + {0, AddedObjVal}; + AddedObjVal < 80 -> + {1, AddedObjVal - 40}; + true -> + {2, AddedObjVal - 80} + end, + list_to_tuple([Val1, Val2 | ObjVals]). + +e_object_identifier({'OBJECT IDENTIFIER', V}) -> + e_object_identifier(V); +e_object_identifier(V) when is_tuple(V) -> + e_object_identifier(tuple_to_list(V)); +e_object_identifier([E1, E2 | Tail]) -> + Head = 40 * E1 + E2, + {H, Lh} = mk_object_val(Head), + {R, Lr} = lists:mapfoldl(fun enc_obj_id_tail/2, 0, Tail), + {[H | R], Lh + Lr}. + +enc_obj_id_tail(H, Len) -> + {B, L} = mk_object_val(H), + {B, Len + L}. + +encode_length(L) when L =< 127 -> + {[L], 1}; +encode_length(L) -> + Oct = minimum_octets(L), + Len = length(Oct), + if + Len =< 126 -> + {[128 bor Len | Oct], Len + 1}; + true -> + exit({error, {asn1, too_long_length_oct, Len}}) + end. + +encode_object_identifier(Val, TagIn) -> + encode_tags(TagIn, e_object_identifier(Val)). + +encode_tags(TagIn, {BytesSoFar, LenSoFar}) -> + encode_tags(TagIn, BytesSoFar, LenSoFar). + +encode_tags([Tag | Trest], BytesSoFar, LenSoFar) -> + {Bytes2, L2} = encode_length(LenSoFar), + encode_tags(Trest, + [Tag, Bytes2 | BytesSoFar], + LenSoFar + byte_size(Tag) + L2); +encode_tags([], BytesSoFar, LenSoFar) -> + {BytesSoFar, LenSoFar}. + +match_tags({T, V}, [T]) -> + V; +match_tags({T, V}, [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, V}], [T | Tt]) -> + match_tags(V, Tt); +match_tags([{T, _V} | _] = Vlist, [T]) -> + Vlist; +match_tags(Tlv, []) -> + Tlv; +match_tags({Tag, _V} = Tlv, [T | _Tt]) -> + exit({error, {asn1, {wrong_tag, {{expected, T}, {got, Tag, Tlv}}}}}). + +minimum_octets(0, Acc) -> + Acc; +minimum_octets(Val, Acc) -> + minimum_octets(Val bsr 8, [Val band 255 | Acc]). + +minimum_octets(Val) -> + minimum_octets(Val, []). + +mk_object_val(0, Ack, Len) -> + {Ack, Len}; +mk_object_val(Val, Ack, Len) -> + mk_object_val(Val bsr 7, [Val band 127 bor 128 | Ack], Len + 1). + +mk_object_val(Val) when Val =< 127 -> + {[255 band Val], 1}; +mk_object_val(Val) -> + mk_object_val(Val bsr 7, [Val band 127], 1). diff --git a/src/IPMSObjectIdentifiers.hrl b/src/IPMSObjectIdentifiers.hrl new file mode 100644 index 0000000..c6ed125 --- /dev/null +++ b/src/IPMSObjectIdentifiers.hrl @@ -0,0 +1,240 @@ +%% Generated by the Erlang ASN.1 compiler. Version: 5.1 +%% Purpose: Erlang record definitions for each named and unnamed +%% SEQUENCE and SET, and macro definitions for each value +%% definition in module IPMSObjectIdentifiers. + +-ifndef(_IPMSOBJECTIDENTIFIERS_HRL_). +-define(_IPMSOBJECTIDENTIFIERS_HRL_, true). + +-define('id-ipms', {2,6,1}). +-define('id-mod', {2,6,1,0}). +-define('id-ot', {2,6,1,1}). +-define('id-pt', {2,6,1,2}). +-define('id-et', {2,6,1,4}). +-define('id-hex', {2,6,1,5}). +-define('id-sat', {2,6,1,6}). +-define('id-hat', {2,6,1,7}). +-define('id-bat', {2,6,1,8}). +-define('id-nat', {2,6,1,9}). +-define('id-mct', {2,6,1,10}). +-define('id-ep', {2,6,1,11}). +-define('id-eit', {2,6,1,12}). +-define('id-cat', {2,6,1,13}). +-define('id-mr', {2,6,1,14}). +-define('id-aa', {2,6,1,15}). +-define('id-aae', {2,6,1,16}). +-define('id-mst', {2,6,1,17}). +-define('id-sec', {2,6,1,18}). +-define('id-on', {2,6,1,19}). +-define('id-rex', {2,6,1,20}). +-define('id-mod-object-identifiers', {2,6,1,0,0}). +-define('id-mod-functional-objects', {2,6,1,0,1}). +-define('id-mod-information-objects', {2,6,1,0,2}). +-define('id-mod-abstract-service', {2,6,1,0,3}). +-define('id-mod-heading-extensions', {2,6,1,0,6}). +-define('id-mod-extended-body-part-types', {2,6,1,0,7}). +-define('id-mod-message-store-attributes', {2,6,1,0,8}). +-define('id-mod-file-transfer-body-part-type', {2,6,1,0,9}). +-define('id-mod-upper-bounds', {2,6,1,0,10}). +-define('id-mod-extended-voice-body-part-type', {2,6,1,0,11}). +-define('id-mod-forwarded-report-body-part-type', {2,6,1,0,12}). +-define('id-mod-auto-actions', {2,6,1,0,13}). +-define('id-mod-ipm-security-extensions', {2,6,1,0,14}). +-define('id-mod-forwarded-content-body-part-type', {2,6,1,0,15}). +-define('id-mod-pkcs7-body-part-type', {2,6,1,0,16}). +-define('id-ot-ipms-user', {2,6,1,1,1}). +-define('id-ot-ipms', {2,6,1,1,2}). +-define('id-pt-origination', {2,6,1,2,0}). +-define('id-pt-reception', {2,6,1,2,1}). +-define('id-pt-management', {2,6,1,2,2}). +-define('id-et-ia5-text', {2,6,1,4,0}). +-define('id-et-g3-facsimile', {2,6,1,4,2}). +-define('id-et-g4-class1', {2,6,1,4,3}). +-define('id-et-teletex', {2,6,1,4,4}). +-define('id-et-videotex', {2,6,1,4,5}). +-define('id-et-encrypted', {2,6,1,4,6}). +-define('id-et-message', {2,6,1,4,7}). +-define('id-et-mixed-mode', {2,6,1,4,8}). +-define('id-et-bilaterally-defined', {2,6,1,4,9}). +-define('id-et-nationally-defined', {2,6,1,4,10}). +-define('id-et-general-text', {2,6,1,4,11}). +-define('id-et-file-transfer', {2,6,1,4,12}). +-define('id-et-report', {2,6,1,4,14}). +-define('id-et-notification', {2,6,1,4,15}). +-define('id-et-voice', {2,6,1,4,16}). +-define('id-et-content', {2,6,1,4,17}). +-define('id-et-pkcs7', {2,6,1,4,18}). +-define('id-hex-incomplete-copy', {2,6,1,5,0}). +-define('id-hex-languages', {2,6,1,5,1}). +-define('id-hex-auto-submitted', {2,6,1,5,2}). +-define('id-hex-body-part-signatures', {2,6,1,5,3}). +-define('id-hex-ipm-security-label', {2,6,1,5,4}). +-define('id-hex-authorization-time', {2,6,1,5,5}). +-define('id-hex-circulation-list-recipients', {2,6,1,5,6}). +-define('id-hex-distribution-codes', {2,6,1,5,7}). +-define('id-hex-extended-subject', {2,6,1,5,8}). +-define('id-hex-information-category', {2,6,1,5,9}). +-define('id-hex-manual-handling-instructions', {2,6,1,5,10}). +-define('id-hex-originators-reference', {2,6,1,5,11}). +-define('id-hex-precedence-policy-id', {2,6,1,5,12}). +-define('id-sat-ipm-entry-type', {2,6,1,6,0}). +-define('id-sat-ipm-synopsis', {2,6,1,6,1}). +-define('id-sat-body-parts-summary', {2,6,1,6,2}). +-define('id-sat-ipm-auto-discarded', {2,6,1,6,3}). +-define('id-hat-heading', {2,6,1,7,0}). +-define('id-hat-this-ipm', {2,6,1,7,1}). +-define('id-hat-originator', {2,6,1,7,2}). +-define('id-hat-replied-to-IPM', {2,6,1,7,3}). +-define('id-hat-subject', {2,6,1,7,4}). +-define('id-hat-expiry-time', {2,6,1,7,5}). +-define('id-hat-reply-time', {2,6,1,7,6}). +-define('id-hat-importance', {2,6,1,7,7}). +-define('id-hat-sensitivity', {2,6,1,7,8}). +-define('id-hat-auto-forwarded', {2,6,1,7,9}). +-define('id-hat-authorizing-users', {2,6,1,7,10}). +-define('id-hat-primary-recipients', {2,6,1,7,11}). +-define('id-hat-copy-recipients', {2,6,1,7,12}). +-define('id-hat-blind-copy-recipients', {2,6,1,7,13}). +-define('id-hat-obsoleted-IPMs', {2,6,1,7,14}). +-define('id-hat-related-IPMs', {2,6,1,7,15}). +-define('id-hat-reply-recipients', {2,6,1,7,16}). +-define('id-hat-incomplete-copy', {2,6,1,7,17}). +-define('id-hat-languages', {2,6,1,7,18}). +-define('id-hat-rn-requestors', {2,6,1,7,19}). +-define('id-hat-nrn-requestors', {2,6,1,7,20}). +-define('id-hat-reply-requestors', {2,6,1,7,21}). +-define('id-hat-auto-submitted', {2,6,1,7,22}). +-define('id-hat-body-part-signatures', {2,6,1,7,23}). +-define('id-hat-ipm-security-label', {2,6,1,7,24}). +-define('id-hat-body-part-security-label', {2,6,1,7,25}). +-define('id-hat-body-part-encryption-token', {2,6,1,7,26}). +-define('id-hat-authorization-time', {2,6,1,7,27}). +-define('id-hat-circulation-list-recipients', {2,6,1,7,28}). +-define('id-hat-distribution-codes', {2,6,1,7,29}). +-define('id-hat-extended-subject', {2,6,1,7,30}). +-define('id-hat-information-category', {2,6,1,7,31}). +-define('id-hat-manual-handling-instructions', {2,6,1,7,32}). +-define('id-hat-originators-reference', {2,6,1,7,33}). +-define('id-hat-precedence-policy-id', {2,6,1,7,34}). +-define('id-hat-forwarded-content-token', {2,6,1,7,35}). +-define('id-hat-forwarding-token', {2,6,1,7,36}). +-define('id-hat-precedence', {2,6,1,7,37}). +-define('id-hat-body-part-signature-verification-status', {2,6,1,7,38}). +-define('id-bat-body', {2,6,1,8,0}). +-define('id-bat-ia5-text-body-parts', {2,6,1,8,1}). +-define('id-bat-g3-facsimile-body-parts', {2,6,1,8,3}). +-define('id-bat-g4-class1-body-parts', {2,6,1,8,4}). +-define('id-bat-teletex-body-parts', {2,6,1,8,5}). +-define('id-bat-videotex-body-parts', {2,6,1,8,6}). +-define('id-bat-encrypted-body-parts', {2,6,1,8,7}). +-define('id-bat-message-body-parts', {2,6,1,8,8}). +-define('id-bat-mixed-mode-body-parts', {2,6,1,8,9}). +-define('id-bat-bilaterally-defined-body-parts', {2,6,1,8,10}). +-define('id-bat-nationally-defined-body-parts', {2,6,1,8,11}). +-define('id-bat-extended-body-part-types', {2,6,1,8,12}). +-define('id-bat-ia5-text-parameters', {2,6,1,8,13}). +-define('id-bat-g3-facsimile-parameters', {2,6,1,8,15}). +-define('id-bat-teletex-parameters', {2,6,1,8,16}). +-define('id-bat-videotex-parameters', {2,6,1,8,17}). +-define('id-bat-encrypted-parameters', {2,6,1,8,18}). +-define('id-bat-message-parameters', {2,6,1,8,19}). +-define('id-bat-ia5-text-data', {2,6,1,8,20}). +-define('id-bat-g3-facsimile-data', {2,6,1,8,22}). +-define('id-bat-teletex-data', {2,6,1,8,23}). +-define('id-bat-videotex-data', {2,6,1,8,24}). +-define('id-bat-encrypted-data', {2,6,1,8,25}). +-define('id-bat-message-data', {2,6,1,8,26}). +-define('id-nat-subject-ipm', {2,6,1,9,0}). +-define('id-nat-ipn-originator', {2,6,1,9,1}). +-define('id-nat-ipm-intended-recipient', {2,6,1,9,2}). +-define('id-nat-conversion-eits', {2,6,1,9,3}). +-define('id-nat-non-receipt-reason', {2,6,1,9,4}). +-define('id-nat-discard-reason', {2,6,1,9,5}). +-define('id-nat-auto-forward-comment', {2,6,1,9,6}). +-define('id-nat-returned-ipm', {2,6,1,9,7}). +-define('id-nat-receipt-time', {2,6,1,9,8}). +-define('id-nat-acknowledgment-mode', {2,6,1,9,9}). +-define('id-nat-suppl-receipt-info', {2,6,1,9,10}). +-define('id-nat-notification-extensions', {2,6,1,9,11}). +-define('id-nat-nrn-extensions', {2,6,1,9,12}). +-define('id-nat-rn-extensions', {2,6,1,9,13}). +-define('id-nat-other-notification-type-fields', {2,6,1,9,14}). +-define('id-cat-correlated-delivered-ipns', {2,6,1,13,0}). +-define('id-cat-correlated-delivered-replies', {2,6,1,13,1}). +-define('id-cat-delivered-ipn-summary', {2,6,1,13,2}). +-define('id-cat-delivered-replies-summary', {2,6,1,13,3}). +-define('id-cat-forwarded-ipms', {2,6,1,13,4}). +-define('id-cat-forwarding-ipms', {2,6,1,13,5}). +-define('id-cat-ipm-recipients', {2,6,1,13,6}). +-define('id-cat-obsoleted-ipms', {2,6,1,13,7}). +-define('id-cat-obsoleting-ipms', {2,6,1,13,8}). +-define('id-cat-related-ipms', {2,6,1,13,9}). +-define('id-cat-relating-ipms', {2,6,1,13,10}). +-define('id-cat-replied-to-ipm', {2,6,1,13,11}). +-define('id-cat-replying-ipms', {2,6,1,13,12}). +-define('id-cat-revised-reply-time', {2,6,1,13,13}). +-define('id-cat-submitted-ipn-status', {2,6,1,13,14}). +-define('id-cat-submitted-ipns', {2,6,1,13,15}). +-define('id-cat-submitted-reply-status', {2,6,1,13,16}). +-define('id-cat-subject-ipm', {2,6,1,13,17}). +-define('id-cat-recipient-category', {2,6,1,13,18}). +-define('id-mct-p2-1984', {2,6,1,10,0}). +-define('id-mct-p2-1988', {2,6,1,10,1}). +-define('id-ep-ia5-text', {2,6,1,11,0}). +-define('id-ep-g3-facsimile', {2,6,1,11,2}). +-define('id-ep-teletex', {2,6,1,11,4}). +-define('id-ep-videotex', {2,6,1,11,5}). +-define('id-ep-encrypted', {2,6,1,11,6}). +-define('id-ep-message', {2,6,1,11,7}). +-define('id-ep-general-text', {2,6,1,11,11}). +-define('id-ep-file-transfer', {2,6,1,11,12}). +-define('id-ep-notification', {2,6,1,11,15}). +-define('id-ep-voice', {2,6,1,11,16}). +-define('id-ep-content', {2,6,1,11,17}). +-define('id-eit-file-transfer', {2,6,1,12,0}). +-define('id-eit-voice', {2,6,1,12,1}). +-define('id-voice-11khz-sample', {2,6,1,12,1,0}). +-define('id-voice-22khz-sample', {2,6,1,12,1,1}). +-define('id-voice-cd-quality', {2,6,1,12,1,2}). +-define('id-voice-g711-mu-law', {2,6,1,12,1,3}). +-define('id-voice-g726-32k-adpcm', {2,6,1,12,1,4}). +-define('id-voice-g728-16k-ld-celp', {2,6,1,12,1,5}). +-define('id-mr-ipm-identifier', {2,6,1,14,0}). +-define('id-mr-or-descriptor', {2,6,1,14,1}). +-define('id-mr-or-descriptor-elements', {2,6,1,14,2}). +-define('id-mr-or-descriptor-substring-elements', {2,6,1,14,3}). +-define('id-mr-recipient-specifier', {2,6,1,14,4}). +-define('id-mr-recipient-specifier-elements', {2,6,1,14,5}). +-define('id-mr-recipient-specifier-substring-elements', {2,6,1,14,6}). +-define('id-mr-ipm-location', {2,6,1,14,7}). +-define('id-mr-or-descriptor-single-element', {2,6,1,14,8}). +-define('id-mr-recipient-specifier-single-element', {2,6,1,14,9}). +-define('id-mr-circulation-member', {2,6,1,14,10}). +-define('id-mr-circulation-member-elements', {2,6,1,14,11}). +-define('id-mr-circulation-member-substring-elements', {2,6,1,14,12}). +-define('id-mr-circulation-member-single-element', {2,6,1,14,13}). +-define('id-mr-circulation-member-checkmark', {2,6,1,14,14}). +-define('id-mr-distribution-code', {2,6,1,14,15}). +-define('id-mr-information-category', {2,6,1,14,16}). +-define('id-aa-ipm-auto-acknowledgement', {2,6,1,15,0}). +-define('id-aa-ipm-auto-correlate', {2,6,1,15,1}). +-define('id-aa-ipm-auto-discard', {2,6,1,15,2}). +-define('id-aa-ipm-auto-advise', {2,6,1,15,3}). +-define('id-aae-auto-discard-error', {2,6,1,16,0}). +-define('id-aae-auto-forwarding-loop', {2,6,1,16,1}). +-define('id-aae-duplicate-ipn', {2,6,1,16,2}). +-define('id-mst-invalid-assembly-instructions', {2,6,1,17,0}). +-define('id-mst-invalid-ipn', {2,6,1,17,1}). +-define('id-mst-assembly-instructions', {2,6,1,17,2}). +-define('id-mst-suspend-auto-acknowledgement', {2,6,1,17,3}). +-define('id-mst-prevent-nrn-generation', {2,6,1,17,4}). +-define('id-mst-originator-body-part-encryption-token', {2,6,1,17,5}). +-define('id-mst-originator-forwarded-content-token', {2,6,1,17,6}). +-define('id-mst-assembly-capability', {2,6,1,17,7}). +-define('id-sec-ipm-security-request', {2,6,1,18,0}). +-define('id-sec-security-common-fields', {2,6,1,18,1}). +-define('id-on-absence-advice', {2,6,1,19,0}). +-define('id-on-change-of-address-advice', {2,6,1,19,1}). +-define('id-rex-circulation-list-indicator', {2,6,1,20,0}). +-define('id-rex-precedence', {2,6,1,20,1}). +-endif. %% _IPMSOBJECTIDENTIFIERS_HRL_ diff --git a/src/mail420.app.src b/src/mail420.app.src new file mode 100644 index 0000000..8296f72 --- /dev/null +++ b/src/mail420.app.src @@ -0,0 +1,9 @@ +{application, mail, + [ + {description, "MAIL Protocol"}, + {vsn, "5.11.0"}, + {registered, []}, + {applications, [public_key,asn1,kernel,stdlib,mnesia,ranch,syntax_tools,compiler,xmerl,kvs,syn,n2o]}, + {mod, { chat, []}}, + {env, []} + ]}.