Crate galileo_osnma
source ·Expand description
§Galileo OSNMA
galileo-osnma is a Rust implementation of the Galileo OSNMA (Open Service Navigation Message Authentication) protocol. This protocol is used by the Galileo GNSS to sign cryptographically the navigation message data transmitted by its satellites, in order to prevent spoofing. Briefly speaking, galileo-osnma can process the navigation message data and OSNMA cryptographic data and check all the cryptographic data against an ECDSA public key and/or Merkle tree, in order to check the authenticity of the navigation data.
This library provides an Osnma
struct that implements the OSNMA
authentication as a black box. A user can feed data from INAV pages into
Osnma
and then request authenticated navigation data. Additionally,
lower level functionalities of the OSNMA protocol are accessible in case
finer control is needed.
This crate does not depend on std
and can be used in small embedded
microcontrollers. An example of this is given in the
osnma-longan-nano
crate.
§Logging
The galileo-osnma crate makes extensive use of the log crate to log events related to the processing of the messages and the cryptographic functions.
§Galmon integration
When this crate is built with the galmon
feature, a galmon
module is
available, which can be used to read data using the Galmon transport
protocol. The reader can
be used to obtain INAV frames and OSNMA data from the
Galmon tools, such as ubxtool
.
An example of this functionality is given in
galmon-osnma. This
is a binary tool that reads data from the standard input using the Galmon
transport protocol, and runs it through the Osnma
black box, logging all
the events that happen. See the
quick start instructions
about how to use this tool.
§Features
When built with the default features, the crate does not require
std
. Additionally, the crate supports the following features:
galmon
. This enables support for reading the Galmon transport protocol and requiresstd
.p521
. This enables support for ECDSA P-521 public keys. These public keys defined in the OSNMA ICD, but currently only ECDSA P-256 keys are used in the signal-in-space.
Re-exports§
pub use merkle_tree::PublicKey;
pub use types::MerkleTreeNode;
pub use validation::Validated;
Modules§
- Message bit fields.
- DSM message collection.
- Galmon integration.
- MACK message storage.
- MAC Look-up Table
- Merkle tree.
- Navigation message storage and handling.
- OSNMA storage definitions.
- Subframe collection.
- TESLA keys and chain parameters.
- Types used in galileo_osnma.
- Validation status.
Structs§
- GST (Galileo System Time)
- OSNMA “black box” processing.
- Galileo SVN.
- SVN construction error.
Type Aliases§
- Time of week.
- Galileo week number.