(* $Workfile:   p3.tpl  $ $Revision:   3.13  $ *)
(* P3.TPL *)
(*****************************************************************************)
(* ASN.1 P3 DATA-TYPE TEMPLATE                                               *)
(*                                                                           *)
(* - Defines:                                                                *)
(*    - Message Submission Operation                                         *)
(*    - Probe Submission Operation                                           *)
(*    - Message Delivery Operation                                           *)
(*    - Report Delivery Operation                                            *)
(*                                                                           *)
(* Known simplifications:                                                    *)
(*   - setting of 'S' for potential constructor octet primitives             *)
(*   - setting of child nodes representing Tokens                            *)
(*   - setting of child nodes representing Certificates                      *)
(*   - setting of child nodes representing Algorithm Identifiers             *)
(*****************************************************************************)

(*****************************************************************************)
(* MESSAGE SUBMISSION OPERATION ::= 3                                        *)
(*****************************************************************************)

(* Message Submission Operation Arguments                                    *)


MessageSubmission          LABEL     = 3msub
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <3msev, U 17 C,M,0> E,
                                         <Mcont, U  4 S,M,2147483647> }

MessageSubmissionEnvelope  LABEL     = 3msev
                           STRUCTURE = SET
                           CHILDREN  = { <Morig, A  0 C,M,0> ,
                                         <Meits, A  5 C,O,0> ,
                                         <Mcntt, U  0 P,M,0> ,
                                         <Mcnti, A 10 P,O,16>,
                                         <Mprio, A  7 P,D,0> ,
                                         <Mpmsg, A  8 P,D,0> ,
                                         <Mddlv, C  0 P,O,0> ,
                                         <3pmxf, C  2 C,D,0> ,
                                         <3srcp, C  1 C,M,0>  }

PerMessageExtensionFields  LABEL     = 3pmxf
                           STRUCTURE = SET OF
                           LIMIT     = 12
                           CHILDREN  = { <3pmxt, U 16 C,O,0> }

PerMessageExtensions       LABEL     = 3pmxt
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cxtyp, U  0 P,M,0>*,
                                         <Ccrtc, C  1 P,D,2> ,
                                         <3pmxv, C  2 C,D,0>  }

PerMessageExtensionValues  LABEL     = 3pmxv
                           STRUCTURE = ANY DEFINED BY
                           TAG       = (C 2 C)
                           DEFGLABEL = Cxtyp
                           REGISTER  = { <01,Xrrpb, U 10 P,0> ,
                                         <03,Xdlxp, U 10 P,0> ,
                                         <04,Xcwlp, U 10 P,0> ,
                                         <05,Xldvt, U 23 P,0> ,
                                         <0D,Xoret, U 16 C,0> ,
                                         <0F,Xoctf, U  0 P,0>E,
                                         <11,Xccal, U 16 C,0> ,
                                         <13,Xochk, U 16 C,0> ,
                                         <14,Xmslb, U 17 C,0> ,
                                         <15,Xpsbr, U 10 P,0> ,
                                         <17,Xcntc, U  0 P,0> ,
                                         <24,Xfwdr, U  2 P,0>  ,
                                         <P,Cpext, U  0 P,0> }

SEQ OF PerRecipientInfo    LABEL     = 3srcp
                           STRUCTURE = SEQUENCE OF
                           LIMIT     = 32767
                           CHILDREN  = { <3rcpf, U 17 C,O,0> }

PerRecipientFields         LABEL     = 3rcpf
                           STRUCTURE = SET
                           CHILDREN  = { <Mrcpn, A  0 C,M,0>,
                                         <Morrq, C  0 P,M,0>,
                                         <Mexcv, C  1 P,O,0>,
                                         <3rnum, U  2 P,O,0>,
                                         <3mrxf, C  2 C,D,0> }

PerRecipientExtensionField LABEL     = 3mrxf
                           STRUCTURE = SET OF
                           LIMIT     = 12
                           CHILDREN  = { <3mrxt, U 16 C,O,0> }

PerRecipientExtensions     LABEL     = 3mrxt
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cxtyp, U  0 P,M,0>*,
                                         <Ccrtc, C  1 P,D,2> ,
                                         <3mrxv, C  2 C,D,0>  }

PerRecipientExtensionValue LABEL     = 3mrxv
                           STRUCTURE = ANY DEFINED BY
                           TAG       = (C 2 C)
                           DEFGLABEL = Cxtyp
                           REGISTER  = { <02,Xoalt, A  0 C,0> ,
                                         <06,Xrdms, U 16 C,0> ,
                                         <07,Xpfwp, U 10 P,0> ,
                                         <08,Xpfwa, U 10 P,0> ,
                                         <09,Xpdlm, U  3 P,0> ,
                                         <0A,Xrmty, U  2 P,0> ,
                                         <0B,Xrnad, U 20 P,0> ,
                                         <0C,Xprat, U  6 P,0> ,
                                         <0E,Xpdrr, U  2 P,0> ,
                                         <10,Xmtok, U 16 C,0> ,
                                         <12,Xcick, U 16 C,0> ,
                                         <16,Xpdvr, U 10 P,0> ,
                                         <P,Cpext, U  0 P,0> }

(* Message Submission Operation Result                                       *)

MessageSubmissionResult    LABEL     = 3msrs
                           STRUCTURE = SET
                           CHILDREN  = { <Mmtid, A  4 C,M,0> ,
                                         <3mstm, C  0 P,M,0> ,
                                         <Mcnti, A 10 P,O,16>,
                                         <3sxtf, C  1 C,D,0>  }

MessageSubmissionTime      LABEL     = 3mstm
                           STRUCTURE = UTC TIME

SubResultExtensionFields   LABEL     = 3sxtf
                           STRUCTURE = SET OF
                           LIMIT     = 2
                           CHILDREN  = { <3sxts, U 16 C,O,0> }

SubmissionResultExtensions LABEL     = 3sxts
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cxtyp, U  0 P,M,0>*,
                                         <Ccrtc, C  1 P,D,2> ,
                                         <3sxtv, C  2 C,D,0>  }

SubResultExtensionValues   LABEL     = 3sxtv
                           STRUCTURE = ANY DEFINED BY
                           TAG       = (C 2 C)
                           DEFGLABEL = Cxtyp
                           REGISTER  = { <22,Xomct, U  0 P,0>,
                                         <23,Xpsub, U  0 P,0>,
                                         <P,Cpext, U  0 P,0> }

(* SDI P3 Operation Error Parameters                                         *)

ImproperlySpecifiedRcpts   LABEL     = 3isrp
                           STRUCTURE = SEQUENCE OF
                           LIMIT     = 32767
                           CHILDREN  = { <Dornm, A  0 C,O,0> }

SecurityProblem            LABEL     = 3spro
                           STRUCTURE = INTEGER


(*****************************************************************************)
(* PROBE SUBMISSION OPERATION ::= 4                                          *)
(*****************************************************************************)

(* Probe Submission Operation Arguments                                      *)

ProbeSubmissionEnvelope    LABEL     = 3penv
                           STRUCTURE = SET
                           CHILDREN  = { <Morig, A  0 C,M,0> ,
                                         <Meits, A  5 C,O,0> ,
                                         <Mcntt, U  0 P,M,0> ,
                                         <Mcnti, A 10 P,O,16>,
                                         <Mcntl, C  0 P,O,4> ,
                                         <Mpmsg, A  8 P,D,0> ,
                                         <3ppxf, C  2 C,D,0> ,
                                         <3prcp, C  3 C,M,0>  }

PerProbeExtensionFields    LABEL     = 3ppxf
                           STRUCTURE = SET OF
                           LIMIT     = 7
                           CHILDREN  = { <3ppxt, U 16 C,O,0> }

PerProbeExtensions         LABEL     = 3ppxt
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cxtyp, U  0 P,M,0>*,
                                         <Ccrtc, C  1 P,D,2> ,
                                         <3ppxv, C  2 C,D,0>  }

PerProbeExtensionValues    LABEL     = 3ppxv
                           STRUCTURE = ANY DEFINED BY
                           TAG       = (C 2 C)
                           DEFGLABEL = Cxtyp
                           REGISTER  = { <01,Xrrpb, U 10 P,0> ,
                                         <03,Xdlxp, U 10 P,0> ,
                                         <04,Xcwlp, U 10 P,0> ,
                                         <0F,Xoctf, U  0 P,0> ,
                                         <14,Xmslb, U 17 C,0> ,
                                         <17,Xcntc, U  0 P,0> ,
                                         <18,Xpoac, U 16 C,0> ,
                                         <P,Cpext, U  0 P,0> }

SEQ OF PerRcptProbeFields  LABEL     = 3prcp
                           STRUCTURE = SEQUENCE OF
                           LIMIT     = 32767
                           CHILDREN  = { <3prpf, U 17 C,O,0> }

PerRecipientProbeFields    LABEL     = 3prpf
                           STRUCTURE = SET
                           CHILDREN  = { <Mrcpn, A  0 C,M,0>,
                                         <Morrq, C  0 P,M,0>,
                                         <Mexcv, C  1 P,O,2>,
                                         <3rnum, U  2 P,O,0>,
                                         <3prxf, C  2 C,D,0> }

PerRcptProbeExtensionField LABEL     = 3prxf
                           STRUCTURE = SET OF
                           LIMIT     = 3
                           CHILDREN  = { <3prxt, U 16 C,O,0> }

PerRcptProbeExtensions     LABEL     = 3prxt
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cxtyp, U  0 P,M,0>*,
                                         <Ccrtc, C  1 P,D,2> ,
                                         <3prxv, C  2 C,D,0>  }

PerRcptProbeExtensionValue LABEL     = 3prxv
                           STRUCTURE = ANY DEFINED BY
                           TAG       = (C 2 C)
                           DEFGLABEL = Cxtyp
                           REGISTER  = { <02,Xoalt, A  0 C,0>,
                                         <06,Xrdms, U 16 C,0>,
                                         <0C,Xprat, U  6 P,0>,
                                         <P,Cpext, U  0 P,0> }

(* Probe Submission Operation Result                                         *)

ProbeSubmissionResult      LABEL     = 3psrs
                           STRUCTURE = SET
                           CHILDREN  = { <Mmtid, A  4 C,M,0> ,
                                         <3pstm, C  0 P,M,0> ,
                                         <Mcnti, A 10 P,O,16> }

ProbeSubmissionTime        LABEL     = 3pstm
                           STRUCTURE = UTC TIME

(*****************************************************************************)
(* CANCEL DEFERRED DELIVERY OPERATION ::= 7                                  *)
(*****************************************************************************)

(* Cancel Deferred Delivery Operation Arguments - MTSidentifier only         *)

(* Cancel Deferred Delivery Operation Results  - NONE                        *)

(* Cancel Deferred Delivery Operation Error Parameter - NONE                 *)



(*****************************************************************************)
(*                 MESSAGE DELIVERY OPERATION ::= 5                          *)
(* MULTI RECIPIENT MESSAGE DELIVERY OPERATION ::= 9                          *)
(*****************************************************************************)

(* Message Delivery Operation Arguments                                      *)


MessageDelivery            LABEL     = 3mdlv
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Mmtid, A  4 C,M,0> ,
                                         <3mdtm, U 23 P,M,0> ,
                                         <3omdf, U 17 C,D,0> ,
                                         <Mcont, U  4 S,M,2147483647> }

MultiRcptMessageDelivery   LABEL     = 3mrdl
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Mmtid, A  4 C,M,0> ,
                                         <3mdtm, U 23 P,M,0> ,
                                         <3momd, U 17 C,D,0> ,
                                         <Mcont, U  4 S,M,2147483647> }

MessageDeliveryTime        LABEL     = 3mdtm
                           STRUCTURE = UTC TIME

OtherMessageDeliveryFields LABEL     = 3omdf
                           STRUCTURE = SET
                           CHILDREN  = { <Mdcnt, U  0 P,M,0> ,
                                         <Morig, A  0 C,M,0> ,
                                         <Meits, C  1 C,O,0> ,
                                         <Mprio, A  7 P,D,0> ,
                                         <3dflg, C  2 P,O,16>,
                                         <3orcp, C  3 C,O,0> ,
                                         <3trcp, C  4 C,M,0> ,
                                         <Mircp, C  5 C,O,0> ,
                                         <Mceit, C  6 C,O,0> ,
                                         <3mstm, C  7 P,M,0> ,
                                         <Mcnti, C  8 P,O,16>,
                                         <3dxtf, C  9 C,D,0>  }

OtherMultiRcptMsgDlvFields LABEL     = 3momd
                           STRUCTURE = SET
                           CHILDREN  = { <Mdcnt, U  0 P,M,0> ,
                                         <Morig, A  0 C,M,0> ,
                                         <Meits, C  1 C,O,0> ,
                                         <Mprio, A  7 P,D,0> ,
                                         <3dflg, C  2 P,O,16>,
                                         <3orcp, C  3 C,O,0> ,
                                         <Mceit, C  6 C,O,0> ,
                                         <3mstm, C  7 P,M,0> ,
                                         <Mcnti, C  8 P,O,16>,
                                         <3mrcp, C 10 C,O,0>  }

DeliveryFlags              LABEL     = 3dflg
                           STRUCTURE = BITSTRING

OtherRecipientNames        LABEL     = 3orcp
                           STRUCTURE = SEQUENCE OF
                           LIMIT     = 32767
                           CHILDREN  = { <Dornm, A  0 C,O,0>  }

ThisRecipientName          LABEL     = 3trcp
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Dsatt, U 16 C,M,0> ,
                                         <Dddal, U 16 C,O,0> ,
                                         <Dxatl, U 17 C,O,0> ,
                                         <Ddirn, C  0 C,O,0>  }

SEQ OF MultipleRecipients  LABEL     = 3mrcp
                           STRUCTURE = SEQUENCE OF
                           LIMIT     = 32767
                           CHILDREN  = { <3mrcf, U 17 C,O,0>  }

MultipleRecipients         LABEL     = 3mrcf
                           STRUCTURE = SET
                           CHILDREN  = { <3trcp, C  4 C,M,0> ,
                                         <Mircp, C  5 C,O,0> ,
                                         <3dxtf, C  9 C,D,0>  }

MsgDeliveryExtensionFields LABEL     = 3dxtf
                           STRUCTURE = SET OF
                           LIMIT     = 21
                           CHILDREN  = { <3mdxt, U 16 C,O,0>  }

MessageDeliveryExtensions  LABEL     = 3mdxt
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cxtyp, U  0 P,M,0> *,
                                         <Ccrtc, C  1 P,D,2> ,
                                         <3mdxv, C  2 C,D,0>  }

MsgDlvyExtensionValues     LABEL     = 3mdxv
                           STRUCTURE = ANY DEFINED BY
                           TAG       = (C 2 C)
                           DEFGLABEL = Cxtyp
                           REGISTER  = { <04,Xcwlp, U 10 P,0> ,
                                         <06,Xrdms, U 16 C,0> ,
                                         <07,Xpfwp, U 10 P,0> ,
                                         <08,Xpfwa, U 10 P,0> ,
                                         <09,Xpdlm, U  3 P,0> ,
                                         <0A,Xrmty, U  2 P,0> ,
                                         <0B,Xrnad, U 20 P,0> ,
                                         <0C,Xprat, U  6 P,0> ,
                                         <0D,Xoret, U 16 C,0> ,
                                         <0E,Xpdrr, U  2 P,0> ,
                                         <0F,Xoctf, U  0 P,0> ,
                                         <10,Xmtok, U 16 C,0> ,
                                         <11,Xccal, U 16 C,0> ,
                                         <12,Xcick, U 16 C,0> ,
                                         <13,Xochk, U 16 C,0> ,
                                         <14,Xmslb, U 17 C,0> ,
                                         <16,Xpdvr, U 10 P,0> ,
                                         <19,Xrhis, U 16 C,0> ,
                                         <1A,Xdlhs, U 16 C,0> ,
                                         <25,Mtrac, A  9 C,0> ,
                                         <26,Xit8c, U 16 C,0> ,
                                         <P,Cpext, U  0 P,0> }

(* Message Delivery Operation Result                                         *)

MessageDeliveryResult      LABEL     = 3mdrs
                           STRUCTURE = SET
                           CHILDREN  = { <Xrctf, C  0 C,O,0> ,
                                         <Xpdlv, C  1 C,O,0>  }

(* Multi-Recipient Message Delivery Operation Result                         *)

MultiRcptMessageDelivRes   LABEL     = 3mrdr
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <3ldcs, C  0 C,O,0> ,
                                         <3lndr, C  1 C,O,0>  }


Local Delivery Confirms    LABEL     = 3ldcs
                           STRUCTURE = SEQUENCE OF
                           TAG       = (C 0 C)
                           CHILDREN  = { <3ldcf, U 16 C,O,0> }

LocalDeliveryConfirmation  LABEL     = 3ldcf
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <3rnum, U  2 P,M,0> ,
                                         <Xrctf, C  0 C,O,0> ,
                                         <Xpdlv, C  1 C,O,0>  }


Local NDR                  LABEL     = 3lndr
                           STRUCTURE = SEQUENCE OF
                           TAG       = (C 1 C)
                           CHILDREN  = { <3lprn, U 16 C,O,0> }

LocalPerRecipientNDR       LABEL     = 3lprn
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <3rnum, U  2 P,M,0> ,
                                         <3temp, U  1 P,M,0> ,
                                         <Mndrn, C  0 P,M,0> ,
                                         <Mnddg, C  1 P,O,0>  }

RecipientNumber            LABEL     = 3rnum
                           STRUCTURE = INTEGER

Temporary                  LABEL     = 3temp
                           STRUCTURE = BOOLEAN

(* NODES FOR MESSAGE STORE *)

OtherRcptNamesSeqOfAny     LABEL     = 3orcs
                           STRUCTURE = SEQUENCE OF
                           LIMIT     = 32767
                           CHILDREN  = { <3orca, U  0 P,O,0>  }

OtherRcpNameAny            LABEL     = 3orca
                           STRUCTURE = ANY
                           CHILDREN  = {}

(*****************************************************************************)
(* REPORT DELIVERY OPERATION ::= 6                                           *)
(*****************************************************************************)

ReportDelivery             LABEL     = 3rdlv
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Mmtid, A  4 C,M,0> D,
                                         <Mcnti, A 10 P,O,16>D,
                                         <Mrcnt, U  0 P,O,0> D,
                                         <Meits, A  5 C,O,0> D,
                                         <3rdxf, C  1 C,D,0> D,
                                         <3rrcp, U 16 C,M,0> D,
                                         <3rcon, C  0 S,O,2147483647> D }

ReportDeliveryContent      LABEL     = 3rcon
                           STRUCTURE = OCTET STRING

PerReportDeliveryExtFields LABEL     = 3rdxf
                           STRUCTURE = SET OF
                           LIMIT     = 6
                           CHILDREN  = { <3rdxt, U 16 C,O,0> }

PerReportDeliveryExtension LABEL     = 3rdxt
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cxtyp, U  0 P,M,0>*,
                                         <Ccrtc, C  1 P,D,2> ,
                                         <3rdxv, C  2 C,D,0>  }

PerReportDeliveryExtValue  LABEL     = 3rdxv
                           STRUCTURE = ANY DEFINED BY
                           TAG       = (C 2 C)
                           DEFGLABEL = Cxtyp
                           REGISTER  = { <14,Xmslb, U 17 C,0> ,
                                         <17,Xcntc, U  0 P,0> ,
                                         <1E,Xodlh, U 16 C,0> ,
                                         <1F,Xrdln, A  0 C,0> ,
                                         <20,Xrmta, U  0 P,0> ,
                                         <21,Xroac, U 16 C,0> ,
                                         <P,Cpext, U  0 P,0> }

SEQ OF PerReportRcptFields LABEL     = 3rrcp
                           STRUCTURE = SEQUENCE OF
                           LIMIT     = 32767
                           CHILDREN  = { <3rrpf, U 17 C,O,0> }

PerReportRecipientFields   LABEL     = 3rrpf
                           STRUCTURE = SET
                           CHILDREN  = { <Macnm, C  0 C,M,0> ,
                                         <Mrept, C  1 C,M,0> ,
                                         <Mceit, A  5 C,O,0> ,
                                         <Mircp, C  2 C,O,0> ,
                                         <Cptbl, C  3 P,O,256> ,
                                         <3rrxf, C  4 C,D,0> }

ReportRcptExtensionFields  LABEL     = 3rrxf
                           STRUCTURE = SET OF
                           LIMIT     = 4
                           CHILDREN  = { <3rrxt, U 16 C,O,0> }

ReportRecipientExtensions  LABEL     = 3rrxt
                           STRUCTURE = SEQUENCE
                           CHILDREN  = { <Cxtyp, U  0 P,M,0> *,
                                         <Ccrtc, C  1 P,D,2> ,
                                         <3rrxv, C  2 C,D,0>  }

ReportRcptExtensionValues  LABEL     = 3rrxv
                           STRUCTURE = ANY DEFINED BY
                           TAG       = (C 2 C)
                           DEFGLABEL = Cxtyp
                           REGISTER  = { <19,Xrhis, U 16 C,0> ,
                                         <1B,Xpfad, A  0 C,0> ,
                                         <1C,Xrctf, C  0 C,0> ,
                                         <1D,Xpdlv, C  1 C,0> ,
                                         <P,Cpext, U  0 P,0> }

!
