summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr.bin/sectok/cmds.c50
-rw-r--r--usr.bin/sectok/cyberflex.c42
-rw-r--r--usr.bin/sectok/sc.h7
3 files changed, 80 insertions, 19 deletions
diff --git a/usr.bin/sectok/cmds.c b/usr.bin/sectok/cmds.c
index 1c1fc307ab6..0246c6c8e17 100644
--- a/usr.bin/sectok/cmds.c
+++ b/usr.bin/sectok/cmds.c
@@ -1,4 +1,4 @@
-/* $Id: cmds.c,v 1.14 2001/07/27 14:13:08 rees Exp $ */
+/* $Id: cmds.c,v 1.15 2001/08/02 17:09:18 rees Exp $ */
/*
* Smartcard commander.
@@ -35,21 +35,34 @@ if it has been or is hereafter advised of the possibility of
such damages.
*/
+#ifdef __palmos__
+#pragma pack(2)
+#include <Common.h>
+#include <System/SysAll.h>
+#include <UI/UIAll.h>
+#include <System/Unix/sys_types.h>
+#include <System/Unix/unix_stdio.h>
+#include <System/Unix/unix_stdlib.h>
+#include <System/Unix/unix_string.h>
+#include <string.h>
+#include "getopt.h"
+#include "sectok.h"
+#include "field.h"
+#else
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <string.h>
#include <sectok.h>
+#endif
#include "sc.h"
+#define MAXFILELEN 0xffff
#define CARDIOSIZE 200
-struct {
- char *cmd, *help;
- int (*action) (int ac, char *av[]);
-} dispatch_table[] = {
+struct dispatchtable dispatch_table[] = {
/* Non-card commands */
{ "help", "[command]", help },
{ "?", "[command]", help },
@@ -64,7 +77,9 @@ struct {
{ "isearch", "", isearch },
{ "class", "[ class ]", class },
{ "read", "[ -x ] filesize", dread },
+#ifndef __palmos__
{ "write", "input-filename", dwrite },
+#endif
/* Cyberflex commands */
{ "ls", "[ -l ]", ls },
@@ -75,10 +90,14 @@ struct {
{ "jatr", "", jatr },
{ "jdata", "", jdata },
{ "login", "[ -d ] [ -k keyno ] [ -v ] [ -x hex-aut0 ]", jlogin },
+#ifndef __palmos__
{ "jaut", "", jaut },
{ "jload", "[ -p progID ] [ -c contID ] [ -s cont_size ] [ -i inst_size ] [ -a aid ] [ -v ] filename", jload },
+#endif
{ "junload", "[ -p progID ] [ -c contID ]", junload },
+#ifndef __palmos__
{ "setpass", "[ -d ] [ -x hex-aut0 ]", jsetpass },
+#endif
{ NULL, NULL, NULL }
};
@@ -185,7 +204,11 @@ int dclose(int ac, char *av[])
int quit(int ac, char *av[])
{
+#ifndef __palmos__
exit(0);
+#else
+ return -1;
+#endif
}
int apdu(int ac, char *av[])
@@ -321,8 +344,9 @@ int class(int ac, char *av[])
int dread(int ac, char *av[])
{
- int i, n, col = 0, p3, fsize, xflag = 0, sw;
- unsigned char buf[CARDIOSIZE];
+ int i, n, col = 0, fsize, xflag = 0, sw;
+ unsigned int p3;
+ unsigned char buf[CARDIOSIZE+1];
optind = optreset = 1;
@@ -344,7 +368,7 @@ int dread(int ac, char *av[])
if (fd < 0 && reset(0, NULL) < 0)
return -1;
- for (p3 = 0; fsize && p3 < 100000; p3 += n) {
+ for (p3 = 0; fsize && p3 < MAXFILELEN; p3 += n) {
n = (fsize < CARDIOSIZE) ? fsize : CARDIOSIZE;
n = sectok_apdu(fd, cla, 0xb0, p3 >> 8, p3 & 0xff, 0, NULL, n, buf, &sw);
if (!sectok_swOK(sw)) {
@@ -357,8 +381,14 @@ int dread(int ac, char *av[])
if (col++ % 16 == 15)
printf("\n");
}
- } else
+ } else {
+#ifdef __palmos__
+ buf[n] = '\0';
+ printf("%s", buf);
+#else
fwrite(buf, 1, n, stdout);
+#endif
+ }
fsize -= n;
}
@@ -368,6 +398,7 @@ int dread(int ac, char *av[])
return 0;
}
+#ifndef __palmos__
int dwrite(int ac, char *av[])
{
int n, p3, sw;
@@ -401,3 +432,4 @@ int dwrite(int ac, char *av[])
return (n ? 0 : -1);
}
+#endif
diff --git a/usr.bin/sectok/cyberflex.c b/usr.bin/sectok/cyberflex.c
index 0f12c75e652..247398256bc 100644
--- a/usr.bin/sectok/cyberflex.c
+++ b/usr.bin/sectok/cyberflex.c
@@ -1,4 +1,4 @@
-/* $Id: cyberflex.c,v 1.17 2001/07/29 21:43:48 rees Exp $ */
+/* $Id: cyberflex.c,v 1.18 2001/08/02 17:09:18 rees Exp $ */
/*
copyright 1999, 2000
@@ -30,6 +30,7 @@ if it has been or is hereafter advised of the possibility of
such damages.
*/
+#ifndef __palmos__
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
@@ -48,6 +49,19 @@ such damages.
#else /* __linux */
#include <sha1.h>
#endif
+#else
+#pragma pack(2)
+#include <Common.h>
+#include <System/SysAll.h>
+#include <System/Unix/sys_types.h>
+#include <System/Unix/unix_stdio.h>
+#include <System/Unix/unix_stdlib.h>
+#include <System/Unix/unix_string.h>
+#include <UI/UIAll.h>
+#include "getopt.h"
+#include "field.h"
+#define NO_SHA
+#endif
#include <sectok.h>
#include "sc.h"
@@ -70,14 +84,19 @@ static unsigned char AUT0[20];
int aut0_vfyd;
+static void print_acl(int isdir, unsigned char *acl);
+
+#ifndef __palmos__
/* default signed applet key of Cyberflex Access */
static des_cblock app_key = {0x6A, 0x21, 0x36, 0xF5, 0xD8, 0x0C, 0x47, 0x83};
-
-static void print_acl(int isdir, unsigned char *acl);
+#endif
static int
get_AUT0(int ac, char *av[], char *prompt, int confirm, unsigned char *digest)
{
+#ifdef NO_SHA
+ memcpy(digest, DFLTAUT0, sizeof DFLTAUT0);
+#else
int i, dflag = 0, xflag = 0;
SHA1_CTX ctx;
char *s, *s2;
@@ -88,7 +107,7 @@ get_AUT0(int ac, char *av[], char *prompt, int confirm, unsigned char *digest)
while ((i = getopt(ac, av, "dk:x:")) != -1) {
switch (i) {
case 'd':
- memmove(digest, DFLTAUT0, sizeof DFLTAUT0);
+ memcpy(digest, DFLTAUT0, sizeof DFLTAUT0);
dflag = 1;
break;
case 'x':
@@ -118,6 +137,7 @@ get_AUT0(int ac, char *av[], char *prompt, int confirm, unsigned char *digest)
bzero(s, strlen(s));
SHA1Final(digest, &ctx);
}
+#endif
return 0;
}
@@ -219,7 +239,7 @@ int jatr(int ac, char *av[])
n += sectok_parse_input(av[1], &buf[n], 15);
} else {
/* no historical bytes given, use default */
- memmove(&buf[n], DFLTATR, sizeof DFLTATR);
+ memcpy(&buf[n], DFLTATR, sizeof DFLTATR);
n += sizeof DFLTATR;
}
buf[0] |= ((n - 2) & 0xf);
@@ -349,7 +369,7 @@ sectok_fmt_aidname(char *aidname, int aidlen, unsigned char *aid)
break;
}
if (istext) {
- memmove(aidname, aid, aidlen);
+ memcpy(aidname, aid, aidlen);
aidname[aidlen] = '\0';
if (aid[0] == 0xfc)
aidname[0] = '#';
@@ -571,6 +591,7 @@ int jdelete(int ac, char *av[])
unsigned char progID[2], contID[2];
+#ifndef __palmos__
int jload(int ac, char *av[])
{
char *cp, *filename, progname[5], contname[5];
@@ -776,7 +797,7 @@ int jload(int ac, char *av[])
data[8] = inst_size & 0xff; /* instance size 0x0400 (1024) byte, lower */
data[9] = 0x00; /* AID length 0x0005, upper */
data[10] = aidlen; /* AID length 0x0005, lower */
- memmove(&data[11], aid, aidlen);
+ memcpy(&data[11], aid, aidlen);
sectok_apdu(fd, cla, 0x0c, 0x13, 0, 11 + aidlen, data, 0, NULL, &sw);
if (!sectok_swOK(sw)) {
@@ -788,6 +809,7 @@ int jload(int ac, char *av[])
/* That's it! :) */
return 0;
}
+#endif
int junload(int ac, char *av[])
{
@@ -796,9 +818,9 @@ int junload(int ac, char *av[])
/* Use old defaults */
if (progID[0] == 0)
- memmove(progID, "ww", 2);
+ memcpy(progID, "ww", 2);
if (contID[0] == 0)
- memmove(contID, "wx", 2);
+ memcpy(contID, "wx", 2);
optind = optreset = 1;
@@ -861,6 +883,7 @@ int junload(int ac, char *av[])
return 0;
}
+#ifndef __palmos__
#define DELIMITER " :\t\n"
#define KEY_BLOCK_SIZE 14
@@ -1046,3 +1069,4 @@ int cyberflex_load_rsa(int fd, unsigned char *buf)
free(key_elements[i]);
return 0;
}
+#endif
diff --git a/usr.bin/sectok/sc.h b/usr.bin/sectok/sc.h
index 64032ef6bd8..36537d7ab10 100644
--- a/usr.bin/sectok/sc.h
+++ b/usr.bin/sectok/sc.h
@@ -1,4 +1,4 @@
-/* $Id: sc.h,v 1.7 2001/07/26 16:10:01 rees Exp $ */
+/* $Id: sc.h,v 1.8 2001/08/02 17:09:19 rees Exp $ */
/*
* Smartcard commander.
@@ -38,6 +38,11 @@ such damages.
extern int port, fd, cla, aut0_vfyd;
extern FILE *cmdf;
+extern struct dispatchtable {
+ char *cmd, *help;
+ int (*action) (int ac, char *av[]);
+} dispatch_table[];
+
int dispatch(int ac, char *av[]);
int help(int ac, char *av[]);
int reset(int ac, char *av[]);