Skip to content

feat(pgsql): verify TLS certificate identity - #59

Merged
ShawnXxy merged 2 commits into
driver/pgsqlfrom
shawnxxy-pgsql-p09b2-identity-matcher
Nov 11, 2026
Merged

ShawnXxy merged 2 commits into
driver/pgsqlfrom
shawnxxy-pgsql-p09b2-identity-matcher

Conversation

@ShawnXxy

Copy link
Copy Markdown
Contributor

Summary

  • install the production DeviceCertificateKit-backed peer certificate adapter behind the existing PostgreSQL VERIFY_FULL seam
  • add strict ASCII DNS wildcard matching, canonical IPv4/IPv6 byte matching, SAN precedence, and safe DNS CN fallback
  • fail closed with stable TLS error identities while preserving VERIFY_CA, REQUIRED, and custom credential behavior

Validation

  • npm run test:arkts -- pgsql — 111 native cases passed
  • node --test --test-concurrency=1 tools\architecture-graph.test.mjs tools\run-ohos-tests.test.mjs tools\driver-contracts.test.mjs — 151 tests passed
  • final independent whole-diff review — CLEAN

Add strict DNS and IP matching, SAN precedence, safe CN fallback, and DeviceCertificateKit verifier wiring for VERIFY_FULL.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings November 11, 2026 10:27

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.

🟡 Changes recommended

Terminal-dot numeric hosts can bypass IP identity checks and pass DNS/CN matching without an IP SAN, creating a critical certificate-verification vulnerability.

2 open issues
What changed in this PR

This PR enables PostgreSQL VERIFY_FULL certificate identity checks through DeviceCertificateKit, replacing the unsupported-verifier placeholder.

Changes:

  • Adds a production certificate adapter behind the existing verification interface.
  • Implements strict DNS and wildcard matching, IPv4/IPv6 matching, and SAN precedence with restricted CN fallback.
  • Adds tests for identity matching, malformed certificates, error handling, and defensive copies.
File Description
pgsql/​src/​test/​pgsql/​transport/​PostgresTls.test.ets Adds identity-matching and mocked verifier coverage.
pgsql/​src/​main/​ets/​pgsql/​transport/​PostgresTcpTransport.ets Adds platform certificate decoding and host identity verification.

Review effort: Balanced

Keep canonical and legacy numeric host spellings from falling through to DNS SAN or CN matching when they include a terminal root dot.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings November 11, 2026 12:30

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.

🔵 Needs a closer look

The security-sensitive VERIFY_FULL path now depends on DeviceCertificateKit decoding and SAN/CN extraction, but tests cover only injected seams while real-device certificate and TLS-handshake validation remains deferred to G01.

No open issues 🎉

2 resolved since last review

Review effort: Balanced

@ShawnXxy
ShawnXxy merged commit 5c38a07 into driver/pgsql Nov 11, 2026
3 of 4 checks passed
@ShawnXxy
ShawnXxy deleted the shawnxxy-pgsql-p09b2-identity-matcher branch November 11, 2026 12:52
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.

2 participants