Enrollment 28.2.0
Loading...
Searching...
No Matches
ISOTemplateAdapter.h
Go to the documentation of this file.
1
9
10#pragma once
11
21
22namespace inno
23{
30 {
31 public:
32 /// ISO template version.
33 enum class Version : uint8_t
34 {
36 VERSION_2 = 0,
38 VERSION_3 = 1
39 };
40
46 */
47 [[nodiscard]] ISOTemplate Adapt(const ANSITemplate& tmpl) const
48 {
49 return ConvertFrom(PrintExecutor::INNO_ANSI_TEMPLATE, tmpl.data);
50 }
56 */
57 [[nodiscard]] ISOTemplate Adapt(const ILOSIDTemplate& tmpl) const
58 {
59 return ConvertFrom(PrintExecutor::INNO_ILO_SID_TEMPLATE, tmpl.GetData());
60 }
66 */
67 [[nodiscard]] ISOTemplate Adapt(const ISONCTemplate& tmpl) const
68 {
69 return ConvertFrom(PrintExecutor::INNO_ISO_NC_TEMPLATE, tmpl.GetData());
70 }
76 */
77 [[nodiscard]] ISOTemplate Adapt(const ISOCCTemplate& tmpl) const
78 {
79 return ConvertFrom(PrintExecutor::INNO_ISO_CC_TEMPLATE, tmpl.GetData());
80 }
87 */
88 [[nodiscard]] ISOTemplate Adapt(const ISOTemplate& tmpl) const
89 {
90 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.data);
91 }
97 */
98 [[nodiscard]] ISOTemplate Adapt(const ICSTemplate& tmpl) const
99 {
100 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.icsTemplateData);
101 }
107 */
108 [[nodiscard]] ISOTemplate Adapt(const ExtractedPrint& tmpl) const
109 {
110 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.icsTemplateData);
111 }
117 */
118 [[nodiscard]] ISOTemplate Adapt(const PrintTemplate& tmpl) const
119 {
120 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.GetICSRepresentation()->icsTemplateData);
121 }
122
127 */
128 explicit ISOTemplateAdapter(Version version)
129 : exec(GlobalPrintExecutor::Get())
130 , ver(version)
131 {
132 }
138 */
139 explicit ISOTemplateAdapter(Version version, std::shared_ptr<PrintExecutor> executor)
140 : exec(std::move(executor))
141 , ver(version)
142 {
143 if (exec == nullptr)
144 {
145 throw NullArgumentException("Print executor cannot be null in ISOTemplateAdapter");
146 }
147 }
148
149 private:
150 std::shared_ptr<PrintExecutor> exec;
151 Version ver;
152
153 [[nodiscard]] ISOTemplate ConvertFrom(uint8_t templateType, const std::vector<uint8_t>& input) const
154 {
155 std::vector<uint8_t> data;
156 auto tmplAllocator = +[](void* container, size_t length) -> uint8_t*
157 {
158 // It is "safe" cast because we forward pointer to vector created in "user cpp space"
159 // (the space where this header is compiled) and the "own cpp space" (out compiled shared library)
160 // wil provide it back for us to the same "user cpp space". We have all spaces under control.
161 // It is used to do not have unecessary copy data from "own cpp space" into "user cpp space".
162 std::vector<uint8_t>& vec = *static_cast<std::vector<uint8_t>*>(container);
163 vec.resize(length);
164 return vec.data();
165 };
166 exec->ConvertTemplates(templateType,
167 input.data(),
168 input.size(),
169 ver == Version::VERSION_2 ? PrintExecutor::INNO_ISO_TEMPLATE
170 : PrintExecutor::INNO_ISO_TEMPLATE_V30,
171 tmplAllocator,
172 &data,
173 ThrowOnError{});
174
175 return ISOTemplate(std::move(data));
176 }
177 };
178} // namespace inno
ANSI INCITS 378 print compliant template.
Definition ANSITemplate.h:28
const std::vector< uint8_t > data
Template data.
Definition ANSITemplate.h:31
Print template in ICS format used for biometric operations with Print that was extracted.
Definition ExtractedPrint.h:36
Holds instance of PrintExecutor.
Definition PrintExecutor.h:1300
Print template in ICS format used for biometric operations.
Definition ICSTemplate.h:41
const std::vector< uint8_t > icsTemplateData
template data
Definition ICSTemplate.h:44
International Labour Organisation Seafarers Identity Document template.
Definition ILOSIDTemplate.h:24
std::vector< uint8_t > GetData() const
Provides template data.
Definition ILOSIDTemplate.h:30
ISO/IEC 19794-2:2005 template, template version 2.0, 3-byte format for minutiae (compact card encodin...
Definition ISOCCTemplate.h:22
std::vector< uint8_t > GetData() const
Provides template data.
Definition ISOCCTemplate.h:28
ISO/IEC 19794-2:2005 template, template version 2.0, 5-byte format for minutiae (normal card encoding...
Definition ISONCTemplate.h:22
std::vector< uint8_t > GetData() const
Provides template data.
Definition ISONCTemplate.h:28
ISOTemplate Adapt(const ISOCCTemplate &tmpl) const
Adapts ISOCCTemplate to ISOTemplate.
Definition ISOTemplateAdapter.h:76
ISOTemplate Adapt(const PrintTemplate &tmpl) const
Adapts PrintTemplate to ISOTemplate.
Definition ISOTemplateAdapter.h:117
ISOTemplate Adapt(const ICSTemplate &tmpl) const
Adapts ICSTemplate to ISOTemplate.
Definition ISOTemplateAdapter.h:97
ISOTemplate Adapt(const ILOSIDTemplate &tmpl) const
Adapts ILOSIDTemplate to ISOTemplate.
Definition ISOTemplateAdapter.h:56
ISOTemplate Adapt(const ANSITemplate &tmpl) const
Adapts ANSITemplate to ISOTemplate.
Definition ISOTemplateAdapter.h:46
ISOTemplate Adapt(const ISOTemplate &tmpl) const
Adapts ISOTemplate to ISOTemplate.
Definition ISOTemplateAdapter.h:87
ISOTemplate Adapt(const ISONCTemplate &tmpl) const
Adapts ISONCTemplate to ISOTemplate.
Definition ISOTemplateAdapter.h:66
ISOTemplateAdapter(Version version)
Creates ISOTemplateAdapter object with GlobalPrintExecutor used to execute template functionality.
Definition ISOTemplateAdapter.h:127
ISOTemplateAdapter(Version version, std::shared_ptr< PrintExecutor > executor)
Creates ISOTemplateAdapter object.
Definition ISOTemplateAdapter.h:138
ISOTemplate Adapt(const ExtractedPrint &tmpl) const
Adapts ExtractedPrint to ISOTemplate.
Definition ISOTemplateAdapter.h:107
Version
ISO template version.
Definition ISOTemplateAdapter.h:33
@ VERSION_2
ISO/IEC 19794-2:2005 template, template version 2.0, 6-byte format for minutiae.
Definition ISOTemplateAdapter.h:35
@ VERSION_3
ISO/IEC 19794-2:2011 template, template version 3.0, 6-byte format for minutiae.
Definition ISOTemplateAdapter.h:37
ISO/IEC 19794-2 print compliant template.
Definition ISOTemplate.h:28
const std::vector< uint8_t > data
Template data.
Definition ISOTemplate.h:31
Null argument is not allowed.
Definition EnrollmentException.h:156
Holds various biometric representation types for print.
Definition PrintTemplate.h:26
std::shared_ptr< ICSTemplate > GetICSRepresentation() const
Provides ICS (Innovatrics proprietary extracted template) representation of print.
Definition PrintTemplate.h:72