80 lines
2.6 KiB
C++
80 lines
2.6 KiB
C++
// ---------------------------------------------------------------------------
|
|
// Name: actISCardOSBehavior.h
|
|
// Product: cv act library
|
|
// Purpose: ISCardOSBehavior interface, encapsulates CardOS specific logic
|
|
// for security operations.
|
|
//
|
|
// Copyright: (c) 2002-2008 cv cryptovision GmbH all rights reserved
|
|
// Licence: The conditions for the use of this software are regulated
|
|
// in the cv act library licence agreement.
|
|
//
|
|
// Autor: Markus Tesche
|
|
// Date: 06/03/2008
|
|
// ---------------------------------------------------------------------------
|
|
|
|
#ifndef ACT_ISCardOSBehavior_h
|
|
#define ACT_ISCardOSBehavior_h
|
|
|
|
#include "actIRefCounted.h"
|
|
|
|
namespace act
|
|
{
|
|
class Blob;
|
|
class IEMSAAlg;
|
|
class ISCardOS;
|
|
class ITokenPIN;
|
|
|
|
enum OSBehavior
|
|
{
|
|
NONE_BEHAVIOR = 0x00000000,
|
|
|
|
// algorithm behaviors
|
|
SIGN_BEHAVIOR = 0x00000001,
|
|
VERIFY_BEHAVIOR = 0x00000002,
|
|
DECRYPT_BEHAVIOR = 0x00000004,
|
|
ENCRYPT_BEHAVIOR = 0x00000008,
|
|
AGREEMENT_BEHAVIOR = 0x00000010,
|
|
ALGORITHM_BEHAVIOR_MASK = 0x000000FF,
|
|
|
|
// key behaviors
|
|
GENERATE_KEY_BEHAVIOR = 0x00000100,
|
|
IMPORT_KEY_BEHAVIOR = 0x00000200,
|
|
DELETE_PRIVKEY_BEHAVIOR = 0x00000400,
|
|
KEY_BEHAVIOR_MASK = 0x0000FF00,
|
|
|
|
// PIN behaviors
|
|
VERIFY_PIN_BEHAVIOR = 0x00010000,
|
|
CHANGE_PIN_BEHAVIOR = 0x00020000,
|
|
SET_PIN_BEHAVIOR = 0x00040000,
|
|
UNLOCK_PIN_BEHAVIOR = 0x00080000,
|
|
PIN_BEHAVIOR_MASK = 0x00FF0000
|
|
};
|
|
|
|
//
|
|
// ISCardOSBehavior
|
|
class ISCardOSBehavior : public IRefCounted
|
|
{
|
|
public:
|
|
virtual bool Supports(int behavior) const throw() = 0;
|
|
|
|
virtual Blob ComputeDigitalSignature(ISCardOS* os, const Blob& data, int mode) = 0;
|
|
virtual Blob ComputeDigitalSignature(ISCardOS* os, IEMSAAlg* emsa, int mode) = 0;
|
|
virtual Blob Encipher(ISCardOS* os, const Blob& plaintext) = 0;
|
|
virtual Blob Decipher(ISCardOS* os, const Blob& encrypted_data) = 0;
|
|
virtual Blob AgreeKey(ISCardOS* os, const Blob& pubkey) = 0;
|
|
|
|
virtual void GenerateRSAKeyPair(ISCardOS* os, byte key_num, size_t key_size) = 0;
|
|
virtual void ImportRSAKeyPair(ISCardOS* os, int key_id, const Blob& prime_p, const Blob& prime_q,
|
|
const Blob& priv_exp, Blob& pubkey) = 0;
|
|
virtual void DeletePrivateKeyObj(ISCardOS* os, unsigned short fid) = 0;
|
|
|
|
virtual void doVerifyPinCmd(const ITokenPIN* token_pin, const Blob& pin_value) = 0;
|
|
virtual void doChangePinCmd(const ITokenPIN* token_pin, const Blob& oldnew_value) = 0;
|
|
virtual void doSetPinValueCmd(const ITokenPIN* token_pin, const Blob& newpin_value) = 0;
|
|
virtual void UnlockPin(const ITokenPIN* token_pin, const Blob& new_pin) = 0;
|
|
};
|
|
|
|
} // namespace act
|
|
|
|
#endif // ACT_ISCardOSBehavior_h
|