Commit 048d1eb3 authored by garciay's avatar garciay
Browse files

Major security bugs fixed for signature. Encryption to do.

parent ed130f9a
Loading
Loading
Loading
Loading
+34 −20
Original line number Diff line number Diff line
@@ -87,11 +87,11 @@ module TestCodec_ChainOfCertificates {
    v_chain_sec_info.aa.issuer := v_chain_sec_info.ca.hashedid8;
    // Verify signature of AA certificate by CA certificate
    v_enc_msg := encvalue(v_chain_sec_info.aa.cert.toBeSigned);
    if (ischosen(v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_0)) {
      v_publicKeyCompressed := v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_0;
    if (ischosen(v_chain_sec_info.ca.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_0)) {
      v_publicKeyCompressed := v_chain_sec_info.ca.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_0;
      v_publicKeyCompressedMode := 0;
    } else {
      v_publicKeyCompressed := v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_1;
      v_publicKeyCompressed := v_chain_sec_info.ca.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_1;
      v_publicKeyCompressedMode := 1;
    }
    if (f_verifyWithEcdsaNistp256WithSha256(
@@ -115,11 +115,11 @@ module TestCodec_ChainOfCertificates {
    v_chain_sec_info.at.issuer := v_chain_sec_info.aa.hashedid8;
    // Verify signature of AT certificate by AA certificate
    v_enc_msg := encvalue(v_chain_sec_info.at.cert.toBeSigned);
    if (ischosen(v_chain_sec_info.at.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_0)) {
      v_publicKeyCompressed := v_chain_sec_info.at.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_0;
    if (ischosen(v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_0)) {
      v_publicKeyCompressed := v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_0;
      v_publicKeyCompressedMode := 0;
    } else {
      v_publicKeyCompressed := v_chain_sec_info.at.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_1;
      v_publicKeyCompressed := v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaNistP256.compressed_y_1;
      v_publicKeyCompressedMode := 1;
    }
    if (f_verifyWithEcdsaNistp256WithSha256(
@@ -234,18 +234,18 @@ module TestCodec_ChainOfCertificates {
    v_chain_sec_info.aa.issuer := v_chain_sec_info.ca.hashedid8;
    // Verify signature of AA certificate by CA certificate
    v_enc_msg := encvalue(v_chain_sec_info.aa.cert.toBeSigned);
    if (ischosen(v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_0)) {
      v_publicKeyCompressed := v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_0;
    if (ischosen(v_chain_sec_info.ca.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_0)) {
      v_publicKeyCompressed := v_chain_sec_info.ca.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_0;
      v_publicKeyCompressedMode := 0;
    } else {
      v_publicKeyCompressed := v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_1;
      v_publicKeyCompressed := v_chain_sec_info.ca.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_1;
      v_publicKeyCompressedMode := 1;
    }
    if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(
    if (f_verifyWithEcdsaBrainpoolp256WithSha256(
                                                 bit2oct(v_enc_msg) & v_chain_sec_info.aa.issuer, 
                                                 v_chain_sec_info.aa.cert.signature_.ecdsaBrainpoolP256r1Signature.rSig.x_only & v_chain_sec_info.aa.cert.signature_.ecdsaBrainpoolP256r1Signature.sSig,
                                                 v_chain_sec_info.ca.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.uncompressedP256.x,
                                                 v_chain_sec_info.ca.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.uncompressedP256.y
                                                 v_publicKeyCompressed,
                                                 v_publicKeyCompressedMode
                                                ) == false) {
      setverdict(fail);
    } else {
@@ -260,11 +260,18 @@ module TestCodec_ChainOfCertificates {
    v_chain_sec_info.at.issuer := v_chain_sec_info.aa.hashedid8;
    // Verify signature of AT certificate by AA certificate
    v_enc_msg := encvalue(v_chain_sec_info.at.cert.toBeSigned);
    if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(
    if (ischosen(v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_0)) {
      v_publicKeyCompressed := v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_0;
      v_publicKeyCompressedMode := 0;
    } else {
      v_publicKeyCompressed := v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_1;
      v_publicKeyCompressedMode := 1;
    }
    if (f_verifyWithEcdsaBrainpoolp256WithSha256(
                                                 bit2oct(v_enc_msg) & v_chain_sec_info.at.issuer, 
                                                 v_chain_sec_info.at.cert.signature_.ecdsaBrainpoolP256r1Signature.rSig.x_only & v_chain_sec_info.at.cert.signature_.ecdsaBrainpoolP256r1Signature.sSig,
                                                 v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.uncompressedP256.x,
                                                 v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.uncompressedP256.y
                                                 v_publicKeyCompressed,
                                                 v_publicKeyCompressedMode
                                                ) == false) {
      setverdict(fail);
    } else {
@@ -299,13 +306,20 @@ module TestCodec_ChainOfCertificates {
    // Build the secured message and sign it
  v_secured_data := f_build_and_sign_secured_message_brainpoolP256_1(v_gnNonSecuredPacket, v_chain_sec_info.at);

    // Verify signature of secured messagee by AT certificate
    // Verify signature of secured message by AT certificate
  v_enc_msg := encvalue(v_secured_data.content.signedData.tbsData);
    if (f_verifyWithEcdsaBrainpoolp256WithSha256_1(
    if (ischosen(v_chain_sec_info.at.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_0)) {
      v_publicKeyCompressed := v_chain_sec_info.at.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_0;
      v_publicKeyCompressedMode := 0;
    } else {
      v_publicKeyCompressed := v_chain_sec_info.at.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.compressed_y_1;
      v_publicKeyCompressedMode := 1;
    }
    if (f_verifyWithEcdsaBrainpoolp256WithSha256(
                                                 bit2oct(v_enc_msg) & v_chain_sec_info.at.hashedid8,
                                                 valueof(v_secured_data.content.signedData.signature_.ecdsaNistP256Signature.rSig.x_only) & valueof(v_secured_data.content.signedData.signature_.ecdsaNistP256Signature.sSig),
                                                 v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.uncompressedP256.x,
                                                 v_chain_sec_info.aa.cert.toBeSigned.verifyKeyIndicator.verificationKey.ecdsaBrainpoolP256r1.uncompressedP256.y
                                                 valueof(v_secured_data.content.signedData.signature_.ecdsaBrainpoolP256r1Signature.rSig.x_only) & valueof(v_secured_data.content.signedData.signature_.ecdsaBrainpoolP256r1Signature.sSig),
                                                 v_publicKeyCompressed,
                                                 v_publicKeyCompressedMode
                                                 ) == false) {
      setverdict(fail);
    } else {