예제 #1
0
int EstEID_getSlotId(char* certId, CK_SLOT_ID* slotId) {
	int certIndex;
	EstEID_Certs *certs = EstEID_loadCerts();
	EstEID_log("certs loaded");
	if (!certs) {
		EstEID_log("%s", EstEID_error);
		return FALSE;
	}
	else if ((certIndex = EstEID_findNonRepuditionCert(certs, certId)) == NOT_FOUND) {
		EstEID_log("card is changed");
		return FALSE;
	}
	*slotId = certs->slotIDs[certIndex];
	return TRUE;
}
예제 #2
0
int main(int argc, const char **argv) {

	EstEID_Certs *certs = EstEID_loadCerts(NULL);
	if (certs != NULL) {
		EstEID_printCerts(certs);
		while(1) {
			printf("tokensChanged: %i\n", EstEID_tokensChanged());
			getchar();
		}
		//EstEID_waitForSlotEvent();
		if (argc == 2) sign(argv[1], certs);
		EstEID_freeCerts(certs);
	}
	else {
		printf("error: %s (error code: %i)\n", EstEID_error, EstEID_errorCode);
	}
}
예제 #3
0
BOOL CEstEidPin2Dlg::OnInitDialog() {
	LOG_LOCATION;
	CDialog::OnInitDialog();
	WCHAR label[512];

	int certIndex;
	EstEID_Certs *certs = EstEID_loadCerts();
	if (!certs) {
		EstEID_log("no certs found");
	}
	else if ((certIndex = EstEID_findNonRepuditionCert(certs, ATL::CW2A(this->certId))) == NOT_FOUND) {
		EstEID_log("card is changed");
	}
	EstEID_Map cert = certs->certs[certIndex];

	char* name = EstEID_getFullNameWithPersonalCode(cert);
	MultiByteToWideChar(CP_UTF8, 0, name, -1, label, sizeof(label) / sizeof(WCHAR));

	this->SetWindowText(label);

	SetDlgItemText(IDC_NAME, label);

	this->pin2MinLen = (unsigned)atoi(EstEID_mapGet(cert, "minPinLen"));

	free(name);

	MultiByteToWideChar(CP_UTF8, 0, l10n("For signing enter PIN2:"), -1, label, sizeof(label) / sizeof(WCHAR));
	SetDlgItemText(IDC_PIN2_LABEL, label);

	MultiByteToWideChar(CP_UTF8, 0, l10n("Sign"), -1, label, sizeof(label) / sizeof(WCHAR));
	SetDlgItemText(IDOK, label);

	MultiByteToWideChar(CP_UTF8, 0, l10n("Cancel"), -1, label, sizeof(label) / sizeof(WCHAR));
	SetDlgItemText(IDCANCEL, label);
	SetDlgItemText(IDC_ERROR, L"");

	EndDialogIfPIN2Blocked(SetUpPin2Dialog());
	return TRUE;
}
예제 #4
0
void buildCertificatesList(HWND hwnd) {
	RECT rect;
	HWND certificatesList;
	LV_COLUMN lvC;
	
	certificatesList = GetDlgItem(hwnd, IDC_CERTIFICATESLIST);
	ListView_SetUnicodeFormat(certificatesList, true);
	GetClientRect(certificatesList, &rect);
	int rectWidth = rect.right - rect.left; 
	int colSize = rectWidth/6;
	int colWidths[] = {3 * colSize, 2 * colSize, colSize + (rectWidth - (6*colSize)), 0};
	int colTitles[] = {IDS_CERTIFICATEHEADER, IDS_TYPEHEADER, IDS_VALIDUNTILHEADER, IDS_EMPTY};
	
	ListView_SetExtendedListViewStyle(certificatesList, LVS_EX_FULLROWSELECT);
	lvC.mask = LVCF_WIDTH | LVCF_TEXT;
    lvC.fmt = LVCFMT_LEFT;
	
	TCHAR header[32];
	for(int index = 0; index < 4; index++) {
		lvC.iSubItem = index;
		lvC.cx = colWidths[index];
		
		LoadString(pluginInstance, colTitles[index], header, sizeof(header)/sizeof(TCHAR));
		lvC.pszText = header;//colTitles[index];
		ListView_InsertColumn(certificatesList, index, &lvC);
    }

	LV_ITEM lv;
	lv.mask = LVIF_TEXT;
	
	EstEID_Certs *certs = EstEID_loadCerts();
	EstEID_log("reading certs @ %p, certs->count = %u ", certs, certs->count);

	TCHAR unicodeBuf[512];
	int currentCertIndex = 0;	
	for (int i = 0; i < certs->count; i++) {		
		EstEID_Map cert = certs->certs[i];
		if (!EstEID_mapGet(cert, "usageNonRepudiation")) {
			continue;
		}
		
		lv.iSubItem = 0;
		lv.iItem = currentCertIndex;		
		MultiByteToWideChar(CP_UTF8, 0, EstEID_mapGet(cert, "commonName"), -1, unicodeBuf, sizeof(unicodeBuf) / sizeof(TCHAR)); 
		lv.pszText = (LPWSTR)unicodeBuf;
		ListView_InsertItem(certificatesList, &lv);
		
		MultiByteToWideChar(CP_UTF8, 0, EstEID_mapGet(cert, "organizationName"), -1, unicodeBuf, sizeof(unicodeBuf) / sizeof(TCHAR)); 
		ListView_SetItemText(certificatesList, currentCertIndex, 1, unicodeBuf);
		
		char* validTo = getDateFromDateTime(EstEID_mapGet(cert, "validTo"));
		MultiByteToWideChar(CP_UTF8, 0, validTo, -1, unicodeBuf, sizeof(unicodeBuf) / sizeof(TCHAR)); 
		ListView_SetItemText(certificatesList, currentCertIndex, 2, unicodeBuf);		
		free(validTo);
				
		MultiByteToWideChar(CP_UTF8, 0, EstEID_mapGet(cert, "certHash"), -1, unicodeBuf, sizeof(unicodeBuf) / sizeof(TCHAR)); 
		ListView_SetItemText(certificatesList, currentCertIndex, 3, unicodeBuf);

		currentCertIndex++;
	}
}