6277N/AIn-house patch created to clear any merge conflicts from source in archive
6277N/Arepo to build properly on Solaris.
6277N/A
6277N/A--- CACKey-0.7.4/test.c 2016-05-19 14:16:48.242123597 -0400
6277N/A+++ CACKey-0.7.4/test.c 2015-07-16 12:20:20.000000000 -0400
6277N/A@@ -1,248 +1,11 @@
6277N/A-<<<<<<< HEAD
6277N/A #include "mypkcs11.h"
6277N/A
6277N/A-=======
6277N/A->>>>>>> trunk
6277N/A #include <sys/types.h>
6277N/A #include <string.h>
6277N/A #include <unistd.h>
6277N/A #include <stdlib.h>
6277N/A #include <stdio.h>
6277N/A
6277N/A-<<<<<<< HEAD
6277N/A-=======
6277N/A-#ifdef CACKEY_TEST_AFL
6277N/A-#include <sys/types.h>
6277N/A-#include <fcntl.h>
6277N/A-
6277N/A-static unsigned char *inputData;
6277N/A-static unsigned long inputDataLen;
6277N/A-
6277N/A-/* Include the CACKey source */
6277N/A-#include "cackey.c"
6277N/A-
6277N/A-#undef CACKEY_DEBUG_PRINTF
6277N/A-#define CACKEY_DEBUG_PRINTF(x...) /**/
6277N/A-#undef malloc
6277N/A-#undef realloc
6277N/A-#undef strdup
6277N/A-
6277N/A-/* Fake a smartcard */
6277N/A-const SCARD_IO_REQUEST g_rgSCardT0Pci, g_rgSCardT1Pci;
6277N/A-static int scard_inTransaction = 0;
6277N/A-static LONG scard_protocol;
6277N/A-
6277N/A-
6277N/A-PCSC_API LONG SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- *phContext = 42;
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardIsValidContext(SCARDCONTEXT hContext) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hContext != 42) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardListReaders(SCARDCONTEXT hContext, LPCSTR mszGroups, LPSTR mszReaders, LPDWORD pcchReaders) {
6277N/A- static char *readers = "READER0";
6277N/A-
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hContext != 42) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- *pcchReaders = strlen(readers) + 1;
6277N/A-
6277N/A- if (mszReaders == NULL) {
6277N/A- return(SCARD_S_SUCCESS);
6277N/A- }
6277N/A-
6277N/A- memcpy(mszReaders, readers, *pcchReaders);
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardBeginTransaction(SCARDHANDLE hCard) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hCard != 99) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- if (scard_inTransaction) {
6277N/A- return(SCARD_E_SHARING_VIOLATION);
6277N/A- }
6277N/A-
6277N/A- scard_inTransaction = 1;
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-PCSC_API LONG SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hCard != 99) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- scard_inTransaction = 0;
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardStatus(SCARDHANDLE hCard, LPSTR mszReaderName, LPDWORD pcchReaderLen, LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen) {
6277N/A- LONG scardlistreaders_ret;
6277N/A-
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hCard != 99) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- *pdwState = 0;
6277N/A- scardlistreaders_ret = SCardListReaders(42, NULL, mszReaderName, pcchReaderLen);
6277N/A- if (scardlistreaders_ret != SCARD_S_SUCCESS) {
6277N/A- return(scardlistreaders_ret);
6277N/A- }
6277N/A-
6277N/A- *pdwProtocol = scard_protocol;
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardConnect(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode, DWORD dwPreferredProtocols, LPSCARDHANDLE phCard, LPDWORD pdwActiveProtocol) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hContext != 42) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- if ((dwPreferredProtocols & SCARD_PROTOCOL_T0) == SCARD_PROTOCOL_T0) {
6277N/A- *pdwActiveProtocol = SCARD_PROTOCOL_T0;
6277N/A- } else {
6277N/A- *pdwActiveProtocol = SCARD_PROTOCOL_T1;
6277N/A- }
6277N/A-
6277N/A- scard_protocol = *pdwActiveProtocol;
6277N/A-
6277N/A- *phCard = 99;
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hCard != 99) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardReconnect(SCARDHANDLE hCard, DWORD dwShareMode, DWORD dwPreferredProtocols, DWORD dwInitialization, LPDWORD pdwActiveProtocol) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hCard != 99) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- return(SCardConnect(42, NULL, dwShareMode, dwPreferredProtocols, NULL, pdwActiveProtocol));
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardReleaseContext(SCARDCONTEXT hContext) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A-
6277N/A- if (hContext != 42) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-PCSC_API LONG SCardTransmit(SCARDHANDLE hCard, const SCARD_IO_REQUEST *pioSendPci, LPCBYTE pbSendBuffer, DWORD cbSendLength, SCARD_IO_REQUEST *pioRecvPci, LPBYTE pbRecvBuffer, LPDWORD pcbRecvLength) {
6277N/A- CACKEY_DEBUG_PRINTF("Called");
6277N/A- unsigned int bytesToRead;
6277N/A-
6277N/A- if (hCard != 99) {
6277N/A- return(SCARD_E_INVALID_HANDLE);
6277N/A- }
6277N/A-
6277N/A- if (inputDataLen <= 1) {
6277N/A- *pcbRecvLength = 0;
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A- }
6277N/A-
6277N/A- bytesToRead = (inputData[0] << 8) | inputData[1];
6277N/A-
6277N/A- inputData += 2;
6277N/A- inputDataLen -= 2;
6277N/A-
6277N/A- if (bytesToRead > inputDataLen) {
6277N/A- bytesToRead = inputDataLen;
6277N/A- }
6277N/A-
6277N/A- if (bytesToRead > *pcbRecvLength) {
6277N/A- return(SCARD_E_INSUFFICIENT_BUFFER);
6277N/A- }
6277N/A-
6277N/A- *pcbRecvLength = bytesToRead;
6277N/A-
6277N/A- memcpy(pbRecvBuffer, inputData, bytesToRead);
6277N/A-
6277N/A- inputData += bytesToRead;
6277N/A- inputDataLen -= bytesToRead;
6277N/A-
6277N/A- return(SCARD_S_SUCCESS);
6277N/A-}
6277N/A-
6277N/A-static void loadTestData(const char *fileName) {
6277N/A- ssize_t read_ret;
6277N/A- int fd;
6277N/A-
6277N/A- if (fileName == NULL) {
6277N/A- goto cleanup;
6277N/A- }
6277N/A-
6277N/A- fd = open(fileName, O_RDONLY);
6277N/A- if (fd < 0) {
6277N/A- goto cleanup;
6277N/A- }
6277N/A-
6277N/A- inputDataLen = 16384;
6277N/A- inputData = malloc(inputDataLen);
6277N/A-
6277N/A- read_ret = read(fd, inputData, inputDataLen);
6277N/A- if (read_ret < 0) {
6277N/A- goto cleanup;
6277N/A- }
6277N/A-
6277N/A- inputDataLen = read_ret;
6277N/A- inputData = realloc(inputData, inputDataLen);
6277N/A-
6277N/A- close(fd);
6277N/A-
6277N/A-cleanup:
6277N/A-
6277N/A- return;
6277N/A-}
6277N/A-#else
6277N/A-#include "mypkcs11.h"
6277N/A-
6277N/A-static void loadTestData(const char *filename) {
6277N/A- return;
6277N/A-}
6277N/A-#endif
6277N/A->>>>>>> trunk
6277N/A
6277N/A static char *pkcs11_attribute_to_name(CK_ATTRIBUTE_TYPE attrib) {
6277N/A static char retbuf[1024];
6277N/A@@ -475,10 +238,7 @@
6277N/A return(1);
6277N/A }
6277N/A
6277N/A-<<<<<<< HEAD
6277N/A-=======
6277N/A printf(" Id : %lu\n", (unsigned long) slots[currSlot]);
6277N/A->>>>>>> trunk
6277N/A printf(" Desc : %.*s\n", 32, slotInfo.slotDescription);
6277N/A printf(" ManufID: %.*s\n", 32, slotInfo.manufacturerID);
6277N/A printf(" HWVers : %i.%i\n", slotInfo.hardwareVersion.major, slotInfo.hardwareVersion.minor);
6277N/A@@ -570,32 +330,19 @@
6277N/A
6277N/A chk_rv = C_OpenSession(slots[0], CKF_SERIAL_SESSION, NULL, NULL, &hSession);
6277N/A if (chk_rv == CKR_OK) {
6277N/A-<<<<<<< HEAD
6277N/A- if ((tokenInfo.flags & CKF_LOGIN_REQUIRED) == CKF_LOGIN_REQUIRED) {
6277N/A-=======
6277N/A chk_rv = C_GetTokenInfo(slots[0], &tokenInfo);
6277N/A if (chk_rv != CKR_OK) {
6277N/A return(1);
6277N/A }
6277N/A
6277N/A if ((tokenInfo.flags & CKF_LOGIN_REQUIRED) == CKF_LOGIN_REQUIRED && (tokenInfo.flags & CKF_PROTECTED_AUTHENTICATION_PATH) == 0) {
6277N/A->>>>>>> trunk
6277N/A fgets_ret = NULL;
6277N/A
6277N/A while (fgets_ret == NULL) {
6277N/A printf("** ENTER PIN: ");
6277N/A fflush(stdout);
6277N/A
6277N/A-<<<<<<< HEAD
6277N/A fgets_ret = fgets((char *) user_pin, sizeof(user_pin), stdin);
6277N/A-=======
6277N/A-#ifdef CACKEY_TEST_AFL
6277N/A- memcpy(user_pin, "0000000", 8);
6277N/A- fgets_ret = (char *) user_pin;
6277N/A-#else
6277N/A- fgets_ret = fgets((char *) user_pin, sizeof(user_pin), stdin);
6277N/A-#endif
6277N/A->>>>>>> trunk
6277N/A }
6277N/A
6277N/A if (strlen((char *) user_pin) >= 1) {
6277N/A@@ -873,22 +620,11 @@
6277N/A return(0);
6277N/A }
6277N/A
6277N/A-<<<<<<< HEAD
6277N/A int main(void) {
6277N/A-=======
6277N/A-int main(int argc, char **argv) {
6277N/A->>>>>>> trunk
6277N/A int retval = 0, ck_retval;
6277N/A
6277N/A printf("Testing libcackey...\n");
6277N/A
6277N/A-<<<<<<< HEAD
6277N/A-=======
6277N/A- if (argc > 1) {
6277N/A- loadTestData(argv[1]);
6277N/A- }
6277N/A-
6277N/A->>>>>>> trunk
6277N/A ck_retval = main_pkcs11();
6277N/A
6277N/A if (ck_retval != 0) {