Skip to content

feat(application): dissect DTLS 1.3 unified-header records that carry a connection ID #2625

Closed

Description

@JarryShaw

This is a follow-up from #2515, the owner's option 1(a) there. DTLS 1.3 unified-header records that carry a connection ID (RFC 9147 §4, the C bit) stay Raw, because their CID length is not on the wire. Reuse #2515's DTLSContext to supply it. IDs that DTLS 1.3 sends later inside the encrypted NewConnectionId message cannot be learned from the capture, so those come only from the caller.

Blocked: this builds on #2515's DTLSContext. It unblocks when #2515's PR merges.

Activity

  1. added this to the PyPCAPKit v1.6 milestone on Nov 2, 2026
  2. added
    featPull requests that add a new capability (feat: subject prefix)
    blockedDeferred pending another issue or decision; see the last comment for what unblocks it
    on Nov 2, 2026
  3. moved this to Blocked in PyPCAPKiton Nov 2, 2026
  4. JarryShaw commented on Nov 2, 2026

    @JarryShaw
    OwnerAuthor

    #2515 has merged as #2631, so DTLSContext is on main. Still blocked, but the condition has changed: #2622 also edits dtls.py and is waiting to open as a PR. This unblocks when #2622 merges.

  5. JarryShaw commented on Nov 2, 2026

    @JarryShaw
    OwnerAuthor

    #2622 has merged as #2634, so dtls.py is free. Unblocked. It goes to a worker as soon as host load allows: the record-layer CID path for DTLS 1.3 unified headers, reusing DTLSContext.

  6. added
    pendingAccepted and unstarted - nobody is on it and nothing blocks it
    wipWork in flight - a covering PR is open or an agent is actively on it
    and removed
    blockedDeferred pending another issue or decision; see the last comment for what unblocks it
    pendingAccepted and unstarted - nobody is on it and nothing blocks it
    on Nov 2, 2026
  7. moved this from Blocked to WIP in PyPCAPKiton Nov 2, 2026
  8. JarryShaw commented on Nov 2, 2026

    @JarryShaw
    OwnerAuthor

    DTLS 1.3 connection-ID records are done locally, and a Sonnet review is running. They resolve through #2631's DTLSContext matcher, which now handles both record types. The test vectors are a real wolfSSL 5.9.4 DTLS 1.3 CID exchange, and tshark agrees on every record. NewConnectionId IDs can come only from the caller, and that limit is documented. Your #2515 rulings are kept and tested.

    Needs deciding: every unified-header record's info gains a cid key, which is None when the C bit is clear.

    1. Keep it. This mirrors length being None when the L bit is clear, and keeps one data model for one header.
    2. Use a separate data model for records that carry a CID, so existing output stays identical. The cost is a second model and extra branching.

    Recommendation: 1. The branch implements 1 unless you choose otherwise.

  9. added
    needs: decisionWaiting on the maintainer to decide — not blocked by other work
    on Nov 2, 2026
  10. moved this from WIP to Needs decision in PyPCAPKiton Nov 2, 2026
  11. JarryShaw commented on Nov 2, 2026

    @JarryShaw
    OwnerAuthor

    Take 1

  12. JarryShaw commented on Nov 2, 2026

    @JarryShaw
    OwnerAuthor

    The owner chose 1, paraphrased: every unified-header record's info keeps a cid key, which is None when the C bit is clear. That mirrors length, and there is one data model for one header.

    #2643 already implements this and is good to go at d86dbdd1f. This settles the open question, so needs: decision comes off. #2643's red 3.15 leg is the re-export failure inherited from main, which #2641 fixes.

  13. removed
    needs: decisionWaiting on the maintainer to decide — not blocked by other work
    on Nov 2, 2026
  14. moved this from Needs decision to WIP in PyPCAPKiton Nov 2, 2026
  15. removed
    wipWork in flight - a covering PR is open or an agent is actively on it
    on Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featPull requests that add a new capability (feat: subject prefix)

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions