#pragma once

#include <vector>

#include "cryptoki.h"
#include "byteBuffer.h"
#include "P15File.h"
#include "Slot.h"
#include "TokenInfo.h"
#include "TokenInfoT61.h"

class CCommunicator;

using namespace std;

class CP15TokenInfo:
	public CP15File
{
public:
	CP15TokenInfo(void);
	~CP15TokenInfo(void);
	
	// Método para codificar una cadena de bytes y convertirla a formato ASN1
	int EncodeASN1(void);

	// Método para limpiar el contenido del TokenInfo
	void Erase(void);

	// Estructura ASN1 con el contenido del DF del TokenInfo
	TokenInfo * m_asn1TokenInfo;

	// Función para rellenar el contenido del puntero a la estructura CK_TOKEN_INFO
	int LoadTokenInfo(CK_TOKEN_INFO_PTR pInfo);

	// Función para decodificar el TokenInfo
	int DecodeObject(byteBuffer & tokenInfoData);

};
