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 2026-10-18 20:09:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-cal (Old)
 and      /work/SRC/openSUSE:Factory/.aws-c-cal.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "aws-c-cal"

Sun Oct 18 20:09:02 2026 rev:28 rq:1385010 version:1.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-cal/aws-c-cal.changes      2026-08-06 
16:25:53.392166014 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-cal.new.3698736/aws-c-cal.changes 
2026-10-18 20:09:03.406566368 +0200
@@ -1,0 +2,15 @@
+Tue Oct 13 11:53:20 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to version 1.0.0
+  * Use latest as aws-crt-builder version by @sfod in (#252)
+  * ECC Validation Test by @sbSteveK in (#253)
+  * Expand ecc validation test by @sbSteveK in (#254)
+  * CI/CD improvements by @azkrishpy in (#256)
+  * Clean up docs by @azkrishpy in (#255)
+  * chore(release): add governance files by @azkrishpy in (#257)
+- Add Provides and Obsoletes for previous shared library version
+- Drop acc_add-so-version.patch, fixed upstream
+- Pass installation path of aws-c-common cmake modules in CMAKE_PREFIX_PATH
+- Prefer explicit path and filenames over wildcards in %files section
+
+-------------------------------------------------------------------

Old:
----
  acc_add-so-version.patch
  v0.9.15.tar.gz

New:
----
  v1.0.0.tar.gz

----------(Old B)----------
  Old:- Add Provides and Obsoletes for previous shared library version
- Drop acc_add-so-version.patch, fixed upstream
- Pass installation path of aws-c-common cmake modules in CMAKE_PREFIX_PATH
----------(Old E)----------

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

Other differences:
------------------
++++++ aws-c-cal.spec ++++++
--- /var/tmp/diff_new_pack.HBWf3m/_old  2026-10-18 20:09:04.213600142 +0200
+++ /var/tmp/diff_new_pack.HBWf3m/_new  2026-10-18 20:09:04.215600225 +0200
@@ -17,16 +17,16 @@
 
 
 %define library_version 1.0.0
-%define library_soversion 0unstable
+%define library_pkg 1_0
+%define library_soversion 1.0
 Name:           aws-c-cal
-Version:        0.9.15
+Version:        1.0.0
 Release:        0
 Summary:        AWS C99 wrapper for cryptography primitives
 License:        Apache-2.0
 Group:          Development/Libraries/C and C++
 URL:            https://github.com/awslabs/aws-c-cal
 Source0:        https://github.com/awslabs/%{name}/archive/v%{version}.tar.gz
-Patch0:         acc_add-so-version.patch
 BuildRequires:  cmake
 BuildRequires:  fdupes
 BuildRequires:  ninja
@@ -39,11 +39,13 @@
 %description
 AWS Crypto Abstraction Layer is a C99 wrapper for cryptography primitives.
 
-%package -n lib%{name}%{library_soversion}
+%package -n lib%{name}%{library_pkg}
 Summary:        AWS C99 wrapper for cryptography primitives
 Group:          System/Libraries
+Provides:       lib%{name}0unstable = %{version}
+Obsoletes:      lib%{name}0unstable < %{version}
 
-%description -n lib%{name}%{library_soversion}
+%description -n lib%{name}%{library_pkg}
 AWS Crypto Abstraction Layer is a C99 wrapper for cryptography primitives.
 
 This package contains the dynamically linked library.
@@ -51,7 +53,7 @@
 %package devel
 Summary:        Development files for aws-c-cal library
 Group:          Development/Libraries/C and C++
-Requires:       lib%{name}%{library_soversion} = %{version}
+Requires:       lib%{name}%{library_pkg} = %{version}
 
 %description devel
 AWS Crypto Abstraction Layer, a C99 wrapper for cryptography primitives.
@@ -64,7 +66,8 @@
 %build
 %define __builder ninja
 %cmake \
-    -DCMAKE_BUILD_TYPE=Release
+    -DCMAKE_BUILD_TYPE=Release \
+    -DCMAKE_PREFIX_PATH=%{_libdir}/cmake/aws-c-common/modules
 %make_jobs
 
 %check
@@ -74,17 +77,19 @@
 %install
 %cmake_install
 
-%post -n lib%{name}%{library_soversion} -p /sbin/ldconfig
-%postun -n lib%{name}%{library_soversion} -p /sbin/ldconfig
+%post -n lib%{name}%{library_pkg} -p /sbin/ldconfig
+%postun -n lib%{name}%{library_pkg} -p /sbin/ldconfig
 
-%files -n lib%{name}%{library_soversion}
+%files -n lib%{name}%{library_pkg}
 %doc README.md
 %license LICENSE
-%{_libdir}/*.so.%{library_soversion}
-%{_libdir}/*.so.%{library_version}
+%{_libdir}/lib%{name}.so.%{library_soversion}
+%{_libdir}/lib%{name}.so.%{library_version}
+%{_libdir}/lib%{name}.so.1.0
 
 %files devel
-%{_libdir}/cmake/
-%{_libdir}/*.so
-%{_includedir}/*
+%{_libdir}/cmake/%{name}/
+%{_libdir}/lib%{name}.so
+%dir %{_includedir}/aws/cal
+%{_includedir}/aws/cal/*
 

++++++ v0.9.15.tar.gz -> v1.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/.changes/README.md 
new/aws-c-cal-1.0.0/.changes/README.md
--- old/aws-c-cal-0.9.15/.changes/README.md     1970-01-01 01:00:00.000000000 
+0100
+++ new/aws-c-cal-1.0.0/.changes/README.md      2026-08-26 03:29:30.000000000 
+0200
@@ -0,0 +1,52 @@
+# Changelog fragments
+
+Individual changes are recorded here as JSON fragments — one per PR. The
+top-level [`CHANGELOG.md`](../CHANGELOG.md) is derived from these.
+
+## Directory layout
+
+```
+.changes/
+├── preview/                   # in-flight fragments, one JSON per PR
+├── latest/                    # active minor line
+│   └── <version>/  { *.json } # per-patch fragment dir (e.g. 0.30.0/, 0.30.1/)
+├── <M>.<N>.x/                 # frozen prior minor line
+│   ├── <M>.<N>.0/  { *.json }
+│   ├── <M>.<N>.1/  { *.json }
+│   └── CHANGELOG.md           # frozen snapshot for this minor line
+└── …
+```
+
+## Fragment schema
+
+Each fragment is `.changes/preview/<PR-number>.json` while in flight, then
+moves into `latest/<version>/` at release time.
+
+```json
+{
+  "pr": 234,
+  "type": "feat",
+  "summary": "Add SHA512 HMAC and HKDF functions.",
+  "url": "https://github.com/awslabs/aws-c-cal/pull/234";,
+  "notes": ""
+}
+```
+
+| Field | Values |
+|---|---|
+| `pr` | PR number; also the filename |
+| `type` | `feat` \| `fix` \| `doc` \| `chore` \| `revert` |
+| `summary` | customer-facing one sentence |
+| `url` | link to the PR |
+| `notes` | optional extended notes |
+
+## Finding a change
+
+| You want | Look here |
+|---|---|
+| currently in-flight | `preview/*.json` on `main`, or the rendered view on 
the `docs` branch |
+| in the current minor line (`X.Y.*`) | root [`CHANGELOG.md`](../CHANGELOG.md) 
|
+| in a prior minor line (`A.B.*`) | `.changes/A.B.x/CHANGELOG.md` |
+| exact set for a tag | GitHub Release page for that tag |
+
+> Note: filesystem lex sort places `0.10.x/` before `0.2.x/`. The rendered 
`CHANGELOG.md` files are semver-sorted, so only raw `ls .changes/` looks out of 
order.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/aws-c-cal-0.9.15/.github/workflows/block-needs-review.yml 
new/aws-c-cal-1.0.0/.github/workflows/block-needs-review.yml
--- old/aws-c-cal-0.9.15/.github/workflows/block-needs-review.yml       
1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-cal-1.0.0/.github/workflows/block-needs-review.yml        
2026-08-26 03:29:30.000000000 +0200
@@ -0,0 +1,12 @@
+name: Block needs-review merges
+
+on:
+  pull_request:
+    types: [opened, synchronize, reopened, labeled, unlabeled]
+
+permissions:
+  pull-requests: read
+
+jobs:
+  gate:
+    uses: 
awslabs/aws-crt-builder/.github/workflows/block-needs-review-label.yml@main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/.github/workflows/check-abi.yml 
new/aws-c-cal-1.0.0/.github/workflows/check-abi.yml
--- old/aws-c-cal-0.9.15/.github/workflows/check-abi.yml        1970-01-01 
01:00:00.000000000 +0100
+++ new/aws-c-cal-1.0.0/.github/workflows/check-abi.yml 2026-08-26 
03:29:30.000000000 +0200
@@ -0,0 +1,43 @@
+name: Check ABI compliance
+
+# Trigger on any push to non-main branches.
+on:
+  push:
+    branches-ignore:
+      - 'main'
+
+concurrency:
+  group: check-abi-${{ github.ref }}
+  cancel-in-progress: true
+
+env:
+  PACKAGE_NAME: aws-c-cal
+  CRT_CI_ROLE: ${{ secrets.CRT_CI_ROLE_ARN }}
+  AWS_DEFAULT_REGION: us-east-1
+
+permissions:
+  id-token: write
+  contents: read
+  pull-requests: write
+
+jobs:
+  check-abi:
+    name: check-abi
+    runs-on: ubuntu-24.04
+    steps:
+      - uses: aws-actions/configure-aws-credentials@v4
+        with:
+          role-to-assume: ${{ env.CRT_CI_ROLE }}
+          aws-region: ${{ env.AWS_DEFAULT_REGION }}
+
+      - name: Checkout
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+
+      - name: Check ABI
+        uses: awslabs/aws-crt-builder/.github/actions/check-abi@main
+        with:
+          lib-name: ${{ env.PACKAGE_NAME }}
+          builder-version: latest
+          builder-source: releases
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/.github/workflows/ci.yml 
new/aws-c-cal-1.0.0/.github/workflows/ci.yml
--- old/aws-c-cal-0.9.15/.github/workflows/ci.yml       2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/.github/workflows/ci.yml        2026-08-26 
03:29:30.000000000 +0200
@@ -6,7 +6,7 @@
       - 'main'
 
 env:
-  BUILDER_VERSION: v0.9.96
+  BUILDER_VERSION: latest
   BUILDER_SOURCE: releases
   BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net
   PACKAGE_NAME: aws-c-cal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/.github/workflows/codecov.yml 
new/aws-c-cal-1.0.0/.github/workflows/codecov.yml
--- old/aws-c-cal-0.9.15/.github/workflows/codecov.yml  2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/.github/workflows/codecov.yml   2026-08-26 
03:29:30.000000000 +0200
@@ -4,7 +4,7 @@
   push:
 
 env:
-  BUILDER_VERSION: v0.9.74
+  BUILDER_VERSION: latest
   BUILDER_SOURCE: releases
   BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net
   PACKAGE_NAME: aws-c-cal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/.github/workflows/release.yml 
new/aws-c-cal-1.0.0/.github/workflows/release.yml
--- old/aws-c-cal-0.9.15/.github/workflows/release.yml  1970-01-01 
01:00:00.000000000 +0100
+++ new/aws-c-cal-1.0.0/.github/workflows/release.yml   2026-08-26 
03:29:30.000000000 +0200
@@ -0,0 +1,44 @@
+name: Release
+
+on:
+  workflow_dispatch:
+    inputs:
+      dry-run:
+        description: 'Compute and summarize the bump/version but do not 
commit, tag, or publish anything.'
+        required: false
+        default: 'false'
+
+concurrency:
+  group: ${{ github.workflow }}
+  cancel-in-progress: false
+
+env:
+  PACKAGE_NAME: aws-c-cal
+  CRT_CI_ROLE: ${{ secrets.CRT_CI_ROLE_ARN }}
+  AWS_DEFAULT_REGION: us-east-1
+
+permissions:
+  id-token: write
+  contents: write
+  pull-requests: read
+
+jobs:
+  release:
+    name: release
+    runs-on: ubuntu-24.04
+    steps:
+      - uses: aws-actions/configure-aws-credentials@v4
+        with:
+          role-to-assume: ${{ env.CRT_CI_ROLE }}
+          aws-region: ${{ env.AWS_DEFAULT_REGION }}
+
+      - name: Checkout
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+
+      - name: Release
+        uses: awslabs/aws-crt-builder/.github/actions/auto-release@main
+        with:
+          lib-name: ${{ env.PACKAGE_NAME }}
+          dry-run: ${{ inputs.dry-run }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/CHANGELOG.md 
new/aws-c-cal-1.0.0/CHANGELOG.md
--- old/aws-c-cal-0.9.15/CHANGELOG.md   1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-cal-1.0.0/CHANGELOG.md    2026-08-26 03:29:30.000000000 +0200
@@ -0,0 +1,5 @@
+# Changelog
+
+## [1.0.0]
+
+Official release of 1.0.0.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/CMakeLists.txt 
new/aws-c-cal-1.0.0/CMakeLists.txt
--- old/aws-c-cal-0.9.15/CMakeLists.txt 2026-07-17 01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/CMakeLists.txt  2026-08-26 03:29:30.000000000 +0200
@@ -3,7 +3,23 @@
 
 cmake_minimum_required(VERSION 3.9...3.31)
 
-project(aws-c-cal LANGUAGES C VERSION 0.1.0)
+# In-source builds inherit aws-c-common's module path from the parent. 
Standalone
+# builds must locate the installed modules here: find_package needs an enabled
+# language, so it cannot run until after project().
+if (NOT IN_SOURCE_BUILD)
+    find_file(AWS_GET_VERSION_MODULE AwsGetVersion.cmake
+            PATH_SUFFIXES lib/cmake/aws-c-common/modules 
lib64/cmake/aws-c-common/modules)
+    if (NOT AWS_GET_VERSION_MODULE)
+        message(FATAL_ERROR "Could not find AwsGetVersion.cmake from an 
installed aws-c-common. Set CMAKE_PREFIX_PATH to the aws-c-common install 
prefix.")
+    endif()
+    get_filename_component(AWS_COMMON_MODULE_DIR "${AWS_GET_VERSION_MODULE}" 
DIRECTORY)
+    list(APPEND CMAKE_MODULE_PATH "${AWS_COMMON_MODULE_DIR}")
+endif()
+
+include(AwsGetVersion)
+aws_get_version(AWS_C_CAL_VERSION AWS_C_CAL_SOVERSION)
+
+project(aws-c-cal LANGUAGES C VERSION ${AWS_C_CAL_VERSION})
 
 set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
 
@@ -181,8 +197,8 @@
     target_compile_definitions(${PROJECT_NAME} PRIVATE 
-DAWS_USE_LIBCRYPTO_TO_SUPPORT_ED25519_EVERYWHERE)
 endif()
 
-# Our ABI is not yet stable
-set_target_properties(${PROJECT_NAME} PROPERTIES VERSION 1.0.0)
+set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${AWS_C_CAL_VERSION})
+set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION 
${AWS_C_CAL_SOVERSION})
 
 target_include_directories(${PROJECT_NAME} PUBLIC
         $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/CODEOWNERS 
new/aws-c-cal-1.0.0/CODEOWNERS
--- old/aws-c-cal-0.9.15/CODEOWNERS     1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-cal-1.0.0/CODEOWNERS      2026-08-26 03:29:30.000000000 +0200
@@ -0,0 +1,5 @@
+# Code owners for aws-c-cal.
+# See https://docs.github.com/articles/about-code-owners
+#
+# Owned by the AWS Common Runtime (CRT) team.
+* @awslabs/aws-sdk-common-runtime-team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/CONTRIBUTING.md 
new/aws-c-cal-1.0.0/CONTRIBUTING.md
--- old/aws-c-cal-0.9.15/CONTRIBUTING.md        2026-07-17 01:04:33.000000000 
+0200
+++ new/aws-c-cal-1.0.0/CONTRIBUTING.md 2026-08-26 03:29:30.000000000 +0200
@@ -54,6 +54,13 @@
 If you discover a potential security issue in this project we ask that you 
notify AWS/Amazon Security via our [vulnerability reporting 
page](http://aws.amazon.com/security/vulnerability-reporting/). Please do 
**not** create a public github issue.
 
 
+## Versioning
+
+This project follows a three-part `Major.Minor.Patch` version scheme. Before
+contributing, please review [VERSIONING.md](VERSIONING.md) to understand how
+changes map to version bumps and our API/ABI stability policy.
+
+
 ## Licensing
 
 See the [LICENSE](https://github.com/awslabs/aws-c-cal/blob/main/LICENSE) file 
for our project's licensing. We will ask you to confirm the licensing of your 
contribution.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/README.md 
new/aws-c-cal-1.0.0/README.md
--- old/aws-c-cal-0.9.15/README.md      2026-07-17 01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/README.md       2026-08-26 03:29:30.000000000 +0200
@@ -2,6 +2,12 @@
 
 AWS Crypto Abstraction Layer: Cross-Platform, C99 wrapper for cryptography 
primitives.
 
+## Versioning
+
+This library uses a three-part `Major.Minor.Patch` version scheme. See
+[VERSIONING.md](VERSIONING.md) for what each part means and our API/ABI
+stability policy.
+
 ## License
 
 This library is licensed under the Apache 2.0 License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/VERSION new/aws-c-cal-1.0.0/VERSION
--- old/aws-c-cal-0.9.15/VERSION        1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-cal-1.0.0/VERSION 2026-08-26 03:29:30.000000000 +0200
@@ -0,0 +1 @@
+1.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/VERSIONING.md 
new/aws-c-cal-1.0.0/VERSIONING.md
--- old/aws-c-cal-0.9.15/VERSIONING.md  1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-cal-1.0.0/VERSIONING.md   2026-08-26 03:29:30.000000000 +0200
@@ -0,0 +1,31 @@
+# Versioning
+
+This library follows a three-part version scheme, `X.Y.Z`
+(`Major.Minor.Patch`).
+
+## What each part means
+
+- **X — Major.** A significant change that is expected to break backwards
+  compatibility. Adopting a new major version may require effort on your part.
+- **Y — Minor.** A moderate change, such as a significant non-breaking feature
+  addition. A minor bump may also include a backwards-incompatible ABI change;
+  when it does, this is noted and explained in the release notes. Minor updates
+  are low effort to adopt: consumers need to rebuild against the new headers,
+  but source code changes are typically not required.
+- **Z — Patch.** A small change that does not break backwards compatibility. A
+  patch release may warn of an upcoming breaking change. Patch updates can be
+  picked up automatically.
+
+## Branch stability
+
+Untagged branches (for example, `main`) are **not** subject to any API or ABI
+stability policy. Stability guarantees apply only to tagged releases.
+
+## What this means for you
+
+We recommend running the latest release. Use the version parts as a guide to 
how
+much effort an upgrade requires:
+
+- **Major (X):** expect adoption effort; review the release notes.
+- **Minor (Y):** low effort; rebuild against the new headers when the ABI 
changes.
+- **Patch (Z):** pick up automatically.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/include/aws/cal/ecc.h 
new/aws-c-cal-1.0.0/include/aws/cal/ecc.h
--- old/aws-c-cal-0.9.15/include/aws/cal/ecc.h  2026-07-17 01:04:33.000000000 
+0200
+++ new/aws-c-cal-1.0.0/include/aws/cal/ecc.h   2026-08-26 03:29:30.000000000 
+0200
@@ -98,7 +98,7 @@
 /**
  * Creates an Elliptic Curve public/private key pair from a DER encoded key 
pair.
  * Returns a new instance of aws_ecc_key_pair if the key was successfully 
built.
- * Otherwise returns NULL. Whether or not signing or verification can be 
perform depends
+ * Otherwise returns NULL. Whether or not signing or verification can be 
performed depends
  * on if encoded_keys is a public/private pair or a public key.
  */
 AWS_CAL_API struct aws_ecc_key_pair *aws_ecc_key_pair_new_from_asn1(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/include/aws/cal/hkdf.h 
new/aws-c-cal-1.0.0/include/aws/cal/hkdf.h
--- old/aws-c-cal-0.9.15/include/aws/cal/hkdf.h 2026-07-17 01:04:33.000000000 
+0200
+++ new/aws-c-cal-1.0.0/include/aws/cal/hkdf.h  2026-08-26 03:29:30.000000000 
+0200
@@ -1,5 +1,5 @@
-#ifndef AWS_CAL_ECC_H
-#define AWS_CAL_ECC_H
+#ifndef AWS_CAL_HKDF_H
+#define AWS_CAL_HKDF_H
 /**
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
  * SPDX-License-Identifier: Apache-2.0.
@@ -14,7 +14,7 @@
 
 /**
  * Only supports SHA512 hmac for now.
- * No reason other than thats the only one we need for now.
+ * No reason other than that's the only one we need for now.
  */
 enum aws_hkdf_hmac_type {
     HKDF_HMAC_SHA512,
@@ -52,4 +52,4 @@
 AWS_EXTERN_C_END
 AWS_POP_SANE_WARNING_LEVEL
 
-#endif /* AWS_CAL_ECC_H */
+#endif /* AWS_CAL_HKDF_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/include/aws/cal/hmac.h 
new/aws-c-cal-1.0.0/include/aws/cal/hmac.h
--- old/aws-c-cal-0.9.15/include/aws/cal/hmac.h 2026-07-17 01:04:33.000000000 
+0200
+++ new/aws-c-cal-1.0.0/include/aws/cal/hmac.h  2026-08-26 03:29:30.000000000 
+0200
@@ -107,7 +107,7 @@
 AWS_CAL_API void aws_set_sha256_hmac_new_fn(aws_hmac_new_fn *fn);
 
 /**
- * Set the implementation of sha256 hmac to use. If you compiled without
+ * Set the implementation of sha512 hmac to use. If you compiled without
  * BYO_CRYPTO, you do not need to call this. However, if use this, we will
  * honor it, regardless of compile options. This may be useful for testing
  * purposes. If you did set BYO_CRYPTO, and you do not call this function
@@ -118,4 +118,4 @@
 AWS_EXTERN_C_END
 AWS_POP_SANE_WARNING_LEVEL
 
-#endif /* AWS_CAL_HASH_H_ */
+#endif /* AWS_CAL_HMAC_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/include/aws/cal/private/der.h 
new/aws-c-cal-1.0.0/include/aws/cal/private/der.h
--- old/aws-c-cal-0.9.15/include/aws/cal/private/der.h  2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/include/aws/cal/private/der.h   2026-08-26 
03:29:30.000000000 +0200
@@ -23,7 +23,7 @@
  * During encoding aws_der_encoder_write_unsigned_integer assumes that cursor
  * points to a positive number and will prepend 0 if needed by DER spec to
  * indicate its positive number. Encoder does not support writing negative 
numbers.
- * Decoder aws_der_encoder_write_unsigned_integer will strip any leading 0 as
+ * Decoder aws_der_decoder_tlv_unsigned_integer will strip any leading 0 as
  * needed and will error out if der contains negative number.
  * Take special care when integrating with 3p libraries cause they might expect
  * different format. Ex. this format matches what openssl calls bin format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/include/aws/cal/rsa.h 
new/aws-c-cal-1.0.0/include/aws/cal/rsa.h
--- old/aws-c-cal-0.9.15/include/aws/cal/rsa.h  2026-07-17 01:04:33.000000000 
+0200
+++ new/aws-c-cal-1.0.0/include/aws/cal/rsa.h   2026-08-26 03:29:30.000000000 
+0200
@@ -83,8 +83,8 @@
     enum aws_rsa_encryption_algorithm algorithm);
 
 /*
- * Uses the key_pair's private key to encrypt the plaintext. The output will be
- * in out. out must be large enough to to hold the ciphertext. Check
+ * Uses the key_pair's public key to encrypt the plaintext. The output will be
+ * in out. out must be large enough to hold the ciphertext. Check
  * aws_rsa_key_pair_block_length() for output upper bound.
  */
 AWS_CAL_API int aws_rsa_key_pair_encrypt(
@@ -95,7 +95,7 @@
 
 /*
  * Uses the key_pair's private key to decrypt the ciphertext. The output will 
be
- * in out. out must be large enough to to hold the ciphertext. Check
+ * in out. out must be large enough to hold the plaintext. Check
  * aws_rsa_key_pair_block_length() for output upper bound.
  */
 AWS_CAL_API int aws_rsa_key_pair_decrypt(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/include/aws/cal/symmetric_cipher.h 
new/aws-c-cal-1.0.0/include/aws/cal/symmetric_cipher.h
--- old/aws-c-cal-0.9.15/include/aws/cal/symmetric_cipher.h     2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/include/aws/cal/symmetric_cipher.h      2026-08-26 
03:29:30.000000000 +0200
@@ -158,8 +158,8 @@
 /**
  * Encrypts any remaining data that was reserved for final padding, loads 
GMACs etc... and if there is any
  * writes any remaining encrypted data to out. If out is dynamic it will be 
expanded. If it is not, and
- * out is not large enough to handle the decrypted output, the call will fail. 
If you're trying to optimize
- *  to use a stack based array or something, make sure it's at least as large 
as the size of 2 BLOCKs to account for
+ * out is not large enough to handle the encrypted output, the call will fail. 
If you're trying to optimize
+ * to use a stack based array or something, make sure it's at least as large 
as the size of 2 BLOCKs to account for
  * padding etc...
  *
  * After invoking this function, you MUST call aws_symmetric_cipher_reset() 
before invoking any encrypt/decrypt
@@ -190,10 +190,10 @@
  * same cipher without a call to reset in between them. However, this leaves 
the key, iv etc... materials setup for
  * immediate reuse.
  * Note: GCM tag is not preserved between operations. If you intend to do 
encrypt followed directly by decrypt, make
- * sure to make a copy of tag before reseting the cipher and pass that copy 
for decryption.
+ * sure to make a copy of tag before resetting the cipher and pass that copy 
for decryption.
  *
  * Warning: In most cases it's a really bad idea to reset a cipher and perform 
another operation using that cipher.
- * Key and IV should not be reused for different operations. Instead of 
reseting the cipher, destroy the cipher
+ * Key and IV should not be reused for different operations. Instead of 
resetting the cipher, destroy the cipher
  * and create new one with a new key/iv pair. Use reset at your own risk, and 
only after careful consideration.
  *
  * returns AWS_OP_SUCCESS on success. Call aws_last_error() to determine the 
failure cause if it returns
@@ -223,7 +223,7 @@
  * This was done because the use case doesn't require fetching these during an
  * encryption or decryption operation and it dramatically simplifies the API.
  *
- * Unlike some other fields, this value does not change after the inital 
construction of the cipher.
+ * Unlike some other fields, this value does not change after the initial 
construction of the cipher.
  *
  * For some algorithms, such as AES Keywrap, this will return an empty cursor.
  */
@@ -237,7 +237,7 @@
  * This was done because the use case doesn't require fetching these during an
  * encryption or decryption operation and it dramatically simplifies the API.
  *
- * Unlike some other fields, this value does not change after the inital 
construction of the cipher.
+ * Unlike some other fields, this value does not change after the initial 
construction of the cipher.
  */
 AWS_CAL_API struct aws_byte_cursor aws_symmetric_cipher_get_key(const struct 
aws_symmetric_cipher *cipher);
 
@@ -249,8 +249,8 @@
 AWS_CAL_API bool aws_symmetric_cipher_is_good(const struct 
aws_symmetric_cipher *cipher);
 
 /**
- * Retuns the current state of the cipher. Ther state of the cipher can be 
ready for use, finalized, or has encountered
- * an error. if the cipher is in a finished or error state, it must be reset 
before further use.
+ * Returns the current state of the cipher. The state of the cipher can be 
ready for use, finalized, or has encountered
+ * an error. If the cipher is in a finished or error state, it must be reset 
before further use.
  */
 AWS_CAL_API enum aws_symmetric_cipher_state 
aws_symmetric_cipher_get_state(const struct aws_symmetric_cipher *cipher);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/source/cal.c 
new/aws-c-cal-1.0.0/source/cal.c
--- old/aws-c-cal-0.9.15/source/cal.c   2026-07-17 01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/cal.c    2026-08-26 03:29:30.000000000 +0200
@@ -13,8 +13,8 @@
     AWS_DEFINE_ERROR_INFO_CAL(
         AWS_ERROR_CAL_MISSING_REQUIRED_KEY_COMPONENT,
         "An attempt was made to perform an "
-        "Asymmetric cryptographic operation with the"
-        "wrong key component. For example, attempt to"
+        "Asymmetric cryptographic operation with the "
+        "wrong key component. For example, attempt to "
         "verify a signature with a private key or "
         "sign a message with a public key."),
     AWS_DEFINE_ERROR_INFO_CAL(
@@ -42,7 +42,7 @@
         "A cipher material such as an initialization vector or tag was an 
incorrect size for the selected algorithm."),
     AWS_DEFINE_ERROR_INFO_CAL(
         AWS_ERROR_CAL_DER_UNSUPPORTED_NEGATIVE_INT,
-        "DER decoder does support negative integers."),
+        "DER decoder does not support negative integers."),
     AWS_DEFINE_ERROR_INFO_CAL(AWS_ERROR_CAL_UNSUPPORTED_KEY_FORMAT, "Key 
format is not supported."),
     AWS_DEFINE_ERROR_INFO_CAL(
         AWS_ERROR_CAL_CRYPTO_OPERATION_FAILED,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/aws-c-cal-0.9.15/source/darwin/securityframework_ecc.c 
new/aws-c-cal-1.0.0/source/darwin/securityframework_ecc.c
--- old/aws-c-cal-0.9.15/source/darwin/securityframework_ecc.c  2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/darwin/securityframework_ecc.c   2026-08-26 
03:29:30.000000000 +0200
@@ -22,7 +22,7 @@
 
 static size_t s_der_overhead = 8;
 
-/* The hard-coded "valid" public keys. Copy/pated from one of our unit test. */
+/* The hard-coded "valid" public keys. Copy/pasted from one of our unit tests. 
*/
 const static uint8_t s_fake_x_ecdsa_p256[] = {
     0xd0, 0x72, 0x0d, 0xc6, 0x91, 0xaa, 0x80, 0x09, 0x6b, 0xa3, 0x2f, 0xed, 
0x1c, 0xb9, 0x7c, 0x2b,
     0x62, 0x06, 0x90, 0xd0, 0x6d, 0xe0, 0x31, 0x7b, 0x86, 0x18, 0xd5, 0xce, 
0x65, 0xeb, 0x72, 0x8f,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/aws-c-cal-0.9.15/source/darwin/securityframework_rsa.c 
new/aws-c-cal-1.0.0/source/darwin/securityframework_rsa.c
--- old/aws-c-cal-0.9.15/source/darwin/securityframework_rsa.c  2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/darwin/securityframework_rsa.c   2026-08-26 
03:29:30.000000000 +0200
@@ -71,7 +71,7 @@
     int crt_error = AWS_ERROR_CAL_CRYPTO_OPERATION_FAILED;
 
     /*
-     * Mac seems throws errSecVerifyFailed for any signature verification
+     * Mac seems to throw errSecVerifyFailed for any signature verification
      * failures (based on testing and not review of their code).
      * Which makes it impossible to distinguish between signature validation
      * failure and api call failure.
@@ -219,7 +219,7 @@
     struct sec_rsa_key_pair *key_pair_impl = key_pair->impl;
 
     if (key_pair_impl->priv_key_ref == NULL) {
-        AWS_LOGF_ERROR(AWS_LS_CAL_RSA, "RSA Key Pair is missing Private Key 
required for encrypt operation.");
+        AWS_LOGF_ERROR(AWS_LS_CAL_RSA, "RSA Key Pair is missing Private Key 
required for decrypt operation.");
         return aws_raise_error(AWS_ERROR_CAL_MISSING_REQUIRED_KEY_COMPONENT);
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/source/der.c 
new/aws-c-cal-1.0.0/source/der.c
--- old/aws-c-cal-0.9.15/source/der.c   2026-07-17 01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/der.c    2026-08-26 03:29:30.000000000 +0200
@@ -423,7 +423,7 @@
 /*
  * DECODER
  */
-int s_decoder_parse(struct aws_der_decoder *decoder);
+static int s_decoder_parse(struct aws_der_decoder *decoder);
 
 struct aws_der_decoder *aws_der_decoder_new(struct aws_allocator *allocator, 
struct aws_byte_cursor input) {
     struct aws_der_decoder *decoder = aws_mem_calloc(allocator, 1, 
sizeof(struct aws_der_decoder));
@@ -467,7 +467,7 @@
     aws_mem_release(decoder->allocator, decoder);
 }
 
-int s_parse_cursor(struct aws_der_decoder *decoder, struct aws_byte_cursor 
cur) {
+static int s_parse_cursor(struct aws_der_decoder *decoder, struct 
aws_byte_cursor cur) {
     if (++decoder->depth > 16) {
         /* stream contains too many nested containers, probably 
malformed/attack */
         return aws_raise_error(AWS_ERROR_CAL_MALFORMED_ASN1_ENCOUNTERED);
@@ -518,7 +518,7 @@
     return AWS_OP_SUCCESS;
 }
 
-int s_decoder_parse(struct aws_der_decoder *decoder) {
+static int s_decoder_parse(struct aws_der_decoder *decoder) {
     return s_parse_cursor(decoder, decoder->input);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/source/ecc.c 
new/aws-c-cal-1.0.0/source/ecc.c
--- old/aws-c-cal-0.9.15/source/ecc.c   2026-07-17 01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/ecc.c    2026-08-26 03:29:30.000000000 +0200
@@ -148,7 +148,7 @@
 
 static aws_ecc_key_pair_new_from_asn1_fn *s_ecc_key_pair_new_from_asn1_fn = 
aws_ecc_key_pair_new_from_asn1_impl;
 
-static aws_ecc_key_pair_new_generate_random_fn 
*s_ecc_key_pair_new_generate_random1_fn =
+static aws_ecc_key_pair_new_generate_random_fn 
*s_ecc_key_pair_new_generate_random_fn_impl =
     aws_ecc_key_pair_new_generate_random_impl;
 
 struct aws_ecc_key_pair *aws_ecc_key_pair_new_from_public_key(
@@ -175,7 +175,7 @@
 struct aws_ecc_key_pair *aws_ecc_key_pair_new_generate_random(
     struct aws_allocator *allocator,
     enum aws_ecc_curve_name curve_name) {
-    return s_ecc_key_pair_new_generate_random1_fn(allocator, curve_name);
+    return s_ecc_key_pair_new_generate_random_fn_impl(allocator, curve_name);
 }
 
 static void s_aws_ecc_key_pair_destroy(struct aws_ecc_key_pair *key_pair) {
@@ -630,7 +630,7 @@
     AWS_ERROR_PRECONDITION(out_curve_name);
 
     /**
-     * Since this is a generic api to parse from ans1, we can encounter 
several key structures.
+     * Since this is a generic api to parse from asn1, we can encounter 
several key structures.
      * Just go through them one by one and see if any match the expected type.
      * Note: We should at least get some id in the structure or unique enough 
layout so ordering does not matter.
      */
@@ -876,7 +876,7 @@
  *
  * Note: skip params is used for pkcs8 case, where params structure is written 
out top level instead.
  */
-int s_export_sec1(const struct aws_ecc_key_pair *key_pair, bool 
should_skip_params, struct aws_byte_buf *out) {
+static int s_export_sec1(const struct aws_ecc_key_pair *key_pair, bool 
should_skip_params, struct aws_byte_buf *out) {
 
     if (key_pair->priv_d.buffer == NULL) {
         return aws_raise_error(AWS_ERROR_CAL_MISSING_REQUIRED_KEY_COMPONENT);
@@ -995,7 +995,7 @@
  *   publicKey  [1] BIT STRING OPTIONAL
  * }
  */
-int s_export_pkcs8(const struct aws_ecc_key_pair *key_pair, struct 
aws_byte_buf *out) {
+static int s_export_pkcs8(const struct aws_ecc_key_pair *key_pair, struct 
aws_byte_buf *out) {
     if (key_pair->priv_d.buffer == NULL) {
         return aws_raise_error(AWS_ERROR_CAL_MISSING_REQUIRED_KEY_COMPONENT);
     }
@@ -1087,7 +1087,7 @@
  *   parameters       ANY DEFINED BY algorithm OPTIONAL
  * }
  */
-int s_export_spki(const struct aws_ecc_key_pair *key_pair, struct aws_byte_buf 
*out) {
+static int s_export_spki(const struct aws_ecc_key_pair *key_pair, struct 
aws_byte_buf *out) {
     struct aws_der_encoder *encoder = aws_der_encoder_new(key_pair->allocator, 
256);
 
     if (aws_der_encoder_begin_sequence(encoder)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/source/rsa.c 
new/aws-c-cal-1.0.0/source/rsa.c
--- old/aws-c-cal-0.9.15/source/rsa.c   2026-07-17 01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/rsa.c    2026-08-26 03:29:30.000000000 +0200
@@ -135,7 +135,7 @@
     AWS_PRECONDITION(aws_byte_cursor_is_valid(&plaintext));
 
     if (AWS_UNLIKELY(aws_rsa_key_pair_max_encrypt_plaintext_size(key_pair, 
algorithm) < plaintext.len)) {
-        AWS_LOGF_ERROR(AWS_LS_CAL_RSA, "Unexpected buffer size. For RSA, 
ciphertext must not exceed block size");
+        AWS_LOGF_ERROR(AWS_LS_CAL_RSA, "Unexpected buffer size. For RSA, 
plaintext must not exceed block size");
         return aws_raise_error(AWS_ERROR_CAL_BUFFER_TOO_LARGE_FOR_ALGORITHM);
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/source/shared/ref_hkdf.c 
new/aws-c-cal-1.0.0/source/shared/ref_hkdf.c
--- old/aws-c-cal-0.9.15/source/shared/ref_hkdf.c       2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/shared/ref_hkdf.c        2026-08-26 
03:29:30.000000000 +0200
@@ -10,7 +10,7 @@
 /*
  * Note: mac only provides hkdf starting in cryptokit (swift only)
  * and windows added convoluted api to generate hkdf starting with win 10+.
- * in rfc5869.
+ * So we provide our own implementation as defined in rfc5869.
  */
 
 enum { MAX_HMAC_SIZE = 64 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/source/unix/openssl_platform_init.c 
new/aws-c-cal-1.0.0/source/unix/openssl_platform_init.c
--- old/aws-c-cal-0.9.15/source/unix/openssl_platform_init.c    2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/unix/openssl_platform_init.c     2026-08-26 
03:29:30.000000000 +0200
@@ -16,7 +16,7 @@
 /*
  * OpenSSL 3 has a large amount of interface changes and many of the functions 
used
  * throughout aws-c-cal have become deprecated.
- * Lets disable deprecation warnings, so that we can atleast run CI, until we
+ * Lets disable deprecation warnings, so that we can at least run CI, until we
  * can move over to new functions.
  */
 #define OPENSSL_SUPPRESS_DEPRECATED
@@ -39,7 +39,7 @@
  */
 #if defined(OPENSSL_IS_AWSLC) || defined(OPENSSL_IS_BORINGSSL)
 /* TODO:the weak refs is not GUARANTEED to avoid linker to strip the symbol.
-   Build on musl with openssl 1.1.1w, those those was referenced, but still 
stripped from libcrypto during linking.
+   Build on musl with openssl 1.1.1w, those were referenced, but still 
stripped from libcrypto during linking.
    Logs was:
    ```
    / # gcc -static -Wl,--trace-symbol=HMAC_CTX_new,-v -o test test.c -I 
$HOME/opt/aws/include -L $HOME/opt/aws/lib
@@ -753,10 +753,10 @@
  * AWSLC_thread_local_shutdown was added by aws-lc to let teams remove thread
  * local data manually before lib is unloaded.
  * We can't call AWSLC_thread_local_shutdown in cal cleanup because it renders
- * aws-lc unusable and there is no way to reinitilize aws-lc to a working 
state,
+ * aws-lc unusable and there is no way to reinitialize aws-lc to a working 
state,
  * i.e. everything that depends on aws-lc stops working after shutdown (ex. 
curl).
  * So instead rely on GCC/Clang destructor extension to shutdown right before
- * crt gets unloaded. Does not work on msvc, but thats a bridge we can cross at
+ * crt gets unloaded. Does not work on msvc, but that's a bridge we can cross 
at
  * a later date (since we dont support aws-lc on win right now)
  * TODO: do already init'ed check on lc similar to what we do for s2n, so we
  * only shutdown when we initialized aws-lc. currently not possible because
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/source/unix/opensslcrypto_ecc.c 
new/aws-c-cal-1.0.0/source/unix/opensslcrypto_ecc.c
--- old/aws-c-cal-0.9.15/source/unix/opensslcrypto_ecc.c        2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/unix/opensslcrypto_ecc.c 2026-08-26 
03:29:30.000000000 +0200
@@ -273,7 +273,7 @@
         BN_free(pub_x_num);
     }
 
-    if (pub_x_num) {
+    if (pub_y_num) {
         BN_free(pub_y_num);
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/source/windows/bcrypt_aes.c 
new/aws-c-cal-1.0.0/source/windows/bcrypt_aes.c
--- old/aws-c-cal-0.9.15/source/windows/bcrypt_aes.c    2026-07-17 
01:04:33.000000000 +0200
+++ new/aws-c-cal-1.0.0/source/windows/bcrypt_aes.c     2026-08-26 
03:29:30.000000000 +0200
@@ -609,7 +609,7 @@
         cipher_impl->auth_info_ptr->pbTag = cipher->tag.buffer;
         cipher_impl->auth_info_ptr->cbTag = (ULONG)cipher->tag.capacity;
         /* bcrypt will either end up filling full tag buffer or in an error 
state,
-        /* in which tag will not be correct */
+           in which tag will not be correct */
         cipher->tag.len = AWS_AES_256_CIPHER_BLOCK_SIZE;
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/tests/CMakeLists.txt 
new/aws-c-cal-1.0.0/tests/CMakeLists.txt
--- old/aws-c-cal-0.9.15/tests/CMakeLists.txt   2026-07-17 01:04:33.000000000 
+0200
+++ new/aws-c-cal-1.0.0/tests/CMakeLists.txt    2026-08-26 03:29:30.000000000 
+0200
@@ -188,6 +188,7 @@
 add_test_case(ecc_key_pair_asn1_ref_count_test)
 add_test_case(ecc_key_pair_private_ref_count_test)
 add_test_case(ecc_key_gen_from_private_fuzz_test)
+add_test_case(ecdsa_p256_test_oversized_coordinate_rejected)
 
 add_test_case(ed25519_key_pair_generate_test)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-c-cal-0.9.15/tests/ecc_test.c 
new/aws-c-cal-1.0.0/tests/ecc_test.c
--- old/aws-c-cal-0.9.15/tests/ecc_test.c       2026-07-17 01:04:33.000000000 
+0200
+++ new/aws-c-cal-1.0.0/tests/ecc_test.c        2026-08-26 03:29:30.000000000 
+0200
@@ -1251,3 +1251,69 @@
 
 AWS_TEST_CASE(ecc_key_gen_from_private_fuzz_test, 
s_ecc_key_gen_from_private_fuzz_test)
 #endif
+
+/*
+ * Verify that aws_ecc_key_pair_verify_signature gracefully rejects a
+ * DER-encoded signature containing a coordinate larger than the curve's
+ * field size.
+ *
+ * For P-256, each coordinate should be at most 33 bytes (32 + 1 leading zero
+ * for DER integer sign padding). We test:
+ *   1. r = 34 bytes (just 1 byte over the 33-byte max) -- boundary rejection
+ *   2. r = 33 bytes (valid size), s = 34 bytes (just 1 byte over) -- validates
+ *      both coordinates are checked independently
+ */
+static int s_ecdsa_p256_test_oversized_coordinate_rejected(struct 
aws_allocator *allocator, void *ctx) {
+    (void)ctx;
+
+    aws_cal_library_test_init(allocator);
+
+    struct aws_ecc_key_pair *key_pair = 
aws_ecc_key_pair_new_generate_random(allocator, AWS_CAL_ECDSA_P256);
+    ASSERT_NOT_NULL(key_pair);
+
+    uint8_t digest[32] = {0};
+    struct aws_byte_cursor digest_cur = aws_byte_cursor_from_array(digest, 
sizeof(digest));
+
+    /* Case 1: r = 34 bytes (one byte over the 33-byte max), s = 32 bytes.
+     * This is the boundary case: 33 is valid, 34 must be rejected. */
+    static const uint8_t sig_r_34[] = {
+        0x30, 0x46,                                                 /* 
SEQUENCE, 70 bytes */
+        0x02, 0x22,                                                 /* 
INTEGER, 34 bytes (r) -- one byte over max */
+        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, /* r 
value: 34 bytes */
+        0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 
0x15, 0x16, 0x17,
+        0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x02, 
0x20, /* INTEGER, 32 bytes (s) -- valid size
+                                                                               
  */
+        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A,            
 /* s value: 32 bytes */
+        0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 
0x16, 0x17, 0x18,
+        0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
+    };
+
+    struct aws_byte_cursor sig_cur = aws_byte_cursor_from_array(sig_r_34, 
sizeof(sig_r_34));
+    int result = aws_ecc_key_pair_verify_signature(key_pair, &digest_cur, 
&sig_cur);
+    ASSERT_TRUE(result != AWS_OP_SUCCESS, "r=34 bytes should be rejected (max 
is 33)");
+
+    /* Case 2: r = 33 bytes (valid), s = 34 bytes (one byte over max).
+     * Proves the validation checks the s coordinate independently. */
+    static const uint8_t sig_s_34[] = {
+        0x30, 0x47, /* SEQUENCE, 71 bytes */
+        0x02, 0x21, /* INTEGER, 33 bytes (r) -- valid (32 + leading zero) */
+        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, /* r 
value: 33 bytes */
+        0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 
0x15, 0x16,
+        0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x02, 
0x22, /* INTEGER, 34 bytes (s) -- one byte
+                                                                               
    over max */
+        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,            
 /* s value: 34 bytes */
+        0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 
0x15, 0x16,
+        0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21,
+    };
+
+    sig_cur = aws_byte_cursor_from_array(sig_s_34, sizeof(sig_s_34));
+    result = aws_ecc_key_pair_verify_signature(key_pair, &digest_cur, 
&sig_cur);
+    ASSERT_TRUE(result != AWS_OP_SUCCESS, "r=33 s=34 bytes should be rejected 
(s exceeds max)");
+
+    aws_ecc_key_pair_release(key_pair);
+    aws_cal_library_clean_up();
+
+    return AWS_OP_SUCCESS;
+}
+
+AWS_TEST_CASE(ecdsa_p256_test_oversized_coordinate_rejected, 
s_ecdsa_p256_test_oversized_coordinate_rejected)

Reply via email to