Take into account TOW to decide whether to skip a tag or not.
Still, I dont like the logic of iterating over and over the tags. Once a tag is verified once, it should be not checked unless next TOW subframe came (new Data or new Key available)
Adittionally: solved a small specification bug for ADKD=12, improved reporting (status of Tag is a string now)
Define the following global configuration parameters:
GNSS-SDR.osnma_public_key (string, by default pointing to ../data/OSNMA_PublicKey_20240115100000_newPKID_1.crt)
GNSS-SDR.osnma_merkletree (string, by default pointing to ../data/OSNMA_MerkleTree_20240115100000_newPKID_1.xml)
Add logging of OSNMA events
Clean public API of Gnss_Crypto class
Implemented changes to ensure accurate computation of the d_GST_Sf in message receiver. Checked test is not affected by this. Logging improvements have been made.
- several bugs fixed for DSM-PKR verification.
- improved verification, taking into account leaf position (odd/even), which determines concatenation order.
- now: configuration_2 leads to successful DSM-PKR verification.
Changes in the osnma receiver initialisation for time synchronisation with the configuration 1.
OsnmaMsgReceiverTest::initializeGoogleLog() implemented recycling code, in the same way as the gnss-sdr receiver upon start.
The commit introduces conversion from raw signature (r, s values) into DER format for the ossl3 region, after realising that that was making the verification fail.
* substitute std::cout with google log outputs, blend out some couts
* add check that the final time matches the Kroot time during tesla key verification
* introduce variable 'd_validated_key'
This commit introduces two new unit tests for the osnma_msg_receiver class: 'TeslaKeyVerification' and 'OsnmaTestVectorsSimulation'. The first test verifies the Tesla key handling within the class. The second test uses real-world test vectors to simulate osnma message receiving and verifies correct parsing and processing of messages.
* rename unused variable d_old_GST_SISto d_last_verified_key_GST and use it for tesla key verification
* fix bug on verify_tesla_key during the comparison of computed and received key
* deleted d_old_OSNMA_buffer
* fill PRNa and TOW for MACK message when parsing it
* fix parameter bug for verify_macseq()
* immplement tag_has_key_available
* delete old verify_tag implementation
Several changes were made on gnss_crypto to ensure that the unit test passes. Public key copying and hex printing features were added. The OpenSSL header includes were updated.
[TAS-140] Tag verification: accumulation tags of PRNd and ADKD for T_COP
This update introduces updated time verification functions and DSM block processes. TAS-140 introduces work (in progress) for taking into account the COP when validating tags. This accounts for significant structural changes in process_mack_message(). The update also resolves several TODO comments and includes minor adjustments to unit tests and system parameters.
The OSNMA message receiver has been refactored to correct errors. It introduces new functions to process local time verification as well as DSM blocks. Flow of information between these functions is also changed, to improve readabilty and responsibility. Several TODO comments have been addressed as part of the changes. This commit also includes minor changes to the unit tests and system parameters classes.
Introduced unit tests in `gnss_crypto_test.cc` to verify the functionality set_public_key and verify_signature. The added tests check the correctness of signature verification and public key import processes. Further minor changes
The time difference limit between local time and OSNMA subframe time has been increased from 15 to 120. Additionally, key length retrieval condensed. Minor adjustments in tesla key, padding of bits, and success messaging during data verification.
Refactored the code to use Galileo_Utc_Model's GST_to_UTC_time function.
Last two reverts are because I wrongly made the class static plus other brilliant ideas that turned out to be garbage.
In osnma_msg_receiver, the time synchronization between OSNMA subframes and local time has been updated. To facilitate this, the Galileo_Utc_Model has been refactored to be used statically, instead of being passed through the osnma_msg_receiver constructor. Additional changes include: adjusting variable declarations, adding an initialization method, altering the function GST_to_UTC_time to be static, and removing an unused instantiation of the model in osnma_msg_receiver.
* In osnma_msg_receiver: d_old_navdata_buffer to store last 10 NavData.
* In osnma_msg_receiver::process_mack_message: pass needed data to the newly created structure osnma_data::NavData, generate needed vectors for tag verification.
* In osnma_data.h/cc: Create NavData structure, Create osnma_data.cc source file, add to CMakeLists source file.