Commit 65fa3f87 authored by garciay's avatar garciay
Browse files

Start Security support

Add Service Advertisement support
parent 06138be7
...@@ -840,4 +840,12 @@ module ItsRSUsSimulator_Functions { ...@@ -840,4 +840,12 @@ module ItsRSUsSimulator_Functions {
return vc_sequenceNumber; return vc_sequenceNumber;
} }
function f_payload_template(
in integer p_dest_port,
in integer p_src_port
) return template (present) octetstring {
template (present) octetstring v_out :=
int2oct(PICS_SREM_BTP_DESTINATION_PORT, 2) & int2oct(PICS_SREM_BTP_SOURCE_PORT, 2) & ? length (1 .. 65535);
return v_out
}
} // End of module ItsRSUsSimulator_Functions } // End of module ItsRSUsSimulator_Functions
...@@ -124,10 +124,7 @@ module ItsRSUsSimulator_Templates { ...@@ -124,10 +124,7 @@ module ItsRSUsSimulator_Templates {
in template (present) UInt16 p_seqNumber := ?, in template (present) UInt16 p_seqNumber := ?,
in template (present) NextHeader p_nextHeader := ? in template (present) NextHeader p_nextHeader := ?
) modifies mw_geoNwBroadcastPacketWithNextHeader := { ) modifies mw_geoNwBroadcastPacketWithNextHeader := {
payload := payload := f_payload_template(PICS_SREM_BTP_DESTINATION_PORT, PICS_SREM_BTP_SOURCE_PORT)
int2oct(PICS_SREM_BTP_DESTINATION_PORT, 2) &
int2oct(PICS_SREM_BTP_SOURCE_PORT, 2) &
'*'O
} }
/** /**
...@@ -141,10 +138,7 @@ module ItsRSUsSimulator_Templates { ...@@ -141,10 +138,7 @@ module ItsRSUsSimulator_Templates {
in template (present) LongPosVector p_sourceLongPosVec := ?, in template (present) LongPosVector p_sourceLongPosVec := ?,
in template (value) NextHeader p_nextHeader in template (value) NextHeader p_nextHeader
) modifies mw_geoNwTsbPacketWithNextHeader := { ) modifies mw_geoNwTsbPacketWithNextHeader := {
payload := payload := f_payload_template(PICS_SREM_BTP_DESTINATION_PORT, PICS_SREM_BTP_SOURCE_PORT)
int2oct(PICS_SREM_BTP_DESTINATION_PORT, 2) &
int2oct(PICS_SREM_BTP_SOURCE_PORT, 2) &
'?'O
} }
/** /**
...@@ -157,10 +151,7 @@ module ItsRSUsSimulator_Templates { ...@@ -157,10 +151,7 @@ module ItsRSUsSimulator_Templates {
in template (present) UInt16 p_seqNumber := ?, in template (present) UInt16 p_seqNumber := ?,
in template (present) LongPosVector p_sourceLongPosVec := ? in template (present) LongPosVector p_sourceLongPosVec := ?
) modifies mw_geoNwTsbPacket := { ) modifies mw_geoNwTsbPacket := {
payload := payload := f_payload_template(PICS_DENM_BTP_DESTINATION_PORT, PICS_DENM_BTP_SOURCE_PORT)
int2oct(PICS_DENM_BTP_DESTINATION_PORT, 2) &
int2oct(PICS_DENM_BTP_SOURCE_PORT, 2) &
'?'O
} // End of template mw_geoNwTsbPacketWithNextHeader_denm } // End of template mw_geoNwTsbPacketWithNextHeader_denm
/** /**
...@@ -175,10 +166,7 @@ module ItsRSUsSimulator_Templates { ...@@ -175,10 +166,7 @@ module ItsRSUsSimulator_Templates {
in template (present) NextHeader p_nextHeader, in template (present) NextHeader p_nextHeader,
in template (present) CAM p_cam := ? in template (present) CAM p_cam := ?
) modifies mw_geoNwShbPacket := { ) modifies mw_geoNwShbPacket := {
payload := payload := f_payload_template(PICS_CAM_BTP_DESTINATION_PORT, PICS_CAM_BTP_SOURCE_PORT)
int2oct(PICS_CAM_BTP_DESTINATION_PORT, 2) &
int2oct(PICS_CAM_BTP_SOURCE_PORT, 2) &
'?'O
} // End of template mw_geoNwShbPacketWithNextHeader_cam } // End of template mw_geoNwShbPacketWithNextHeader_cam
} // End of group geoNetworkingTemplates } // End of group geoNetworkingTemplates
......
...@@ -14,6 +14,7 @@ module ItsRSUsSimulator_TypesAndValues { ...@@ -14,6 +14,7 @@ module ItsRSUsSimulator_TypesAndValues {
import from EVCSN_PDU_Descriptions language "ASN.1:1997" all; import from EVCSN_PDU_Descriptions language "ASN.1:1997" all;
import from SSEM_PDU_Descriptions language "ASN.1:1997" all; import from SSEM_PDU_Descriptions language "ASN.1:1997" all;
import from DSRC language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all;
import from DSRC_REGION_noCircular language "ASN.1:1997" all;
import from EfcDsrcApplication language "ASN.1:1997" all; import from EfcDsrcApplication language "ASN.1:1997" all;
// LibItsGeoNetworking // LibItsGeoNetworking
......
...@@ -37,6 +37,12 @@ module TestCodec_Certificates { ...@@ -37,6 +37,12 @@ module TestCodec_Certificates {
signature_ := omit signature_ := omit
} // End of template m_etsiTs103097Certificate } // End of template m_etsiTs103097Certificate
template (value) IssuerIdentifier m_issuerIdentifier_self(
in template (value) HashAlgorithm p_self
) := {
self_ := p_self
} // End of template m_issuerIdentifier_self
template (value) IssuerIdentifier m_issuerIdentifier_sha256AndDigest( template (value) IssuerIdentifier m_issuerIdentifier_sha256AndDigest(
in template (value) HashedId8 p_sha256AndDigest in template (value) HashedId8 p_sha256AndDigest
) := { ) := {
...@@ -53,11 +59,11 @@ module TestCodec_Certificates { ...@@ -53,11 +59,11 @@ module TestCodec_Certificates {
in template (value) CertificateId p_id, in template (value) CertificateId p_id,
in template (value) HashedId3 p_cracaId, in template (value) HashedId3 p_cracaId,
in template (value) CrlSeries p_crlSeries, in template (value) CrlSeries p_crlSeries,
in template (value) ValidityPeriod p_validityPeriod,
in template (value) SequenceOfPsidSsp p_appPermissions, in template (value) SequenceOfPsidSsp p_appPermissions,
in template (value) SequenceOfPsidGroupPermissions p_certIssuePermissions, in template (value) SequenceOfPsidGroupPermissions p_certIssuePermissions,
in template (value) SequenceOfPsidGroupPermissions p_certRequestPermissions, in template (value) SequenceOfPsidGroupPermissions p_certRequestPermissions,
in template (value) VerificationKeyIndicator p_verifyKeyIndicator, in template (value) VerificationKeyIndicator p_verifyKeyIndicator,
in template (omit) ValidityPeriod p_validityPeriod := omit,
in template (omit) GeographicRegion p_region := omit, in template (omit) GeographicRegion p_region := omit,
in template (omit) SubjectAssurance p_assuranceLevel := omit, in template (omit) SubjectAssurance p_assuranceLevel := omit,
in template (omit) PublicEncryptionKey p_encryptionKey := omit in template (omit) PublicEncryptionKey p_encryptionKey := omit
...@@ -84,13 +90,13 @@ module TestCodec_Certificates { ...@@ -84,13 +90,13 @@ module TestCodec_Certificates {
duration := p_duration duration := p_duration
} // End of template m_validity_period } // End of template m_validity_period
template (omit) PsidSsp m_psidSsp( template (omit) PsidSsp m_appPermissions(
in template (value) Psid p_psid, in template (value) Psid p_psid,
in template (omit) ServiceSpecificPermissions p_ssp := omit in template (omit) ServiceSpecificPermissions p_ssp := omit
) := { ) := {
psid := p_psid, psid := p_psid,
ssp := p_ssp ssp := p_ssp
} // End of template m_psidSsp } // End of template m_appPermissions
template (omit) PsidSspRange m_psidSspRange( template (omit) PsidSspRange m_psidSspRange(
in Psid p_psid, in Psid p_psid,
...@@ -143,28 +149,40 @@ module TestCodec_Certificates { ...@@ -143,28 +149,40 @@ module TestCodec_Certificates {
} // End of template m_eccP256CurvePoint_compressed_y_0 } // End of template m_eccP256CurvePoint_compressed_y_0
testcase tc_certificate_1() runs on TCType system TCType { testcase tc_certificate_1() runs on TCType system TCType {
var template (value) EtsiTs103097Certificate v_cert; var template (value) EtsiTs103097Certificate v_cert; // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 1
var HashedId8 v_sha256AndDigest := '0000000000000000'O; var charstring v_certId := "STF528 Root Certificate";
var HashedId3 v_cracaId := '000000'O; var HashAlgorithm v_self := sha256; // ETSI TS 103 097 V1.3.1 Clause 7.2.3 Root CA certificates Bullet 1
var CrlSeries v_crlSeries := 0; var HashedId3 v_cracaId := '000000'O; // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 2
var SequenceOfPsidSspRange v_certIssuePermissions := { valueof(m_psidSspRange(1)) }; var CrlSeries v_crlSeries := 0; // ETSI TS 103 097 V1.3.1 Clause 6 Bullet 3
var SequenceOfPsidSspRange v_certRequestPermissions := { valueof(m_psidSspRange(2)) }; var SequenceOfPsidSsp v_appPermissions := { // ETSI TS 102 965 Table A.1: ETSI ITS standardized ITS-AIDs
valueof(m_appPermissions(36, { bitmapSsp := '001100110011'O })),
valueof(m_appPermissions(37, { bitmapSsp := '001100110011'O }))
};
var SequenceOfPsidSspRange v_certIssuePermissions := { // ETSI TS 103 097 V1.3.1 Clause 7.2.3 Root CA certificates Bullet 3
valueof(m_psidSspRange(1)) // FIXME What is the content of certIssuePermissions?
};
var SequenceOfPsidSspRange v_certRequestPermissions := { // FIXME Could this componet be present? If yes, What is the content of certIssuePermissions?
valueof(m_psidSspRange(2))
};
var Oct32 v_compressed_y_0 := '0000000000000000000000000000000000000000000000000000000000000000'O; var Oct32 v_compressed_y_0 := '0000000000000000000000000000000000000000000000000000000000000000'O;
var HashedId8 v_sha256AndDigest;
var bitstring v_encMsg; var bitstring v_encMsg;
var integer v_res := 0; var integer v_res := 0;
var bitstring v_expEncMsg := oct2bit('310020'O); var bitstring v_expEncMsg := oct2bit('310020'O);
// Generate Private/Public keys
var Oct32 private_key;
//f_generate_keys_pair(private_key, v_compressed_y_0, "compressed-y-0");
// Store Private key in binary format
//f_save_key(private_key);
// Fill Certificate template with the public key
v_cert := m_etsiTs103097Certificate( v_cert := m_etsiTs103097Certificate(
m_issuerIdentifier_sha256AndDigest(v_sha256AndDigest), m_issuerIdentifier_self(v_self),
m_toBeSignedCertificate( m_toBeSignedCertificate(
{ name := "tc_certificate_1" }, { name := v_certId },
v_cracaId, v_cracaId,
v_crlSeries, v_crlSeries,
m_validity_period(0, { milliseconds := 1000 }), v_appPermissions,
{
m_psidSsp(1),
m_psidSsp(2, { bitmapSsp := '001100110011'O })
},
{ {
m_PsidGroupPermissions( m_PsidGroupPermissions(
m_subjectPermissions_explicit( m_subjectPermissions_explicit(
...@@ -184,21 +202,15 @@ module TestCodec_Certificates { ...@@ -184,21 +202,15 @@ module TestCodec_Certificates {
))) )))
) )
); );
// Encode it ==> Get octetstring
// Encode template
log("Encode template ", valueof(v_cert)); log("Encode template ", valueof(v_cert));
v_encMsg := encvalue(v_cert); v_encMsg := encvalue(v_cert);
log("Encoded message: ", bit2oct(v_encMsg)); // Update v_sha256AndDigest
// Check result //f_hashWithSha256(bit2oct(v_encMsg));
if (not isbound(v_encMsg)) { //f_HashedId8FromSha256();
setverdict(fail, "Encoding failed!"); // Sign the certificate
stop; //f_signWithEcdsaNistp256WithSha256();
}
if (not match(v_encMsg, v_expEncMsg)) {
log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
setverdict(fail, "Encoding failed, not the expected result!");
stop;
}
setverdict(pass, "Encoding passed."); setverdict(pass, "Encoding passed.");
} // End of testcase tc_certificate_1 } // End of testcase tc_certificate_1
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment