Intersection Mapping Procedure

This procedure only applies when invoked by another procedure.

For an Intersection that is the operand of a Concatenation, this procedure is only invoked if the Intersection does not have a length determinant. This, along with the requirement (see the Analysis procedure) that any length determinant immediately precede the Intersection means that this procedure is never invoked for an Intersection that has a length determinant.

This procedure will always produce a SEQUENCE type. This was motivated by the internal working of our code generation tool relative to length-constrained content. It may not always be the most natural mapping.

  1. Invoke the Intersection Analysis procedure on the Intersection.

  2. Invoke the CSN1String mapping procedure on the constrained-operand of the Intersection.

  3. If the previous step produces an ASN.1 SEQUENCE type, this procedure produces the same SEQUENCE type.

    1. If the SEQUENCE's encoding was specified as being padded to a byte-boundary, this is changed to being padded to the fixed length specified by the constraining-operand, using the same bits for padding.

  4. Otherwise, if the procedure produced some other ASN.1 type, or an ASN.1 component, that type or component is wrapped into a SEQUENCE type, which will be the type produced by this procedure. The name of the component added to the SEQUENCE will be derived from the ASN.1 type or ASN.1 component in the same way as is done when mapping a Concatenation.

  5. Otherwise, this Intersection is not supported.