|
Packit |
8681c6 |
/*
|
|
Packit |
8681c6 |
* COPYRIGHT (c) International Business Machines Corp. 2001-2017
|
|
Packit |
8681c6 |
*
|
|
Packit |
8681c6 |
* This program is provided under the terms of the Common Public License,
|
|
Packit |
8681c6 |
* version 1.0 (CPL-1.0). Any use, reproduction or distribution for this
|
|
Packit |
8681c6 |
* software constitutes recipient's acceptance of CPL-1.0 terms which can be
|
|
Packit |
8681c6 |
* found in the file LICENSE file or at
|
|
Packit |
8681c6 |
* https://opensource.org/licenses/cpl1.0.php
|
|
Packit |
8681c6 |
*/
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
// File: defs.h
|
|
Packit |
8681c6 |
//
|
|
Packit |
8681c6 |
// Contains various definitions needed by both the host-side
|
|
Packit |
8681c6 |
// and coprocessor-side code.
|
|
Packit |
8681c6 |
//
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#ifndef _DEFS_H
|
|
Packit |
8681c6 |
#define _DEFS_H
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define MAX_SESSION_COUNT 64
|
|
Packit |
8681c6 |
#define MAX_PIN_LEN 8
|
|
Packit |
8681c6 |
#define MIN_PIN_LEN 4
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#ifndef MIN
|
|
Packit |
8681c6 |
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
Packit |
8681c6 |
#endif
|
|
Packit |
8681c6 |
#ifndef MAX
|
|
Packit |
8681c6 |
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
|
Packit |
8681c6 |
#endif
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define UNUSED(var) ((void)(var))
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
// the following constants are used for sccSignOn
|
|
Packit |
8681c6 |
//
|
|
Packit |
8681c6 |
#define PKCS_11_PRG_ID "pkcs11 2.01"
|
|
Packit |
8681c6 |
#define PKCS_11_DEVELOPER_ID 0xE
|
|
Packit |
8681c6 |
#define PKCS_11_VERSION 1
|
|
Packit |
8681c6 |
#define PKCS_11_INSTANCE 0
|
|
Packit |
8681c6 |
#define PKCS_11_QUEUE 0
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
// the following are "boolean" attributes
|
|
Packit |
8681c6 |
//
|
|
Packit |
8681c6 |
#define CKA_IBM_TWEAK_ALLOW_KEYMOD 0x80000001
|
|
Packit |
8681c6 |
#define CKA_IBM_TWEAK_ALLOW_WEAK_DES 0x80000002
|
|
Packit |
8681c6 |
#define CKA_IBM_TWEAK_DES_PARITY_CHK 0x80000003
|
|
Packit |
8681c6 |
#define CKA_IBM_TWEAK_NETSCAPE 0x80000004
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define MODE_COPY (1 << 0)
|
|
Packit |
8681c6 |
#define MODE_CREATE (1 << 1)
|
|
Packit |
8681c6 |
#define MODE_KEYGEN (1 << 2)
|
|
Packit |
8681c6 |
#define MODE_MODIFY (1 << 3)
|
|
Packit |
8681c6 |
#define MODE_DERIVE (1 << 4)
|
|
Packit |
8681c6 |
#define MODE_UNWRAP (1 << 5)
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
// RSA block formatting types
|
|
Packit |
8681c6 |
//
|
|
Packit |
8681c6 |
#define PKCS_BT_1 1
|
|
Packit |
8681c6 |
#define PKCS_BT_2 2
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define OP_ENCRYPT_INIT 1
|
|
Packit |
8681c6 |
#define OP_DECRYPT_INIT 2
|
|
Packit |
8681c6 |
#define OP_WRAP 3
|
|
Packit |
8681c6 |
#define OP_UNWRAP 4
|
|
Packit |
8681c6 |
#define OP_SIGN_INIT 5
|
|
Packit |
8681c6 |
#define OP_VERIFY_INIT 6
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
// saved-state identifiers
|
|
Packit |
8681c6 |
//
|
|
Packit |
8681c6 |
enum {
|
|
Packit |
8681c6 |
STATE_INVALID = 0,
|
|
Packit |
8681c6 |
STATE_ENCR,
|
|
Packit |
8681c6 |
STATE_DECR,
|
|
Packit |
8681c6 |
STATE_DIGEST,
|
|
Packit |
8681c6 |
STATE_SIGN,
|
|
Packit |
8681c6 |
STATE_VERIFY
|
|
Packit |
8681c6 |
};
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define ENCRYPT 1
|
|
Packit |
8681c6 |
#define DECRYPT 0
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define MAX_RSA_KEYLEN 1920
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define AES_KEY_SIZE_256 32
|
|
Packit |
8681c6 |
#define AES_KEY_SIZE_192 24
|
|
Packit |
8681c6 |
#define AES_KEY_SIZE_128 16
|
|
Packit |
8681c6 |
#define AES_BLOCK_SIZE 16
|
|
Packit |
8681c6 |
#define AES_INIT_VECTOR_SIZE AES_BLOCK_SIZE
|
|
Packit |
8681c6 |
#define AES_COUNTER_SIZE 16
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define DES_KEY_SIZE 8
|
|
Packit |
8681c6 |
#define DES_BLOCK_SIZE 8
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
/*
|
|
Packit |
8681c6 |
* It should be able to keep any kind of key (AES, 3DES, etc) and also
|
|
Packit |
8681c6 |
* a PBKDF key
|
|
Packit |
8681c6 |
*/
|
|
Packit |
8681c6 |
#define MAX_KEY_SIZE 96
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define SHA1_HASH_SIZE 20
|
|
Packit |
8681c6 |
#define SHA1_BLOCK_SIZE 64
|
|
Packit |
8681c6 |
#define SHA1_BLOCK_SIZE_MASK (SHA1_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define SHA224_HASH_SIZE 28
|
|
Packit |
8681c6 |
#define SHA224_BLOCK_SIZE 64
|
|
Packit |
8681c6 |
#define SHA224_BLOCK_SIZE_MASK (SHA224_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define SHA256_HASH_SIZE 32
|
|
Packit |
8681c6 |
#define SHA256_BLOCK_SIZE 64
|
|
Packit |
8681c6 |
#define SHA256_BLOCK_SIZE_MASK (SHA256_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define SHA384_HASH_SIZE 48
|
|
Packit |
8681c6 |
#define SHA384_BLOCK_SIZE 128
|
|
Packit |
8681c6 |
#define SHA384_BLOCK_SIZE_MASK (SHA384_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define SHA512_HASH_SIZE 64
|
|
Packit |
8681c6 |
#define SHA512_BLOCK_SIZE 128
|
|
Packit |
8681c6 |
#define SHA512_BLOCK_SIZE_MASK (SHA512_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define SHA3_224_HASH_SIZE SHA224_HASH_SIZE
|
|
Packit |
8681c6 |
#define SHA3_224_BLOCK_SIZE 144
|
|
Packit |
8681c6 |
#define SHA3_224_BLOCK_SIZE_MASK (SHA3_224_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define SHA3_256_HASH_SIZE SHA256_HASH_SIZE
|
|
Packit |
8681c6 |
#define SHA3_256_BLOCK_SIZE 136
|
|
Packit |
8681c6 |
#define SHA3_256_BLOCK_SIZE_MASK (SHA3_256_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define SHA3_384_HASH_SIZE SHA384_HASH_SIZE
|
|
Packit |
8681c6 |
#define SHA3_384_BLOCK_SIZE 104
|
|
Packit |
8681c6 |
#define SHA3_384_BLOCK_SIZE_MASK (SHA3_384_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define SHA3_512_HASH_SIZE SHA512_HASH_SIZE
|
|
Packit |
8681c6 |
#define SHA3_512_BLOCK_SIZE 72
|
|
Packit |
8681c6 |
#define SHA3_512_BLOCK_SIZE_MASK (SHA3_512_BLOCK_SIZE - 1)
|
|
Packit |
8681c6 |
#define MAX_SHA_HASH_SIZE SHA512_HASH_SIZE
|
|
Packit |
8681c6 |
#define MAX_SHA_BLOCK_SIZE SHA3_224_BLOCK_SIZE
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#ifndef PATH_MAX
|
|
Packit |
8681c6 |
#define PATH_MAX 4096
|
|
Packit |
8681c6 |
#endif
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
struct oc_sha_ctx {
|
|
Packit |
8681c6 |
unsigned char hash[MAX_SHA_HASH_SIZE + 1];
|
|
Packit |
8681c6 |
unsigned int hash_len;
|
|
Packit |
8681c6 |
unsigned int hash_blksize;
|
|
Packit |
8681c6 |
unsigned int tail_len;
|
|
Packit |
8681c6 |
int message_part;
|
|
Packit |
8681c6 |
unsigned char tail[MAX_SHA_BLOCK_SIZE];
|
|
Packit |
8681c6 |
unsigned int dev_ctx_offs;
|
|
Packit |
8681c6 |
};
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define MD2_HASH_SIZE 16
|
|
Packit |
8681c6 |
#define MD2_BLOCK_SIZE 48
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define MD5_HASH_SIZE 16
|
|
Packit |
8681c6 |
#define MD5_BLOCK_SIZE 64
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define DSA_SIGNATURE_SIZE 40
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define DEFAULT_SO_PIN "87654321"
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define MAX_TOK_OBJS 2048
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
typedef enum {
|
|
Packit |
8681c6 |
ALL = 1,
|
|
Packit |
8681c6 |
PRIVATE,
|
|
Packit |
8681c6 |
PUBLIC
|
|
Packit |
8681c6 |
} SESS_OBJ_TYPE;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
typedef enum {
|
|
Packit |
8681c6 |
NO_LOCK = 0,
|
|
Packit |
8681c6 |
READ_LOCK,
|
|
Packit |
8681c6 |
WRITE_LOCK,
|
|
Packit |
8681c6 |
} OBJ_LOCK_TYPE;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
typedef struct _DL_NODE {
|
|
Packit |
8681c6 |
struct _DL_NODE *next;
|
|
Packit |
8681c6 |
struct _DL_NODE *prev;
|
|
Packit |
8681c6 |
void *data;
|
|
Packit |
8681c6 |
} DL_NODE;
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
// Token local
|
|
Packit |
8681c6 |
//
|
|
Packit |
8681c6 |
#define PK_LITE_DIR token_specific.token_directory
|
|
Packit |
8681c6 |
#define PK_DIR PK_LITE_DIR
|
|
Packit |
8681c6 |
#define SUB_DIR token_specific.token_subdir
|
|
Packit |
8681c6 |
#define DBGTAG token_specific.token_debug_tag
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define PK_LITE_NV "NVTOK.DAT"
|
|
Packit |
8681c6 |
#define PK_LITE_OBJ_DIR "TOK_OBJ"
|
|
Packit |
8681c6 |
#define PK_LITE_OBJ_IDX "OBJ.IDX"
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#define DEL_CMD "/bin/rm -f"
|
|
Packit |
8681c6 |
|
|
Packit |
8681c6 |
#endif
|