Overview
| Comment: | Updated extended modes to use BER encoding and added some basic comments | 
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive | 
| Timelines: | family | ancestors | descendants | both | piv | 
| Files: | files | file ages | folders | 
| SHA1: | 
de23309dd3aacee632637f2a11bff528 | 
| User & Date: | rkeene on 2013-01-14 17:53:54 | 
| Other Links: | branch diff | manifest | tags | 
Context
| 
   2013-01-14 
 | ||
| 17:56 | Updated documentation for cackey_get_data check-in: a02a881547 user: rkeene tags: piv | |
| 17:53 | Updated extended modes to use BER encoding and added some basic comments check-in: de23309dd3 user: rkeene tags: piv | |
| 
   2013-01-10 
 | ||
| 19:39 | Added debug messages for newly supported features which may not function. Updated to not use newly supported features, which seem to fail sometimes. check-in: 1b3d97f6ef user: rkeene tags: piv | |
Changes
Modified cackey.c from [fc1d1ef268] to [d345cec881].
| ︙ | ︙ | |||
1433 1434 1435 1436 1437 1438 1439  | 
	xmit_buf[xmit_len++] = instruction;
	xmit_buf[xmit_len++] = p1;
	xmit_buf[xmit_len++] = p2;
	if (data) {
		if (lc > 255) {
			CACKEY_DEBUG_PRINTF("CAUTION!  Using an Lc greater than 255 is untested.  Lc = %u", lc);
 | | |  | 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462  | 
	xmit_buf[xmit_len++] = instruction;
	xmit_buf[xmit_len++] = p1;
	xmit_buf[xmit_len++] = p2;
	if (data) {
		if (lc > 255) {
			CACKEY_DEBUG_PRINTF("CAUTION!  Using an Lc greater than 255 is untested.  Lc = %u", lc);
			xmit_buf[xmit_len++] = 0x82; /* XXX UNTESTED */
			xmit_buf[xmit_len++] = (lc & 0xff00) >> 8;
			xmit_buf[xmit_len++] = lc & 0xff;
		} else {
			xmit_buf[xmit_len++] = lc;
		}
		for (idx = 0; idx < lc; idx++) {
			xmit_buf[xmit_len++] = data[idx];
		}
	}
	if (le != 0x00) {
		if (le > 256) {
			CACKEY_DEBUG_PRINTF("CAUTION!  Using an Le greater than 256 is untested.  Le = %u", le);
			xmit_buf[xmit_len++] = 0x82; /* XXX UNTESTED */
			xmit_buf[xmit_len++] = (le & 0xff00) >> 8;
			xmit_buf[xmit_len++] = le & 0xff;
		} else if (le == 256) {
			xmit_buf[xmit_len++] = 0x00;
		} else {
			xmit_buf[xmit_len++] = le;
		}
 | 
| ︙ | ︙ | |||
1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715  | 
	max_offset = count;
	max_count = CACKEY_APDU_MTU;
	cmd[2] = oid[0];
	cmd[3] = oid[1];
	cmd[4] = oid[2];
	send_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, NISTSP800_73_3_INSTR_GET_DATA, 0x3F, 0xFF, sizeof(cmd), cmd, 256, &respcode, buffer, &count);
	if (send_ret == CACKEY_PCSC_E_RETRY) {
		CACKEY_DEBUG_PRINTF("ADPU Sending failed, retrying read buffer");
		return(cackey_get_data(slot, buffer, init_count, oid));
	}
 | >  | 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716  | 
	max_offset = count;
	max_count = CACKEY_APDU_MTU;
	cmd[2] = oid[0];
	cmd[3] = oid[1];
	cmd[4] = oid[2];
	/* 256 to indicate the largest message size -- not clear if this will work with all messages */
	send_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, NISTSP800_73_3_INSTR_GET_DATA, 0x3F, 0xFF, sizeof(cmd), cmd, 256, &respcode, buffer, &count);
	if (send_ret == CACKEY_PCSC_E_RETRY) {
		CACKEY_DEBUG_PRINTF("ADPU Sending failed, retrying read buffer");
		return(cackey_get_data(slot, buffer, init_count, oid));
	}
 | 
| ︙ | ︙ |