Overview
| Comment: | Fixed issues with padding |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
66507306f5956ac2f95f1957d5c73709 |
| User & Date: | rkeene on 2010-05-17 19:43:12 |
| Other Links: | manifest | tags |
Context
|
2010-05-17
| ||
| 19:53 | Updated to treat a request of read of 0 bytes as a no-op. check-in: 45212cc4ca user: rkeene tags: trunk | |
| 19:43 | Fixed issues with padding check-in: 66507306f5 user: rkeene tags: trunk | |
| 19:37 |
Updated to support determining key size from X.509 object (untested)
Updated to set HW TOKEN flag Updated to pad sign/decrypt message to key size (untested) check-in: a2ac84031e user: rkeene tags: trunk | |
Changes
Modified cackey.c from [e6d26b97df] to [64d4505a46].
| ︙ | ︙ | |||
1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 |
* ...
*
*/
static ssize_t cackey_signdecrypt(struct cackey_slot *slot, struct cackey_identity *identity, unsigned char *buf, size_t buflen, unsigned char *outbuf, size_t outbuflen) {
unsigned char *tmpbuf, *tmpbuf_s;
unsigned char bytes_to_send, p1;
cackey_ret send_ret;
size_t tmpbuflen, padlen;
int free_tmpbuf = 0;
int le;
CACKEY_DEBUG_PRINTF("Called.");
if (buflen > 255) {
| > | 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 |
* ...
*
*/
static ssize_t cackey_signdecrypt(struct cackey_slot *slot, struct cackey_identity *identity, unsigned char *buf, size_t buflen, unsigned char *outbuf, size_t outbuflen) {
unsigned char *tmpbuf, *tmpbuf_s;
unsigned char bytes_to_send, p1;
cackey_ret send_ret;
uint16_t respcode;
size_t tmpbuflen, padlen;
int free_tmpbuf = 0;
int le;
CACKEY_DEBUG_PRINTF("Called.");
if (buflen > 255) {
|
| ︙ | ︙ | |||
1906 1907 1908 1909 1910 1911 1912 | free_tmpbuf = 1; padlen = tmpbuflen - buflen - 3; tmpbuf[0] = 0x00; tmpbuf[1] = 0x01; memset(&tmpbuf[2], 0xFF, padlen); | | | > > > | 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 |
free_tmpbuf = 1;
padlen = tmpbuflen - buflen - 3;
tmpbuf[0] = 0x00;
tmpbuf[1] = 0x01;
memset(&tmpbuf[2], 0xFF, padlen);
tmpbuf[padlen + 2]= 0x00;
memcpy(&tmpbuf[padlen + 3], buf, buflen);
CACKEY_DEBUG_PRINTBUF("Unpadded:", buf, buflen);
CACKEY_DEBUG_PRINTBUF("Padded:", tmpbuf, tmpbuflen);
} else {
tmpbuf = buf;
tmpbuflen = buflen;
free_tmpbuf = 0;
padlen = 0;
}
} else {
|
| ︙ | ︙ | |||
1943 1944 1945 1946 1947 1948 1949 |
bytes_to_send = 245;
p1 = 0x80;
} else {
bytes_to_send = tmpbuflen;
p1 = 0x00;
}
| | > > > > | 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 |
bytes_to_send = 245;
p1 = 0x80;
} else {
bytes_to_send = tmpbuflen;
p1 = 0x00;
}
send_ret = cackey_send_apdu(slot, GSCIS_CLASS_GLOBAL_PLATFORM, GSCIS_INSTR_SIGNDECRYPT, p1, 0x00, bytes_to_send, tmpbuf, le, &respcode, outbuf, &outbuflen);
if (send_ret != CACKEY_PCSC_S_OK) {
CACKEY_DEBUG_PRINTF("ADPU Sending Failed -- returning in error.");
if (respcode == 0x6982) {
CACKEY_DEBUG_PRINTF("Security status not satisified.");
}
if (free_tmpbuf) {
if (tmpbuf_s) {
free(tmpbuf_s);
}
}
|
| ︙ | ︙ |