diff options
author | 2001-06-27 22:33:35 +0000 | |
---|---|---|
committer | 2001-06-27 22:33:35 +0000 | |
commit | 900dbf7232a98245e2953cd817d0a58df5725c55 (patch) | |
tree | 66a6fd1e5e4416c81ca6bbe4cd550c469bdd1b61 | |
parent | in rdr rules, let port 0 be the port wildcard; ok dhartmei@ (diff) | |
download | wireguard-openbsd-900dbf7232a98245e2953cd817d0a58df5725c55.tar.xz wireguard-openbsd-900dbf7232a98245e2953cd817d0a58df5725c55.zip |
add cyberflex_fill_key_block, root_fid
-rw-r--r-- | lib/libsectok/cyberflex.c | 38 | ||||
-rw-r--r-- | lib/libsectok/sectok.c | 4 | ||||
-rw-r--r-- | lib/libsectok/sectok.h | 6 |
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 |