Skip to content

Add typing: asn, exceptions, hashes, pwdbased, utils. - #125

Merged
dgarske merged 13 commits into
wolfSSL:masterfrom
roberthdevries:add-more-typing
Jul 8, 2026
Merged

dgarske merged 13 commits into
wolfSSL:masterfrom
roberthdevries:add-more-typing

Conversation

@roberthdevries

Copy link
Copy Markdown
Contributor

No description provided.

@roberthdevries
roberthdevries force-pushed the add-more-typing branch 2 times, most recently from 65d14db to 1c2b082 Compare May 23, 2026 14:02
@Trooper-X

Copy link
Copy Markdown

This also adds the ruff and ty dependencies.
Would be nice if this MR gets merged.

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skoll Code Review

Scan type: reviewOverall recommendation: REQUEST_CHANGES
Findings: 7 total — 7 posted, 0 skipped
6 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [High] AES-SIV single-block associated-data length uses char count of original input, not encoded byte length — wolfcrypt/ciphers.py:397-400
  • [Medium] sign_with_seed no longer accepts bytearray/memoryview seeds (regression) — wolfcrypt/ciphers.py:2513-2546
  • [Medium] make_key_from_seed now silently UTF-8-encodes a str seed instead of rejecting it — wolfcrypt/ciphers.py:2360-2367
  • [Low] ChaCha init renamed size to _size, breaking the documented backward-compatible keyword — wolfcrypt/ciphers.py:544
  • [Low] HKDF helpers annotate hash_cls as instance type instead of class type — wolfcrypt/hkdf.py:33,78,105
  • [Low] Random no longer nulls native_object on init failure; del frees an uninitialized RNG — wolfcrypt/random.py:37-52
  • [Low] RsaPublic.init made key a required positional argument — wolfcrypt/ciphers.py:771-774

Review generated by Skoll

Comment thread wolfcrypt/ciphers.py
Comment thread wolfcrypt/ciphers.py
Comment thread wolfcrypt/ciphers.py
Comment thread wolfcrypt/ciphers.py Outdated
Comment thread wolfcrypt/random.py Outdated
Comment thread wolfcrypt/ciphers.py

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skoll Code Review

Scan type: reviewOverall recommendation: REQUEST_CHANGES
Findings: 7 total — 7 posted, 0 skipped
4 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [High] New undeclared runtime dependency on typing_extensions — wolfcrypt/ciphers.py:28, wolfcrypt/hashes.py:28
  • [Medium] Removed _ffi.from_buffer() drops bytearray/memoryview support for seed/rand inputs — wolfcrypt/ciphers.py:2383, 2548, 2559, 2067, 2110
  • [Medium] **_Cipher.new() dropped kwargs, breaking PEP 272 extra keyword arguments — wolfcrypt/ciphers.py:187-199
  • [Medium] HKDF functions annotate hash_cls as instance type instead of class type — wolfcrypt/hkdf.py:33, 78, 105
  • [Medium] asn.py leaves function arguments unannotated while enabling ANN ruff rules — wolfcrypt/asn.py:81, 99
  • [Low] test_mldsa now relies on cffi's low-level TypeError instead of an explicit guard — tests/test_mldsa.py:186
  • [Low] RsaPublic.init made key a required positional argument — wolfcrypt/ciphers.py:781

Review generated by Skoll

Comment thread wolfcrypt/ciphers.py
Comment thread wolfcrypt/asn.py Outdated
Comment thread tests/test_mldsa.py Outdated
Comment thread wolfcrypt/ciphers.py

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skoll Code Review

Scan type: reviewOverall recommendation: COMMENT
Findings: 3 total — 3 posted, 0 skipped
3 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [Medium] ML-DSA seed handling: bytearray/memoryview now rejected, and the two seed methods validate inconsistently — wolfcrypt/ciphers.py:2371-2392 (make_key_from_seed), 2516-2540 (sign_with_seed)
  • [Low] *ML-KEM _with_random helpers no longer accept bytearray/memoryview for rand — wolfcrypt/ciphers.py:2059-2077 (encapsulate_with_random), 2103-2119 (make_key_with_random)
  • [Low] hkdf.py forces a runtime import of _Hmac for a type annotation (no from future import annotations) — wolfcrypt/hkdf.py:30-33

Review generated by Skoll

Comment thread wolfcrypt/ciphers.py
Comment thread wolfcrypt/hkdf.py
Comment thread wolfcrypt/ciphers.py

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skoll Code Review

Scan type: reviewOverall recommendation: COMMENT
Findings: 4 total — 4 posted, 0 skipped
4 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [Medium] ML-DSA seed validation now rejects bytearray/memoryview (regression) — wolfcrypt/ciphers.py:2383,2537
  • [Medium] Advertised list/tuple seed support is untested and likely fails at the cffi boundary — wolfcrypt/ciphers.py:2372,2391
  • [Low] setup.py install_requires not synced with new typing-extensions runtime dependency — setup.py:62-63
  • [Low] Hard runtime import of private cffi symbol _cffi_backend.Lib only to satisfy a cast — wolfcrypt/__init__.py:20-22,56

Review generated by Skoll

Comment thread wolfcrypt/ciphers.py Outdated
Comment thread wolfcrypt/ciphers.py Outdated
Comment thread setup.py Outdated
Comment thread wolfcrypt/__init__.py Outdated

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #125 (review)
If you disagree just make note. We are getting close on this and thank you for your efforts

dgarske
dgarske previously approved these changes Jun 22, 2026
@dgarske dgarske assigned dgarske and unassigned roberthdevries Jun 22, 2026

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skoll Code Review

Scan type: reviewOverall recommendation: COMMENT
Findings: 4 total — 4 posted, 0 skipped
4 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [Medium] typing-extensions dependency has no minimum version (override requires =4.4.0) — pyproject.toml:27
  • [Low] bytes(seed) silently accepts an int, dropping the friendly type check for ML-DSA seeds — wolfcrypt/ciphers.py:2383,2536
  • [Info] New module wolfcrypt/types.py shadows the stdlib types module name — wolfcrypt/types.py:1
  • [Info] Inconsistent # ty:ignore comment lacks the space used everywhere else — wolfcrypt/__init__.py:53

Review generated by Skoll

Comment thread pyproject.toml Outdated
Comment thread wolfcrypt/ciphers.py
Comment thread wolfcrypt/types.py Outdated
Comment thread wolfcrypt/__init__.py Outdated
@dgarske dgarske assigned dgarske and unassigned roberthdevries Jun 23, 2026

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skoll Code Review

Scan type: reviewOverall recommendation: COMMENT
Findings: 2 total — 2 posted, 0 skipped
2 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [Low] *MlKem _with_random drops buffer-protocol support for rand — wolfcrypt/ciphers.py:2096-2098,2140
  • [Low] setup.py dependencies out of sync with pyproject (typing-extensions) — setup.py:62-63

Review generated by Skoll

Comment thread wolfcrypt/ciphers.py
Comment thread setup.py Outdated

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please resolve merge conflicts. Also see #125 (review)

@dgarske dgarske assigned roberthdevries and unassigned dgarske Jul 6, 2026
@dgarske dgarske assigned dgarske and unassigned roberthdevries Jul 6, 2026
@dgarske
dgarske self-requested a review July 6, 2026 20:32

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skoll Code Review

Scan type: reviewOverall recommendation: COMMENT
Findings: 4 total — 4 posted, 0 skipped
4 finding(s) posted as inline comments (see file-level comments below)

Posted findings

  • [Medium] make_key_with_random drops buffer-protocol handling, inconsistent with encapsulate_with_random — wolfcrypt/ciphers.py:2151
  • [Low] New TypeError validation branches (with_random / seed) are not covered by tests — wolfcrypt/ciphers.py:2096-2099
  • [Low] Random.native_object changed from settable attribute to read-only property — wolfcrypt/random.py:56-60
  • [Info] Abstract properties typed - int are overridden by None class attributes — wolfcrypt/ciphers.py:175-177

Review generated by Skoll

Comment thread wolfcrypt/ciphers.py
Comment thread wolfcrypt/ciphers.py
Comment thread wolfcrypt/random.py
Comment thread wolfcrypt/ciphers.py

@dgarske dgarske left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dgarske dgarske assigned roberthdevries and unassigned dgarske Jul 6, 2026
Also added one note to the ChangeLog.
@dgarske
dgarske merged commit 2281b70 into wolfSSL:master Jul 8, 2026
2 checks passed
@roberthdevries
roberthdevries deleted the add-more-typing branch July 9, 2026 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants