Exemple #1
0
static int et199_encrypt_init(void *encrypt)
{
	int dwCount = 0;
	int dwRet = 0;
	ENCRYPT *encrypt_ins = encrypt;
	struct ET_CONTEXT *pContext = (struct ET_CONTEXT *)encrypt_ins->private_data;

	dwRet = ETEnum(0, &dwCount);
	if(dwRet != ET_E_INSUFFICIENT_BUFFER && dwRet)
	{
		PostError("ETEnum 1", dwRet);
		return PROBE_ERR;
	}

	if(dwCount > PCONTEXT_COUNT)
	{
		return MORE_DEV;
	}

	memset(pContext, 0, sizeof(struct ET_CONTEXT)*dwCount);

	dwRet = ETEnum(pContext, &dwCount);
	if(dwRet)
	{
		PostError("ETEnum 2", dwRet);
		return PROBE_ERR;
	}

	//Open ET199
	dwRet = ETOpen(&pContext[0]);
	if(dwRet)
	{
		PostError("ETOpen", dwRet);
		return OPENDEV_ERR;
	}

	dwRet = et199_encrypt_verfiy_serial_num(encrypt_ins);
	if(dwRet != 0)
	{
		return dwRet;
	}

	return SUCCESS;
}
Exemple #2
0
/**
 * Enumerate connected ET199 devices.  -> @ref: ETEnum
 * Args: No.
 * Return: A list of ETContext objects. NONE if no ET199 was connected or failed.
 */
static PyObject *pyETEnum(PyObject *self){
  /** Get connected keys*/
  DWORD keyCount=0,dwRet=0;
  int i=0;
  ET_CONTEXT *pETContextList = NULL;
  PyObject *result = PyList_New(0);
  Py_XINCREF(result);
  dwRet = ETEnum(NULL,&keyCount);
  if(ET_E_INSUFFICIENT_BUFFER!=dwRet && !dwRet){
    DWRET_VALIDATE(dwRet,NULL);
  }
  if(keyCount==0){
    return result;
  }
  pETContextList = malloc(sizeof(ET_CONTEXT)*keyCount);
  memset(pETContextList,0,sizeof(ET_CONTEXT)*keyCount);
  dwRet=ETEnum(pETContextList,&keyCount);
  if(0!=dwRet){
    free(pETContextList);
    DWRET_VALIDATE(dwRet,NULL);
  }
  for(i=0;i<keyCount;i++){
    ETContextObject *etcontext = (ETContextObject*)ETContext_new();
    ET_CONTEXT *pETC = &pETContextList[i];
    /*
    DWORD dwOut=0;
    
    dwRet = ETOpen(pETC);
    dwRet = ETControl(pETC,ET_GET_SERIAL_NUMBER, NULL, 0, pETC->bID, 8, &dwOut);
    dwRet = ETControl(pETC,ET_GET_DEVICE_ATR,NULL,0,pETC->bAtr,16,&pETC->dwAtrLen);
    dwRet = ETControl(pETC,ET_GET_CUSTOMER_NAME,NULL,0,&pETC->dwCustomer,4,&dwOut);
    */
    memcpy(&etcontext->context,pETC,sizeof(ET_CONTEXT));
    PyList_Append(result, etcontext);
    /*
    dwRet = ETClose(pETC);
    */
  }
  //Py_XDECREF(pETContextList);
  free(pETContextList);
  return result;
}