Loading ttcn/Security/LibItsSecurity_Functions.ttcn3 +19 −12 Original line number Diff line number Diff line Loading @@ -478,42 +478,46 @@ module LibItsSecurity_Functions { var boolean v_result := false; var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: ", p_securedMessage); // log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: ", p_securedMessage); // Create SecuredMessage payload to be signed v_toBeSignedSecuredMessage := m_toBeSignedSecuredMessage( valueof(p_securedMessage).security_profile, valueof(p_securedMessage.security_profile), p_securedMessage.header_fields, p_securedMessage.payload_fields, e_signature ); v_secPayload := bit2oct(encvalue(v_toBeSignedSecuredMessage)); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_secPayload=", v_secPayload); // log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_secPayload=", v_secPayload); // Calculate the hash of the SecuredMessage payload to be signed v_hash := fx_hashWithSha256(v_secPayload); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_hash=", v_hash); // log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_hash=", v_hash); // Verify payload for (v_counter := 0; v_counter < lengthof(p_securedMessage.trailer_fields); v_counter := v_counter + 1) { var SecuredMessage v_securedMessage := valueof(p_securedMessage); if ( (valueof(p_securedMessage).trailer_fields[v_counter].type_ == e_signature) and (valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.algorithm == e_ecdsa_nistp256_with_sha256) (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 & valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.r.x & valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.s; v_securedMessage.trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.r.x & v_securedMessage.trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.s; // log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_signedData=", v_signedData); v_result := f_verifyWithEcdsaNistp256WithSha256( v_hash, v_signedData, valueof(p_publicKey).public_key.eccPoint.x, valueof(p_publicKey).public_key.eccPoint.y.y valueof(p_publicKey.public_key.eccPoint.x), valueof(p_publicKey.public_key.eccPoint.y.y) ); break; } } // End of 'for' statement // log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_result=", v_result); return v_result; } // End of function f_verifyCertificateSignatureWithPublicKey Loading @@ -531,8 +535,11 @@ module LibItsSecurity_Functions { var integer v_counter; for (v_counter := 0; v_counter < lengthof(p_certificate.subject_attributes); v_counter := v_counter + 1) { log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", p_certificate.subject_attributes[v_counter]); if (valueof(p_certificate).subject_attributes[v_counter].type_ == e_verification_key) { var SubjectAttribute v_subjectAttribute := valueof(p_certificate.subject_attributes[v_counter]); // log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", v_subjectAttribute); if (v_subjectAttribute.type_ == e_verification_key) { // if (valueof(p_certificate.subject_attributes[v_counter].type_) == e_verification_key) { return f_verifyGnSecuredMessageSignatureWithPublicKey( p_securedMessage, p_certificate.subject_attributes[v_counter].attribute.key); Loading Loading
ttcn/Security/LibItsSecurity_Functions.ttcn3 +19 −12 Original line number Diff line number Diff line Loading @@ -478,42 +478,46 @@ module LibItsSecurity_Functions { var boolean v_result := false; var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: ", p_securedMessage); // log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: ", p_securedMessage); // Create SecuredMessage payload to be signed v_toBeSignedSecuredMessage := m_toBeSignedSecuredMessage( valueof(p_securedMessage).security_profile, valueof(p_securedMessage.security_profile), p_securedMessage.header_fields, p_securedMessage.payload_fields, e_signature ); v_secPayload := bit2oct(encvalue(v_toBeSignedSecuredMessage)); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_secPayload=", v_secPayload); // log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_secPayload=", v_secPayload); // Calculate the hash of the SecuredMessage payload to be signed v_hash := fx_hashWithSha256(v_secPayload); log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_hash=", v_hash); // log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_hash=", v_hash); // Verify payload for (v_counter := 0; v_counter < lengthof(p_securedMessage.trailer_fields); v_counter := v_counter + 1) { var SecuredMessage v_securedMessage := valueof(p_securedMessage); if ( (valueof(p_securedMessage).trailer_fields[v_counter].type_ == e_signature) and (valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.algorithm == e_ecdsa_nistp256_with_sha256) (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 & valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.r.x & valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.s; v_securedMessage.trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.r.x & v_securedMessage.trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.s; // log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_signedData=", v_signedData); v_result := f_verifyWithEcdsaNistp256WithSha256( v_hash, v_signedData, valueof(p_publicKey).public_key.eccPoint.x, valueof(p_publicKey).public_key.eccPoint.y.y valueof(p_publicKey.public_key.eccPoint.x), valueof(p_publicKey.public_key.eccPoint.y.y) ); break; } } // End of 'for' statement // log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_result=", v_result); return v_result; } // End of function f_verifyCertificateSignatureWithPublicKey Loading @@ -531,8 +535,11 @@ module LibItsSecurity_Functions { var integer v_counter; for (v_counter := 0; v_counter < lengthof(p_certificate.subject_attributes); v_counter := v_counter + 1) { log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", p_certificate.subject_attributes[v_counter]); if (valueof(p_certificate).subject_attributes[v_counter].type_ == e_verification_key) { var SubjectAttribute v_subjectAttribute := valueof(p_certificate.subject_attributes[v_counter]); // log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", v_subjectAttribute); if (v_subjectAttribute.type_ == e_verification_key) { // if (valueof(p_certificate.subject_attributes[v_counter].type_) == e_verification_key) { return f_verifyGnSecuredMessageSignatureWithPublicKey( p_securedMessage, p_certificate.subject_attributes[v_counter].attribute.key); Loading