CanonicalEncodingRulesElement.embeddedPresentationDataValue

Encodes an $(MONO EmbeddedPDV), which is a constructed data type, defined in the https://www.itu.int, International Telecommunications Union's https://www.itu.int/rec/T-REC-X.680/en, X.680.

The specification defines $(MONO EmbeddedPDV) as:

EmbeddedPDV ::= [UNIVERSAL 11] IMPLICIT SEQUENCE {
                identification CHOICE {
                    syntaxes SEQUENCE {
                        abstract OBJECT IDENTIFIER,
                        transfer OBJECT IDENTIFIER },
                    syntax OBJECT IDENTIFIER,
                    presentation-context-id INTEGER,
                    context-negotiation SEQUENCE {
                        presentation-context-id INTEGER,
                        transfer-syntax OBJECT IDENTIFIER },
                    transfer-syntax OBJECT IDENTIFIER,
                    fixed NULL },
                data-value-descriptor ObjectDescriptor OPTIONAL,
                data-value OCTET STRING }
            (WITH COMPONENTS { ... , data-value-descriptor ABSENT })

This assumes $(MONO AUTOMATIC TAGS), so all of the $(MONO identification) choices will be $(MONO CONTEXT-SPECIFIC) and numbered from 0 to 5.

The following additional constraints are applied to the abstract syntax when using Canonical Encoding Rules or Distinguished Encoding Rules, which are also defined in the https://www.itu.int/en/pages/default.aspx, International Telecommunications Union's http://www.itu.int/rec/T-REC-X.690/en, X.690 - ASN.1 encoding rules:

EmbeddedPDV ( WITH COMPONENTS {
                ... ,
                identification ( WITH COMPONENTS {
                    ... ,
                    presentation-context-id ABSENT,
                    context-negotiation ABSENT } ) } )

The stated purpose of the constraints shown above is to restrict the use of the $(MONO presentation-context-id), either by itself or within the context-negotiation, which makes the following the effective abstract syntax of $(MONO EmbeddedPDV) when using Canonical Encoding Rules or Distinguished Encoding Rules:

EmbeddedPDV ::= [UNIVERSAL 11] IMPLICIT SEQUENCE {
                identification CHOICE {
                    syntaxes SEQUENCE {
                        abstract OBJECT IDENTIFIER,
                        transfer OBJECT IDENTIFIER },
                    syntax OBJECT IDENTIFIER,
                    presentation-context-id INTEGER,
                    context-negotiation SEQUENCE {
                        presentation-context-id INTEGER,
                        transfer-syntax OBJECT IDENTIFIER },
                    transfer-syntax OBJECT IDENTIFIER,
                    fixed NULL },
                data-value-descriptor ObjectDescriptor OPTIONAL,
                data-value OCTET STRING }
                    ( WITH COMPONENTS {
                        ... ,
                        identification ( WITH COMPONENTS {
                            ... ,
                            presentation-context-id ABSENT,
                            context-negotiation ABSENT } ) } )

With the constraints applied, the abstract syntax for $(MONO EmbeddedPDV)s encoded using Canonical Encoding Rules or Distinguished Encoding Rules becomes:

EmbeddedPDV ::= [UNIVERSAL 11] IMPLICIT SEQUENCE {
                identification CHOICE {
                    syntaxes SEQUENCE {
                        abstract OBJECT IDENTIFIER,
                        transfer OBJECT IDENTIFIER },
                    syntax OBJECT IDENTIFIER,
                    transfer-syntax OBJECT IDENTIFIER,
                    fixed NULL },
                data-value-descriptor ObjectDescriptor OPTIONAL,
                data-value OCTET STRING }

If the supplied $(MONO identification) for the EmbeddedPDV is a $(MONO presentation-context-id) or a $(MONO context-negotiation), no exception will be thrown; the $(MONO identification) will be set to $(MONO fixed) silently.

  1. EmbeddedPDV embeddedPresentationDataValue [@property getter]
  2. EmbeddedPDV embeddedPresentationDataValue [@property setter]
    class CanonicalEncodingRulesElement
    override @property @system
    void
    embeddedPresentationDataValue
    (
    in EmbeddedPDV value
    )
    out { assert (this.value.length > 0u); }

Throws

Meta