LibItsSecurity_Templates.ttcn 78.9 KB
Newer Older
        template (value) IssuerIdentifier m_issuerIdentifier_self(
                                                                  in template (value) HashAlgorithm p_self
        ) := {
            self_  := p_self
        } // End of template m_issuerIdentifier_self
        
        template (present) IssuerIdentifier mw_issuerIdentifier_self(
                                                                     template (present) HashAlgorithm p_self := ?
        ) := {
            self_  := p_self
        } // End of template mw_issuerIdentifier_self
        
        template (value) IssuerIdentifier m_issuerIdentifier_sha256AndDigest( // FIXME Add opque field for unknown issuer?
                                                                             in template (value) HashedId8 p_sha256AndDigest
        ) := {
            sha256AndDigest  := p_sha256AndDigest
        } // End of template m_issuerIdentifier_sha256AndDigest
        
        template (present) IssuerIdentifier mw_issuerIdentifier_sha256AndDigest( // FIXME Add opque field for unknown issuer?
                                                                                template (present) HashedId8 p_sha256AndDigest := ?
        ) := {
            sha256AndDigest  := p_sha256AndDigest
        } // End of template mw_issuerIdentifier_sha256AndDigest
        
        template (value) IssuerIdentifier m_issuerIdentifier_sha384AndDigest(
                                                                             in template (value) HashedId8 p_sha384AndDigest
        ) := {
            sha384AndDigest  := p_sha384AndDigest
        } // End of template m_issuerIdentifier_sha384AndDigest
        
        template (present) IssuerIdentifier mw_issuerIdentifier_sha384AndDigest(
                                                                                template (present) HashedId8 p_sha384AndDigest := ?
        ) := {
            sha384AndDigest  := p_sha384AndDigest
        } // End of template mw_issuerIdentifier_sha384AndDigest
        
    } // End of group issuerIdentifier 
    
    group toBeSignedCertificate {
        
garciay's avatar
garciay committed
        /**
         * @desc Send template for ToBeSignedCertificate with CA restrictions
         * @see ETSI TS 103 097 V1.3.1 Clause 7.2.3 Root CA certificate
         */
        template (omit) ToBeSignedCertificate m_toBeSignedCertificate_ca(
                                                                         in template (value) CertificateId p_id,
                                                                         in template (value) SequenceOfPsidSsp p_appPermissions,
                                                                         in template (value) SequenceOfPsidGroupPermissions p_certIssuePermissions,
                                                                         in template (value) VerificationKeyIndicator p_verifyKeyIndicator,
                                                                         in template (omit) SequenceOfPsidGroupPermissions p_certRequestPermissions := omit,
                                                                         in template (omit) ValidityPeriod p_validityPeriod := omit,
                                                                         in template (omit) GeographicRegion p_region := omit,
                                                                         in template (omit) SubjectAssurance p_assuranceLevel := omit,
                                                                         in template (omit) PublicEncryptionKey p_encryptionKey := omit
        ) := { 
            id                     := p_id,
garciay's avatar
garciay committed
            cracaId                := '000000'O, // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 2
            crlSeries              := 0, // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 3
            validityPeriod         := p_validityPeriod,
            region                 := p_region,
            assuranceLevel         := p_assuranceLevel,
            appPermissions         := p_appPermissions,
            certIssuePermissions   := p_certIssuePermissions,
            certRequestPermissions := p_certRequestPermissions, 
            canRequestRollover     := omit,
            encryptionKey          := p_encryptionKey,
            verifyKeyIndicator     := p_verifyKeyIndicator
garciay's avatar
garciay committed
        } // End of template m_toBeSignedCertificate_ca
        
        /**
         * @desc Receive template for ToBeSignedCertificate with CA restrictions
         * @see ETSI TS 103 097 V1.3.1 Clause 7.2.3 Root CA certificate
         */
        template ToBeSignedCertificate mw_toBeSignedCertificate_ca(
                                                                   template (present) CertificateId p_id := ?,
                                                                   template (present) SequenceOfPsidSsp p_appPermissions := ?,
                                                                   template (present) SequenceOfPsidGroupPermissions p_certIssuePermissions := ?,
                                                                   template (present) VerificationKeyIndicator p_verifyKeyIndicator := ?,
                                                                   template SequenceOfPsidGroupPermissions p_certRequestPermissions := *,
                                                                   template ValidityPeriod p_validityPeriod := *,
                                                                   template GeographicRegion p_region := *,
                                                                   template SubjectAssurance p_assuranceLevel := *,
                                                                   template PublicEncryptionKey p_encryptionKey := *
        ) := { 
            id                     := p_id,
garciay's avatar
garciay committed
            cracaId                := '000000'O,
            crlSeries              := 0,
            validityPeriod         := p_validityPeriod,
            region                 := p_region,
            assuranceLevel         := p_assuranceLevel,
            appPermissions         := p_appPermissions,
            certIssuePermissions   := p_certIssuePermissions,
            certRequestPermissions := p_certRequestPermissions, 
            canRequestRollover     := *,
            encryptionKey          := p_encryptionKey,
            verifyKeyIndicator     := p_verifyKeyIndicator
        } // End of template mw_toBeSignedCertificate
        
garciay's avatar
garciay committed
        /**
         * @desc Send template for ToBeSignedCertificate with AT restrictions
         * @see ETSI TS 103 097 V1.3.1 Clause 7.2.1 Authorization tickets
         */
        template (omit) ToBeSignedCertificate m_toBeSignedCertificate_at(
                                                                         in template (value) SequenceOfPsidSsp p_appPermissions,
                                                                         in template (value) VerificationKeyIndicator p_verifyKeyIndicator,
                                                                         in template (omit) SequenceOfPsidGroupPermissions p_certRequestPermissions := omit,
                                                                         in template (omit) ValidityPeriod p_validityPeriod := omit,
                                                                         in template (omit) GeographicRegion p_region := omit,
                                                                         in template (omit) SubjectAssurance p_assuranceLevel := omit,
                                                                         in template (omit) PublicEncryptionKey p_encryptionKey := omit
        ) := { 
            id                     := { none_ := NULL },
            cracaId                := '000000'O, // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 2
            crlSeries              := 0, // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 3
            validityPeriod         := p_validityPeriod,
            region                 := p_region,
            assuranceLevel         := p_assuranceLevel,
            appPermissions         := p_appPermissions,
            certIssuePermissions   := omit,
            certRequestPermissions := p_certRequestPermissions, 
            canRequestRollover     := omit,
            encryptionKey          := p_encryptionKey,
            verifyKeyIndicator     := p_verifyKeyIndicator
        } // End of template m_toBeSignedCertificate_at
        
    } // End of toBeSignedCertificate
    
    group keys {
        
        template (value) VerificationKeyIndicator m_verificationKeyIndicator_verificationKey(
                                                                                             in template (value) PublicVerificationKey p_verificationKey
        ) := {
            verificationKey := p_verificationKey
        } // End of template m_verificationKeyIndicator_verificationKey
        
        template (present) VerificationKeyIndicator mw_verificationKeyIndicator_verificationKey(
                                                                                                template (present) PublicVerificationKey p_verificationKey := ?
        ) := {
            verificationKey := p_verificationKey
        } // End of template mw_verificationKeyIndicator_verificationKey
        
        template (value) VerificationKeyIndicator m_verificationKeyIndicator_reconstructionValue(
                                                                                                 in template (value) EccP256CurvePoint p_reconstructionValue
        ) := {
            reconstructionValue := p_reconstructionValue
        } // End of template m_verificationKeyIndicator_reconstructionValue
        
        template (present) VerificationKeyIndicator mw_verificationKeyIndicator_reconstructionValue(
                                                                                                    template (present) EccP256CurvePoint p_reconstructionValue := ?
        ) := {
            reconstructionValue := p_reconstructionValue
        } // End of template mw_verificationKeyIndicator_reconstructionValue
        
        template (value) PublicVerificationKey m_publicVerificationKey_ecdsaNistP256(
                                                                                     in template (value) EccP256CurvePoint p_ecdsaNistP256
        ) := { 
            ecdsaNistP256 := p_ecdsaNistP256
        } // End of template m_publicVerificationKey_ecdsaNistP256
        
        template (present) PublicVerificationKey mw_publicVerificationKey_ecdsaNistP256(
                                                                                        template (present) EccP256CurvePoint p_ecdsaNistP256 := ?
        ) := { 
            ecdsaNistP256 := p_ecdsaNistP256
        } // End of template mw_publicVerificationKey_ecdsaNistP256
        
    } // End of group keys
    
    group appPermissions {
        
        template (omit) PsidSsp m_appPermissions(
                                                 in template (value) Psid p_psid,
                                                 in template (omit) ServiceSpecificPermissions p_ssp := omit
        ) := {
            psid   := p_psid,
            ssp    := p_ssp
        } // End of template m_appPermissions
        
        template (value) PsidSspRange m_psidSspRange(
                                                     in Psid p_psid,
                                                     in template (value) SspRange p_sspRange := m_SspRange_all
        ) := {
            psid        := p_psid,
            sspRange    := p_sspRange
        } // End of template m_psidSspRange
        
        template (value) SspRange m_SspRange_all := {
            all_ := NULL
        } // End of template m_SspRange_all
        
        template (value) SspRange m_SspRange_opaque(
                                                    in template (value) SequenceOfOctetString p_opaque
        ) := {
            opaque := p_opaque
        } // End of template m_SspRange_opaque
        
        template (value) SspRange m_SspRange_bitmapSspRange(
                                                            in template (value) BitmapSspRange p_bitmapSspRange
        ) := {
            bitmapSspRange := p_bitmapSspRange
        } // End of template m_SspRange_bitmapSspRange
        
        template (value) PsidGroupPermissions m_psidGroupPermissions(
                                                                     in template (value) SubjectPermissions p_subjectPermissions,
                                                                     in integer p_minChainLength := 1,
                                                                     in integer p_chainLengthRange := 0, 
                                                                     in EndEntityType p_eeType := oct2bit('00'O)
        ) := {
            subjectPermissions := p_subjectPermissions,
            minChainLength     := p_minChainLength,
            chainLengthRange   := p_chainLengthRange, 
            eeType             := p_eeType
        } // End of template m_psidGroupPermissions
        
        template (value) SubjectPermissions m_subjectPermissions_explicit(
                                                                          in template (value) SequenceOfPsidSspRange p_certIssuePermissions
        ) := {
            explicit := p_certIssuePermissions
        } // End of template m_subjectPermissions_explicit
        
        template (value) SubjectPermissions m_subjectPermissions_all := {
            all_ := NULL
        } // End of template m_subjectPermissions_all
        
    } // End of group appPermissions
    
    
    group validityRestriction {
        
        template (value) ValidityPeriod m_validityPeriod(
                                                         in template (value) Time32 p_start_,
                                                         in template (value) Duration p_duration       
        ) := {
            start_   := p_start_,
            duration := p_duration
        } // End of template m_validityPeriod
        
        template (present) ValidityPeriod mw_validityPeriod(
                                                            template (present) Time32 p_start_ := ?,
                                                            template (present) Duration p_duration := ?      
        ) := {
            start_   := p_start_,
            duration := p_duration
        } // End of template mw_validityPeriod
         * @desc Send template for Duration (in seconds)
         * @param p_duration    The duration value
         * @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.18  Duration
        template (value) Duration m_duration_in_seconds(
                                                        in template (value) Int16 p_duration
        ) := {
            seconds := p_duration
        } // End of template m_duration_in_seconds
         * @desc Receive template for Duration (in seconds)
         * @param p_duration    The duration value
         * @see Draft ETSI TS 103 097 V1.3.1 Clause 4.2.18  Duration
        template (present) Duration mw_duration_in_seconds(
                                                           template (present) Int16 p_duration := ?
        ) := {
            seconds := p_duration
        } // End of template mw_duration_in_seconds
        
        template (value) Duration m_duration_years(
                                                   in template (value) Uint16 p_years
        ) := {
            years := p_years
        } // End of template m_duration_years
        
        template (present) Duration mw_duration_years(
                                                      template (present) Uint16 p_years := ?
        ) := {
            years := p_years
        } // End of template mw_duration_years
        
    } // End of group validityRestriction
    
garciay's avatar
garciay committed
    group ssp {
        
        group sspCam {
                
            group sspCamSend {
                
                template (value) SspCAM m_sspCAMContainer_sign_all := {
                    cenDsrcTollingZone                      := '1'B,
                    publicTransport                         := '1'B,
                    specialTransport                        := '1'B,
                    dangerousGoods                          := '1'B,
                    roadwork                                := '1'B,
                    rescue                                  := '1'B,
                    emergency                               := '1'B,
                    safetyCar                               := '1'B,
                    closedLanes                             := '1'B,
                    requestForRightOfWay                    := '1'B,
                    requestForFreeCrossingAtATrafficLight   := '1'B,
                    noPassing                               := '1'B,
                    noPassingForTrucks                      := '1'B,
                    speedLimit                              := '1'B,
garciay's avatar
garciay committed
                    reserved                                := '000000000000000000'B
                } // End of template m_sspCAMContainer_sign_all
                
                template (value) SspCAM m_sspCAMContainer_vehicle 
                modifies m_sspCAMContainer_sign_all := {
                    cenDsrcTollingZone                      := '0'B,
                    closedLanes                             := '0'B,
                    noPassing                               := '0'B,
                    noPassingForTrucks                      := '0'B,
                    speedLimit                              := '0'B
                } // End of template m_sspCAMContainer_vehicle
                
garciay's avatar
garciay committed
                template (value) ServiceSpecificPermissions m_sspCAM(
                                                                     in template (value) BitmapSsp p_bitmapSsp
                ) := {
                    bitmapSsp := p_bitmapSsp
                } // End of template m_sspCAM
                
            } // End of group sspCamSend
            
            group sspCamRecv {
                
                template (present) SspCAM mw_sspCAMContainer_dummy := {
                    cenDsrcTollingZone                      := ?,
                    publicTransport                         := ?,
                    specialTransport                        := ?,
                    dangerousGoods                          := ?,
                    roadwork                                := ?,
                    rescue                                  := ?,
                    emergency                               := ?,
                    safetyCar                               := ?,
                    closedLanes                             := ?,
                    requestForRightOfWay                    := ?,
                    requestForFreeCrossingAtATrafficLight   := ?,
                    noPassing                               := ?,
                    noPassingForTrucks                      := ?,
                    speedLimit                              := ?,
garciay's avatar
garciay committed
                    reserved                                := '000000000000000000'B
                } // End of template mw_sspCAMContainer_dummy
                template (present) ServiceSpecificPermissions mw_sspCAM_dummy := {
garciay's avatar
garciay committed
                    bitmapSsp := ?
                } // End of template mw_sspCAM_dummy
            } // End of group sspCamRecv
            
        } // End of group sspCam
        
        group sspDenm {
                
            group sspDenmSend {
                
                template (value) SspDENM m_sspDENMContainer_sign_all := {
                    trafficCondition                                := '1'B,
                    accident                                        := '1'B,
                    roadworks                                       := '1'B,
                    adverseWeatherCondition_Adhesion                := '1'B,
                    hazardousLocation_SurfaceCondition              := '1'B,
                    hazardousLocation_ObstacleOnTheRoad             := '1'B,
                    hazardousLocation_AnimalOnTheRoad               := '1'B,
                    humanPresenceOnTheRoad                          := '1'B,
                    wrongWayDriving                                 := '1'B,
                    rescueAndRecoveryWorkInProgress                 := '1'B,
                    adverseWeatherCondition_ExtremeWeatherCondition := '1'B,
                    adverseWeatherCondition_Visibility              := '1'B,
                    adverseWeatherCondition_Precipitation           := '1'B,
                    slowVehicle                                     := '1'B,
                    dangerousEndOfQueue                             := '1'B,
                    vehicleBreakdown                                := '1'B,
                    postCrash                                       := '1'B,
                    humanProblem                                    := '1'B,
                    stationaryVehicle                               := '1'B,
                    emergencyVehicleApproaching                     := '1'B,
                    hazardousLocation_DangerousCurve                := '1'B,
                    collisionRisk                                   := '1'B,
                    signalViolation                                 := '1'B,
garciay's avatar
garciay committed
                    dangerousSituation                              := '1'B,
                    reserved                                        := '00000000'B
                } // End of template m_sspDENMContainer_sign_all
                
                template (value) SspDENM m_sspDENMContainer_vehicle 
                modifies m_sspDENMContainer_sign_all:= {
                    trafficCondition                                := '0'B,
                    accident                                        := '0'B,
                    roadworks                                       := '0'B,
                    adverseWeatherCondition_Adhesion                := '0'B,
                    hazardousLocation_SurfaceCondition              := '0'B,
                    hazardousLocation_ObstacleOnTheRoad             := '0'B,
                    hazardousLocation_AnimalOnTheRoad               := '0'B,
                    slowVehicle                                     := '0'B,
                    dangerousEndOfQueue                             := '0'B,
                    vehicleBreakdown                                := '0'B,
                    stationaryVehicle                               := '0'B
                } // End of template m_sspDENMContainer_sign_all
                
                template (value) SspDENM m_sspDENMContainer_roadSideUnit 
                modifies m_sspDENMContainer_sign_all:= {
                    trafficCondition                                := '0'B,
                    accident                                        := '0'B,
                    roadworks                                       := '0'B,
                    adverseWeatherCondition_Adhesion                := '0'B,
                    hazardousLocation_SurfaceCondition              := '0'B,
                    hazardousLocation_ObstacleOnTheRoad             := '0'B,
                    hazardousLocation_AnimalOnTheRoad               := '0'B,
                    humanPresenceOnTheRoad                          := '0'B,
                    wrongWayDriving                                 := '0'B,
                    rescueAndRecoveryWorkInProgress                 := '0'B,
                    adverseWeatherCondition_ExtremeWeatherCondition := '0'B,
                    adverseWeatherCondition_Visibility              := '0'B,
                    adverseWeatherCondition_Precipitation           := '0'B,
                    postCrash                                       := '0'B,
                    humanProblem                                    := '0'B,
                    stationaryVehicle                               := '0'B,
                    hazardousLocation_DangerousCurve                := '0'B,
                    collisionRisk                                   := '0'B,
                    dangerousSituation                              := '0'B
                } // End of template m_sspDENMContainer_roadSideUnit
                
garciay's avatar
garciay committed
                template (value) ServiceSpecificPermissions m_sspDENM(
                                                                      in template (value) BitmapSsp p_bitmapSsp
                ) := {
                    bitmapSsp := p_bitmapSsp
                } // End of template m_sspDENM
                
            } // End of group sspDenmSend
            
            group sspDenmRecv {
                
                template (present) SspDENM mw_sspDENMContainer_dummy := {
                    trafficCondition                                := ?,
                    accident                                        := ?,
                    roadworks                                       := ?,
                    adverseWeatherCondition_Adhesion                := ?,
                    hazardousLocation_SurfaceCondition              := ?,
                    hazardousLocation_ObstacleOnTheRoad             := ?,
                    hazardousLocation_AnimalOnTheRoad               := ?,
                    humanPresenceOnTheRoad                          := ?,
                    wrongWayDriving                                 := ?,
                    rescueAndRecoveryWorkInProgress                 := ?,
                    adverseWeatherCondition_ExtremeWeatherCondition := ?,
                    adverseWeatherCondition_Visibility              := ?,
                    adverseWeatherCondition_Precipitation           := ?,
                    slowVehicle                                     := ?,
                    dangerousEndOfQueue                             := ?,
                    vehicleBreakdown                                := ?,
                    postCrash                                       := ?,
                    humanProblem                                    := ?,
                    stationaryVehicle                               := ?,
                    emergencyVehicleApproaching                     := ?,
                    hazardousLocation_DangerousCurve                := ?,
                    collisionRisk                                   := ?,
                    signalViolation                                 := ?,
garciay's avatar
garciay committed
                    dangerousSituation                              := ?,
                    reserved                                        := '00000000'B
                } // End of template mw_sspDENMContainer_dummy
                
                template (present) SspDENM mw_sspDENMContainer_vehicle
                modifies mw_sspDENMContainer_dummy := {
                    trafficCondition                                := '0'B,
                    accident                                        := '0'B,
                    roadworks                                       := '0'B,
                    adverseWeatherCondition_Adhesion                := '0'B,
                    hazardousLocation_SurfaceCondition              := '0'B,
                    hazardousLocation_ObstacleOnTheRoad             := '0'B,
                    hazardousLocation_AnimalOnTheRoad               := '0'B,
                    slowVehicle                                     := '0'B,
                    dangerousEndOfQueue                             := '0'B,
                    vehicleBreakdown                                := '0'B,
                    stationaryVehicle                               := '0'B
                } // End of template mw_sspDENMContainer_vehicle
                
                template (present) SspDENM mw_sspDENMContainer_roadSideUnit
                modifies mw_sspDENMContainer_dummy := {
                    trafficCondition                                := '0'B,
                    accident                                        := '0'B,
                    roadworks                                       := '0'B,
                    adverseWeatherCondition_Adhesion                := '0'B,
                    hazardousLocation_SurfaceCondition              := '0'B,
                    hazardousLocation_ObstacleOnTheRoad             := '0'B,
                    hazardousLocation_AnimalOnTheRoad               := '0'B,
                    humanPresenceOnTheRoad                          := '0'B,
                    wrongWayDriving                                 := '0'B,
                    rescueAndRecoveryWorkInProgress                 := '0'B,
                    adverseWeatherCondition_ExtremeWeatherCondition := '0'B,
                    adverseWeatherCondition_Visibility              := '0'B,
                    adverseWeatherCondition_Precipitation           := '0'B,
                    postCrash                                       := '0'B,
                    humanProblem                                    := '0'B,
                    stationaryVehicle                               := '0'B,
                    hazardousLocation_DangerousCurve                := '0'B,
                    collisionRisk                                   := '0'B,
                    dangerousSituation                              := '0'B
                } // End of template m_sspDENMContainer_roadSideUnit
                
            } // End of group sspDenmRecv
        } // End of group sspDenm
garciay's avatar
garciay committed
    } // End of group ssp
garciay's avatar
garciay committed
    group utPrimitives {
        
garciay's avatar
garciay committed
        template UtGnInitialize m_secGnInitialize(
                                                  in Oct8 p_hashedId8
garciay's avatar
garciay committed
        ) := {
            hashedId8 := p_hashedId8
        } // End of template m_secGnInitialize
        
garciay's avatar
garciay committed
    } // End of group utPrimitives
    
} // End of module LibItsSecurity_Templates