Skip to content
LibItsSecurity_Templates.ttcn 109 KiB
Newer Older
garciay's avatar
garciay committed
/**
 *  @author   ETSI / STF481 / STF507 / STF517 / STF538
garciay's avatar
garciay committed
 *  @version  $URL$
 *            $Id$
 *  @desc     Module containing templates for Security Protocol
garciay's avatar
garciay committed
 *  @copyright   ETSI Copyright Notification
 *               No part may be reproduced except as authorized by written permission.
 *               The copyright and the foregoing restriction extend to reproduction in all media.
 *               All rights reserved.
garciay's avatar
garciay committed
 *
 */
module LibItsSecurity_Templates {
    
    // LibCommon
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_DataStrings all;
garciay's avatar
garciay committed
    
    // LibItsCommon
    import from LibItsCommon_TypesAndValues all;
garciay's avatar
garciay committed
    // LibItsGeoNetworking
    import from LibItsGeoNetworking_TypesAndValues all;
    
garciay's avatar
garciay committed
    // LibIts
    import from IEEE1609dot2BaseTypes language "ASN.1:1997" all;
    import from IEEE1609dot2 language "ASN.1:1997" all;
    import from EtsiTs103097Module language "ASN.1:1997" all;
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.3.1 Clause 5.1 Ieee1609Dot2Data
        const UInt8 c_protocol_version := 3;
         * @desc Certificate version
         * @see Draft ETSI TS 103 097 V1.3.1 Clause 6.1 Certificate
        const UInt8 c_certificate_version := 3;
        /**
         * @desc Its AID for Other
         * @see Draft ETSI TS 103 097 V1.3.1 Clause 7.3 Security profile for DENMs
//FIXME RGY definition type is changed to modulepar, as Titan doesn't support dynamic constants
//        const IntX c_its_aid_Other := PX_OTHER_ITS_AID;
        template Psid c_its_aid_Other := PX_OTHER_ITS_AID;
garciay's avatar
garciay committed
        
        /**
         * @desc Minimal value of Longitude
garciay's avatar
garciay committed
         */
        const SecLongitude c_minLongitude := -1799999999; // TODO Use constant from IEEE1609dot2BaseTypes
         * @desc Maximal value of Longitude
        const SecLongitude c_maxLongitude :=  1800000000; // TODO Use constant from IEEE1609dot2BaseTypes
         * @desc Minimal value of Latitude
        const SecLatitude c_minLatitude  := -900000000;  // TODO Use constant from IEEE1609dot2BaseTypes
        
        /**
         * @desc Maximal value of Latitude
         */
        const SecLatitude c_maxLatitude  :=  900000000; // TODO Use constant from IEEE1609dot2BaseTypes
filatov's avatar
filatov committed
        
        /**
         * @desc List of ISO-3166 country codes
         */
        const SequenceOfUint16 c_iso3166Codes := {
filatov's avatar
filatov committed
            4,   8,  10,  12,  16,  20,  24,  28,  31,  32,  36,  40,  44,  48,  50,  51,  52,  56,
           60,  64,  68,  70,  72,  74,  76,  84,  86,  90,  92,  96, 100, 104, 108, 112, 116, 120,
          124, 132, 136, 140, 144, 148, 152, 156, 158, 162, 166, 170, 174, 175, 178, 180, 184, 188,
          191, 192, 196, 203, 204, 208, 212, 214, 218, 222, 226, 231, 232, 233, 234, 238, 239, 242,
          246, 248, 250, 254, 258, 260, 262, 266, 268, 270, 275, 276, 288, 292, 296, 300, 304, 308,
          312, 316, 320, 324, 328, 332, 334, 336, 340, 344, 348, 352, 356, 360, 364, 368, 372, 376,
          380, 384, 388, 392, 398, 400, 404, 408, 410, 414, 417, 418, 422, 426, 428, 430, 434, 438,
          440, 442, 446, 450, 454, 458, 462, 466, 470, 474, 478, 480, 484, 492, 496, 498, 499, 500,
          504, 508, 512, 516, 520, 524, 528, 531, 533, 534, 535, 540, 548, 554, 558, 562, 566, 570,
          574, 578, 580, 581, 583, 584, 585, 586, 591, 598, 600, 604, 608, 612, 616, 620, 624, 626,
          630, 634, 638, 642, 643, 646, 652, 654, 659, 660, 662, 663, 666, 670, 674, 678, 682, 686,
          688, 690, 694, 702, 703, 704, 705, 706, 710, 716, 724, 728, 729, 732, 740, 744, 748, 752,
          756, 760, 762, 764, 768, 772, 776, 780, 784, 788, 792, 795, 796, 798, 800, 804, 807, 810,
          818, 826, 831, 832, 833, 834, 840, 850, 854, 858, 860, 862, 876, 882, 887, 894 
        /**
         * @desc List of United Nations Statistics Division country codes
         */
        const SequenceOfUint16 c_unStatsAdditionalCodes := {
            1,   2,   5,   9,  11,  13,  14,  15,  17,  18,  19,  21,  29,  30,  34,  35,  39,  53,
           54,  57,  61, 142, 143, 145, 150, 151, 154, 155, 199, 419, 432, 680, 722, 830
       };
    } // End of group constants
garciay's avatar
garciay committed
     * @desc Dummy send/receive templates for security headers
     * @see Draft ETSI TS 103 097 V1.3.1 Clause 4   Basic format elements
garciay's avatar
garciay committed
    group dummyBasicFormatElements {
        
        /**
         * @desc Dummy receive templates for security headers
         * @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2    Specification of basic format elements
         */
        group dummyBasicFormatElementsRecv {
            /**
             * @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.3.1 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
             * @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.20    ThreeDLocation
            template (present) ThreeDLocation mw_threeDLocation_dummy := {
                latitude    := ?,
                longitude   := ?,
                elevation   := ?
            } // End of template mw_threeDLocation_dummy
            
        } // End of group dummyBasicFormatElementsRecv
        
    } // End of group dummyBasicFormatElements 
    
    /**
     * @desc Send/receive templates for security headers
     * @see Draft ETSI TS 103 097 V1.3.1 Clause 4   Basic format elements
     */
    group basicFormatElements {
        
        /**
         * @desc Send templates for security headers
         * @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2    Specification of basic format elements
         */
        group basicFormatElementsSend {
            
            /**
             * @desc Send templates for security algorithm descriptions
                 * @desc Send template for EccP256CurvePoint description based on x_coordinate_only type
                 * @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.5   EccP256CurvePoint
                 * @see Draft ETSI TS 103 097 V1.3.1 Table 2: Derivation of field sizes depending on the used algorithm
                template (value) EccP256CurvePoint m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only(
                                                                                                          in template (value) octetstring p_x
garciay's avatar
garciay committed
                ) := { 
                    x_only := p_x
                } // End of template m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only
                
                 * @desc Send template for EccP256CurvePoint description based on y_coordinate_only type
                 * @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.5   EccP256CurvePoint
                 * @see Draft ETSI TS 103 097 V1.3.1 Table 2: Derivation of field sizes depending on the used algorithm
                template (value) EccP256CurvePoint m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only(
                                                                                                          in template (value) octetstring p_y
                    compressed_y_0 := p_y
                } // End of template m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only
                
                 * @desc Send template for EccP256CurvePoint description based on uncompressed type
                 * @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.5   EccP256CurvePoint
                 * @see Draft ETSI TS 103 097 V1.3.1 Table 2: Derivation of field sizes depending on the used algorithm
                template (value) EccP256CurvePoint m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                                                                                                     in template (value) octetstring p_x,
                                                                                                     in template (value) octetstring p_y
garciay's avatar
garciay committed
                ) := {
                    uncompressedP256 := {
                       x := p_x,
                       y := p_y
garciay's avatar
garciay committed
                    }
                } // End of template m_eccPointecdsa_nistp256_with_sha256_uncompressed
Loading full blame...