Keep vanetza-idf in obu-firmware, so a plain clone builds the firmware

obu-firmware builds against the vanetza-idf C-ITS library, which until now
came from the colleague's microbu-esp32c5 tree beside the repository and was
not tracked here, so a clone of this repository could not build the firmware
it ships. The library alone is now part of obu-firmware, as
obu-firmware/external/vanetza-idf: their external/vanetza-idf at commit
cf4b99f, unchanged (9775 files; see its PROVENANCE.md). CMake takes it from
there by default; -DVANETZA_IDF_DIR still points the build elsewhere.

The rest of the colleague's tree (their own VAM firmware, PKI tooling,
station-link Python tools, the V2X2MAP bridge) stays out of this repository
and gitignored; nothing is pushed to their repository. NOTES.md, docs/06,
TODO.md and the pcap verifier's usage line point at the new location.
This commit is contained in:
Ashin Walpola
2026-09-24 10:56:05 +02:00
parent 2f60623e18
commit d107534eb2
9781 changed files with 1560475 additions and 17 deletions
@@ -0,0 +1,52 @@
# SystemX Hybrid-PQC ASN.1 Profile
This directory keeps the experimental certificate additions separate from
Vanetza's standard ASN.1 inputs. `hybrid-pqc.patch` contains the complete
experimental delta. The unmodified input modules are fetched from pinned
official ETSI Forge revisions during regeneration instead of being duplicated
in the source tree.
The IEEE inputs are from the official `v2025` tag of the ETSI Forge mirror:
* repository: `https://forge.etsi.org/rep/ITS/asn1/ieee1609.2.git`
* commit: `77e2c822a11bf8adbe9848ad3fd4f311925aff30`
* `Ieee1609Dot2.asn` SHA-256:
`82b5e35cbaadae1c6b2f087626b10d52afc73779c9ac6700c6445830d8824e0b`
* `Ieee1609Dot2BaseTypes.asn` SHA-256:
`bf2b3d66d394449319323f8a59d8084d963c3ad55d6790e1436ab897221690fe`
The two ETSI TS 103 097 inputs are fetched from the official Release 2
repository:
* repository: `https://forge.etsi.org/rep/ITS/asn1/sec_ts103097.git`
* commit: `65e6d8ea88b2bfb3aca3151dbedf07d89b97fd00`
* `EtsiTs103097Module.asn` SHA-256:
`245a3c10c176497f658c6a4d9ec804d3226dda2ac10a4351e382ddb5afe9ff72`
* `EtsiTs103097ExtensionModule.asn` SHA-256:
`b94c9b373567dd9bfb15d61c8c206d5630f6b0c481ef41ddd574c96784a9eb1a`
The patch adds only the certificate material used by this implementation:
* the fixed-size `FnDsa512Key` and `FnDsa512Signature` types;
* FN-DSA-512 choices in `PublicVerificationKey` and `Signature`;
* `altVerificationKey` and `altSignatureValue` in
`ToBeSignedCertificate`.
## Regeneration
Normal builds compile the committed generated files and do not need network
access, `asn1c`, Docker, or the patch utility. Regeneration is an explicit
maintainer action:
```shell
cmake -S . -B build-asn1 \
-DVANETZA_WITH_PQC=ON \
-DVANETZA_ASN1_WITH_ASN1C=ON \
-DVANETZA_ASN1_WITH_ISO=ON
cmake --build build-asn1 --target generate_asn1c
```
The generation target fetches and verifies the pristine inputs in its build
directory, applies `hybrid-pqc.patch`, invokes `asn1c`, and refreshes the
committed output under `vanetza/asn1/systemx-pqc`.
@@ -0,0 +1,101 @@
--- a/Ieee1609Dot2.asn
+++ b/Ieee1609Dot2.asn
@@ -10,7 +10,7 @@
Ieee1609Dot2 {iso(1) identified-organization(3) ieee(111)
standards-association-numbered-series-standards(2) wave-stds(1609)
- dot2(2) base(1) schema(1) major-version-2(2) minor-version-7(7)}
+ dot2(2) base(1) schema(1) major-version-2(2) minor-version-8(8)}
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
@@ -24,6 +24,7 @@
EXT-TYPE,
Extension,
ExtId,
+ FnDsa512Key,
GeographicRegion,
GroupLinkageValue,
HashAlgorithm,
@@ -1048,6 +1049,13 @@
* @param certRequestExtensions: indicates additional permissions to request
* certificates containing endEntityExtensions.
*
+ * @param altVerificationKey: carries the alternative FN-DSA-512 public key
+ * in a hybrid authority certificate. It is absent from end-entity
+ * authorization tickets.
+ *
+ * @param altSignatureValue: carries the FN-DSA-512 signature generated by
+ * the issuer over this certificate.
+ *
* @note In IEEE Std 1609.2-2022 these were not marked optional; they are in
* this version of the standard; this is technically not backwards compatible
* but in practice there are no scenarios in which a legacy system will break
@@ -1160,7 +1168,9 @@
flags BIT STRING {usesCubk (0)} (SIZE (8)) OPTIONAL,
appExtensions SequenceOfAppExtensions OPTIONAL,
certIssueExtensions SequenceOfCertIssueExtensions OPTIONAL,
- certRequestExtension SequenceOfCertRequestExtensions OPTIONAL
+ certRequestExtension SequenceOfCertRequestExtensions OPTIONAL,
+ altVerificationKey PublicVerificationKey OPTIONAL,
+ altSignatureValue Signature OPTIONAL
}
(WITH COMPONENTS { ..., appPermissions PRESENT} |
WITH COMPONENTS { ..., certIssuePermissions PRESENT} |
--- a/Ieee1609Dot2BaseTypes.asn
+++ b/Ieee1609Dot2BaseTypes.asn
@@ -10,7 +10,7 @@
Ieee1609Dot2BaseTypes {iso(1) identified-organization(3) ieee(111)
standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2)
- base(1) base-types(2) major-version-2(2) minor-version-5(5)}
+ base(1) base-types(2) major-version-2(2) minor-version-6(6)}
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
@@ -724,7 +724,8 @@
...,
ecdsaBrainpoolP384r1Signature EcdsaP384Signature,
ecdsaNistP384Signature EcdsaP384Signature,
- sm2Signature EcsigP256Signature
+ sm2Signature EcsigP256Signature,
+ fnDsa512Signature FnDsa512Signature
}
/**
@@ -821,6 +822,12 @@
}
/**
+ * @brief This type contains an FN-DSA-512 signature as a fixed-size octet
+ * string.
+ */
+FnDsa512Signature ::= OCTET STRING (SIZE (666))
+
+/**
* @brief This structure specifies a point on an elliptic curve in Weierstrass
* form defined over a 256-bit prime number. The curves supported in this
* standard are NIST p256 as defined in FIPS 186-5, Brainpool p256r1 as
@@ -888,6 +895,12 @@
}
/**
+ * @brief This type contains an FN-DSA-512 public verification key as a
+ * fixed-size octet string.
+ */
+FnDsa512Key ::= OCTET STRING (SIZE (897))
+
+/**
* @brief This enumerated value indicates supported symmetric algorithms. The
* algorithm identifier identifies both the algorithm itself and a specific
* mode of operation. The symmetric algorithms supported in this version of
@@ -1045,7 +1058,8 @@
... ,
ecdsaBrainpoolP384r1 EccP384CurvePoint,
ecdsaNistP384 EccP384CurvePoint,
- ecsigSm2 EccP256CurvePoint
+ ecsigSm2 EccP256CurvePoint,
+ fnDsa512 FnDsa512Key
}
/**