Blame usr/lib/common/defs.h

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