LibLogicalAccess  2.5.0
An Open Source RFID Library
Loading...
Searching...
No Matches
utils.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <chrono>
4#include <logicalaccess/plugins/cards/epass/lla_cards_epass_api.hpp>
6#include <string>
7#include <vector>
8
9namespace logicalaccess
10{
11
16struct LLA_CARDS_EPASS_API EPassEFCOM
17{
18 std::string lds_version_;
19 std::string unicode_version_;
20
22};
23
24struct LLA_CARDS_EPASS_API EPassDG2
25{
26 struct BioInfo
27 {
34
41
42 // 14 bytes
44
45 // Data except the image content
47
48 // Write that to file, get an image
50
51 // For unknown format we simply binary copy the bio data.
53 };
54
55 std::vector<BioInfo> infos_;
56};
57
58struct LLA_CARDS_EPASS_API EPassDG1
59{
60 std::string type_;
61 std::string emitter_;
62 std::string owner_name_;
63 std::string doc_no_;
64 std::string checksum_doc_no_;
65 std::string nationality_;
66 std::chrono::system_clock::time_point birthdate_;
68 std::string gender_;
69 std::chrono::system_clock::time_point expiration_;
71 std::string optional_data_;
73 std::string checksum_;
74};
75
76
83class LLA_CARDS_EPASS_API EPassUtils
84{
85 public:
91 static uint8_t compute_mrz_checksum(const std::string &in);
92
96 static ByteVector seed_from_mrz(const std::string &mrz);
97
102 static EPassEFCOM parse_ef_com(const ByteVector &raw);
103
107 static EPassDG2 parse_dg2(const ByteVector &raw);
108
109 static EPassDG2::BioInfo parse_dg2_entry(ByteVector::const_iterator &itr,
110 const ByteVector::const_iterator &end);
111
112 static void parse_dg2_entry_header(EPassDG2::BioInfo &info,
113 ByteVector::const_iterator &itr,
114 const ByteVector::const_iterator &end);
115
119 static EPassDG1 parse_dg1(const ByteVector &raw);
120
127 static std::chrono::system_clock::time_point parse_dg1_date(const ByteVector &in,
128 int millenium_limit);
129};
130}
Definition: utils.hpp:84
std::vector< uint8_t > ByteVector
Definition: lla_fwd.hpp:80
Definition: asn1.hpp:9
Definition: utils.hpp:59
std::string emitter_
Definition: utils.hpp:61
std::string checksum_birthdate_
Definition: utils.hpp:67
std::chrono::system_clock::time_point expiration_
Definition: utils.hpp:69
std::string type_
Definition: utils.hpp:60
std::string checksum_optional_data_
Definition: utils.hpp:72
std::string checksum_doc_no_
Definition: utils.hpp:64
std::string checksum_expiration_
Definition: utils.hpp:70
std::chrono::system_clock::time_point birthdate_
Definition: utils.hpp:66
std::string doc_no_
Definition: utils.hpp:63
std::string optional_data_
Definition: utils.hpp:71
std::string nationality_
Definition: utils.hpp:65
std::string gender_
Definition: utils.hpp:68
std::string checksum_
Definition: utils.hpp:73
std::string owner_name_
Definition: utils.hpp:62
Definition: utils.hpp:27
ByteVector format_owner_
Definition: utils.hpp:39
ByteVector element_subtype_
Definition: utils.hpp:30
ByteVector created_at_
Definition: utils.hpp:31
ByteVector facial_record_data_
Definition: utils.hpp:46
ByteVector format_type_
Definition: utils.hpp:40
ByteVector valid_
Definition: utils.hpp:32
ByteVector creator_
Definition: utils.hpp:33
ByteVector element_type_
Definition: utils.hpp:29
ByteVector facial_record_header_
Definition: utils.hpp:43
ByteVector image_data_
Definition: utils.hpp:49
ByteVector header_
Definition: utils.hpp:28
ByteVector raw_bio_data_
Definition: utils.hpp:52
Definition: utils.hpp:25
std::vector< BioInfo > infos_
Definition: utils.hpp:55
Definition: utils.hpp:17
std::string unicode_version_
Definition: utils.hpp:19
std::string lds_version_
Definition: utils.hpp:18
ByteVector tags_
Definition: utils.hpp:21