Skip to content
LibItsSecurity_Templates.ttcn3 79.8 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 
            UInt8, Int13, UInt16, UInt32, 
garciay's avatar
garciay committed
    }
    import from LibCommon_DataStrings {
        type 
            Oct2, Oct12, Oct20, Oct0to31, 
            Bit2, Bit3
garciay's avatar
garciay committed

garciay's avatar
garciay committed
    // LibItsSecurity
    import from LibItsSecurity_TypesAndValues all;
    import from LibItsSecurity_Pixits all;
    
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 dummyAlgorithms {
                
                /**
                 * @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
garciay's avatar
garciay committed
                 * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.7    EncryptionParameters
garciay's avatar
garciay committed
                 */
garciay's avatar
garciay committed
                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 dummyAlgorithms
            
            /**
             * @desc Dummy send template for PublicKey/EccPoint
             * @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2.4    PublicKey
             */
            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
             * @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
            
        } // 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
            
            /**
             * @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
            
            /**
             * @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 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 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
Loading full blame...