Enrollment 28.2.0
Loading...
Searching...
No Matches
ISONCTemplateAdapter.h
Go to the documentation of this file.
1
9
10#pragma once
11
21
22namespace inno
23{
30 {
31 public:
37 */
38 [[nodiscard]] ISONCTemplate Adapt(const ANSITemplate& tmpl) const
39 {
40 return ConvertFrom(PrintExecutor::INNO_ANSI_TEMPLATE, tmpl.data);
41 }
47 */
48 [[nodiscard]] ISONCTemplate Adapt(const ILOSIDTemplate& tmpl) const
49 {
50 return ConvertFrom(PrintExecutor::INNO_ILO_SID_TEMPLATE, tmpl.GetData());
51 }
57 */
58 [[nodiscard]] ISONCTemplate Adapt(const ISOCCTemplate& tmpl) const
59 {
60 return ConvertFrom(PrintExecutor::INNO_ISO_CC_TEMPLATE, tmpl.GetData());
61 }
67 */
68 [[nodiscard]] ISONCTemplate Adapt(const ISOTemplate& tmpl) const
69 {
70 return ConvertFrom(PrintExecutor::INNO_ISO_TEMPLATE, tmpl.data);
71 }
77 */
78 [[nodiscard]] ISONCTemplate Adapt(const ICSTemplate& tmpl) const
79 {
80 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.icsTemplateData);
81 }
87 */
88 [[nodiscard]] ISONCTemplate Adapt(const ExtractedPrint& tmpl) const
89 {
90 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.icsTemplateData);
91 }
97 */
98 [[nodiscard]] ISONCTemplate Adapt(const PrintTemplate& tmpl) const
99 {
100 return ConvertFrom(PrintExecutor::INNO_TT_UNKNOWN_TYPE, tmpl.GetICSRepresentation()->icsTemplateData);
101 }
102
106 */
108 : exec(GlobalPrintExecutor::Get())
109 {
110 }
115 */
116 explicit ISONCTemplateAdapter(std::shared_ptr<PrintExecutor> executor)
117 : exec(std::move(executor))
118 {
119 if (exec == nullptr)
120 {
121 throw NullArgumentException("Print executor cannot be null in ISONCTemplateAdapter");
122 }
123 }
124
125 private:
126 std::shared_ptr<PrintExecutor> exec;
127
128 [[nodiscard]] ISONCTemplate ConvertFrom(uint8_t templateType, const std::vector<uint8_t>& input) const
129 {
130 std::vector<uint8_t> data;
131 auto tmplAllocator = +[](void* container, size_t length) -> uint8_t*
132 {
133 // It is "safe" cast because we forward pointer to vector created in "user cpp space"
134 // (the space where this header is compiled) and the "own cpp space" (out compiled shared library)
135 // wil provide it back for us to the same "user cpp space". We have all spaces under control.
136 // It is used to do not have unecessary copy data from "own cpp space" into "user cpp space".
137 std::vector<uint8_t>& vec = *static_cast<std::vector<uint8_t>*>(container);
138 vec.resize(length);
139 return vec.data();
140 };
141 exec->ConvertTemplates(templateType,
142 input.data(),
143 input.size(),
144 PrintExecutor::INNO_ISO_NC_TEMPLATE,
145 tmplAllocator,
146 &data,
147 ThrowOnError{});
148
149 return ISONCTemplate(std::move(data));
150 }
151 };
152} // 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
ISONCTemplate Adapt(const ISOTemplate &tmpl) const
Adapts ISOTemplate to ISONCTemplate.
Definition ISONCTemplateAdapter.h:67
ISONCTemplate Adapt(const ISOCCTemplate &tmpl) const
Adapts ISOCCTemplate to ISONCTemplate.
Definition ISONCTemplateAdapter.h:57
ISONCTemplateAdapter(std::shared_ptr< PrintExecutor > executor)
Creates ISONCTemplateAdapter object.
Definition ISONCTemplateAdapter.h:115
ISONCTemplate Adapt(const ANSITemplate &tmpl) const
Adapts ANSITemplate to ISONCTemplate.
Definition ISONCTemplateAdapter.h:37
ISONCTemplateAdapter()
Creates ISONCTemplateAdapter object with GlobalPrintExecutor used to execute template functionality.
Definition ISONCTemplateAdapter.h:106
ISONCTemplate Adapt(const ICSTemplate &tmpl) const
Adapts ICSTemplate to ISONCTemplate.
Definition ISONCTemplateAdapter.h:77
ISONCTemplate Adapt(const PrintTemplate &tmpl) const
Adapts PrintTemplate to ISONCTemplate.
Definition ISONCTemplateAdapter.h:97
ISONCTemplate Adapt(const ILOSIDTemplate &tmpl) const
Adapts ILOSIDTemplate to ISONCTemplate.
Definition ISONCTemplateAdapter.h:47
ISONCTemplate Adapt(const ExtractedPrint &tmpl) const
Adapts ExtractedPrint to ISONCTemplate.
Definition ISONCTemplateAdapter.h:87
ISO/IEC 19794-2:2005 template, template version 2.0, 5-byte format for minutiae (normal card encoding...
Definition ISONCTemplate.h:22
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