kssl.h revision 2bd70d4be73561631df9cb3d9eb4c65fa94fa665
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor/*
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * CDDL HEADER START
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor *
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * The contents of this file are subject to the terms of the
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * Common Development and Distribution License (the "License").
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * You may not use this file except in compliance with the License.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor *
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * or http://www.opensolaris.org/os/licensing.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * See the License for the specific language governing permissions
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * and limitations under the License.
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen *
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * When distributing Covered Code, include this CDDL HEADER in each
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * If applicable, add the following below this CDDL HEADER, with the
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * fields enclosed by brackets "[]" replaced with your own identifying
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * information: Portions Copyright [yyyy] [name of copyright owner]
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor *
3f08db06526d6901aa08c110b5bc7dde6bc39905nd * CDDL HEADER END
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor/*
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
3f08db06526d6901aa08c110b5bc7dde6bc39905nd * Use is subject to license terms.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#ifndef _INET_KSSL_KSSL_H
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define _INET_KSSL_KSSL_H
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#pragma ident "%Z%%M% %I% %E% SMI"
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#ifdef __cplusplus
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalicextern "C" {
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic#endif
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#include <sys/types.h>
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#include <netinet/in.h>
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#include <sys/crypto/common.h>
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor/* These are re-definition from <crypto/ioctl.h> */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzortypedef struct kssl_object_attribute {
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint64_t ka_type; /* attribute type */
48c64aeceef385e19025b384bd719b2a9789592dnd uint32_t ka_value_offset; /* offset to attribute value */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t ka_value_len; /* length of attribute value */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor} kssl_object_attribute_t;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzortypedef struct kssl_key {
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor crypto_key_format_t ks_format; /* format identifier */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t ks_count; /* number of attributes */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t ks_attrs_offset; /* offset to the attributes */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor} kssl_key_t;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzortypedef struct kssl_certs_s {
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t sc_count; /* number of certificates */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t sc_sizes_offset; /* offset to certificates sizes array */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t sc_certs_offset; /* offset to certificates array */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor} kssl_certs_t;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define MAX_PIN_LENGTH 1024
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzortypedef struct kssl_tokinfo_s {
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint8_t toklabel[CRYPTO_EXT_SIZE_LABEL];
48c64aeceef385e19025b384bd719b2a9789592dnd uint32_t pinlen;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t tokpin_offset; /* offset to the pin */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t ck_rv; /* PKCS #11 specific error */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor} kssl_tokinfo_t;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define SSL_RSA_WITH_NULL_SHA 0x0002
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define SSL_RSA_WITH_RC4_128_MD5 0x0004
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define SSL_RSA_WITH_RC4_128_SHA 0x0005
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define SSL_RSA_WITH_DES_CBC_SHA 0x0009
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define SSL_RSA_WITH_3DES_EDE_CBC_SHA 0x000a
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define TLS_RSA_WITH_AES_128_CBC_SHA 0x002f
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define TLS_RSA_WITH_AES_256_CBC_SHA 0x0035
48c64aeceef385e19025b384bd719b2a9789592dnd#define CIPHER_SUITE_COUNT 7
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define CIPHER_NOTSET 0xffff
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define DEFAULT_SID_TIMEOUT 86400 /* 24 hours in seconds */
c8c717fafa0a09ed13469a603a178921b851dd22igalic#define DEFAULT_SID_CACHE_NENTRIES 5000
c8c717fafa0a09ed13469a603a178921b851dd22igalic
c8c717fafa0a09ed13469a603a178921b851dd22igalictypedef struct kssl_params_s {
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint64_t kssl_params_size; /* total params buf len */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor /* address and port number */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor struct sockaddr_in kssl_addr;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint16_t kssl_proxy_port;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t kssl_session_cache_timeout; /* In seconds */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint32_t kssl_session_cache_size;
48c64aeceef385e19025b384bd719b2a9789592dnd
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor /*
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * Contains ordered list of cipher suites. We do not include
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor * the one suite with no encryption. Hence the -1.
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint16_t kssl_suites[CIPHER_SUITE_COUNT - 1];
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor uint8_t kssl_is_nxkey;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor kssl_tokinfo_t kssl_token;
48c64aeceef385e19025b384bd719b2a9789592dnd
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor /* certificates */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor kssl_certs_t kssl_certs;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor /* private key */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor kssl_key_t kssl_privkey;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor} kssl_params_t;
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor/* The ioctls to /dev/kssl */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define KSSL_IOC(x) (('s' << 24) | ('s' << 16) | ('l' << 8) | (x))
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define KSSL_ADD_ENTRY KSSL_IOC(1)
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#define KSSL_DELETE_ENTRY KSSL_IOC(2)
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#ifdef _KERNEL
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzorextern int kssl_add_entry(kssl_params_t *);
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzorextern int kssl_delete_entry(struct sockaddr_in *);
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor#endif /* _KERNEL */
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung#ifdef __cplusplus
cc8190433d13f5e9de618c5d7f10c824c0c1919cgryzor}
5effc8b39fae5cd169d17f342bfc265705840014rbowen#endif
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd#endif /* _INET_KSSL_KSSL_H */
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd