LibItsSecurity_TypesAndValues.ttcn3 2.53 KB
Newer Older
garciay's avatar
garciay committed
/**
 *  @author   ETSI / STF481
 *  @version  $URL$
 *            $Id$
 *  @desc     Module containing types and values for Security Protocol
 *
 */
module LibItsSecurity_TypesAndValues {
    
    // LibCommon
    import from LibCommon_BasicTypesAndValues {
    type
        UInt8
    };
    
    // LibIts
    import from CAM_PDU_Descriptions language "ASN.1:1997" {
        type CAM
    };
    import from DENM_PDU_Descriptions language "ASN.1:1997" {
        type DENM
    };
    
    /**
     * @desc Generic secured message description
     * @member protocol_version The applied protocol version
     * @member security_profile The security profile for this secured message
     * @member header_fields    Multiple information fields of interest to the security layer
     * @member payload_fields   The message's payload
     * @member trailer_fields   Security information after the payload
     * 
     * @see Draft ETSI TS 103 097 V1.1.6 Clause 5.1 SecuredMessage
     */
    type record SecuredMessage {
        UInt8           protocol_version,
        UInt8           security_profile,
        HeaderFields    header_fields,
        Payload         payload_fields,
        TrailerFields   trailer_fields
    }
    
    type set of HeaderField HeaderFields;
    type record HeaderField {
    }
    
    /**
     * @desc Payload structure
     * @member type_    Payload type
     * @member payload  Payload data
     * 
     * @see Draft ETSI TS 103 097 V1.1.6 Clause 5.2 Payload
     */
    type record Payload {
        PayloadType         type_,
        PayloadContainer    payload
    }
    
    /**
     * @desc Payload data container
     * @member camPayload   CAM message
     * @member denmPayload  DENM message
     * @member rawPayload   Other message
     * 
     * @see Draft ETSI TS 103 097 V1.1.6 Clause 5.2 Payload
     */
    type union PayloadContainer {
        CAM         camPayload,
        DENM        denmPayload,
        octetstring rawPayload
    }
    
    /**
     * @desc Supported types of payloads
     * 
     * @see Draft ETSI TS 103 097 V1.1.6 Clause 5.3 Payload
     */
    type enumerated PayloadType {
        e_unsecured             (0),
        e_signed                (1),
        e_encrypted             (2),
        e_signed_external       (3),
        e_signed_and_encrypted  (4),
        e_unknown               (255)
    } with { variant "unsigned 8 bit" }
    
    type set of TrailerField TrailerFields;
    type record TrailerField {
    }
    
} with {
    encode "LibItsSecurity"
} // End of module LibItsSecurity_TypesAndValues