Newer
Older
/**
* @author ETSI / STF481
* @version $URL$
* $Id$
* @desc Module containing templates for Security Protocol
*
*/
module LibItsSecurity_Templates {
// LibCommon
import from LibCommon_BasicTypesAndValues {
type
UInt8
}
// LibItsSecurity
import from LibItsSecurity_TypesAndValues all;
import from LibItsSecurity_Pixits all;
import from LibItsSecurity_TestSystem {
type
GnSecurityReq, GnSecurityInd
}
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
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;
* @desc Certificate version
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6.1 Certificate
* @desc Dummy send/receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4 Basic format elements
* @desc Dummy send templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 4.2 Specification of basic format elements
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 := {
} // 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,
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)
} // End of template m_aesccm_dummy
} // End of group algorithms
* @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
*/
group signatures {
template (value) Signature m_signature_ecdsa := {
algorithm := e_ecdsa_nistp256_with_sha256,
signature_ := {
ecdsa_signature := m_ecdsaSignature
} // End of field signature_
} // End of template m_signature_ecdsa
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
} // End of group signatures
* @desc Dummy send template for PublicKey/EccPoint
*/
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
*/
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 send/receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
* @desc Dummy send templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
*/
group dummyMessagesSend {
/**
* @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
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 := {
other_header := ''O
} // End of template m_header_field_container_dummy
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
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 dummyMessagesSend
/**
* @desc Dummy receive templates for security headers
* @see Draft ETSI TS 103 097 V1.1.6 Clause 5 Specification of security header
group dummyMessagesRecv {
/**
* @desc Generic received template for SecuredMessage
*/
template (present) SecuredMessage mw_securedMessage_dummy := {
protocol_version := c_protocol_version,
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 := {
} // End of template mw_signedPayload_dummy
/**
* @desc Generic received template for SecuredMessage
*/
template (present) Payload mw_unsecuredPayload_dummy := {
} // End of template mw_unsecuredPayload_dummy
} // End of group dummyMessagesRecv
} // End of group dummyMessages
* @desc Dummy send/receive templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
group dummyCertifices {
/**
* @desc Dummy send templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
group dummyCertificesSend {
/**
* @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,
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
signer_info := {
m_signerInfo_ecdsa256(
m_signerInfoContainer_digest(
PX_ECDSA_DIGEST
)
)
},
subject_info := m_subject_info_dummy,
subject_attributes := { m_subject_attribute_dummy },
validity_restrictions := { m_validity_restriction_dummy },
signature_ := m_signature_ecdsa
} // 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
/**
* @desc Dummy receive templates for certificates
* @see Draft ETSI TS 103 097 V1.1.6 Clause 6 Specification of certificate format
*/
group dummyCertificesRecv {
/**
* @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
} // End of group dummyCertificesRecv
} // End of group dummyCertifices
/**
*/
/**
*/
group securityProfilesCAMs {
/**
*/
group securityProfilesCAMsSend {
/**
*/
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
template (value) HeaderField m_header_field_signerInfo_ecdsa256(
in template (value) SignerInfoContainer p_signerInfo
) modifies m_header_field_signerInfo_dummy := {
headerField := m_header_field_container_ecdsa256(p_signerInfo)
} // End of template m_header_field_signerInfo_ecdsa256
template (value) HeaderFieldContainer m_header_field_container_ecdsa256(
in template (value) SignerInfoContainer p_signerInfo
) := {
signer := m_signerInfo_ecdsa256(p_signerInfo)
} // End of template m_header_field_container_ecdsa256
template (value) SignerInfo m_signerInfo_ecdsa256(
in template (value) SignerInfoContainer p_signerInfo
) := {
type_ := e_certificate_digest_with_ecdsap256,
signerInfo := p_signerInfo
} // End of template m_signerInfo_ecdsa256
template (value) SignerInfoContainer m_signerInfoContainer_certificate(
in template (value) Certificate p_certificate
) := {
certificate := p_certificate
} // End of template m_signerInfoContainer_certificate
template (value) SignerInfoContainer m_signerInfoContainer_certificates(
in template (value) CertificateChain p_certificates
) := {
certificates := p_certificates
} // End of template m_signerInfoContainer_certificates
template (value) SignerInfoContainer m_signerInfoContainer_digest(
in template (value) HashedId8 p_digest
) := {
digest := p_digest
} // End of template m_signerInfoContainer_digest
} // End of group securityProfilesCAMsSend
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
group denmSecurityProfiles {
} // End of group denmSecurityProfiles
group otherSecurityProfiles {
} // End of group otherSecurityProfiles
} // End of group securityProfiles
group utPrimitives {
} // End of group utPrimitives
/**
* @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;
}
}