Loading ttcn/Security/LibItsSecurity_Functions.ttcn +118 −55 Original line number Original line Diff line number Diff line Loading @@ -1188,14 +1188,14 @@ module LibItsSecurity_Functions { } // End of function f_verifyCertificateSignatureWithIssuingCertificate } // End of function f_verifyCertificateSignatureWithIssuingCertificate /** /** * @desc Verify the signature of the provided secured message * @desc Verify the signature of the provided secured message for ECDSA Nist-P256 algorithm * @param p_securedMessage The message to be verified * @param p_securedMessage The message to be verified * @param p_publicKey The ECDSA public key to verify a signature * @param p_publicKey The ECDSA public key to verify a signature * @param p_certificate EtsiTs103097Certificate to be used to verify the message * @param p_certificate EtsiTs103097Certificate to be used to verify the message * @return true on success, false otherwise * @return true on success, false otherwise * @verdict * @verdict Unchanged */ */ function f_verifyGnSecuredMessageSignatureWithPublicKey( function f_verifyGnSecuredMessageSignature_ecdsaNistP256( in template (value) Ieee1609Dot2Data p_securedMessage, in template (value) Ieee1609Dot2Data p_securedMessage, in template (value) EccP256CurvePoint p_publicKey in template (value) EccP256CurvePoint p_publicKey ) return boolean { ) return boolean { Loading @@ -1203,51 +1203,118 @@ module LibItsSecurity_Functions { // Local variables // Local variables var octetstring v_secPayload; var octetstring v_secPayload; var octetstring v_signedData; var octetstring v_signedData; // FIXME (DF) UNUSED // var Oct32 v_hash; var integer v_counter; var boolean v_result := false; var boolean v_result := false; var template (value) ToBeSignedData v_toBeSignedData; var template (value) ToBeSignedData v_toBeSignedData; // log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: p_securedMessage= ", p_securedMessage); log(">>> f_verifyGnSecuredMessageSignature_ecdsaNistP256: p_securedMessage= ", p_securedMessage); // log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: p_publicKey= ", p_publicKey); log(">>> f_verifyGnSecuredMessageSignature_ecdsaNistP256: p_publicKey= ", p_publicKey); // Create Ieee1609Dot2Data payload to be signed // Create Ieee1609Dot2Data payload to be signed /* FIXME To be reviewed v_toBeSignedData := m_toBeSignedSecuredMessage( v_toBeSignedData := valueof(p_securedMessage.content.signedData.tbsData); valueof(p_securedMessage.header_fields), log("f_verifyGnSecuredMessageSignature_ecdsaNistP256: v_toBeSignedData=", p_securedMessage.content.signedData.tbsData); valueof(p_securedMessage.payload_field), e_signature ); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_toBeSignedData=", v_toBeSignedData); v_secPayload := bit2oct(encvalue(v_toBeSignedData)); v_secPayload := bit2oct(encvalue(v_toBeSignedData)); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_secPayload=", v_secPayload); log("f_verifyGnSecuredMessageSignature_ecdsaNistP256: v_secPayload=", v_secPayload); // Verify payload // Verify payload for (v_counter := 0; v_counter < lengthof(p_securedMessage.trailer_fields); v_counter := v_counter + 1) { v_signedData := valueof(p_securedMessage.content.signedData.signature_.ecdsaNistP256Signature.rSig.x_only) & valueof(p_securedMessage.content.signedData.signature_.ecdsaNistP256Signature.sSig); var Ieee1609Dot2Data v_securedMessage := valueof(p_securedMessage); log("f_verifyGnSecuredMessageSignature_ecdsaNistP256: v_signedData=", v_signedData); if ( (v_securedMessage.trailer_fields[v_counter].type_ == e_signature) and (v_securedMessage.trailer_fields[v_counter].trailerField.signature_.algorithm == e_ecdsa_nistp256_with_sha256) ) { v_signedData := '0000'O & v_securedMessage.trailer_fields[v_counter].trailerField.signature_.ecdsaNistP256Signature.rSig & v_securedMessage.trailer_fields[v_counter].trailerField.signature_.ecdsaNistP256Signature.sSig; log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_signedData=", v_signedData); v_result := f_verifyWithEcdsaNistp256WithSha256( v_result := f_verifyWithEcdsaNistp256WithSha256( v_secPayload, v_secPayload, v_signedData, v_signedData, valueof(p_publicKey.uncompressedP256.x), valueof(p_publicKey.uncompressedP256.x), valueof(p_publicKey.uncompressedP256.y) valueof(p_publicKey.uncompressedP256.y) ); ); break; } }*/ // End of 'for' statement log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_result=", v_result); log("f_verifyGnSecuredMessageSignature_ecdsaNistP256: v_result=", v_result); return v_result; return v_result; } // End of function f_verifyCertificateSignatureWithPublicKey } // End of function f_verifyGnSecuredMessageSignature_ecdsaNistP256 /** * @desc Verify the signature of the provided secured message for ECDSA Brainpool-P256 algorithm * @param p_securedMessage The message to be verified * @param p_publicKey The ECDSA public key to verify a signature * @param p_certificate EtsiTs103097Certificate to be used to verify the message * @return true on success, false otherwise * @verdict Unchanged */ function f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1( in template (value) Ieee1609Dot2Data p_securedMessage, in template (value) EccP256CurvePoint p_publicKey ) return boolean { // Local variables var octetstring v_secPayload; var octetstring v_signedData; var boolean v_result := false; var template (value) ToBeSignedData v_toBeSignedData; log(">>> f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: p_securedMessage= ", p_securedMessage); log(">>> f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: p_publicKey= ", p_publicKey); // Create Ieee1609Dot2Data payload to be signed v_toBeSignedData := valueof(p_securedMessage.content.signedData.tbsData); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: v_toBeSignedData=", p_securedMessage.content.signedData.tbsData); v_secPayload := bit2oct(encvalue(v_toBeSignedData)); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: v_secPayload=", v_secPayload); // Verify payload v_signedData := valueof(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP256r1Signature.rSig.x_only) & valueof(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP256r1Signature.sSig); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: v_signedData=", v_signedData); v_result := f_verifyWithEcdsaBrainpoolp256WithSha256( v_secPayload, v_signedData, valueof(p_publicKey.uncompressedP256.x), valueof(p_publicKey.uncompressedP256.y) ); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: v_result=", v_result); return v_result; } // End of function f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1 /** * @desc Verify the signature of the provided secured message for ECDSA Brainpool-P384 algorithm * @param p_securedMessage The message to be verified * @param p_publicKey The ECDSA public key to verify a signature * @param p_certificate EtsiTs103097Certificate to be used to verify the message * @return true on success, false otherwise * @verdict Unchanged */ function f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1( in template (value) Ieee1609Dot2Data p_securedMessage, in template (value) EccP384CurvePoint p_publicKey ) return boolean { // Local variables var octetstring v_secPayload; var octetstring v_signedData; var boolean v_result := false; var template (value) ToBeSignedData v_toBeSignedData; log(">>> f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: p_securedMessage= ", p_securedMessage); log(">>> f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: p_publicKey= ", p_publicKey); // Create Ieee1609Dot2Data payload to be signed v_toBeSignedData := valueof(p_securedMessage.content.signedData.tbsData); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: v_toBeSignedData=", p_securedMessage.content.signedData.tbsData); v_secPayload := bit2oct(encvalue(v_toBeSignedData)); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: v_secPayload=", v_secPayload); // Verify payload v_signedData := valueof(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP384r1Signature.rSig.x_only) & valueof(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP384r1Signature.sSig); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: v_signedData=", v_signedData); v_result := f_verifyWithEcdsaBrainpoolp256WithSha256( v_secPayload, v_signedData, valueof(p_publicKey.uncompressedP384.x), valueof(p_publicKey.uncompressedP384.y) ); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: v_result=", v_result); return v_result; } // End of function f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1 /** /** * @desc Verify the signature of the provided secured message * @desc Verify the signature of the provided secured message Loading @@ -1261,18 +1328,15 @@ module LibItsSecurity_Functions { in template (value) EtsiTs103097Certificate p_certificate in template (value) EtsiTs103097Certificate p_certificate ) return boolean { ) return boolean { /* FIXME To be reviewed for (var integer v_counter := 0; v_counter < lengthof(p_certificate.subject_attributes); v_counter := v_counter + 1) { if (ischosen(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP256r1Signature)) { var SubjectAttribute v_subjectAttribute := valueof(p_certificate.subject_attributes[v_counter]); return f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1(p_securedMessage, p_certificate.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1); } else if (ischosen(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP384r1Signature)) { log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", v_subjectAttribute); return f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1(p_securedMessage, p_certificate.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP384r1); if (v_subjectAttribute.type_ == e_verification_key) { } else if (ischosen(p_securedMessage.content.signedData.signature_.ecdsaNistP256Signature)) { return f_verifyGnSecuredMessageSignatureWithPublicKey( return f_verifyGnSecuredMessageSignature_ecdsaNistP256(p_securedMessage, p_certificate.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256); p_securedMessage, valueof(p_certificate.subject_attributes[v_counter].attribute.key)); } } }*/ // End of 'for' statement return false; return true; } // End of function f_verifyGnSecuredOtherMessageWithDeviceCertificate } // End of function f_verifyGnSecuredOtherMessageWithDeviceCertificate } // End of group deviceSignatureHelpers } // End of group deviceSignatureHelpers Loading @@ -1287,7 +1351,6 @@ module LibItsSecurity_Functions { */ */ function f_getMsgHeaderInfo( function f_getMsgHeaderInfo( in template(omit) Ieee1609Dot2Data p_securedMessage, in template(omit) Ieee1609Dot2Data p_securedMessage, in HeaderInfo p_headerInfo, out HeaderInfo p_return out HeaderInfo p_return ) return boolean { ) return boolean { var integer v_length; var integer v_length; Loading ttcn/Security/LibItsSecurity_Templates.ttcn +22 −2 Original line number Original line Diff line number Diff line Loading @@ -712,6 +712,16 @@ module LibItsSecurity_Templates { unsecuredData := p_unsecuredData unsecuredData := p_unsecuredData } // End of template m_ieee1609Dot2Data_unsecured } // End of template m_ieee1609Dot2Data_unsecured /** * @desc Receive template for 'unsecured' Payload * @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload */ template (present) Ieee1609Dot2Content mw_ieee1609Dot2Data_unsecured( template (present) Opaque p_unsecuredData := ? ) := { unsecuredData := p_unsecuredData } // End of template mw_ieee1609Dot2Data_unsecured /** /** * @desc Send template for 'signed' Payload * @desc Send template for 'signed' Payload * @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload * @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload Loading @@ -722,6 +732,16 @@ module LibItsSecurity_Templates { signedData := p_signedData signedData := p_signedData } // End of template m_ieee1609Dot2Data_signed } // End of template m_ieee1609Dot2Data_signed /** * @desc Send template for 'signed' Payload * @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload */ template (present) Ieee1609Dot2Content mw_ieee1609Dot2Data_signed( template (present) SignedData p_signedData := ? ) := { signedData := p_signedData } // End of template mw_ieee1609Dot2Data_signed } // End of group ieee1609Dot2Data } // End of group ieee1609Dot2Data /** /** Loading Loading @@ -880,8 +900,8 @@ module LibItsSecurity_Templates { } // End of template m_ecdsaP256Signature } // End of template m_ecdsaP256Signature template (present) EcdsaP256Signature mw_ecdsaP256Signature( template (present) EcdsaP256Signature mw_ecdsaP256Signature( template (present) EccP256CurvePoint p_rSig, template (present) EccP256CurvePoint p_rSig := ?, template (present) Oct32 p_sSig template (present) Oct32 p_sSig := ? ) := { ) := { rSig := p_rSig, rSig := p_rSig, sSig := p_sSig sSig := p_sSig Loading ttcn/Security/LibItsSecurity_TypesAndValues.ttcn +0 −1 Original line number Original line Diff line number Diff line Loading @@ -242,7 +242,6 @@ module LibItsSecurity_TypesAndValues { type enumerated SignAlgorithm { type enumerated SignAlgorithm { e_nistp_256, e_nistp_256, e_nistp_384, e_brainpool_256, e_brainpool_256, e_brainpool_384 e_brainpool_384 } } Loading Loading
ttcn/Security/LibItsSecurity_Functions.ttcn +118 −55 Original line number Original line Diff line number Diff line Loading @@ -1188,14 +1188,14 @@ module LibItsSecurity_Functions { } // End of function f_verifyCertificateSignatureWithIssuingCertificate } // End of function f_verifyCertificateSignatureWithIssuingCertificate /** /** * @desc Verify the signature of the provided secured message * @desc Verify the signature of the provided secured message for ECDSA Nist-P256 algorithm * @param p_securedMessage The message to be verified * @param p_securedMessage The message to be verified * @param p_publicKey The ECDSA public key to verify a signature * @param p_publicKey The ECDSA public key to verify a signature * @param p_certificate EtsiTs103097Certificate to be used to verify the message * @param p_certificate EtsiTs103097Certificate to be used to verify the message * @return true on success, false otherwise * @return true on success, false otherwise * @verdict * @verdict Unchanged */ */ function f_verifyGnSecuredMessageSignatureWithPublicKey( function f_verifyGnSecuredMessageSignature_ecdsaNistP256( in template (value) Ieee1609Dot2Data p_securedMessage, in template (value) Ieee1609Dot2Data p_securedMessage, in template (value) EccP256CurvePoint p_publicKey in template (value) EccP256CurvePoint p_publicKey ) return boolean { ) return boolean { Loading @@ -1203,51 +1203,118 @@ module LibItsSecurity_Functions { // Local variables // Local variables var octetstring v_secPayload; var octetstring v_secPayload; var octetstring v_signedData; var octetstring v_signedData; // FIXME (DF) UNUSED // var Oct32 v_hash; var integer v_counter; var boolean v_result := false; var boolean v_result := false; var template (value) ToBeSignedData v_toBeSignedData; var template (value) ToBeSignedData v_toBeSignedData; // log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: p_securedMessage= ", p_securedMessage); log(">>> f_verifyGnSecuredMessageSignature_ecdsaNistP256: p_securedMessage= ", p_securedMessage); // log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: p_publicKey= ", p_publicKey); log(">>> f_verifyGnSecuredMessageSignature_ecdsaNistP256: p_publicKey= ", p_publicKey); // Create Ieee1609Dot2Data payload to be signed // Create Ieee1609Dot2Data payload to be signed /* FIXME To be reviewed v_toBeSignedData := m_toBeSignedSecuredMessage( v_toBeSignedData := valueof(p_securedMessage.content.signedData.tbsData); valueof(p_securedMessage.header_fields), log("f_verifyGnSecuredMessageSignature_ecdsaNistP256: v_toBeSignedData=", p_securedMessage.content.signedData.tbsData); valueof(p_securedMessage.payload_field), e_signature ); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_toBeSignedData=", v_toBeSignedData); v_secPayload := bit2oct(encvalue(v_toBeSignedData)); v_secPayload := bit2oct(encvalue(v_toBeSignedData)); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_secPayload=", v_secPayload); log("f_verifyGnSecuredMessageSignature_ecdsaNistP256: v_secPayload=", v_secPayload); // Verify payload // Verify payload for (v_counter := 0; v_counter < lengthof(p_securedMessage.trailer_fields); v_counter := v_counter + 1) { v_signedData := valueof(p_securedMessage.content.signedData.signature_.ecdsaNistP256Signature.rSig.x_only) & valueof(p_securedMessage.content.signedData.signature_.ecdsaNistP256Signature.sSig); var Ieee1609Dot2Data v_securedMessage := valueof(p_securedMessage); log("f_verifyGnSecuredMessageSignature_ecdsaNistP256: v_signedData=", v_signedData); if ( (v_securedMessage.trailer_fields[v_counter].type_ == e_signature) and (v_securedMessage.trailer_fields[v_counter].trailerField.signature_.algorithm == e_ecdsa_nistp256_with_sha256) ) { v_signedData := '0000'O & v_securedMessage.trailer_fields[v_counter].trailerField.signature_.ecdsaNistP256Signature.rSig & v_securedMessage.trailer_fields[v_counter].trailerField.signature_.ecdsaNistP256Signature.sSig; log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_signedData=", v_signedData); v_result := f_verifyWithEcdsaNistp256WithSha256( v_result := f_verifyWithEcdsaNistp256WithSha256( v_secPayload, v_secPayload, v_signedData, v_signedData, valueof(p_publicKey.uncompressedP256.x), valueof(p_publicKey.uncompressedP256.x), valueof(p_publicKey.uncompressedP256.y) valueof(p_publicKey.uncompressedP256.y) ); ); break; } }*/ // End of 'for' statement log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_result=", v_result); log("f_verifyGnSecuredMessageSignature_ecdsaNistP256: v_result=", v_result); return v_result; return v_result; } // End of function f_verifyCertificateSignatureWithPublicKey } // End of function f_verifyGnSecuredMessageSignature_ecdsaNistP256 /** * @desc Verify the signature of the provided secured message for ECDSA Brainpool-P256 algorithm * @param p_securedMessage The message to be verified * @param p_publicKey The ECDSA public key to verify a signature * @param p_certificate EtsiTs103097Certificate to be used to verify the message * @return true on success, false otherwise * @verdict Unchanged */ function f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1( in template (value) Ieee1609Dot2Data p_securedMessage, in template (value) EccP256CurvePoint p_publicKey ) return boolean { // Local variables var octetstring v_secPayload; var octetstring v_signedData; var boolean v_result := false; var template (value) ToBeSignedData v_toBeSignedData; log(">>> f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: p_securedMessage= ", p_securedMessage); log(">>> f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: p_publicKey= ", p_publicKey); // Create Ieee1609Dot2Data payload to be signed v_toBeSignedData := valueof(p_securedMessage.content.signedData.tbsData); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: v_toBeSignedData=", p_securedMessage.content.signedData.tbsData); v_secPayload := bit2oct(encvalue(v_toBeSignedData)); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: v_secPayload=", v_secPayload); // Verify payload v_signedData := valueof(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP256r1Signature.rSig.x_only) & valueof(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP256r1Signature.sSig); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: v_signedData=", v_signedData); v_result := f_verifyWithEcdsaBrainpoolp256WithSha256( v_secPayload, v_signedData, valueof(p_publicKey.uncompressedP256.x), valueof(p_publicKey.uncompressedP256.y) ); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1: v_result=", v_result); return v_result; } // End of function f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1 /** * @desc Verify the signature of the provided secured message for ECDSA Brainpool-P384 algorithm * @param p_securedMessage The message to be verified * @param p_publicKey The ECDSA public key to verify a signature * @param p_certificate EtsiTs103097Certificate to be used to verify the message * @return true on success, false otherwise * @verdict Unchanged */ function f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1( in template (value) Ieee1609Dot2Data p_securedMessage, in template (value) EccP384CurvePoint p_publicKey ) return boolean { // Local variables var octetstring v_secPayload; var octetstring v_signedData; var boolean v_result := false; var template (value) ToBeSignedData v_toBeSignedData; log(">>> f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: p_securedMessage= ", p_securedMessage); log(">>> f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: p_publicKey= ", p_publicKey); // Create Ieee1609Dot2Data payload to be signed v_toBeSignedData := valueof(p_securedMessage.content.signedData.tbsData); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: v_toBeSignedData=", p_securedMessage.content.signedData.tbsData); v_secPayload := bit2oct(encvalue(v_toBeSignedData)); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: v_secPayload=", v_secPayload); // Verify payload v_signedData := valueof(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP384r1Signature.rSig.x_only) & valueof(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP384r1Signature.sSig); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: v_signedData=", v_signedData); v_result := f_verifyWithEcdsaBrainpoolp256WithSha256( v_secPayload, v_signedData, valueof(p_publicKey.uncompressedP384.x), valueof(p_publicKey.uncompressedP384.y) ); log("f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1: v_result=", v_result); return v_result; } // End of function f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1 /** /** * @desc Verify the signature of the provided secured message * @desc Verify the signature of the provided secured message Loading @@ -1261,18 +1328,15 @@ module LibItsSecurity_Functions { in template (value) EtsiTs103097Certificate p_certificate in template (value) EtsiTs103097Certificate p_certificate ) return boolean { ) return boolean { /* FIXME To be reviewed for (var integer v_counter := 0; v_counter < lengthof(p_certificate.subject_attributes); v_counter := v_counter + 1) { if (ischosen(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP256r1Signature)) { var SubjectAttribute v_subjectAttribute := valueof(p_certificate.subject_attributes[v_counter]); return f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP256r1(p_securedMessage, p_certificate.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1); } else if (ischosen(p_securedMessage.content.signedData.signature_.ecdsaBrainpoolP384r1Signature)) { log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", v_subjectAttribute); return f_verifyGnSecuredMessageSignature_ecdsaBrainpoolP384r1(p_securedMessage, p_certificate.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP384r1); if (v_subjectAttribute.type_ == e_verification_key) { } else if (ischosen(p_securedMessage.content.signedData.signature_.ecdsaNistP256Signature)) { return f_verifyGnSecuredMessageSignatureWithPublicKey( return f_verifyGnSecuredMessageSignature_ecdsaNistP256(p_securedMessage, p_certificate.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256); p_securedMessage, valueof(p_certificate.subject_attributes[v_counter].attribute.key)); } } }*/ // End of 'for' statement return false; return true; } // End of function f_verifyGnSecuredOtherMessageWithDeviceCertificate } // End of function f_verifyGnSecuredOtherMessageWithDeviceCertificate } // End of group deviceSignatureHelpers } // End of group deviceSignatureHelpers Loading @@ -1287,7 +1351,6 @@ module LibItsSecurity_Functions { */ */ function f_getMsgHeaderInfo( function f_getMsgHeaderInfo( in template(omit) Ieee1609Dot2Data p_securedMessage, in template(omit) Ieee1609Dot2Data p_securedMessage, in HeaderInfo p_headerInfo, out HeaderInfo p_return out HeaderInfo p_return ) return boolean { ) return boolean { var integer v_length; var integer v_length; Loading
ttcn/Security/LibItsSecurity_Templates.ttcn +22 −2 Original line number Original line Diff line number Diff line Loading @@ -712,6 +712,16 @@ module LibItsSecurity_Templates { unsecuredData := p_unsecuredData unsecuredData := p_unsecuredData } // End of template m_ieee1609Dot2Data_unsecured } // End of template m_ieee1609Dot2Data_unsecured /** * @desc Receive template for 'unsecured' Payload * @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload */ template (present) Ieee1609Dot2Content mw_ieee1609Dot2Data_unsecured( template (present) Opaque p_unsecuredData := ? ) := { unsecuredData := p_unsecuredData } // End of template mw_ieee1609Dot2Data_unsecured /** /** * @desc Send template for 'signed' Payload * @desc Send template for 'signed' Payload * @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload * @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload Loading @@ -722,6 +732,16 @@ module LibItsSecurity_Templates { signedData := p_signedData signedData := p_signedData } // End of template m_ieee1609Dot2Data_signed } // End of template m_ieee1609Dot2Data_signed /** * @desc Send template for 'signed' Payload * @see Draft ETSI TS 103 097 V1.3.1 Clause 5.2 Payload */ template (present) Ieee1609Dot2Content mw_ieee1609Dot2Data_signed( template (present) SignedData p_signedData := ? ) := { signedData := p_signedData } // End of template mw_ieee1609Dot2Data_signed } // End of group ieee1609Dot2Data } // End of group ieee1609Dot2Data /** /** Loading Loading @@ -880,8 +900,8 @@ module LibItsSecurity_Templates { } // End of template m_ecdsaP256Signature } // End of template m_ecdsaP256Signature template (present) EcdsaP256Signature mw_ecdsaP256Signature( template (present) EcdsaP256Signature mw_ecdsaP256Signature( template (present) EccP256CurvePoint p_rSig, template (present) EccP256CurvePoint p_rSig := ?, template (present) Oct32 p_sSig template (present) Oct32 p_sSig := ? ) := { ) := { rSig := p_rSig, rSig := p_rSig, sSig := p_sSig sSig := p_sSig Loading
ttcn/Security/LibItsSecurity_TypesAndValues.ttcn +0 −1 Original line number Original line Diff line number Diff line Loading @@ -242,7 +242,6 @@ module LibItsSecurity_TypesAndValues { type enumerated SignAlgorithm { type enumerated SignAlgorithm { e_nistp_256, e_nistp_256, e_nistp_384, e_brainpool_256, e_brainpool_256, e_brainpool_384 e_brainpool_384 } } Loading