summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrees <rees@openbsd.org>2001-06-27 22:33:35 +0000
committerrees <rees@openbsd.org>2001-06-27 22:33:35 +0000
commit900dbf7232a98245e2953cd817d0a58df5725c55 (patch)
tree66a6fd1e5e4416c81ca6bbe4cd550c469bdd1b61
parentin rdr rules, let port 0 be the port wildcard; ok dhartmei@ (diff)
downloadwireguard-openbsd-900dbf7232a98245e2953cd817d0a58df5725c55.tar.xz
wireguard-openbsd-900dbf7232a98245e2953cd817d0a58df5725c55.zip
add cyberflex_fill_key_block, root_fid
-rw-r--r--lib/libsectok/cyberflex.c38
-rw-r--r--lib/libsectok/sectok.c4
-rw-r--r--lib/libsectok/sectok.h6
3 files changed, 42 insertions, 6 deletions
diff --git a/lib/libsectok/cyberflex.c b/lib/libsectok/cyberflex.c
index 8ec974cb956..26aa4cdbe21 100644
--- a/lib/libsectok/cyberflex.c
+++ b/lib/libsectok/cyberflex.c
@@ -1,4 +1,4 @@
-/* $Id: cyberflex.c,v 1.4 2001/06/26 23:25:11 rees Exp $ */
+/* $Id: cyberflex.c,v 1.5 2001/06/27 22:33:35 rees Exp $ */
/*
copyright 2000
@@ -54,8 +54,7 @@ such damages.
#define key_number 0x10
#define key_type 0xc8 /* key type 0xc8 (1024 bit RSA private) */
#define KEY_FILE_HEADER_SIZE 8
-
-static unsigned char root_fid[] = {0x3f, 0x00};
+#define BLOCK_SIZE 8
int cyberflex_create_file(int fd, int cla, unsigned char *fid, int size)
{
@@ -64,7 +63,7 @@ int cyberflex_create_file(int fd, int cla, unsigned char *fid, int size)
size += 16;
- data[0] = (size >> 16);
+ data[0] = (size >> 8);
data[1] = (size & 0xff);
data[2] = fid[0];
data[3] = fid[1];
@@ -254,6 +253,37 @@ cyberflex_verify_AUT0(int fd, int cla, unsigned char *aut0, int aut0len)
return 0;
}
+/* fill the key block.
+
+ Input
+ dst : destination buffer
+ key_num : key number (0: AUT, 5: signed applet, etc.)
+ alg_num : algorithm number
+ key : incoming 8 byte DES key
+
+ The resulting format:
+ 00 0e key_num alg_num key(8 byte) 0a 0a
+
+ total 14 byte
+*/
+void
+cyberflex_fill_key_block (unsigned char *dst, int key_num,
+ int alg_num, unsigned char *key)
+{
+ int i;
+
+ *(dst+0) = 0x00; /* const */
+ *(dst+1) = 0x0e; /* const */
+ *(dst+2) = key_num; /* key number */
+ *(dst+3) = alg_num; /* algorithm number */
+ for (i = 0; i < BLOCK_SIZE; i++)
+ *(dst+i+4) = *(key+i);
+ *(dst+12) = 0x0a; /* const */
+ *(dst+13) = 0x0a; /* const */
+
+ return;
+}
+
int
cyberflex_inq_class(int fd)
{
diff --git a/lib/libsectok/sectok.c b/lib/libsectok/sectok.c
index 70bcd44e8da..bbc4c8656ca 100644
--- a/lib/libsectok/sectok.c
+++ b/lib/libsectok/sectok.c
@@ -1,4 +1,4 @@
-/* $Id: sectok.c,v 1.1 2001/06/25 19:59:38 rees Exp $ */
+/* $Id: sectok.c,v 1.2 2001/06/27 22:33:36 rees Exp $ */
/*
copyright 2000
@@ -46,6 +46,8 @@ such damages.
#define myisprint(x) ((x) >= '!' && (x) <= 'z')
+unsigned char root_fid[] = {0x3f, 0x00};
+
void
sectok_fmt_fid(char *fname, int f0, int f1)
{
diff --git a/lib/libsectok/sectok.h b/lib/libsectok/sectok.h
index 1ed11ca44d0..e8d42580d3c 100644
--- a/lib/libsectok/sectok.h
+++ b/lib/libsectok/sectok.h
@@ -1,4 +1,4 @@
-/* $Id: sectok.h,v 1.8 2001/06/26 23:25:12 rees Exp $ */
+/* $Id: sectok.h,v 1.9 2001/06/27 22:33:36 rees Exp $ */
/*
copyright 1997, 2000
@@ -80,6 +80,8 @@ extern struct scparam {
int t, etu, cwt, bwt, n;
} scparam[];
+extern unsigned char root_fid[];
+
/* forward declarations */
int scopen(int ttyn, int flags, int *ep);
@@ -130,6 +132,8 @@ int cyberflex_load_rsa_priv(int fd, int cla, unsigned char *key_fid,
int nkey_elems, int keylen, unsigned char *key_elems[]);
int cyberflex_verify_AUT0(int fd, int cla, unsigned char *aut0, int aut0len);
int cyberflex_inq_class(int fd);
+void cyberflex_fill_key_block (unsigned char *dst, int key_num,
+ int alg_num, unsigned char *key);
/* SCPERF - performance evaluation */
#ifdef SCPERF