Compare commits

...
1 Commits
Author SHA1 Message Date
swaits a031c6e266 chore: repoint remaining links at git.swaits.com
mdBook / build (push) Canceled after 0s
mdBook / deploy (push) Canceled after 0s
Rewrites lingering github.com / *.sr.ht references to this Gitea instance,
translating GitHub and Sourcehut URL shapes to Gitea's (/blob/<ref>/ and
sr.ht /tree/<ref>/item/ -> /src/branch/<ref>/, /tree/<tag> -> /src/tag/<tag>,
/actions/workflows/X -> /actions?workflow=X, /edit/ -> /_edit/).

Left pointing at the old hosts on purpose: pull-request links (PRs were not
migrated), forks that were never migrated, and GitHub-only surfaces Gitea
lacks. OpenPGP identity proofs are untouched by design.
2026-08-31 18:32:21 -06:00
39 changed files with 46 additions and 46 deletions

No files matched your search

+2 -2
View File
@@ -8,8 +8,8 @@ src = "src"
[output.html] [output.html]
default-theme = "navy" default-theme = "navy"
preferred-dark-theme = "navy" preferred-dark-theme = "navy"
git-repository-url = "https://github.com/swaits/meshcore-spec" git-repository-url = "https://git.swaits.com/swaits/meshcore-spec"
edit-url-template = "https://github.com/swaits/meshcore-spec/edit/main/{path}" edit-url-template = "https://git.swaits.com/swaits/meshcore-spec/_edit/main/{path}"
# CI overrides per-version with MDBOOK_OUTPUT__HTML__SITE_URL. # CI overrides per-version with MDBOOK_OUTPUT__HTML__SITE_URL.
# Default below targets the "latest" deploy from main. # Default below targets the "latest" deploy from main.
site-url = "/meshcore-spec/latest/" site-url = "/meshcore-spec/latest/"
+4 -4
View File
@@ -23,7 +23,7 @@ The **upstream MeshCore C++ firmware is the source of truth** for all
protocol behavior. This spec is downstream and derivative. Whenever the spec protocol behavior. This spec is downstream and derivative. Whenever the spec
and the upstream C++ disagree, **upstream wins** — and a fix to this spec is and the upstream C++ disagree, **upstream wins** — and a fix to this spec is
filed against this repo, not against MeshCore. Each substantive change in filed against this repo, not against MeshCore. Each substantive change in
[CHANGELOG.md](https://github.com/swaits/meshcore-spec/blob/main/CHANGELOG.md) [CHANGELOG.md](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/CHANGELOG.md)
records the upstream commit hash it was validated against. records the upstream commit hash it was validated against.
Refinements have also been driven in part by observations from building Refinements have also been driven in part by observations from building
@@ -31,10 +31,10 @@ DongLoRa firmware and apps against live MeshCore deployments. Where DongLoRa
behavior diverges from upstream, this spec follows upstream and treats the behavior diverges from upstream, this spec follows upstream and treats the
DongLoRa side as a follow-up bug, not a spec change. DongLoRa side as a follow-up bug, not a spec change.
Conformance against the [test corpus](https://github.com/swaits/meshcore-spec/tree/main/corpus) Conformance against the [test corpus](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus)
is a useful signal but **not a substitute** for cross-checking against is a useful signal but **not a substitute** for cross-checking against
upstream firmware. If you find a divergence from upstream, please upstream firmware. If you find a divergence from upstream, please
[file an issue](https://github.com/swaits/meshcore-spec/issues) — that is [file an issue](https://git.swaits.com/swaits/meshcore-spec/issues) — that is
exactly the kind of report this project exists to catch. exactly the kind of report this project exists to catch.
### Spec Versions ### Spec Versions
@@ -61,7 +61,7 @@ version; switching keeps you on the same chapter where it exists in the
target version. Spec versions use semver and are **independent** of the target version. Spec versions use semver and are **independent** of the
upstream MeshCore firmware's own versioning — each release records the upstream MeshCore firmware's own versioning — each release records the
upstream commit hash it was validated against in upstream commit hash it was validated against in
[CHANGELOG.md](https://github.com/swaits/meshcore-spec/blob/main/CHANGELOG.md). [CHANGELOG.md](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/CHANGELOG.md).
### Scope ### Scope
+1 -1
View File
@@ -131,7 +131,7 @@ A conforming decoder MUST reject packets with any of the following:
- [Section 2: Header](02-header.md) — Header byte encoding details - [Section 2: Header](02-header.md) — Header byte encoding details
- [Section 3: Path](03-path.md) — Path length encoding and path field - [Section 3: Path](03-path.md) — Path length encoding and path field
- Test vectors: [`corpus/wire-format/framing/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/wire-format/framing/), [`corpus/wire-format/invalid/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/wire-format/invalid/) - Test vectors: [`corpus/wire-format/framing/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/wire-format/framing/), [`corpus/wire-format/invalid/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/wire-format/invalid/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -113,7 +113,7 @@ is an in-memory sentinel only and MUST NOT appear on the wire. A header of
- [Section 1: Wire Format](01-wire-format.md) — Overall packet structure - [Section 1: Wire Format](01-wire-format.md) — Overall packet structure
- [Section 3: Path](03-path.md) — Path encoding - [Section 3: Path](03-path.md) — Path encoding
- Test vectors: [`corpus/wire-format/header/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/wire-format/header/) - Test vectors: [`corpus/wire-format/header/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/wire-format/header/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -143,7 +143,7 @@ this class of bug.
- [Section 1: Wire Format](01-wire-format.md) — Overall packet structure - [Section 1: Wire Format](01-wire-format.md) — Overall packet structure
- [Section 2: Header](02-header.md) — Header encoding - [Section 2: Header](02-header.md) — Header encoding
- [Section 15: Identity](15-identity.md) — Hash derivation from public keys - [Section 15: Identity](15-identity.md) — Hash derivation from public keys
- Test vectors: [`corpus/wire-format/path/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/wire-format/path/) - Test vectors: [`corpus/wire-format/path/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/wire-format/path/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -87,7 +87,7 @@ sender attribute each received ACK to a specific transmission attempt. See
- [Section 1: Wire Format](01-wire-format.md) — Packet framing - [Section 1: Wire Format](01-wire-format.md) — Packet framing
- [Section 11: Multipart](11-payload-multipart.md) — Multipart ACK encoding - [Section 11: Multipart](11-payload-multipart.md) — Multipart ACK encoding
- Test vectors: [`corpus/payloads/ack/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/ack/) - Test vectors: [`corpus/payloads/ack/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/ack/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -115,7 +115,7 @@ preceding optional fields are present.
- [Section 15: Identity](15-identity.md) — Ed25519 key management - [Section 15: Identity](15-identity.md) — Ed25519 key management
- [Section 14: Cryptography](14-crypto.md) — Signature operations - [Section 14: Cryptography](14-crypto.md) — Signature operations
- Test vectors: [`corpus/payloads/advert/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/advert/) - Test vectors: [`corpus/payloads/advert/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/advert/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -159,7 +159,7 @@ patterns include:
- [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC details - [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC details
- [Section 15: Identity](15-identity.md) — ECDH shared secret computation - [Section 15: Identity](15-identity.md) — ECDH shared secret computation
- Test vectors: [`corpus/payloads/encrypted/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/encrypted/) - Test vectors: [`corpus/payloads/encrypted/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/encrypted/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -66,7 +66,7 @@ Header payload type field: `0x07` (ANON_REQ)
- [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Standard encrypted format - [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Standard encrypted format
- [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC - [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC
- [Section 15: Identity](15-identity.md) — ECDH key exchange - [Section 15: Identity](15-identity.md) — ECDH key exchange
- Test vectors: [`corpus/payloads/anon-req/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/anon-req/) - Test vectors: [`corpus/payloads/anon-req/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/anon-req/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -72,7 +72,7 @@ secret. Only a successful MAC verification confirms the correct channel.
### Cross-References ### Cross-References
- [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC - [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC
- Test vectors: [`corpus/payloads/group/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/group/) - Test vectors: [`corpus/payloads/group/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/group/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -82,7 +82,7 @@ hash is unique.
- [Section 3: Path](03-path.md) — Path length encoding - [Section 3: Path](03-path.md) — Path length encoding
- [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Outer envelope format - [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Outer envelope format
- [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC - [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC
- Test vectors: [`corpus/payloads/path-return/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/path-return/) - Test vectors: [`corpus/payloads/path-return/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/path-return/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -97,7 +97,7 @@ At that point, `onTraceRecv` is called with:
### Cross-References ### Cross-References
- [Section 16: Packet Hash](16-packet-hash.md) — TRACE packets include path_len in hash - [Section 16: Packet Hash](16-packet-hash.md) — TRACE packets include path_len in hash
- Test vectors: [`corpus/payloads/trace/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/trace/) - Test vectors: [`corpus/payloads/trace/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/trace/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -112,7 +112,7 @@ intends to emit, not a guarantee that they will arrive.
### Cross-References ### Cross-References
- [Section 4: ACK](04-payload-ack.md) — ACK CRC format - [Section 4: ACK](04-payload-ack.md) — ACK CRC format
- Test vectors: [`corpus/payloads/multipart/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/multipart/) - Test vectors: [`corpus/payloads/multipart/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/multipart/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -60,7 +60,7 @@ formats are application-defined, but typically include:
### Cross-References ### Cross-References
- [Section 17: Routing](17-routing.md) — Zero-hop delivery - [Section 17: Routing](17-routing.md) — Zero-hop delivery
- Test vectors: [`corpus/payloads/control/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/control/) - Test vectors: [`corpus/payloads/control/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/control/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -41,7 +41,7 @@ when received via direct routing. They are NOT flood-routed.
### Cross-References ### Cross-References
- Test vectors: [`corpus/payloads/raw-custom/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/payloads/raw-custom/) - Test vectors: [`corpus/payloads/raw-custom/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/payloads/raw-custom/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -110,7 +110,7 @@ Output format:
- [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Usage in packet payloads - [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Usage in packet payloads
- [Section 15: Identity](15-identity.md) — Shared secret computation via ECDH - [Section 15: Identity](15-identity.md) — Shared secret computation via ECDH
- Test vectors: [`corpus/crypto/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/crypto/) - Test vectors: [`corpus/crypto/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/crypto/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -81,7 +81,7 @@ Hex representation uses uppercase characters with 2 hex digits per byte.
- [Section 3: Path](03-path.md) — Hash size in path encoding - [Section 3: Path](03-path.md) — Hash size in path encoding
- [Section 5: Advertisement](05-payload-advert.md) — Signature usage - [Section 5: Advertisement](05-payload-advert.md) — Signature usage
- [Section 14: Cryptography](14-crypto.md) — Shared secret usage - [Section 14: Cryptography](14-crypto.md) — Shared secret usage
- Test vectors: [`corpus/crypto/ed25519/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/crypto/ed25519/), [`corpus/crypto/ecdh/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/crypto/ecdh/) - Test vectors: [`corpus/crypto/ed25519/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/crypto/ed25519/), [`corpus/crypto/ecdh/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/crypto/ecdh/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -59,7 +59,7 @@ function calculatePacketHash(packet):
### Cross-References ### Cross-References
- [Section 10: Trace](10-payload-trace.md) — TRACE packet special handling - [Section 10: Trace](10-payload-trace.md) — TRACE packet special handling
- Test vectors: [`corpus/crypto/sha256/packet-hash.json`](https://github.com/swaits/meshcore-spec/blob/main/corpus/crypto/sha256/packet-hash.json) - Test vectors: [`corpus/crypto/sha256/packet-hash.json`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/crypto/sha256/packet-hash.json)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -89,7 +89,7 @@ implementations SHOULD request a larger MTU (up to 512 bytes).
### Cross-References ### Cross-References
- [Section 1: Wire Format](01-wire-format.md) — Underlying packet format - [Section 1: Wire Format](01-wire-format.md) — Underlying packet format
- Test vectors: [`corpus/companion/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/companion/) - Test vectors: [`corpus/companion/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/companion/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -173,7 +173,7 @@ Response codes: `response = command | 0x80`
- [Section 1: Wire Format](01-wire-format.md) — Packet format within data frames - [Section 1: Wire Format](01-wire-format.md) — Packet format within data frames
- [Section 14: Cryptography](14-crypto.md) — Crypto operations via SetHardware - [Section 14: Cryptography](14-crypto.md) — Crypto operations via SetHardware
- Test vectors: [`corpus/kiss/`](https://github.com/swaits/meshcore-spec/tree/main/corpus/kiss/) - Test vectors: [`corpus/kiss/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/corpus/kiss/)
### Reference Implementation ### Reference Implementation
+4 -4
View File
@@ -23,7 +23,7 @@ The **upstream MeshCore C++ firmware is the source of truth** for all
protocol behavior. This spec is downstream and derivative. Whenever the spec protocol behavior. This spec is downstream and derivative. Whenever the spec
and the upstream C++ disagree, **upstream wins** — and a fix to this spec is and the upstream C++ disagree, **upstream wins** — and a fix to this spec is
filed against this repo, not against MeshCore. Each substantive change in filed against this repo, not against MeshCore. Each substantive change in
[CHANGELOG.md](https://github.com/swaits/meshcore-spec/blob/main/CHANGELOG.md) [CHANGELOG.md](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/CHANGELOG.md)
records the upstream commit hash it was validated against. records the upstream commit hash it was validated against.
Refinements have also been driven in part by observations from building Refinements have also been driven in part by observations from building
@@ -31,10 +31,10 @@ DongLoRa firmware and apps against live MeshCore deployments. Where DongLoRa
behavior diverges from upstream, this spec follows upstream and treats the behavior diverges from upstream, this spec follows upstream and treats the
DongLoRa side as a follow-up bug, not a spec change. DongLoRa side as a follow-up bug, not a spec change.
Conformance against the [test corpus](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus) Conformance against the [test corpus](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus)
is a useful signal but **not a substitute** for cross-checking against is a useful signal but **not a substitute** for cross-checking against
upstream firmware. If you find a divergence from upstream, please upstream firmware. If you find a divergence from upstream, please
[file an issue](https://github.com/swaits/meshcore-spec/issues) — that is [file an issue](https://git.swaits.com/swaits/meshcore-spec/issues) — that is
exactly the kind of report this project exists to catch. exactly the kind of report this project exists to catch.
### Spec Versions ### Spec Versions
@@ -61,7 +61,7 @@ version; switching keeps you on the same chapter where it exists in the
target version. Spec versions use semver and are **independent** of the target version. Spec versions use semver and are **independent** of the
upstream MeshCore firmware's own versioning — each release records the upstream MeshCore firmware's own versioning — each release records the
upstream commit hash it was validated against in upstream commit hash it was validated against in
[CHANGELOG.md](https://github.com/swaits/meshcore-spec/blob/main/CHANGELOG.md). [CHANGELOG.md](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/CHANGELOG.md).
### Scope ### Scope
+1 -1
View File
@@ -131,7 +131,7 @@ A conforming decoder MUST reject packets with any of the following:
- [Section 2: Header](02-header.md) — Header byte encoding details - [Section 2: Header](02-header.md) — Header byte encoding details
- [Section 3: Path](03-path.md) — Path length encoding and path field - [Section 3: Path](03-path.md) — Path length encoding and path field
- Test vectors: [`corpus/wire-format/framing/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/wire-format/framing/), [`corpus/wire-format/invalid/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/wire-format/invalid/) - Test vectors: [`corpus/wire-format/framing/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/wire-format/framing/), [`corpus/wire-format/invalid/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/wire-format/invalid/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -113,7 +113,7 @@ is an in-memory sentinel only and MUST NOT appear on the wire. A header of
- [Section 1: Wire Format](01-wire-format.md) — Overall packet structure - [Section 1: Wire Format](01-wire-format.md) — Overall packet structure
- [Section 3: Path](03-path.md) — Path encoding - [Section 3: Path](03-path.md) — Path encoding
- Test vectors: [`corpus/wire-format/header/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/wire-format/header/) - Test vectors: [`corpus/wire-format/header/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/wire-format/header/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -143,7 +143,7 @@ this class of bug.
- [Section 1: Wire Format](01-wire-format.md) — Overall packet structure - [Section 1: Wire Format](01-wire-format.md) — Overall packet structure
- [Section 2: Header](02-header.md) — Header encoding - [Section 2: Header](02-header.md) — Header encoding
- [Section 15: Identity](15-identity.md) — Hash derivation from public keys - [Section 15: Identity](15-identity.md) — Hash derivation from public keys
- Test vectors: [`corpus/wire-format/path/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/wire-format/path/) - Test vectors: [`corpus/wire-format/path/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/wire-format/path/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -87,7 +87,7 @@ sender attribute each received ACK to a specific transmission attempt. See
- [Section 1: Wire Format](01-wire-format.md) — Packet framing - [Section 1: Wire Format](01-wire-format.md) — Packet framing
- [Section 11: Multipart](11-payload-multipart.md) — Multipart ACK encoding - [Section 11: Multipart](11-payload-multipart.md) — Multipart ACK encoding
- Test vectors: [`corpus/payloads/ack/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/ack/) - Test vectors: [`corpus/payloads/ack/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/ack/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -115,7 +115,7 @@ preceding optional fields are present.
- [Section 15: Identity](15-identity.md) — Ed25519 key management - [Section 15: Identity](15-identity.md) — Ed25519 key management
- [Section 14: Cryptography](14-crypto.md) — Signature operations - [Section 14: Cryptography](14-crypto.md) — Signature operations
- Test vectors: [`corpus/payloads/advert/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/advert/) - Test vectors: [`corpus/payloads/advert/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/advert/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -159,7 +159,7 @@ patterns include:
- [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC details - [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC details
- [Section 15: Identity](15-identity.md) — ECDH shared secret computation - [Section 15: Identity](15-identity.md) — ECDH shared secret computation
- Test vectors: [`corpus/payloads/encrypted/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/encrypted/) - Test vectors: [`corpus/payloads/encrypted/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/encrypted/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -66,7 +66,7 @@ Header payload type field: `0x07` (ANON_REQ)
- [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Standard encrypted format - [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Standard encrypted format
- [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC - [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC
- [Section 15: Identity](15-identity.md) — ECDH key exchange - [Section 15: Identity](15-identity.md) — ECDH key exchange
- Test vectors: [`corpus/payloads/anon-req/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/anon-req/) - Test vectors: [`corpus/payloads/anon-req/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/anon-req/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -72,7 +72,7 @@ secret. Only a successful MAC verification confirms the correct channel.
### Cross-References ### Cross-References
- [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC - [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC
- Test vectors: [`corpus/payloads/group/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/group/) - Test vectors: [`corpus/payloads/group/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/group/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -82,7 +82,7 @@ hash is unique.
- [Section 3: Path](03-path.md) — Path length encoding - [Section 3: Path](03-path.md) — Path length encoding
- [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Outer envelope format - [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Outer envelope format
- [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC - [Section 14: Cryptography](14-crypto.md) — Encrypt-then-MAC
- Test vectors: [`corpus/payloads/path-return/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/path-return/) - Test vectors: [`corpus/payloads/path-return/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/path-return/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -97,7 +97,7 @@ At that point, `onTraceRecv` is called with:
### Cross-References ### Cross-References
- [Section 16: Packet Hash](16-packet-hash.md) — TRACE packets include path_len in hash - [Section 16: Packet Hash](16-packet-hash.md) — TRACE packets include path_len in hash
- Test vectors: [`corpus/payloads/trace/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/trace/) - Test vectors: [`corpus/payloads/trace/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/trace/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -112,7 +112,7 @@ intends to emit, not a guarantee that they will arrive.
### Cross-References ### Cross-References
- [Section 4: ACK](04-payload-ack.md) — ACK CRC format - [Section 4: ACK](04-payload-ack.md) — ACK CRC format
- Test vectors: [`corpus/payloads/multipart/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/multipart/) - Test vectors: [`corpus/payloads/multipart/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/multipart/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -60,7 +60,7 @@ formats are application-defined, but typically include:
### Cross-References ### Cross-References
- [Section 17: Routing](17-routing.md) — Zero-hop delivery - [Section 17: Routing](17-routing.md) — Zero-hop delivery
- Test vectors: [`corpus/payloads/control/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/control/) - Test vectors: [`corpus/payloads/control/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/control/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -41,7 +41,7 @@ when received via direct routing. They are NOT flood-routed.
### Cross-References ### Cross-References
- Test vectors: [`corpus/payloads/raw-custom/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/payloads/raw-custom/) - Test vectors: [`corpus/payloads/raw-custom/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/payloads/raw-custom/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -110,7 +110,7 @@ Output format:
- [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Usage in packet payloads - [Section 6: Encrypted Payloads](06-payload-encrypted.md) — Usage in packet payloads
- [Section 15: Identity](15-identity.md) — Shared secret computation via ECDH - [Section 15: Identity](15-identity.md) — Shared secret computation via ECDH
- Test vectors: [`corpus/crypto/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/crypto/) - Test vectors: [`corpus/crypto/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/crypto/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -81,7 +81,7 @@ Hex representation uses uppercase characters with 2 hex digits per byte.
- [Section 3: Path](03-path.md) — Hash size in path encoding - [Section 3: Path](03-path.md) — Hash size in path encoding
- [Section 5: Advertisement](05-payload-advert.md) — Signature usage - [Section 5: Advertisement](05-payload-advert.md) — Signature usage
- [Section 14: Cryptography](14-crypto.md) — Shared secret usage - [Section 14: Cryptography](14-crypto.md) — Shared secret usage
- Test vectors: [`corpus/crypto/ed25519/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/crypto/ed25519/), [`corpus/crypto/ecdh/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/crypto/ecdh/) - Test vectors: [`corpus/crypto/ed25519/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/crypto/ed25519/), [`corpus/crypto/ecdh/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/crypto/ecdh/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -59,7 +59,7 @@ function calculatePacketHash(packet):
### Cross-References ### Cross-References
- [Section 10: Trace](10-payload-trace.md) — TRACE packet special handling - [Section 10: Trace](10-payload-trace.md) — TRACE packet special handling
- Test vectors: [`corpus/crypto/sha256/packet-hash.json`](https://github.com/swaits/meshcore-spec/blob/main/versions/v0.1.0/corpus/crypto/sha256/packet-hash.json) - Test vectors: [`corpus/crypto/sha256/packet-hash.json`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/crypto/sha256/packet-hash.json)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -89,7 +89,7 @@ implementations SHOULD request a larger MTU (up to 512 bytes).
### Cross-References ### Cross-References
- [Section 1: Wire Format](01-wire-format.md) — Underlying packet format - [Section 1: Wire Format](01-wire-format.md) — Underlying packet format
- Test vectors: [`corpus/companion/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/companion/) - Test vectors: [`corpus/companion/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/companion/)
### Reference Implementation ### Reference Implementation
+1 -1
View File
@@ -173,7 +173,7 @@ Response codes: `response = command | 0x80`
- [Section 1: Wire Format](01-wire-format.md) — Packet format within data frames - [Section 1: Wire Format](01-wire-format.md) — Packet format within data frames
- [Section 14: Cryptography](14-crypto.md) — Crypto operations via SetHardware - [Section 14: Cryptography](14-crypto.md) — Crypto operations via SetHardware
- Test vectors: [`corpus/kiss/`](https://github.com/swaits/meshcore-spec/tree/main/versions/v0.1.0/corpus/kiss/) - Test vectors: [`corpus/kiss/`](https://git.swaits.com/swaits/meshcore-spec/src/branch/main/versions/v0.1.0/corpus/kiss/)
### Reference Implementation ### Reference Implementation