Skip to content

Commit 0d78cb2

Browse files
committed
feat(croatian-eid): add ElectronicID.allowsUsingLettersInPin()
WE2-376 Signed-off-by: Mart Somermaa <[email protected]>
1 parent 87dc285 commit 0d78cb2

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

include/electronic-id/electronic-id.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class ElectronicID
7878
const HashAlgorithm hashAlgo) const = 0;
7979

8080
// General functions.
81+
virtual bool allowsUsingLettersInPin() const { return false; }
8182
virtual std::string name() const = 0;
8283
virtual Type type() const = 0;
8384

src/electronic-ids/pkcs11/Pkcs11ElectronicID.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ std::string wstringToString(std::wstring s)
5555
int len =
5656
WideCharToMultiByte(CP_UTF8, 0, s.data(), int(s.size()), nullptr, 0, nullptr, nullptr);
5757
std::string out(size_t(len), 0);
58-
WideCharToMultiByte(CP_UTF8, 0, s.data(), int(s.size()), &out[0], len, nullptr, nullptr);
58+
WideCharToMultiByte(CP_UTF8, 0, s.data(), int(s.size()), out.data(), len, nullptr, nullptr);
5959
return out;
6060
}
6161
#endif
@@ -103,6 +103,7 @@ const std::map<electronic_id::Pkcs11ElectronicIDType, electronic_id::Pkcs11Elect
103103
electronic_id::JsonWebSignatureAlgorithm::ES384, // authSignatureAlgorithm
104104
electronic_id::ELLIPTIC_CURVE_SIGNATURE_ALGOS(), // supportedSigningAlgorithms
105105
3,
106+
false,
106107
}},
107108
{electronic_id::Pkcs11ElectronicIDType::LitEIDv2,
108109
{
@@ -113,6 +114,7 @@ const std::map<electronic_id::Pkcs11ElectronicIDType, electronic_id::Pkcs11Elect
113114
electronic_id::JsonWebSignatureAlgorithm::RS256, // authSignatureAlgorithm
114115
electronic_id::RSA_SIGNATURE_ALGOS(), // supportedSigningAlgorithms
115116
-1,
117+
false,
116118
}},
117119
{electronic_id::Pkcs11ElectronicIDType::LitEIDv3,
118120
{
@@ -123,15 +125,19 @@ const std::map<electronic_id::Pkcs11ElectronicIDType, electronic_id::Pkcs11Elect
123125
electronic_id::JsonWebSignatureAlgorithm::RS256, // authSignatureAlgorithm
124126
electronic_id::RSA_SIGNATURE_ALGOS(), // supportedSigningAlgorithms
125127
-1,
128+
false,
126129
}},
127130
{electronic_id::Pkcs11ElectronicIDType::HrvEID,
128-
{"Croatian eID (PKCS#11)"s, // name
129-
electronic_id::ElectronicID::Type::HrvEID, // type
130-
croatianPkcs11ModulePath(), // path
131+
{
132+
"Croatian eID (PKCS#11)"s, // name
133+
electronic_id::ElectronicID::Type::HrvEID, // type
134+
croatianPkcs11ModulePath(), // path
131135

132-
electronic_id::JsonWebSignatureAlgorithm::RS256, // authSignatureAlgorithm
133-
electronic_id::RSA_SIGNATURE_ALGOS(), // supportedSigningAlgorithms
134-
3}},
136+
electronic_id::JsonWebSignatureAlgorithm::RS256, // authSignatureAlgorithm
137+
electronic_id::RSA_SIGNATURE_ALGOS(), // supportedSigningAlgorithms
138+
3,
139+
true,
140+
}},
135141
};
136142

137143
const electronic_id::Pkcs11ElectronicIDModule&

src/electronic-ids/pkcs11/Pkcs11ElectronicID.hpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,14 @@ enum class Pkcs11ElectronicIDType {
3838

3939
struct Pkcs11ElectronicIDModule
4040
{
41-
std::string name;
42-
ElectronicID::Type type;
43-
std::string path;
44-
45-
JsonWebSignatureAlgorithm authSignatureAlgorithm;
46-
std::set<SignatureAlgorithm> supportedSigningAlgorithms;
47-
int8_t retryMax;
41+
const std::string name;
42+
const ElectronicID::Type type;
43+
const std::string path;
44+
45+
const JsonWebSignatureAlgorithm authSignatureAlgorithm;
46+
const std::set<SignatureAlgorithm> supportedSigningAlgorithms;
47+
const int8_t retryMax;
48+
const bool allowsUsingLettersInPin;
4849
};
4950

5051
class Pkcs11ElectronicID : public ElectronicID
@@ -53,6 +54,8 @@ class Pkcs11ElectronicID : public ElectronicID
5354
Pkcs11ElectronicID(pcsc_cpp::SmartCard::ptr card, Pkcs11ElectronicIDType type);
5455

5556
private:
57+
bool allowsUsingLettersInPin() const override { return module.allowsUsingLettersInPin; }
58+
5659
pcsc_cpp::byte_vector getCertificate(const CertificateType type) const override;
5760

5861
JsonWebSignatureAlgorithm authSignatureAlgorithm() const override

0 commit comments

Comments
 (0)