Files
Mozilla/mozilla/security/psm/lib/protocol/ssmdefs.h
mwelch%netscape.com 16cf07ba69 First checkin of PSM client libs
git-svn-id: svn://10.0.0.236/trunk@61923 18797224-902f-48f8-a5cc-f745e15eee43
2000-03-01 00:43:41 +00:00

355 lines
9.9 KiB
C

/* -*- mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1994-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (the
* "GPL"), in which case the provisions of the GPL are applicable
* instead of those above. If you wish to allow use of your
* version of this file only under the terms of the GPL and not to
* allow others to use your version of this file under the MPL,
* indicate your decision by deleting the provisions above and
* replace them with the notice and other provisions required by
* the GPL. If you do not delete the provisions above, a recipient
* may use your version of this file under either the MPL or the
* GPL.
*/
#ifndef __SSMDEFS_H__
#define __SSMDEFS_H__
/* Basic type definitions for both client and server. */
#ifdef macintosh
typedef unsigned long size_t;
typedef long ptrdiff_t;
#endif
typedef long CMInt32;
typedef unsigned long CMUint32;
typedef long SSMResourceID;
#ifdef XP_MAC
/* in order to get around Mac compiler pedanticism */
#define SSMStatus int
#else
typedef int SSMStatus;
#endif
#define PSM_PORT 11111
#define PSM_DATA_PORT 11113 /* needs to be removed */
typedef enum _CMTStatus {
CMTFailure = -1,
CMTSuccess = 0
} CMTStatus;
typedef enum {
CM_FALSE = 0,
CM_TRUE = 1
} CMBool;
typedef struct CMTItemStr {
CMUint32 type;
unsigned char *data;
unsigned int len;
} CMTItem;
/* A length-encoded string. */
struct _SSMString {
CMUint32 m_length;
char m_data;
};
typedef struct _SSMString SSMString;
#define SSM_PROTOCOL_VERSION 0x00000051
#define SSM_INVALID_RESOURCE 0x00000000
#define SSM_GLOBAL_RESOURCE 0x00000001
#define SSM_SESSION_RESOURCE 0x00000002
/* Message category flags */
typedef enum
{
SSM_REQUEST_MESSAGE = 0x10000000,
SSM_REPLY_OK_MESSAGE = 0x20000000,
SSM_REPLY_ERR_MESSAGE = 0x30000000,
SSM_EVENT_MESSAGE = 0x40000000
} SSMMessageCategory;
/* Message types */
typedef enum
{
SSM_DATA_CONNECTION = 0x00001000,
SSM_OBJECT_SIGNING = 0x00002000,
SSM_RESOURCE_ACTION = 0x00003000,
SSM_CERT_ACTION = 0x00004000,
SSM_PKCS11_ACTION = 0x00005000,
SSM_CRMF_ACTION = 0x00006000,
SSM_FORMSIGN_ACTION = 0x00007000,
SSM_LOCALIZED_TEXT = 0x00008000,
SSM_HELLO_MESSAGE = 0x00009000,
SSM_SECURITY_ADVISOR = 0x0000a000,
SSM_SEC_CFG_ACTION = 0x0000b000,
SSM_KEYGEN_TAG = 0x0000c000,
SSM_PREF_ACTION = 0x0000d000,
SSM_MISC_ACTION = 0x0000f000
} SSMMessageType;
/* Data connection messages subtypes */
typedef enum
{
SSM_SSL_CONNECTION = 0x00000100,
SSM_PKCS7DECODE_STREAM = 0x00000200,
SSM_PKCS7ENCODE_STREAM = 0x00000300,
SSM_HASH_STREAM = 0x00000400,
SSM_TLS_CONNECTION = 0x00000500,
SSM_PROXY_CONNECTION = 0x00000600
} SSMDataConnectionSType;
/* Object signing message subtypes */
typedef enum
{
SSM_VERIFY_RAW_SIG = 0x00000100,
SSM_VERIFY_DETACHED_SIG= 0x00000200,
SSM_CREATE_SIGNED = 0x00000300,
SSM_CREATE_ENCRYPTED = 0x00000400
} SSMObjSignSType;
/* Resource access messages subtypes */
typedef enum
{
SSM_CREATE_RESOURCE = 0x00000100,
SSM_DESTROY_RESOURCE = 0x00000200,
SSM_GET_ATTRIBUTE = 0x00000300,
SSM_CONSERVE_RESOURCE = 0x00000400,
SSM_DUPLICATE_RESOURCE = 0x00000500,
SSM_SET_ATTRIBUTE = 0x00000600,
SSM_TLS_STEPUP = 0x00000700,
SSM_PROXY_STEPUP = 0x00000800
} SSMResourceAccessSType;
/* Further specification for resource access messages */
typedef enum {
SSM_SSLSocket_Status = 0x00000010
} SSMCreateResource;
typedef enum {
SSM_NO_ATTRIBUTE = 0x00000000,
SSM_NUMERIC_ATTRIBUTE = 0x00000010,
SSM_STRING_ATTRIBUTE = 0x00000020,
SSM_RID_ATTRIBUTE = 0x00000030
} SSMResourceAttrType;
typedef enum {
SSM_PICKLE_RESOURCE = 0x00000010,
SSM_UNPICKLE_RESOURCE = 0x00000020,
SSM_PICKLE_SECURITY_STATUS = 0x00000030
} SSMResourceConsv;
/* Certificate access message subtypes */
typedef enum
{
SSM_IMPORT_CERT = 0x00000100,
SSM_VERIFY_CERT = 0x00000200,
SSM_FIND_BY_NICKNAME = 0x00000300,
SSM_FIND_BY_KEY = 0x00000400,
SSM_FIND_BY_EMAILADDR = 0x00000500,
SSM_ADD_TO_DB = 0x00000600,
SSM_DECODE_CERT = 0x00000700,
SSM_MATCH_USER_CERT = 0x00000800,
SSM_DESTROY_CERT = 0x00000900,
SSM_DECODE_TEMP_CERT = 0x00000a00,
SSM_REDIRECT_COMPARE = 0x00000b00,
SSM_DECODE_CRL = 0x00000c00,
SSM_EXTENSION_VALUE = 0x00000d00,
SSM_HTML_INFO = 0x00000e00
} SSMCertAccessSType;
/* message subtypes used for KEYGEN form tag */
typedef enum
{
SSM_GET_KEY_CHOICE = 0x00000100,
SSM_KEYGEN_START = 0x00000200,
SSM_KEYGEN_TOKEN = 0x00000300,
SSM_KEYGEN_PASSWORD = 0x00000400,
SSM_KEYGEN_DONE = 0x00000500
} SSMKeyGenTagProcessType;
typedef enum
{
SSM_CREATE_KEY_PAIR = 0x00000100,
SSM_FINISH_KEY_GEN = 0x00000200,
SSM_ADD_NEW_MODULE = 0x00000300,
SSM_DEL_MODULE = 0x00000400,
SSM_LOGOUT_ALL = 0x00000500,
SSM_ENABLED_CIPHERS = 0x00000600
} SSMPKCS11Actions;
typedef enum
{
SSM_CREATE_CRMF_REQ = 0x00000100,
SSM_DER_ENCODE_REQ = 0x00000200,
SSM_PROCESS_CMMF_RESP = 0x00000300,
SSM_CHALLENGE = 0x00000400
} SSMCRMFAction;
typedef enum
{
SSM_SIGN_TEXT = 0x00000100
} SSMFormSignAction;
/* Security Config subtypes */
typedef enum
{
SSM_ADD_CERT_TO_TEMP_DB = 0x00000100,
SSM_ADD_TEMP_CERT_TO_DB = 0x00000200,
SSM_DELETE_PERM_CERTS = 0x00000300,
SSM_FIND_CERT_KEY = 0x00000400,
SSM_GET_CERT_PROP_BY_KEY = 0x00000500,
SSM_CERT_INDEX_ENUM = 0x00000600
} SSMSecCfgAction;
/* subcategories for SSM_FIND_CERT_KEY and SSM_CERT_INDEX_ENUM */
typedef enum
{
SSM_FIND_KEY_BY_NICKNAME = 0x00000010,
SSM_FIND_KEY_BY_EMAIL_ADDR = 0x00000020,
SSM_FIND_KEY_BY_DN = 0x00000030
} SSMSecCfgFindByType;
/* subcategories for SSM_GET_CERT_PROP_BY_KEY */
typedef enum
{
SSM_SECCFG_GET_NICKNAME = 0x00000010,
SSM_SECCFG_GET_EMAIL_ADDR = 0x00000020,
SSM_SECCFG_GET_DN = 0x00000030,
SSM_SECCFG_GET_TRUST = 0x00000040,
SSM_SECCFG_CERT_IS_PERM = 0x00000050,
SSM_SECCFG_GET_NOT_BEFORE = 0x00000060,
SSM_SECCFG_GET_NOT_AFTER = 0x00000070,
SSM_SECCFG_GET_SERIAL_NO = 0x00000080,
SSM_SECCFG_GET_ISSUER = 0x00000090,
SSM_SECCFG_GET_ISSUER_KEY = 0x000000a0,
SSM_SECCFG_GET_SUBJECT_NEXT = 0x000000b0,
SSM_SECCFG_GET_SUBJECT_PREV = 0x000000c0
} SSMSecCfgGetCertPropType;
/* Misc requests */
typedef enum
{
SSM_MISC_GET_RNG_DATA = 0x00000100,
SSM_MISC_PUT_RNG_DATA = 0x00000200
} SSMMiscRequestType;
/* Type masks for message types */
typedef enum
{
SSM_CATEGORY_MASK = 0xF0000000,
SSM_TYPE_MASK = 0x0000F000,
SSM_SUBTYPE_MASK = 0x00000F00,
SSM_SPECIFIC_MASK = 0x000000F0
} SSMMessageMaskType;
typedef struct SSMAttributeValue {
SSMResourceAttrType type;
union {
SSMResourceID rid;
CMTItem string;
CMInt32 numeric;
} u;
} SSMAttributeValue;
typedef enum {
rsaEnc, rsaDualUse, rsaSign, rsaNonrepudiation, rsaSignNonrepudiation,
dhEx, dsaSignNonrepudiation, dsaSign, dsaNonrepudiation, invalidKeyGen
} SSMKeyGenType;
typedef enum {
ssmUnknownPolicy=-1,ssmDomestic=0, ssmExport=1, ssmFrance=2
} SSMPolicyType;
/* These are the localized strings that PSM can feed back to
* the plug-in. These will initially be used by the plug-in for
* JavaScript purposes to pop up alert/confirm dialogs that would
* cause nightmares to do if we sent UI events.
*/
typedef enum {
SSM_STRING_BAD_PK11_LIB_PARAM,
SSM_STRING_BAD_PK11_LIB_PATH,
SSM_STRING_ADD_MOD_SUCCESS,
SSM_STRING_DUP_MOD_FAILURE,
SSM_STRING_ADD_MOD_FAILURE,
SSM_STRING_BAD_MOD_NAME,
SSM_STRING_EXT_MOD_DEL,
SSM_STRING_INT_MOD_DEL,
SSM_STRING_MOD_DEL_FAIL,
SSM_STRING_ADD_MOD_WARN,
SSM_STRING_MOD_PROMPT,
SSM_STRING_DLL_PROMPT,
SSM_STRING_DEL_MOD_WARN,
SSM_STRING_INVALID_CRL,
SSM_STRING_INVALID_CKL,
SSM_STRING_ROOT_CKL_CERT_NOT_FOUND,
SSM_STRING_BAD_CRL_SIGNATURE,
SSM_STRING_BAD_CKL_SIGNATURE,
SSM_STRING_ERR_ADD_CRL,
SSM_STRING_ERR_ADD_CKL,
SSM_STRING_JAVASCRIPT_DISABLED
} SSMLocalizedString;
/* Event types */
typedef enum
{
SSM_UI_EVENT = 0x00001000,
SSM_TASK_COMPLETED_EVENT = 0x00002000,
SSM_FILE_PATH_EVENT = 0x00003000,
SSM_PROMPT_EVENT = 0x00004000,
SSM_AUTH_EVENT = 0x00007000,
SSM_SAVE_PREF_EVENT = 0x00008000,
SSM_MISC_EVENT = 0x0000f000
} SSMEventType;
/* Flags used in Create SSL Data request */
typedef enum
{
SSM_REQUEST_SSL_DATA_SSL = 0x00000001,
SSM_REQUEST_SSL_DATA_PROXY = 0x00000002,
SSM_REQUEST_SSL_CONNECTION_MASK = 0x00000003
} SSMSSLConnectionRequestType;
/*
* This string is version that can be used to assemble any
* version information by the apllication using the protocol
* library.
*/
extern char SSMVersionString[];
/* What type of client */
typedef enum
{
SSM_NOINFO,
SSM_COMPOSE,
SSM_MAIL_MESSAGE,
SSM_NEWS_MESSAGE,
SSM_SNEWS_MESSAGE,
SSM_BROWSER
} SSMClientType;
#endif /* __SSMDEFS_H__ */