Skip to content
LibItsSecurity_Templates.ttcn3 29 KiB
Newer Older
garciay's avatar
garciay committed
/**
 *  @author   ETSI / STF481
 *  @version  $URL$
 *            $Id$
 *  @desc     Module containing templates for Security Protocol
 *
 */
module LibItsSecurity_Templates {
    
    // LibCommon
    import from LibCommon_BasicTypesAndValues {
        type 
garciay's avatar
garciay committed
            UInt8, 
            Int32        
    }
    import from LibCommon_DataStrings {
        type 
            Oct2        
garciay's avatar
garciay committed
    // LibItsSecurity
    import from LibItsSecurity_TypesAndValues all;
    import from LibItsSecurity_Pixits all;
garciay's avatar
garciay committed
    import from LibItsSecurity_TestSystem {
garciay's avatar
garciay committed
        type
garciay's avatar
garciay committed
            GnSecurityReq, GnSecurityInd
garciay's avatar
garciay committed
    }
garciay's avatar
garciay committed
    
    template (value) GnSecurityReq m_gnSecurityReq(
                                                   in template (value) SecuredMessage p_msgReq
    ) := {
        msgReq := p_msgReq
    } // End of template m_gnSecurityReq
    
    template (present) GnSecurityInd mw_gnSecurityInd(
                                                      in template (present) SecuredMessage p_msgInd
    ) := {
        msgInd := p_msgInd
    } // End of template mw_gnSecurityIng
garciay's avatar
garciay committed
    /**
     * @desc Constants declaration
     */
    group constants {
        
        /**
         * @desc Protocol version
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 5.1 SecuredMessage
         */
        const UInt8 c_protocol_version := 2;
        
        /**
         * @desc Security profile identifier for CAMs
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 7.1 Security profile for CAMs
         */
        const UInt8 c_security_profileCAMs := 1;
        
        /**
         * @desc Security profile identifier for DENMs
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 7.2 Security profile for DENMs
         */
        const UInt8 c_security_profileDENMs := 2;
        
        /**
         * @desc Security profile identifier for other messages
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 7.3 Generic security profile for other signed messages
         */
        const UInt8 c_security_profileOthers := 3;
garciay's avatar
garciay committed
        
        /**
         * @desc Certificate version
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 6.1 Certificate
garciay's avatar
garciay committed
         */
        const UInt8 c_certificate_version := 2;
        
    } // End of group constants
garciay's avatar
garciay committed
     * @desc Dummy send/receive templates for security headers
     * @see Draft ETSI TS 103 097 V1.1.6 Clause 4   Basic format elements
garciay's avatar
garciay committed
    group dummyBasicFormatElements {
        
garciay's avatar
garciay committed
         * @desc Dummy send templates for security headers
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2    Specification of basic format elements
garciay's avatar
garciay committed
        group dummyBasicFormatElementsSend {
            
garciay's avatar
garciay committed
            /**
             */
            group algorithms {
                
                /**
                 * @desc Generic send template for EccPoint description
                 * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.5   EccPoint
                 * @see Draft ETSI TS 103 097 V1.1.6 Table 2: Derivation of field sizes depending on the used algorithm
                 */
                template (value) EccPoint m_eccPoint_dummy := { 
garciay's avatar
garciay committed
                    algorithm       := e_ecdsa_nistp256_with_sha256,
garciay's avatar
garciay committed
                    field_size      := f_int2UInt8(1 + lengthof(PX_ECDSA_X_COORDINATE)), 
garciay's avatar
garciay committed
                    type_           := e_x_coordinate_only,
                    x               := PX_ECDSA_X_COORDINATE,
garciay's avatar
garciay committed
                    y               := omit
                } // End of template m_eccPoint_dummy
                
                /**
                 * @desc Generic send template for AES CCM description
                 * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.5   EccPoint
                 * @see Draft ETSI TS 103 097 V1.1.6 Table 2: Derivation of field sizes depending on the used algorithm
                 */
                template (value) EccPoint m_aesccm_dummy := { 
                    algorithm       := e_ecies_nistp256,
garciay's avatar
garciay committed
                    field_size      := f_int2UInt8(1 + lengthof(PX_AESCCM_X_COORDINATE)), 
                    type_           := e_uncompressed,
                    x               := PX_AESCCM_X_COORDINATE,
                    y               := {
                        y := PX_AESCCM_Y_COORDINATE // WARNING siseof(y) == siseof(x)
garciay's avatar
garciay committed
                    } // End of field y
                } // End of template m_aesccm_dummy
garciay's avatar
garciay committed
                				
                /**
                 * @desc Generic send template for AES CCM encryption parameters
                 * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.7	EncryptionParameters
                 */
				template (value) EncryptionParameters m_encryptionParameters_dummy := {
					symm_algorithm := e_aes_128_ccm,
					public_key := {
						nonce := PX_AESCCM_NONCE
					}
				} // End of template m_encryptionParameters_dummy
				
            } // End of group algorithms
garciay's avatar
garciay committed
            /**
garciay's avatar
garciay committed
             * @desc Generic send/receive templates for Signature description
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.5   EccPoint
             * @see Draft ETSI TS 103 097 V1.1.6 Table 2: Derivation of field sizes depending on the used algorithm
garciay's avatar
garciay committed
             */
            group signatures {
                
garciay's avatar
garciay committed
                template (value) Signature m_signature(
                                                       in template (value) EcdsaSignature p_ecdsaSignature
                ):= {
garciay's avatar
garciay committed
                    algorithm   := e_ecdsa_nistp256_with_sha256,
                    signature_  := {
garciay's avatar
garciay committed
                        ecdsa_signature := p_ecdsaSignature
garciay's avatar
garciay committed
                    } // End of field signature_
                } // End of template m_signature_ecdsa
garciay's avatar
garciay committed
                
                template (value) EcdsaSignature m_ecdsaSignature := {
                    algorithm   := e_ecdsa_nistp256_with_sha256,
                    field_size  := f_int2UInt8(1 + lengthof(PX_ECDSA_S)),
                    r           := m_eccPoint_dummy,
                    s           := PX_ECDSA_S
                } // End of template m_ecdsaSignature
                
garciay's avatar
garciay committed
            } // End of group signatures 
            
            group signerInfos {
                
                /**
                 * @desc Send template for self signed message
                 */
                template (value) SignerInfo m_SignerInfo_self := {
                    type_         := e_self,
                    signerInfo    := omit
                } // End of template m_SignerInfo_self
                
                /**
                 * @desc Send template for self signed message
                 */
                template (value) SignerInfo m_SignerInfo_digest(
                                                                in template (value) HashedId8 p_digest
                ) := {
                    type_         := e_certificate_digest_with_ecdsap256,
                    signerInfo    := {
                        digest := p_digest
                    } // End of field signerInfo 
                } // End of template m_SignerInfo_digest
                
                template (value) SignerInfo m_signerInfo_certificate(
                                                                     in template (value) Certificate p_certificate
                ) := {
                    type_         := e_certificate,
                    signerInfo    := {
                        certificate := p_certificate
                    } // End of field signerInfo 
                } // End of template m_signerInfo_certificate
                
                template (value) SignerInfo m_signerInfo_certificates(
                                                                      in template (value) CertificateChain p_certificates
                ) := {
                    type_         := e_certificate_chain,
                    signerInfo    := {
                        certificates := p_certificates
                    } // End of field signerInfo
                } // End of template m_signerInfo_certificates
                
            } // End of group signerInfos
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            /**
             * @desc Dummy send template for PublicKey/EccPoint
garciay's avatar
garciay committed
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4    PublicKey
garciay's avatar
garciay committed
             */
            template (value) PublicKey m_publicKey_eccPoint_dummy := {
                algorithm   := e_ecdsa_nistp256_with_sha256,
                public_key  := {
                    eccPoint := m_eccPoint_dummy
                } // End of field public_key
            } // End of template PublicKey
            
            /**
             * @desc Dummy send template for PublicKey/AES CCM
garciay's avatar
garciay committed
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4    PublicKey
             */
            template (value) PublicKey m_publicKey_aesccm_dummy := {
                algorithm   := e_ecies_nistp256,
                public_key  := {
                    aesCcm := {
                        supported_symm_alg  := e_aes_128_ccm,
                        eccPoint            := m_aesccm_dummy
                    } // End of field aesCcm
                } // End of field public_key
            } // End of template m_publicKey_aesccm_dummy
            
garciay's avatar
garciay committed
            /**
             * @desc Send template for Time64WithStandardDeviation
             * @param p_time        TODO
             * @param p_log_std_dev TODO
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.17    Time64WithStandardDeviation
             */
            template (value) Time64WithStandardDeviation m_time64WithStandardDeviation(
                                                                                       in template (value) Time64 p_time,
                                                                                       in template (value) UInt8 p_log_std_dev
            ) := {
                time        := p_time,
                log_std_dev := p_log_std_dev
            } // End of template m_time64WithStandardDeviation
            
            /**
             * @desc Send template for TwoDLocation
             * @param p_latitude    Latitude range from  900 000 000 to +900 000 000
             * @param p_longitude   Longitude range from  1 800 000 000 to +1 800 000 000
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.19    TwoDLocation
             */
            template (value) TwoDLocation m_twoDLocation(
                                                         in template (value) Int32 p_latitude,
                                                         in template (value) Int32 p_longitude
            ) := {
                latitude    := p_latitude,
                longitude   := p_longitude
            } // End of template m_twoDLocation
            
            /**
             * @desc Send template for ThreeDLocation
             * @param p_latitude    Latitude range from  900 000 000 to +900 000 000
             * @param p_longitude   Longitude range from  1 800 000 000 to +1 800 000 000
             * @param p_elevation   Elevation relative to the WGS-84 ellipsoid in decimetres
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.20    ThreeDLocation
             */
            template (value) ThreeDLocation m_threeDLocation(
                                                             in template (value) Int32 p_latitude,
                                                             in template (value) Int32 p_longitude,
                                                             in template (value) Oct2 p_elevation
            ) := {
                latitude    := p_latitude,
                longitude   := p_longitude,
                elevation := p_elevation
            } // End of template m_threeDLocation
            
garciay's avatar
garciay committed
        } // End of group dummyBasicFormatElementsSend 
        
        /**
         * @desc Dummy receive templates for security headers
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2    Specification of basic format elements
         */
        group dummyBasicFormatElementsRecv {
            
            /**
             * @desc Dummy receive template for PublicKey/EccPoint
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4    PublicKey
             */
            template (present) PublicKey mw_publicKey_eccPoint_dummy := {
                algorithm   := e_ecdsa_nistp256_with_sha256,
                public_key  := {
                    eccPoint := ?
                } // End of field public_key
            } // End of template PublicKey
garciay's avatar
garciay committed
            /**
             * @desc Dummy send template for PublicKey/AES CCM
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4    PublicKey
             */
            template (present) PublicKey mw_publicKey_aesccm_dummy := {
                algorithm   := e_ecies_nistp256,
                public_key  := {
                    aesCcm := ?
                } // End of field public_key
            } // End of template m_publicKey_aesccm_dummy
garciay's avatar
garciay committed
            /**
             * @desc Dummy receive template for Time64WithStandardDeviation
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.17    Time64WithStandardDeviation
             */
            template (present) Time64WithStandardDeviation mw_time64WithStandardDeviation_dummy := {
                time        := ?,
                log_std_dev := ?
            } // End of template mw_time64WithStandardDeviation_dummy
            
            /**
             * @desc Receive template for Time64WithStandardDeviation
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.17    Time64WithStandardDeviation
             */
            template (present) Time64WithStandardDeviation mw_time64WithStandardDeviation(
                                                                                          in template (present) Time64 p_time,
                                                                                          in template (present) UInt8 p_log_std_dev
            ) := {
                time        := p_time,
                log_std_dev := p_log_std_dev
            } // End of template mw_time64WithStandardDeviation
            
            /**
             * @desc Dummy receive template for TwoDLocation
             * @param p_latitude    Latitude range from  900 000 000 to +900 000 000
             * @param p_longitude   Longitude range from  1 800 000 000 to +1 800 000 000
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.19    TwoDLocation
             */
            template (present) TwoDLocation mw_twoDLocation_dummy := {
                latitude    := ?,
                longitude   := ?
            } // End of template mw_twoDLocation_dummy
            
            /**
             * @desc Dummy receive template for TwoDLocation
             * @param p_latitude    Latitude range from  900 000 000 to +900 000 000
             * @param p_longitude   Longitude range from  1 800 000 000 to +1 800 000 000
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.19    TwoDLocation
             */
            template (present) TwoDLocation mw_twoDLocation(
                                                            in template (present) Int32 p_latitude,
                                                            in template (present) Int32 p_longitude
            ) := {
                latitude    := p_latitude,
                longitude   := p_longitude
            } // End of template mw_twoDLocation
            
            /**
             * @desc Dummy send template for ThreeDLocation
             * @param p_latitude    Latitude range from  900 000 000 to +900 000 000
             * @param p_longitude   Longitude range from  1 800 000 000 to +1 800 000 000
             * @param p_elevation   Elevation relative to the WGS-84 ellipsoid in decimetres
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.20    ThreeDLocation
             */
            template (present) ThreeDLocation mdw_threeDLocation_dummy := {
                latitude    := ?,
                longitude   := ?,
                elevation   := ?
            } // End of template mdw_threeDLocation_dummy
            
            /**
             * @desc Receive template for ThreeDLocation
             * @param p_latitude    Latitude range from  900 000 000 to +900 000 000
             * @param p_longitude   Longitude range from  1 800 000 000 to +1 800 000 000
             * @param p_elevation   Elevation relative to the WGS-84 ellipsoid in decimetres
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.20    ThreeDLocation
             */
            template (present) ThreeDLocation mw_threeDLocation(
                                                                in template (present) Int32 p_latitude,
                                                                in template (present) Int32 p_longitude,
                                                                in template (present) Oct2 p_elevation
            ) := {
                latitude    := p_latitude,
                longitude   := p_longitude,
                elevation   := p_elevation
            } // End of template mw_threeDLocation
            
garciay's avatar
garciay committed
        } // End of group dummyBasicFormatElementsRecv
        
garciay's avatar
garciay committed
    } // End of group dummyBasicFormatElements 
    
garciay's avatar
garciay committed
     * @desc Dummy send/receive templates for security headers
     * @see Draft ETSI TS 103 097 V1.1.6 Clause 5   Specification of security header
garciay's avatar
garciay committed
    group dummyMessages {
        
garciay's avatar
garciay committed
         * @desc Dummy send templates for security headers
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 5   Specification of security header
         */
        group dummyMessagesSend {
            
            /**
garciay's avatar
garciay committed
             * @desc Generic send template for Security profile for CAMs
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 7.1  Security profile for CAMs
             */
            template (value) SecuredMessage m_secureMessageCAMs_dummy := {
                protocol_version     := c_protocol_version,
                security_profile     := c_security_profileCAMs,
                header_fields        := { m_header_field_signerInfo_dummy },
                payload_fields        := { },
                trailer_fields        := { }
            } // End of template m_secureMessageCAMs_dummy
            
garciay's avatar
garciay committed
            /**
             * @desc Generic send template for Security profile for DENMs
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 7.2  Security profile for DENMs
             */
            template (value) SecuredMessage m_secureMessageDENMs_dummy := {
                protocol_version     := c_protocol_version,
                security_profile     := c_security_profileDENMs,
                header_fields        := { m_header_field_signerInfo_dummy },
                payload_fields        := { },
                trailer_fields        := { }
            } // End of template m_secureMessageDENMs_dummy
garciay's avatar
garciay committed
            /**
             * @desc Generic send template for Security profile for other messages
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 7.3    Generic security profile for other signed messages
             */
            template (value) SecuredMessage m_secureMessageOthers_dummy := {
                protocol_version     := c_protocol_version,
                security_profile     := c_security_profileOthers,
                header_fields        := { m_header_field_signerInfo_dummy },
                payload_fields        := { },
                trailer_fields        := { }
            } // End of template m_secureMessageCAMs_dummy
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            group headerFields {
                
                template (value) HeaderField m_header_field_signerInfo_dummy := {
                    type_       := e_signer_info,
                    headerField := m_header_field_container_dummy
                } // End of template m_header_field_signerInfo_dummy
                
                template (value) HeaderFieldContainer m_header_field_container_dummy := {
                    signer := m_SignerInfo_self
                } // End of template m_header_field_container_dummy
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            } // End of group headerFields
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            group payloads {
                
                template (value) Payload m_payload_signed_dummy := {
                    type_   := e_signed,
                    data    := m_data_payload_dummy
                } // End of template m_payload_dummy
                
                template (value) Payload m_payload_unsecured_dummy := {
                    type_   := e_unsecured,
                    data    := m_data_payload_dummy
                } // End of template m_payload_dummy
                
                template (value) PayloadContainer m_data_payload_dummy := {
                    rawPayload := ''O
                } // End of template m_data_payload_dummy
                
            } // End of group payloads
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
            group trailerFields {
                
                template (value) TrailerField m_trailer_field_dummy := {
                    type_           := e_signature,
                    trailerField    := m_trailer_field_container_dummy
                } // End of template m_trailer_field_dummy
                
                template (value) TrailerFieldContainer m_trailer_field_container_dummy := {
                    security_field := ''O
                } // End of template m_trailer_field_container_dummy
                
            } // End of group trailerFields
garciay's avatar
garciay committed
            
        } // End of group dummyMessagesSend
        
        /**
garciay's avatar
garciay committed
         * @desc Dummy receive templates for security headers
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 5   Specification of security header
garciay's avatar
garciay committed
        group dummyMessagesRecv {
            
            /**
             * @desc Generic received template for SecuredMessage
             */
            template (present) SecuredMessage mw_securedMessage_dummy := {
                protocol_version    := c_protocol_version, 
garciay's avatar
garciay committed
                security_profile    := ?,
                header_fields       := ?,
                payload_fields      := ?,
                trailer_fields      := ?
            } // End of template mw_securedMessage_dummy
            
            /**
             * @desc Generic received template for SecuredMessage
             */
            template (present) Payload mw_signedPayload_dummy := {
garciay's avatar
garciay committed
                type_   := e_signed, 
                data    := ?
garciay's avatar
garciay committed
            } // End of template mw_signedPayload_dummy
            
            /**
             * @desc Generic received template for SecuredMessage
             */
            template (present) Payload mw_unsecuredPayload_dummy := {
garciay's avatar
garciay committed
                type_   := e_unsecured, 
                data    := ?
garciay's avatar
garciay committed
            } // End of template mw_unsecuredPayload_dummy
            
        } // End of group dummyMessagesRecv 
        
    } // End of group dummyMessages
    
garciay's avatar
garciay committed
     * @desc Dummy send/receive templates for certificates
     * @see Draft ETSI TS 103 097 V1.1.6 Clause 6   Specification of certificate format
     */
    group dummyCertifices {
        
        /**
garciay's avatar
garciay committed
         * @desc Dummy send templates for certificates
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 6   Specification of certificate format
         */
        group dummyCertificesSend {
            
garciay's avatar
garciay committed
            /**
             * @desc Dummy send certificate template
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 6.1    Certificate
             */
            template (value) Certificate m_certificate_dummy := {
                version                 := c_certificate_version,
garciay's avatar
garciay committed
                signer_info             := { 
garciay's avatar
garciay committed
                    m_SignerInfo_digest(
                        PX_ECDSA_DIGEST
garciay's avatar
garciay committed
                    )
garciay's avatar
garciay committed
                }, // End of field signer_info
garciay's avatar
garciay committed
                subject_info            := m_subject_info_dummy,
                subject_attributes      := { m_subject_attribute_dummy },
                validity_restrictions   := { m_validity_restriction_dummy },
garciay's avatar
garciay committed
                signature_              := m_signature(
                    m_ecdsaSignature
                ) // End of field signature_ 
garciay's avatar
garciay committed
            } // End of template m_certificate_dummy
            
            template (value) SubjectInfo m_subject_info_dummy := {
                subject_type := e_root_ca,
                subject_name := ''O
            } // End of template SubjectInfo
            
            template (value) SubjectAttribute m_subject_attribute_dummy := {
                type_       := e_verification_key,
                attribute   := {
                    key := m_publicKey_eccPoint_dummy
                }
            } // End of template m_subject_attribute_dummy
            
            template (value) ValidityRestriction m_validity_restriction_dummy := {
                type_       := e_time_end,
                validity    :=  {
                    end_validity := 0
                }
            } // End of template m_validity_dummy
            
        } // End of group dummyCertificesSend
        
        /**
garciay's avatar
garciay committed
         * @desc Dummy receive templates for certificates
         * @see Draft ETSI TS 103 097 V1.1.6 Clause 6   Specification of certificate format
         */
        group dummyCertificesRecv {
            
garciay's avatar
garciay committed
            /**
             * @desc Dummy receive certificate template
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 6.1    Certificate
             */
            template (present) Certificate mw_certificate_dummy := {
                version                 := c_certificate_version,
                signer_info             := ?,
                subject_info            := ?,
                subject_attributes      := ?,
                validity_restrictions   := ?,
                signature_              := ?
            } // End of template mw_certificate_dummy
garciay's avatar
garciay committed
            
        } // End of group dummyCertificesRecv
        
    } // End of group dummyCertifices
    
    /**
     */
garciay's avatar
garciay committed
    group securityProfiles {
        
        /**
         */
        group securityProfilesCAMs {
            
            /**
             */
            group securityProfilesCAMsSend {
                
                /**
garciay's avatar
garciay committed
                 * @desc Generic send template for Security profile for CAMs
                 */
                template (value) SecuredMessage md_secureMessageCAMs(
                                                                     in template (value) HeaderFields p_header_fields,
                                                                     in template (value) Payloads p_payload_fields,
                                                                     in template (value) TrailerFields p_trailer_fields
                ) modifies m_secureMessageCAMs_dummy := {
                    security_profile    := c_security_profileCAMs,
                    header_fields       := p_header_fields,
                    payload_fields      := p_payload_fields,
                    trailer_fields      := p_trailer_fields
                } // End of template md_secureMessageCAMs
                
garciay's avatar
garciay committed
                template (value) HeaderField m_header_field_signerInfo_ecdsa(
                                                                                in template (value) SignerInfo p_signerInfo
                ) modifies m_header_field_signerInfo_dummy := {
garciay's avatar
garciay committed
                    headerField := {
                        signer := p_signerInfo
                    }
                } // End of template m_header_field_signerInfo_ecdsa
                
            } // End of group securityProfilesCAMsSend
garciay's avatar
garciay committed
            group securityProfilesCAMsRecv {
                
                /**
                 * @desc Generic received template for Security profile for CAMs
                 */
                template (present) SecuredMessage mdw_secureMessageCAMs_dummy
                modifies mw_securedMessage_dummy := {
                    security_profile    := c_security_profileCAMs
                } // End of template mw_securedMessage_dummy
                
                /**
                 * @desc Generic received template for Security profile for CAMs
                 */
                template (present) SecuredMessage mdw_secureMessageCAMs
                modifies mdw_secureMessageCAMs_dummy := { // TODO To be continued
                    security_profile    := ?,
                    header_fields       := ?,
                    payload_fields      := ?,
                    trailer_fields      := ?
                } // End of template mw_securedMessage_dummy
                
            } // End of group mdw_secureMessageCAMs_dummy
            
        } // End of group securityProfilesCAMs
garciay's avatar
garciay committed
        
        group denmSecurityProfiles {
            
        } // End of group denmSecurityProfiles
        
        group otherSecurityProfiles {
            
        } // End of group otherSecurityProfiles
        
    } // End of group securityProfiles
garciay's avatar
garciay committed
    
    group utPrimitives {
        
    } // End of group utPrimitives
    
garciay's avatar
garciay committed
    /**
     * @desc Function helpers for static_cast<> operation (to reduce warning in TTWB)
     */
    group typeConverters {
        
        function f_int2UInt8(in integer p_value) return UInt8 {
            return p_value;
        }
        
    }
    
garciay's avatar
garciay committed
} // End of module LibItsSecurity_Templates