LibLogicalAccess  2.5.0
An Open Source RFID Library
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | List of all members
logicalaccess::iks::RemoteCryptoIKSProvider Class Reference

#include <IKSRPCClient.hpp>

Inheritance diagram for logicalaccess::iks::RemoteCryptoIKSProvider:
logicalaccess::RemoteCrypto

Public Member Functions

 RemoteCryptoIKSProvider (IslogKeyServer::IKSConfig config)
 
bool verify_signature (const SignatureResult &sr, const std::string &pubkey_pem) override
 
ByteVector aes_encrypt (const ByteVector &in, const std::string &key_name, const ByteVector &iv) override
 
ByteVector aes_decrypt (const ByteVector &in, const std::string &key_name, const ByteVector &iv, SignatureResult *out_signature) override
 
void iso_authenticate_step1 (const std::string &key_identity, const ByteVector &random_picc, const MyDivInfo &div_info, bool &out_success, ByteVector &out_random2, ByteVector &out_encrypted_cryptogram, ByteVector &out_auth_context_id) override
 
void iso_authenticate_step2 (const std::string &key_identity, const ByteVector &picc_cryptogram, const ByteVector &auth_context_id, const MyDivInfo &div_info, bool &out_success, ByteVector &out_session_key, ByteVector &out_session_key_ref) override
 
void aes_authenticate_step1 (const std::string &key_identity, const ByteVector &encrypted_random_picc, const MyDivInfo &div_info, bool &out_success, ByteVector &out_encrypted_cryptogram, ByteVector &out_auth_context_id) override
 
void aes_authenticate_step2 (const std::string &key_identity, const ByteVector &picc_cryptogram, const ByteVector &auth_context_id, const MyDivInfo &div_info, bool &out_success, ByteVector &out_session_key, ByteVector &out_session_key_ref) override
 
void change_key (const std::string &old_key_identity, const std::string &new_key_identity, bool change_same_key, const std::string &session_key_uuid, const ByteVector &session_key, const MyDivInfo &old_key_div, const MyDivInfo &new_key_div, uint8_t key_no, const ByteVector &iv, ByteVector &out_cryptogram) override
 
virtual bool verify_signature (const SignatureResult &sr, const std::string &pubkey_pem)=0
 
virtual ByteVector aes_encrypt (const ByteVector &in, const std::string &key_name, const ByteVector &iv)=0
 
virtual ByteVector aes_decrypt (const ByteVector &in, const std::string &key_name, const ByteVector &iv, SignatureResult *out_signature=nullptr)=0
 
virtual void iso_authenticate_step1 (const std::string &key_identity, const ByteVector &random_picc, const MyDivInfo &div_info, bool &out_success, ByteVector &out_random2, ByteVector &out_encrypted_cryptogram, ByteVector &out_auth_context_id)=0
 
virtual void iso_authenticate_step2 (const std::string &key_identity, const ByteVector &picc_cryptogram, const ByteVector &auth_context_id, const MyDivInfo &div_info, bool &out_success, ByteVector &out_session_key, ByteVector &out_session_key_ref)=0
 
virtual void aes_authenticate_step1 (const std::string &key_identity, const ByteVector &encrypted_random_picc, const MyDivInfo &div_info, bool &out_success, ByteVector &out_encrypted_cryptogram, ByteVector &out_auth_context_id)=0
 
virtual void aes_authenticate_step2 (const std::string &key_identity, const ByteVector &picc_cryptogram, const ByteVector &auth_context_id, const MyDivInfo &div_info, bool &out_success, ByteVector &out_session_key, ByteVector &out_session_key_ref)=0
 
virtual void change_key (const std::string &old_key_identity, const std::string &new_key_identity, bool change_same_key, const std::string &session_key_uuid, const ByteVector &session_key, const MyDivInfo &old_key_div, const MyDivInfo &new_key_div, uint8_t key_no, const ByteVector &iv, ByteVector &out_cryptogram)=0
 

Private Member Functions

KeyDiversificationInfo convert_div_info (const MyDivInfo &)
 

Private Attributes

IKSRPCClient iks_rpc_client_
 

Detailed Description

Implement the "RemoteCrypto" API by delegating to IKS.

Constructor & Destructor Documentation

◆ RemoteCryptoIKSProvider()

logicalaccess::iks::RemoteCryptoIKSProvider::RemoteCryptoIKSProvider ( IslogKeyServer::IKSConfig  config)
explicit

Member Function Documentation

◆ aes_authenticate_step1()

void logicalaccess::iks::RemoteCryptoIKSProvider::aes_authenticate_step1 ( const std::string &  key_identity,
const ByteVector encrypted_random_picc,
const MyDivInfo div_info,
bool &  out_success,
ByteVector out_encrypted_cryptogram,
ByteVector out_auth_context_id 
)
overridevirtual

◆ aes_authenticate_step2()

void logicalaccess::iks::RemoteCryptoIKSProvider::aes_authenticate_step2 ( const std::string &  key_identity,
const ByteVector picc_cryptogram,
const ByteVector auth_context_id,
const MyDivInfo div_info,
bool &  out_success,
ByteVector out_session_key,
ByteVector out_session_key_ref 
)
overridevirtual

◆ aes_decrypt()

ByteVector logicalaccess::iks::RemoteCryptoIKSProvider::aes_decrypt ( const ByteVector in,
const std::string &  key_name,
const ByteVector iv,
SignatureResult out_signature 
)
overridevirtual

◆ aes_encrypt()

ByteVector logicalaccess::iks::RemoteCryptoIKSProvider::aes_encrypt ( const ByteVector in,
const std::string &  key_name,
const ByteVector iv 
)
overridevirtual

◆ change_key()

void logicalaccess::iks::RemoteCryptoIKSProvider::change_key ( const std::string &  old_key_identity,
const std::string &  new_key_identity,
bool  change_same_key,
const std::string &  session_key_uuid,
const ByteVector session_key,
const MyDivInfo old_key_div,
const MyDivInfo new_key_div,
uint8_t  key_no,
const ByteVector iv,
ByteVector out_cryptogram 
)
overridevirtual

Either session_key_uuid or session_key.

Implements logicalaccess::RemoteCrypto.

◆ convert_div_info()

KeyDiversificationInfo logicalaccess::iks::RemoteCryptoIKSProvider::convert_div_info ( const MyDivInfo in)
private

Convert a LLA DivInfo object into a protobuf message.

◆ iso_authenticate_step1()

void logicalaccess::iks::RemoteCryptoIKSProvider::iso_authenticate_step1 ( const std::string &  key_identity,
const ByteVector random_picc,
const MyDivInfo div_info,
bool &  out_success,
ByteVector out_random2,
ByteVector out_encrypted_cryptogram,
ByteVector out_auth_context_id 
)
overridevirtual

◆ iso_authenticate_step2()

void logicalaccess::iks::RemoteCryptoIKSProvider::iso_authenticate_step2 ( const std::string &  key_identity,
const ByteVector picc_cryptogram,
const ByteVector auth_context_id,
const MyDivInfo div_info,
bool &  out_success,
ByteVector out_session_key,
ByteVector out_session_key_ref 
)
overridevirtual

◆ verify_signature()

bool logicalaccess::iks::RemoteCryptoIKSProvider::verify_signature ( const SignatureResult sr,
const std::string &  pubkey_pem 
)
overridevirtual

This verify a signature provided by IKS.

This is not really a remote call, but in order to perform verification we must built and serialize a protobuf message.

Therefore this function only reason to exists is to avoid link-time dependencies.

Implements logicalaccess::RemoteCrypto.

Member Data Documentation

◆ iks_rpc_client_

IKSRPCClient logicalaccess::iks::RemoteCryptoIKSProvider::iks_rpc_client_
private

The documentation for this class was generated from the following files: