Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package aws-c-cal for openSUSE:Factory 
checked in at 2024-11-21 15:19:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-cal (Old)
 and      /work/SRC/openSUSE:Factory/.aws-c-cal.new.28523 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "aws-c-cal"

Thu Nov 21 15:19:39 2024 rev:12 rq:1225588 version:0.8.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-cal/aws-c-cal.changes      2024-10-27 
11:25:19.630534177 +0100
+++ /work/SRC/openSUSE:Factory/.aws-c-cal.new.28523/aws-c-cal.changes   
2024-11-21 15:19:51.728532719 +0100
@@ -1,0 +2,8 @@
+Thu Nov 21 10:41:52 UTC 2024 - John Paul Adrian Glaubitz 
<adrian.glaub...@suse.com>
+
+- Update to version 0.8.1
+  * chore: Modified bug issue template to add checkbox to
+    report potential regression. by @ashishdhingra in (#199)
+  * RSA PKCS1.5 SHA1 signing by @DmitriyMusatkin in (#201)
+
+-------------------------------------------------------------------

Old:
----
  v0.8.0.tar.gz

New:
----
  v0.8.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ aws-c-cal.spec ++++++
--- /var/tmp/diff_new_pack.hCkFid/_old  2024-11-21 15:19:53.580609707 +0100
+++ /var/tmp/diff_new_pack.hCkFid/_new  2024-11-21 15:19:53.596610372 +0100
@@ -19,7 +19,7 @@
 %define library_version 1.0.0
 %define library_soversion 0unstable
 Name:           aws-c-cal
-Version:        0.8.0
+Version:        0.8.1
 Release:        0
 Summary:        AWS C99 wrapper for cryptography primitives
 License:        Apache-2.0

++++++ v0.8.0.tar.gz -> v0.8.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/aws-c-cal-0.8.0/.github/ISSUE_TEMPLATE/bug-report.yml 
new/aws-c-cal-0.8.1/.github/ISSUE_TEMPLATE/bug-report.yml
--- old/aws-c-cal-0.8.0/.github/ISSUE_TEMPLATE/bug-report.yml   2024-10-23 
18:57:41.000000000 +0200
+++ new/aws-c-cal-0.8.1/.github/ISSUE_TEMPLATE/bug-report.yml   2024-11-16 
00:46:20.000000000 +0100
@@ -12,6 +12,14 @@
       description: What is the problem? A clear and concise description of the 
bug.
     validations:
       required: true
+  - type: checkboxes
+    id: regression
+    attributes:
+      label: Regression Issue
+      description: What is a regression? If it worked in a previous version 
but doesn't in the latest version, it's considered a regression. In this case, 
please provide specific version number in the report.
+      options:
+        - label: Select this option if this issue appears to be a regression.
+          required: false
   - type: textarea
     id: expected
     attributes:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/aws-c-cal-0.8.0/.github/workflows/issue-regression-labeler.yml 
new/aws-c-cal-0.8.1/.github/workflows/issue-regression-labeler.yml
--- old/aws-c-cal-0.8.0/.github/workflows/issue-regression-labeler.yml  
1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-cal-0.8.1/.github/workflows/issue-regression-labeler.yml  
2024-11-16 00:46:20.000000000 +0100
@@ -0,0 +1,32 @@
+# Apply potential regression label on issues
+name: issue-regression-label
+on:
+  issues:
+    types: [opened, edited]
+jobs:
+  add-regression-label:
+    runs-on: ubuntu-latest
+    permissions:
+      issues: write
+    steps:
+    - name: Fetch template body
+      id: check_regression
+      uses: actions/github-script@v7
+      env: 
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        TEMPLATE_BODY: ${{ github.event.issue.body }}
+      with:
+        script: |
+          const regressionPattern = /\[x\] Select this option if this issue 
appears to be a regression\./i;
+          const template = `${process.env.TEMPLATE_BODY}`
+          const match = regressionPattern.test(template);
+          core.setOutput('is_regression', match);
+    - name: Manage regression label
+      env:
+        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      run: |
+        if [ "${{ steps.check_regression.outputs.is_regression }}" == "true" 
]; then
+          gh issue edit ${{ github.event.issue.number }} --add-label 
"potential-regression" -R ${{ github.repository }}
+        else
+          gh issue edit ${{ github.event.issue.number }} --remove-label 
"potential-regression" -R ${{ github.repository }}
+        fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.8.0/include/aws/cal/rsa.h 
new/aws-c-cal-0.8.1/include/aws/cal/rsa.h
--- old/aws-c-cal-0.8.0/include/aws/cal/rsa.h   2024-10-23 18:57:41.000000000 
+0200
+++ new/aws-c-cal-0.8.1/include/aws/cal/rsa.h   2024-11-16 00:46:20.000000000 
+0100
@@ -19,6 +19,7 @@
 
 enum aws_rsa_signature_algorithm {
     AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256,
+    AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1,
     AWS_CAL_RSA_SIGNATURE_PSS_SHA256,
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/aws-c-cal-0.8.0/source/darwin/securityframework_rsa.c 
new/aws-c-cal-0.8.1/source/darwin/securityframework_rsa.c
--- old/aws-c-cal-0.8.0/source/darwin/securityframework_rsa.c   2024-10-23 
18:57:41.000000000 +0200
+++ new/aws-c-cal-0.8.1/source/darwin/securityframework_rsa.c   2024-11-16 
00:46:20.000000000 +0100
@@ -132,6 +132,9 @@
         case AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256:
             *out = kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA256;
             return AWS_OP_SUCCESS;
+        case AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1:
+            *out = kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA1;
+            return AWS_OP_SUCCESS;
         case AWS_CAL_RSA_SIGNATURE_PSS_SHA256:
 #if (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && 
(__MAC_OS_X_VERSION_MAX_ALLOWED >= 101300 /* macOS 10.13 */)) ||       \
     (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && 
(__IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* iOS v11 */)) ||         \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.8.0/source/rsa.c 
new/aws-c-cal-0.8.1/source/rsa.c
--- old/aws-c-cal-0.8.0/source/rsa.c    2024-10-23 18:57:41.000000000 +0200
+++ new/aws-c-cal-0.8.1/source/rsa.c    2024-11-16 00:46:20.000000000 +0100
@@ -145,7 +145,8 @@
     AWS_PRECONDITION(aws_byte_cursor_is_valid(&digest));
 
     AWS_FATAL_ASSERT(
-        algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256 || algorithm == 
AWS_CAL_RSA_SIGNATURE_PSS_SHA256);
+        algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256 || algorithm == 
AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1 ||
+        algorithm == AWS_CAL_RSA_SIGNATURE_PSS_SHA256);
 
     if (digest.len > AWS_SHA256_LEN) {
         AWS_LOGF_ERROR(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.8.0/source/unix/openssl_rsa.c 
new/aws-c-cal-0.8.1/source/unix/openssl_rsa.c
--- old/aws-c-cal-0.8.0/source/unix/openssl_rsa.c       2024-10-23 
18:57:41.000000000 +0200
+++ new/aws-c-cal-0.8.1/source/unix/openssl_rsa.c       2024-11-16 
00:46:20.000000000 +0100
@@ -241,6 +241,15 @@
                 EVP_PKEY_CTX_set_signature_md(ctx, EVP_sha256()), 
"EVP_PKEY_CTX_set_signature_md")) {
             return AWS_OP_ERR;
         }
+    } else if (algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1) {
+        if (s_reinterpret_evp_error_as_crt(
+                EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING), 
"EVP_PKEY_CTX_set_rsa_padding")) {
+            return AWS_OP_ERR;
+        }
+        if (s_reinterpret_evp_error_as_crt(
+                EVP_PKEY_CTX_set_signature_md(ctx, EVP_sha1()), 
"EVP_PKEY_CTX_set_signature_md")) {
+            return AWS_OP_ERR;
+        }
     } else if (algorithm == AWS_CAL_RSA_SIGNATURE_PSS_SHA256) {
         if (s_reinterpret_evp_error_as_crt(
                 EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING), 
"EVP_PKEY_CTX_set_rsa_padding")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.8.0/source/windows/bcrypt_rsa.c 
new/aws-c-cal-0.8.1/source/windows/bcrypt_rsa.c
--- old/aws-c-cal-0.8.0/source/windows/bcrypt_rsa.c     2024-10-23 
18:57:41.000000000 +0200
+++ new/aws-c-cal-0.8.1/source/windows/bcrypt_rsa.c     2024-11-16 
00:46:20.000000000 +0100
@@ -181,6 +181,9 @@
     if (algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256) {
         info->pkcs1.pszAlgId = BCRYPT_SHA256_ALGORITHM;
         return AWS_OP_SUCCESS;
+    } else if (algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1) {
+        info->pkcs1.pszAlgId = BCRYPT_SHA1_ALGORITHM;
+        return AWS_OP_SUCCESS;
     } else if (algorithm == AWS_CAL_RSA_SIGNATURE_PSS_SHA256) {
         info->pss.pszAlgId = BCRYPT_SHA256_ALGORITHM;
         info->pss.cbSalt = 32;
@@ -203,6 +206,8 @@
     }
 
     ULONG length_written = 0;
+    bool is_pkcs1_padding =
+        (algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256 || algorithm == 
AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1);
     NTSTATUS status = BCryptSignHash(
         key_pair_impl->key_handle,
         &padding_info,
@@ -211,7 +216,7 @@
         out->buffer + out->len,
         (ULONG)(out->capacity - out->len),
         (ULONG *)&length_written,
-        algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256 ? BCRYPT_PAD_PKCS1 : 
BCRYPT_PAD_PSS);
+        is_pkcs1_padding ? BCRYPT_PAD_PKCS1 : BCRYPT_PAD_PSS);
 
     if (s_reinterpret_bc_error_as_crt(status, "BCryptSignHash")) {
         goto on_error;
@@ -244,6 +249,8 @@
         return aws_raise_error(AWS_ERROR_CAL_UNSUPPORTED_ALGORITHM);
     }
     /* okay, now we've got a windows compatible signature, let's verify it. */
+    bool is_pkcs1_padding =
+        (algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256 || algorithm == 
AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1);
     NTSTATUS status = BCryptVerifySignature(
         key_pair_impl->key_handle,
         &padding_info,
@@ -251,7 +258,7 @@
         (ULONG)digest.len,
         signature.ptr,
         (ULONG)signature.len,
-        algorithm == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA256 ? BCRYPT_PAD_PKCS1 : 
BCRYPT_PAD_PSS);
+        is_pkcs1_padding ? BCRYPT_PAD_PKCS1 : BCRYPT_PAD_PSS);
 
     if (status == STATUS_INVALID_SIGNATURE) {
         return aws_raise_error(AWS_ERROR_CAL_SIGNATURE_VALIDATION_FAILED);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.8.0/tests/CMakeLists.txt 
new/aws-c-cal-0.8.1/tests/CMakeLists.txt
--- old/aws-c-cal-0.8.0/tests/CMakeLists.txt    2024-10-23 18:57:41.000000000 
+0200
+++ new/aws-c-cal-0.8.1/tests/CMakeLists.txt    2024-11-16 00:46:20.000000000 
+0100
@@ -77,15 +77,18 @@
 add_test_case(rsa_encryption_roundtrip_oaep_sha512_from_user)
 add_test_case(rsa_signing_roundtrip_pkcs1_sha256_from_user)
 add_test_case(rsa_signing_roundtrip_pss_sha256_from_user)
+add_test_case(rsa_signing_roundtrip_pkcs1_sha1_from_user)
 add_test_case(rsa_getters)
 add_test_case(rsa_private_pkcs1_der_parsing)
 add_test_case(rsa_public_pkcs1_der_parsing)
 add_test_case(rsa_verify_signing_pkcs1_sha256)
+add_test_case(rsa_verify_signing_pkcs1_sha1)
 add_test_case(rsa_verify_signing_pss_sha256)
 add_test_case(rsa_decrypt_pkcs1)
 add_test_case(rsa_decrypt_oaep256)
 add_test_case(rsa_decrypt_oaep512)
 add_test_case(rsa_signing_mismatch_pkcs1_sha256)
+add_test_case(rsa_signing_mismatch_pkcs1_sha1)
 
 add_test_case(aes_cbc_NIST_CBCGFSbox256_case_1)
 add_test_case(aes_cbc_NIST_CBCVarKey256_case_254)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.8.0/tests/rsa_test.c 
new/aws-c-cal-0.8.1/tests/rsa_test.c
--- old/aws-c-cal-0.8.0/tests/rsa_test.c        2024-10-23 18:57:41.000000000 
+0200
+++ new/aws-c-cal-0.8.1/tests/rsa_test.c        2024-11-16 00:46:20.000000000 
+0100
@@ -186,6 +186,11 @@
                                               
"TYJ45P3c94lQIQD3SVJ3XMSAyAEWTE2pcj0F/oPzzxLcXK9cyv2Iphe4XuBjWCOVdHgFg"
                                               
"rD/yAA8b+B94AqE9U/B2+k9/C3Bz2YApo=";
 
+static const char *TEST_RSA_SIGNATURE_PKCS1_SHA1 =
+    "QJxUx+4OM+v1wh0z0PJWMeGBdvjhQHxjFCdzDLeNH6zoJpgPtFXNk6i83ff75MgPpW0m33"
+    "zrrzLWfzLojZFi2KFXYu1Y39We3AfREEOyG+porTmxNQ4dJH29joXS0XNf52dJpN04Lw3WN"
+    "XUHDP6eG2K71uXlsus2Tm0uBe4TF0g=";
+
 static const char *TEST_RSA_SIGNATURE_PSS = 
"j//04sVoqQVSmUgH+Id0oad7OgW+hGnIqx6hjr28VnVk75Obig+n3tJGWd0r+3S4ARxf2fK"
                                             
"7taVvJXISQ5aWJAYx6QRgR+25rcE96eOfi6L7ShIZIUYFzGxhc9wpUMGbqHEIhm+8QP7uNo4D"
                                             "FmaPzJMgGDKL2qhedxnjtg3p8E4=";
@@ -247,6 +252,44 @@
 }
 AWS_TEST_CASE(rsa_verify_signing_pkcs1_sha256, 
s_rsa_verify_signing_pkcs1_sha256);
 
+static int s_rsa_verify_signing_pkcs1_sha1(struct aws_allocator *allocator, 
void *ctx) {
+    (void)ctx;
+    struct aws_byte_cursor message = 
aws_byte_cursor_from_c_str(TEST_ENCRYPTION_STRING);
+
+    aws_cal_library_init(allocator);
+
+    struct aws_byte_buf public_key_buf;
+    ASSERT_SUCCESS(s_byte_buf_decoded_from_base64_cur(
+        allocator, aws_byte_cursor_from_c_str(TEST_PKCS1_RSA_PUBLIC_KEY_1024), 
&public_key_buf));
+    struct aws_rsa_key_pair *key_pair_public =
+        aws_rsa_key_pair_new_from_public_key_pkcs1(allocator, 
aws_byte_cursor_from_buf(&public_key_buf));
+    ASSERT_NOT_NULL(key_pair_public);
+
+    uint8_t hash[AWS_SHA1_LEN];
+    AWS_ZERO_ARRAY(hash);
+    struct aws_byte_buf hash_value = aws_byte_buf_from_empty_array(hash, 
sizeof(hash));
+    aws_sha1_compute(allocator, &message, &hash_value, 0);
+    struct aws_byte_cursor hash_cur = aws_byte_cursor_from_buf(&hash_value);
+
+    struct aws_byte_buf signature_buf;
+    ASSERT_SUCCESS(s_byte_buf_decoded_from_base64_cur(
+        allocator, aws_byte_cursor_from_c_str(TEST_RSA_SIGNATURE_PKCS1_SHA1), 
&signature_buf));
+    struct aws_byte_cursor signature_cur = 
aws_byte_cursor_from_buf(&signature_buf);
+
+    ASSERT_SUCCESS(aws_rsa_key_pair_verify_signature(
+        key_pair_public, AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1, hash_cur, 
signature_cur));
+
+    aws_byte_buf_clean_up(&hash_value);
+    aws_byte_buf_clean_up(&signature_buf);
+    aws_byte_buf_clean_up(&public_key_buf);
+    aws_rsa_key_pair_release(key_pair_public);
+
+    aws_cal_library_clean_up();
+
+    return AWS_OP_SUCCESS;
+}
+AWS_TEST_CASE(rsa_verify_signing_pkcs1_sha1, s_rsa_verify_signing_pkcs1_sha1);
+
 static int s_rsa_verify_signing_pss_sha256(struct aws_allocator *allocator, 
void *ctx) {
     (void)ctx;
     struct aws_byte_cursor message = 
aws_byte_cursor_from_c_str(TEST_ENCRYPTION_STRING);
@@ -410,7 +453,12 @@
     uint8_t hash[AWS_SHA256_LEN];
     AWS_ZERO_ARRAY(hash);
     struct aws_byte_buf hash_value = aws_byte_buf_from_empty_array(hash, 
sizeof(hash));
-    aws_sha256_compute(allocator, &message, &hash_value, 0);
+    if (algo == AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1) {
+        aws_sha1_compute(allocator, &message, &hash_value, 0);
+    } else {
+        aws_sha256_compute(allocator, &message, &hash_value, 0);
+    }
+
     struct aws_byte_cursor hash_cur = aws_byte_cursor_from_buf(&hash_value);
 
     /*since our apis work by appending to buffer, lets make sure they dont
@@ -494,6 +542,20 @@
 }
 AWS_TEST_CASE(rsa_signing_roundtrip_pkcs1_sha256_from_user, 
s_rsa_signing_roundtrip_pkcs1_sha256_from_user);
 
+static int s_rsa_signing_roundtrip_pkcs1_sha1_from_user(struct aws_allocator 
*allocator, void *ctx) {
+    (void)ctx;
+
+    aws_cal_library_init(allocator);
+
+    ASSERT_SUCCESS(s_rsa_signing_roundtrip_from_user(
+        allocator, AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1, 
TEST_RSA_SIGNATURE_PKCS1_SHA1));
+
+    aws_cal_library_clean_up();
+
+    return AWS_OP_SUCCESS;
+}
+AWS_TEST_CASE(rsa_signing_roundtrip_pkcs1_sha1_from_user, 
s_rsa_signing_roundtrip_pkcs1_sha1_from_user);
+
 static int s_rsa_signing_roundtrip_pss_sha256_from_user(struct aws_allocator 
*allocator, void *ctx) {
     (void)ctx;
 
@@ -747,3 +809,59 @@
     return AWS_OP_SUCCESS;
 }
 AWS_TEST_CASE(rsa_signing_mismatch_pkcs1_sha256, 
s_rsa_signing_mismatch_pkcs1_sha256);
+
+static int s_rsa_signing_mismatch_pkcs1_sha1(struct aws_allocator *allocator, 
void *ctx) {
+    (void)ctx;
+    struct aws_byte_cursor message = 
aws_byte_cursor_from_c_str(TEST_ENCRYPTION_STRING);
+
+    aws_cal_library_init(allocator);
+
+    struct aws_byte_buf public_key_buf;
+    ASSERT_SUCCESS(s_byte_buf_decoded_from_base64_cur(
+        allocator, 
aws_byte_cursor_from_c_str(TEST_PKCS1_RSA_PRIVATE_KEY_1024), &public_key_buf));
+    struct aws_rsa_key_pair *key_pair_private =
+        aws_rsa_key_pair_new_from_private_key_pkcs1(allocator, 
aws_byte_cursor_from_buf(&public_key_buf));
+    ASSERT_NOT_NULL(key_pair_private);
+
+    uint8_t hash[AWS_SHA1_LEN];
+    AWS_ZERO_ARRAY(hash);
+    struct aws_byte_buf hash_value = aws_byte_buf_from_empty_array(hash, 
sizeof(hash));
+    aws_sha1_compute(allocator, &message, &hash_value, 0);
+    struct aws_byte_cursor hash_cur = aws_byte_cursor_from_buf(&hash_value);
+
+    struct aws_byte_buf signature_buf;
+    ASSERT_SUCCESS(aws_byte_buf_init(&signature_buf, allocator, 
aws_rsa_key_pair_signature_length(key_pair_private)));
+    ASSERT_SUCCESS(
+        aws_rsa_key_pair_sign_message(key_pair_private, 
AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1, hash_cur, &signature_buf));
+    struct aws_byte_cursor signature_cur = 
aws_byte_cursor_from_buf(&signature_buf);
+
+    hash[5] += 59; /* modify digest to force signature mismatch */
+
+    ASSERT_ERROR(
+        AWS_ERROR_CAL_SIGNATURE_VALIDATION_FAILED,
+        aws_rsa_key_pair_verify_signature(
+            key_pair_private, AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1, hash_cur, 
signature_cur));
+
+    hash[5] -= 59; /* undo digest modification and corrupt signature */
+    signature_buf.buffer[5] += 59;
+    ASSERT_ERROR(
+        AWS_ERROR_CAL_SIGNATURE_VALIDATION_FAILED,
+        aws_rsa_key_pair_verify_signature(
+            key_pair_private, AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1, hash_cur, 
signature_cur));
+
+    struct aws_byte_cursor short_signature_cur = 
aws_byte_cursor_from_c_str("bad signature");
+    ASSERT_ERROR(
+        AWS_ERROR_CAL_SIGNATURE_VALIDATION_FAILED,
+        aws_rsa_key_pair_verify_signature(
+            key_pair_private, AWS_CAL_RSA_SIGNATURE_PKCS1_5_SHA1, hash_cur, 
short_signature_cur));
+
+    aws_byte_buf_clean_up(&hash_value);
+    aws_byte_buf_clean_up(&signature_buf);
+    aws_byte_buf_clean_up(&public_key_buf);
+    aws_rsa_key_pair_release(key_pair_private);
+
+    aws_cal_library_clean_up();
+
+    return AWS_OP_SUCCESS;
+}
+AWS_TEST_CASE(rsa_signing_mismatch_pkcs1_sha1, 
s_rsa_signing_mismatch_pkcs1_sha1);

Reply via email to