}));
}
-GStore &Decider::getStore(const Policy &policyPrv, DataType prv, DataType pub)
+GStore &Decider::getStore(const Policy &policyPrv)
{
- return getStore(chooseBackend(policyPrv, [&]{
- return
- // extractable private key can only be handled by OpenSSL
- policyPrv.extractable ||
- // ECDSA algorithm is unsupported by GP API 1.0
- prv.isEllipticCurve() || pub.isEllipticCurve();
- }));
+ // extractable private key can only be handled by OpenSSL
+ return getStore(chooseBackend(policyPrv, [&]{ return policyPrv.extractable; }));
}
} // namespace Crypto
Decider();
GStore &getStore(const Token &token);
GStore &getStore(DataType data, const Policy &policy, bool encrypted = false);
- GStore &getStore(const Policy &policyPrv, DataType prv, DataType pub);
+ GStore &getStore(const Policy &policyPrv);
private:
GStore &getStore(CryptoBackend id);
return true;
}
-// keypair data type, having private key data type and public key data type
-// private is assumed to be .first, public .second
-using DataTypePair = std::pair<CKM::DataType, CKM::DataType>;
-
-const std::map<CKM::AlgoType, DataTypePair> ALGO_TYPE_TO_DATA_TYPE_PAIR_MAP = {
- { CKM::AlgoType::RSA_GEN, { CKM::DataType(CKM::KeyType::KEY_RSA_PRIVATE), CKM::DataType(CKM::KeyType::KEY_RSA_PUBLIC) } },
- { CKM::AlgoType::DSA_GEN, { CKM::DataType(CKM::KeyType::KEY_DSA_PRIVATE), CKM::DataType(CKM::KeyType::KEY_DSA_PUBLIC) } },
- { CKM::AlgoType::ECDSA_GEN, { CKM::DataType(CKM::KeyType::KEY_ECDSA_PRIVATE), CKM::DataType(CKM::KeyType::KEY_ECDSA_PUBLIC) } },
-};
-
} // anonymous namespace
namespace CKM {
if (retCodePub != CKM_API_SUCCESS)
return retCodePub;
- AlgoType keyType = AlgoType::RSA_GEN;
-
- if (!keyGenParams.getParam(ParamName::ALGO_TYPE, keyType))
- ThrowErr(Exc::InputParam, "Error, parameter ALGO_TYPE not found.");
-
- const auto dtIt = ALGO_TYPE_TO_DATA_TYPE_PAIR_MAP.find(keyType);
- if (dtIt == ALGO_TYPE_TO_DATA_TYPE_PAIR_MAP.end())
- ThrowErr(Exc::InputParam, "Error, parameter ALGO_TYPE with wrong value.");
- const DataTypePair& dt = dtIt->second;
-
if (policyPrv.backend != policyPub.backend)
ThrowErr(Exc::InputParam, "Error, key pair must be supported with the same backend.");
bool exportable = policyPrv.extractable || policyPub.extractable;
Policy lessRestricted(Password(), exportable, policyPrv.backend);
- TokenPair keys = m_decider.getStore(policyPrv, dt.first, dt.second).generateAKey(
+ TokenPair keys = m_decider.getStore(policyPrv).generateAKey(
keyGenParams,
policyPrv.password,
policyPub.password,