63d98e39cd
Files correlati : Commento : - Creazione nuova cartella per contenere tutte le librerie esterne - Aggiunta nuova libreria sqlapi per interfacciare campo a vari DB git-svn-id: svn://10.65.10.50/branches/R_10_00@24149 c028cbd2-c16b-5b4b-a496-9718f37d4682
2388 lines
75 KiB
C
2388 lines
75 KiB
C
/* DISABLE check_long_lines */
|
|
|
|
/* Copyright (c) 1996, 2007, Oracle. All rights reserved. */
|
|
/* Copyright (c) 1996, 2007, Oracle. All rights reserved. */
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzt.h
|
|
*
|
|
* DESCRIPTION
|
|
* Toolkit public declarations.
|
|
*
|
|
* PUBLIC FUNCTIONS
|
|
* nztwOpenWallet - Open a wallet based on a WRL and pwd.
|
|
* nztwCloseWallet - Close a wallet.
|
|
* + nztwCreateWallet - Create a new wallet.
|
|
* + nztwDestroyWallet - Destroy an existing wallet.
|
|
* nztwRetrievePersonaCopy - Retieve a copy of a particular persona.
|
|
* + nzteStorePersona - Store a persona in the wallet.
|
|
* nzteOpenPersona - Open a persona.
|
|
* nzteClosePersona - Close a persona.
|
|
* + nzteRemovePersona - Remove a persona from a wallet.
|
|
* + nzteCreatePersona - Create a persona.
|
|
* nzteDestroyPersona - Destroy a persona.
|
|
* nztiStoreTrustedIdentity - Store an identity with associated trust.
|
|
* nzteRetrieveTrustedIdentCopy - Retrieves a trusted identity from persona
|
|
* + nzteSetProtection - Modify the protection set in a persona.
|
|
* + nzteGetProtection - Get the protection set in a persona
|
|
* nztePriKey - Get the Private Key (X509 Only)
|
|
* nzteMyCert - Get the Certificate (X509 only)
|
|
* nzteX509CreatePersona - Create a persona given an X509 Certificate.
|
|
* + nztiRemoveIdentity - Remove an identity from a persona.
|
|
* nztiCreateIdentity - Create an identity.
|
|
* nztiDuplicateIdentity - Create a complete copy of an identity.
|
|
* nztiAbortIdentity - Discard an unstored identity.
|
|
* nztidGetIdentityDesc - Gets Identity Description from Identity.
|
|
* nztidFreeIdentityDesc - Frees memory for Identity Desc object.
|
|
* nztSign - Generate an attached signature.
|
|
* + nztxSignExpansion - Determine size of signature.
|
|
* nztVerify - Verify an attached signature.
|
|
* nztValidate - Validate an identity.
|
|
* nztsd_SignDetached - Generate a detached signature.
|
|
* + nztxsd_SignDetachedExpansion - Determine size of detached signature.
|
|
* nztved_VerifyDetached - Verify a detached signature.
|
|
* + nztEncrypt - Symmetric key encryption.
|
|
* + nztxEncryptExpansion - Determine the tdu length for encryption.
|
|
* + nztDecrypt - Symmetric key decryption.
|
|
* + nztEnvelope - Sign then encrypt data for recipient(s).
|
|
* + nztDeEnvelope - Reverse nztEnvelope.
|
|
* + nztKeyedHash - Generate keyed hash.
|
|
* + nztxKeyedHashExpansion - Determine size of TDU for keyed hash.
|
|
* nztHash - Generate hash.
|
|
* + nztxHashExpansion - Determine the size of the TDU for a hash.
|
|
* nztSeedRandom - See the random number generator.
|
|
* nztrb_RandomBytes - Generate a series of random bytes.
|
|
* nztrn_RandomNumber - Generate a random number.
|
|
* nztbbInitBlock - Initialize a buffer block.
|
|
* nztbbReuseBlock - Reuse a buffer block.
|
|
* nztbbSizeBlock - Find the size of the buffer block.
|
|
* nztbbGrowBlock - Grow initialized buffer block by 'inc' bytes.
|
|
* nztbbPurgeBlock - Purge the memory used within a buffer block.
|
|
* nztbbSetBlock - Set block to known state.
|
|
* nztkec_PKEncrypt - Encrypt data then encrypt key for recipient.
|
|
* nztkdc_PKDecrypt - Decrypt PKEncrypt'ed data.
|
|
* nztific_FreeIdentityContent - Free the contents of an identity.
|
|
* nztifdn - Create an identity from a distinguished name
|
|
* nztcts_CipherSpecToStr - Converts the Cipher Spec Code To String
|
|
* nztiae_IsAuthEnabled - Checks to see if Authentication is Enabled
|
|
* in the current Cipher Spec.
|
|
* nztiae_IsEncrEnabled - Checks to see if Encryption is Enabled
|
|
* in the current Cipher Spec.
|
|
* nztiae_IsHashEnabled - Checks to see if Hashing is Enabled
|
|
* in the current Cipher Spec.
|
|
* nztwGetCertInfo - Get peer certificate info
|
|
*
|
|
* NOTE: the '+' indicates that these functions are UNSUPPORTED at this time.
|
|
*
|
|
* NOTES
|
|
*
|
|
* MODIFIED
|
|
* shiahuan 11/28/07 -
|
|
* skalyana 08/15/07 -
|
|
* pkale 09/28/06 - Bug 5565668: Removed __STDC__
|
|
* tnallath 09/22/05 -
|
|
* rchahal 07/27/04 - add keyusage
|
|
* srtata 11/10/03 - fix nztSetAppDefaultLocation header
|
|
* rchahal 10/15/03 - bug 2513821
|
|
* rchahal 11/11/02 - pkcs11 support
|
|
* akoyfman 07/05/02 - adding secret store to persona
|
|
* supriya 10/11/01 - Fix for bug # 2015732
|
|
* ajacobs 04/04/01 - make NZT_REGISTRY_WRL always available
|
|
* ajacobs 03/06/01 - olint fix
|
|
* ajacobs 03/02/01 - Add GetCertInfo
|
|
* supriya 02/23/01 - Move nzttKPUsage from nzt0.h
|
|
* rchahal 01/26/01 - olint fixes
|
|
* supriya 12/07/00 - Change fn name
|
|
* supriya 12/01/00 - Certificate API's needed for iAS
|
|
* supriya 06/19/00 - Adding definitions for MCS and ENTR
|
|
* lkethana 05/31/00 - multiple cert support
|
|
* skanjila 06/25/99 - Remove nztcts_CipherSpecToStr() to NZOS.
|
|
* skanjila 06/23/99 - Change API of nztcts_CipherSpecToStr.
|
|
* lkethana 06/18/99 - rem nztIPrivateAlloc, etc
|
|
* lkethana 06/10/99 - changing size_t to ub4
|
|
* lkethana 06/02/99 - add api for getting auth/encry/hash capability of c
|
|
* arswamin 12/28/98 - add NZT_MAX_MD5.
|
|
* arswamin 12/21/98 - change signature of compareDN
|
|
* qdinh 12/21/98 - change size_t to ub4.
|
|
* inetwork 11/22/98 - Removing NZDEPRECATED definition
|
|
* amthakur 09/14/98 - deprecating and updating the c-structures.
|
|
* arswamin 09/24/98 - adding NZTTWRL_NULL for SSO support.
|
|
* amthakur 07/30/98 - changing the prototype of nztGetCertChain.
|
|
* qdinh 05/01/98 - add NZTTIDENTTYPE_INVALID_TYPE
|
|
* qdinh 04/17/98 - add NZTTWRL_ORACLE.
|
|
* ascott 10/08/97 - implement nztiStoreTrustedIdentity
|
|
* ascott 10/07/97 - add nztiGetIdentityDesc
|
|
* ascott 09/28/97 - clarify prototype comments and error codes
|
|
* ascott 09/05/97 - update identity: create, destroy, duplicate
|
|
* ascott 08/21/97 - add GetCert and GetPriKey
|
|
* ascott 08/07/97 - add other WRL settings
|
|
* asriniva 03/25/97 - Add ANSI prototypes
|
|
* rwessman 03/19/97 - Added prototypes for nztific_FreeIdentityContent()
|
|
* asriniva 03/11/97 - Fix olint errors
|
|
* sdange 02/28/97 - Removed inclusion of nz0decl.h
|
|
* sdange 02/18/97 - Moved nzt specific declarations from nz0decl.h
|
|
* asriniva 01/21/97 - Remove prototypes.
|
|
* asriniva 10/31/96 - Include oratypes.h
|
|
* asriniva 10/15/96 - Declare buffer block helper functions
|
|
* asriniva 10/08/96 - First pass at wallet open/close
|
|
* asriniva 10/04/96 - Add random number seed function
|
|
* asriniva 10/03/96 - Reorder parameters in nztbbSetBlock
|
|
* asriniva 10/03/96 - Keep editing.
|
|
* asriniva 10/03/96 - Continued edits.
|
|
* asriniva 10/02/96 - Continue editing.
|
|
* asriniva 09/26/96 -
|
|
*/
|
|
|
|
/* ENABLE check_long_lines */
|
|
|
|
#ifndef NZT_ORACLE
|
|
#define NZT_ORACLE
|
|
|
|
#ifndef ORATYPES
|
|
# include <oratypes.h>
|
|
#endif /* ORATYPES */
|
|
|
|
#ifndef NZERROR_ORACLE
|
|
# include <nzerror.h> /* NZ error type */
|
|
#endif /* NZERROR_ORACLE */
|
|
|
|
|
|
#define NZT_MAX_SHA1 20
|
|
#define NZT_MAX_MD5 16
|
|
|
|
/***************************************/
|
|
/* PUBLIC CONSTANTS, MACROS, AND TYPES */
|
|
/***************************************/
|
|
|
|
/*
|
|
* Wallet Resource Locator Type Strings
|
|
*
|
|
* WRL TYPE PARAMETERS BEHAVIOR
|
|
* ======== ========== =====================================
|
|
* default: <none> Uses directory defined by the parameter
|
|
* SNZD_DEFAULT_FILE_DIRECTORY which in
|
|
* unix is "$HOME/oracle/oss"
|
|
*
|
|
* file: file path Find the Oracle wallet in this directory.
|
|
* example: file:<dir-path>
|
|
*
|
|
* sqlnet: <none> In this case, the directory path will be
|
|
* retrieved from the sqlnet.ora file under
|
|
* the oss.source.my_wallet parameter.
|
|
*
|
|
* mcs: <none> Microsoft WRL.
|
|
*
|
|
* entr: dir path Entrust WRL. eg: ENTR:<dir-path>
|
|
*
|
|
*/
|
|
/* Note that there is no NZT_NULL_WRL. Instead look in snzd.h for DEFAULT_WRP
|
|
* which is used in our new defaulting mechanism. The NZT_DEFAULT_WRL
|
|
* should be deprecated.
|
|
*/
|
|
#define NZT_DEFAULT_WRL ((text *)"default:")
|
|
#define NZT_SQLNET_WRL ((text *)"sqlnet:")
|
|
#define NZT_FILE_WRL ((text *)"file:")
|
|
#define NZT_ENTR_WRL ((text *)"entr:")
|
|
#define NZT_MCS_WRL ((text *)"mcs:")
|
|
#define NZT_ORACLE_WRL ((text *)"oracle:")
|
|
#define NZT_REGISTRY_WRL ((text *)"reg:")
|
|
|
|
enum nzttwrl
|
|
{
|
|
NZTTWRL_DEFAULT = 1, /* Default, use SNZD_DEFAULT_FILE_DIRECTORY */
|
|
NZTTWRL_SQLNET, /* Use oss.source.my_wallet in sqlnet.ora file */
|
|
NZTTWRL_FILE, /* Find the oracle wallet in this directory */
|
|
NZTTWRL_ENTR, /* Find the entrust profile in this directory */
|
|
NZTTWRL_MCS, /* WRL for Microsoft */
|
|
NZTTWRL_ORACLE, /* Get the wallet from OSS db */
|
|
NZTTWRL_NULL, /* New SSO defaulting mechanism */
|
|
NZTTWRL_REGISTRY /* Find the wallet in Windows Registry */
|
|
};
|
|
typedef enum nzttwrl nzttwrl;
|
|
|
|
#ifndef NZ0DECL_ORACLE
|
|
/*
|
|
* With the elimination of nz0decl.h from public, we need this
|
|
* redundant typedef.
|
|
*/
|
|
typedef struct nzctx nzctx;
|
|
typedef struct nzstrc nzstrc;
|
|
typedef struct nzosContext nzosContext;
|
|
#endif /* NZ0DECL_ORACLE */
|
|
|
|
/* Moved from nz0decl.h */
|
|
|
|
typedef struct nzttIdentity nzttIdentity;
|
|
typedef struct nzttIdentityPrivate nzttIdentityPrivate;
|
|
typedef struct nzttPersona nzttPersona;
|
|
typedef struct nzttPersonaPrivate nzttPersonaPrivate;
|
|
typedef struct nzttWallet nzttWallet;
|
|
typedef struct nzttWalletPrivate nzttWalletPrivate;
|
|
typedef struct nzttWalletObj nzttWalletObj; /* For wallet object */
|
|
typedef struct nzssEntry nzssEntry; /* For secretstore */
|
|
typedef struct nzpkcs11_Info nzpkcs11_Info;
|
|
|
|
/*
|
|
* Crypto Engine State
|
|
*
|
|
* Once the crypto engine (CE) has been initialized for a particular
|
|
* cipher, it is either at the initial state, or it is continuing to
|
|
* use the cipher. NZTCES_END is used to change the state back to
|
|
* initialized and flush any remaining output. NZTTCES_RESET can be
|
|
* used to change the state back to initialized and throw away any
|
|
* remaining output.
|
|
*/
|
|
enum nzttces
|
|
{
|
|
NZTTCES_CONTINUE = 1, /* Continue processing input */
|
|
NZTTCES_END, /* End processing input */
|
|
NZTTCES_RESET /* Reset processing and skip generating output */
|
|
};
|
|
typedef enum nzttces nzttces;
|
|
|
|
/*
|
|
* Crypto Engine Functions
|
|
*
|
|
* List of crypto engine categories; used to index into protection
|
|
* vector.
|
|
*/
|
|
enum nzttcef
|
|
{
|
|
NZTTCEF_DETACHEDSIGNATURE = 1, /* Signature, detached from content */
|
|
NZTTCEF_SIGNATURE, /* Signature combined with content */
|
|
NZTTCEF_ENVELOPING, /* Signature and encryption with content */
|
|
NZTTCEF_PKENCRYPTION, /* Encryption for one or more recipients */
|
|
NZTTCEF_ENCRYPTION, /* Symmetric encryption */
|
|
NZTTCEF_KEYEDHASH, /* Keyed hash/checkusm */
|
|
NZTTCEF_HASH, /* Hash/checsum */
|
|
NZTTCEF_RANDOM, /* Random byte generation */
|
|
|
|
NZTTCEF_LAST /* Used for array size */
|
|
};
|
|
typedef enum nzttcef nzttcef;
|
|
|
|
/*
|
|
* State of the persona.
|
|
*/
|
|
enum nzttState
|
|
{
|
|
NZTTSTATE_EMPTY = 0, /* is not in any state(senseless???) */
|
|
NZTTSTATE_REQUESTED, /* cert-request */
|
|
NZTTSTATE_READY, /* certificate */
|
|
NZTTSTATE_INVALID, /* certificate */
|
|
NZTTSTATE_RENEWAL /* renewal-requested */
|
|
};
|
|
typedef enum nzttState nzttState;
|
|
|
|
/*
|
|
* Cert-version types
|
|
*
|
|
* This is used to quickly look-up the cert-type
|
|
*/
|
|
enum nzttVersion
|
|
{
|
|
NZTTVERSION_X509v1 = 1, /* X.509v1 */
|
|
NZTTVERSION_X509v3, /* X.509v3 */
|
|
#ifdef NZDEPRECATED
|
|
NZTTVERSION_SYMMETRIC, /* Symmetric */
|
|
#endif
|
|
NZTTVERSION_INVALID_TYPE /* For Initialization */
|
|
};
|
|
typedef enum nzttVersion nzttVersion;
|
|
|
|
/*
|
|
* Cipher Types
|
|
*
|
|
* List of all cryptographic algorithms, some of which may not be
|
|
* available.
|
|
*/
|
|
enum nzttCipherType
|
|
{
|
|
NZTTCIPHERTYPE_RSA = 1, /* RSA public key */
|
|
NZTTCIPHERTYPE_DES, /* DES */
|
|
NZTTCIPHERTYPE_RC4, /* RC4 */
|
|
NZTTCIPHERTYPE_MD5DES, /* DES encrypted MD5 with salt (PBE) */
|
|
NZTTCIPHERTYPE_MD5RC2, /* RC2 encrypted MD5 with salt (PBE) */
|
|
NZTTCIPHERTYPE_MD5, /* MD5 */
|
|
NZTTCIPHERTYPE_SHA /* SHA */
|
|
};
|
|
typedef enum nzttCipherType nzttCipherType;
|
|
|
|
/*
|
|
* TDU Formats
|
|
*
|
|
* List of possible toolkit data unit (TDU) formats. Depending on the
|
|
* function and cipher used some may be not be available.
|
|
*/
|
|
enum nztttdufmt
|
|
{
|
|
NZTTTDUFMT_PKCS7 = 1, /* PKCS7 format */
|
|
NZTTTDUFMT_RSAPAD, /* RSA padded format */
|
|
NZTTTDUFMT_ORACLEv1, /* Oracle v1 format */
|
|
NZTTTDUFMT_LAST /* Used for array size */
|
|
};
|
|
typedef enum nztttdufmt nztttdufmt;
|
|
|
|
/*
|
|
* Validate State
|
|
*
|
|
* Possible validation states an identity can be in.
|
|
*/
|
|
enum nzttValState
|
|
{
|
|
NZTTVALSTATE_NONE = 1, /* Needs to be validated */
|
|
NZTTVALSTATE_GOOD, /* Validated */
|
|
NZTTVALSTATE_REVOKED /* Failed to validate */
|
|
};
|
|
typedef enum nzttValState nzttValState;
|
|
|
|
/*
|
|
* Policy Fields <----NEW (09/14/98)
|
|
*
|
|
* Policies enforced
|
|
*/
|
|
enum nzttPolicy
|
|
{
|
|
NZTTPOLICY_NONE = 0,
|
|
NZTTPOLICY_RETRY_1, /* number of retries for decryption = 1 */
|
|
NZTTPOLICY_RETRY_2, /* number of retries for decryption = 2 */
|
|
NZTTPOLICY_RETRY_3 /* number of retries for decryption = 3 */
|
|
};
|
|
typedef enum nzttPolicy nzttPolicy;
|
|
|
|
/*
|
|
* Persona Usage <----NEW (09/14/98)
|
|
*
|
|
* what a persona will be used for?
|
|
*/
|
|
|
|
#ifdef NZDEPRECATED_MULTIPLECERTS
|
|
enum nzttUsage
|
|
{
|
|
NZTTUSAGE_NONE = 0,
|
|
NZTTUSAGE_SSL /* persona for SSL usage */
|
|
};
|
|
typedef enum nzttUsage nzttUsage;
|
|
#endif
|
|
|
|
/*
|
|
* Personas and identities have unique id's that are represented with
|
|
* 128 bits.
|
|
*/
|
|
typedef ub1 nzttID[16];
|
|
|
|
/*
|
|
* Identity Types
|
|
*
|
|
* List of all Identity types..
|
|
*/
|
|
enum nzttIdentType
|
|
{
|
|
NZTTIDENTITYTYPE_INVALID_TYPE = 0,
|
|
NZTTIDENTITYTYPE_CERTIFICTAE,
|
|
NZTTIDENTITYTYPE_CERT_REQ,
|
|
NZTTIDENTITYTYPE_RENEW_CERT_REQ,
|
|
NZTTIDENTITYTYPE_CLEAR_ETP,
|
|
NZTTIDENTITYTYPE_CLEAR_UTP,
|
|
NZTTIDENTITYTYPE_CLEAR_PTP
|
|
};
|
|
typedef enum nzttIdentType nzttIdentType;
|
|
|
|
typedef ub4 nzttKPUsage;
|
|
/* IF new types are added nztiMUS should be changed */
|
|
#define NZTTKPUSAGE_NONE 0
|
|
#define NZTTKPUSAGE_SSL 1 /* SSL Server */
|
|
#define NZTTKPUSAGE_SMIME_ENCR 2
|
|
#define NZTTKPUSAGE_SMIME_SIGN 4
|
|
#define NZTTKPUSAGE_CODE_SIGN 8
|
|
#define NZTTKPUSAGE_CERT_SIGN 16
|
|
#define NZTTKPUSAGE_SSL_CLIENT 32 /* SSL Client */
|
|
#define NZTTKPUSAGE_INVALID_USE 0xffff
|
|
|
|
|
|
/*
|
|
* Timestamp as 32 bit quantity in UTC.
|
|
*/
|
|
typedef ub1 nzttTStamp[4];
|
|
|
|
/*
|
|
* Buffer Block
|
|
*
|
|
* A function that needs to fill (and possibly grow) an output buffer
|
|
* uses an output parameter block to describe each buffer.
|
|
*
|
|
* The flags_nzttBufferBlock member tells the function whether the
|
|
* buffer can be grown or not. If flags_nzttBufferBlock is 0, then
|
|
* the buffer will be realloc'ed automatically.
|
|
*
|
|
* The buflen_nzttBufferBLock member is set to the length of the
|
|
* buffer before the function is called and will be the length of the
|
|
* buffer when the function is finished. If buflen_nzttBufferBlock is
|
|
* 0, then the initial pointer stored in pobj_nzttBufferBlock is
|
|
* ignored.
|
|
*
|
|
* The objlen_nzttBufferBlock member is set to the length of the
|
|
* object stored in the buffer when the function is finished. If the
|
|
* initial buffer had a non-0 length, then it is possible that the
|
|
* object length is shorter than the buffer length.
|
|
*
|
|
* The pobj_nzttBufferBlock member is a pointer to the output object.
|
|
*/
|
|
struct nzttBufferBlock
|
|
{
|
|
# define NZT_NO_AUTO_REALLOC 0x1
|
|
|
|
uword flags_nzttBufferBlock; /* Flags */
|
|
ub4 buflen_nzttBufferBlock; /* Total length of buffer */
|
|
ub4 usedlen_nzttBufferBlock; /* Length of used buffer part */
|
|
ub1 *buffer_nzttBufferBlock; /* Pointer to buffer */
|
|
};
|
|
typedef struct nzttBufferBlock nzttBufferBlock;
|
|
|
|
/*
|
|
* Wallet.
|
|
*/
|
|
struct nzttWallet
|
|
{
|
|
ub1 *ldapName_nzttWallet; /* user's LDAP Name */
|
|
ub4 ldapNamelen_nzttWallet; /* len of user's LDAP Name */
|
|
nzttPolicy securePolicy_nzttWallet; /* secured-policy of the wallet */
|
|
nzttPolicy openPolicy_nzttWallet; /* open-policy of the wallet */
|
|
nzttPersona *persona_nzttWallet; /* List of personas in wallet */
|
|
nzttWalletPrivate *private_nzttWallet; /* Private wallet information */
|
|
#ifdef NZDEPRECATED
|
|
ub4 npersona_nzttWallet; /* Number of personas */
|
|
#endif
|
|
};
|
|
|
|
/*
|
|
* The wallet contains, one or more personas. A persona always
|
|
* contains its private key and its identity. It may also contain
|
|
* other 3rd party identites. All identities qualified with trust
|
|
* where the qualifier can indicate anything from untrusted to trusted
|
|
* for specific operations.
|
|
*/
|
|
|
|
/*
|
|
* Persona
|
|
*
|
|
* Structure containing information about a persona.
|
|
*/
|
|
struct nzttPersona
|
|
{
|
|
ub1 *genericName_nzttPersona; /* user-friendly persona name */
|
|
ub4 genericNamelen_nzttPersona; /* persona-name length */
|
|
nzttPersonaPrivate *private_nzttPersona; /* Opaque part of persona */
|
|
nzttIdentity *mycertreqs_nzttPersona; /* My cert-requests */
|
|
nzttIdentity *mycerts_nzttPersona; /* My certificates */
|
|
nzttIdentity *mytps_nzttPersona; /* List of trusted identities */
|
|
nzssEntry *mystore_nzttPersona; /* List of secrets */
|
|
nzpkcs11_Info *mypkcs11Info_nzttPersona; /* PKCS11 token info */
|
|
struct nzttPersona *next_nzttPersona; /* Next persona */
|
|
#ifdef NZDEPRECATED_MULTIPLECERTS
|
|
/* As Persona has multiple certs for different
|
|
usages, Persona Usage does not mean anything. Similarly
|
|
each key pair has its own state and Persona state itself
|
|
does not mean anything. - lk 5/31/00
|
|
*/
|
|
nzttUsage usage_nzttPersona; /* persona usage; SSL/SET/.. */
|
|
nzttState state_nzttPersona; /* persona state-requested/ready */
|
|
ub4 ntps_nzttPersona; /* Num of trusted identities */
|
|
#endif
|
|
};
|
|
|
|
/*
|
|
* Identity
|
|
*
|
|
* Structure containing information about an identity.
|
|
*
|
|
* NOTE
|
|
* -- the next_trustpoint field only applies to trusted identities and
|
|
* has no meaning (i.e. is NULL) for self identities.
|
|
*/
|
|
struct nzttIdentity
|
|
{
|
|
text *dn_nzttIdentity; /* Alias */
|
|
ub4 dnlen_nzttIdentity; /* Length of alias */
|
|
text *comment_nzttIdentity; /* Comment */
|
|
ub4 commentlen_nzttIdentity; /* Length of comment */
|
|
nzttIdentityPrivate *private_nzttIdentity; /* Opaque part of identity */
|
|
nzttIdentity *next_nzttIdentity; /* next identity in list */
|
|
};
|
|
|
|
struct nzttB64Cert
|
|
{
|
|
ub1 *b64Cert_nzttB64Cert;
|
|
ub4 b64Certlen_nzttB64Cert;
|
|
struct nzttB64Cert *next_nzttB64Cert;
|
|
};
|
|
typedef struct nzttB64Cert nzttB64Cert;
|
|
|
|
|
|
struct nzttPKCS7ProtInfo
|
|
{
|
|
nzttCipherType mictype_nzttPKCS7ProtInfo; /* Hash cipher */
|
|
nzttCipherType symmtype_nzttPKCS7ProtInfo; /* Symmetric cipher */
|
|
ub4 keylen_nzttPKCS7ProtInfo; /* Length of key to use */
|
|
};
|
|
typedef struct nzttPKCS7ProtInfo nzttPKCS7ProtInfo;
|
|
|
|
/*
|
|
* Protection Information.
|
|
*
|
|
* Information specific to a type of protection.
|
|
*/
|
|
union nzttProtInfo
|
|
{
|
|
nzttPKCS7ProtInfo pkcs7_nzttProtInfo;
|
|
};
|
|
typedef union nzttProtInfo nzttProtInfo;
|
|
|
|
/*
|
|
* A description of a persona so that the toolkit can create one. A
|
|
* persona can be symmetric or asymmetric and both contain an
|
|
* identity. The identity for an asymmetric persona will be the
|
|
* certificate and the identity for the symmetric persona will be
|
|
* descriptive information about the persona. In either case, an
|
|
* identity will have been created before the persona is created.
|
|
*
|
|
* A persona can be stored separately from the wallet that references
|
|
* it. By default, a persona is stored with the wallet (it inherits
|
|
* with WRL used to open the wallet). If a WRL is specified, then it
|
|
* is used to store the actuall persona and the wallet will have a
|
|
* reference to it.
|
|
*/
|
|
struct nzttPersonaDesc
|
|
{
|
|
ub4 privlen_nzttPersonaDesc; /* Length of private info (key)*/
|
|
ub1 *priv_nzttPersonaDesc; /* Private information */
|
|
ub4 prllen_nzttPersonaDesc; /* Length of PRL */
|
|
text *prl_nzttPersonaDesc; /* PRL for storage */
|
|
ub4 aliaslen_nzttPersonaDesc; /* Length of alias */
|
|
text *alias_nzttPersonaDesc; /* Alias */
|
|
ub4 longlen_nzttPersonaDesc; /* Length of longer description*/
|
|
text *long_nzttPersonaDesc; /* Longer persona description */
|
|
};
|
|
typedef struct nzttPersonaDesc nzttPersonaDesc;
|
|
|
|
/*
|
|
* A description of an identity so that the toolkit can create one.
|
|
* Since an identity can be symmetric or asymmetric, the asymmetric
|
|
* identity information will not be used when a symmetric identity is
|
|
* created. This means the publen_nzttIdentityDesc and
|
|
* pub_nzttIdentityDesc members will not be used when creating a
|
|
* symmetric identity.
|
|
*/
|
|
struct nzttIdentityDesc
|
|
{
|
|
ub4 publen_nzttIdentityDesc; /* Length of identity */
|
|
ub1 *pub_nzttIdentityDesc; /* Type specific identity */
|
|
ub4 dnlen_nzttIdentityDesc; /* Length of alias */
|
|
text *dn_nzttIdentityDesc; /* Alias */
|
|
ub4 longlen_nzttIdentityDesc; /* Length of longer description */
|
|
text *long_nzttIdentityDesc; /* Longer description */
|
|
ub4 quallen_nzttIdentityDesc; /* Length of trust qualifier */
|
|
text *trustqual_nzttIdentityDesc; /* Trust qualifier */
|
|
};
|
|
typedef struct nzttIdentityDesc nzttIdentityDesc;
|
|
|
|
/********************************/
|
|
/* PUBLIC FUNCTION DECLARATIONS */
|
|
/********************************/
|
|
|
|
/*---------------------- nztwOpenWallet ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztwOpenWallet - Open a wallet based on a wallet Resource Locator (WRL).
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* wrllen {IN} Length of WRL.
|
|
* wrl {IN} WRL.
|
|
* pwdlen {IN} Length of password.
|
|
* pwd {IN} Password.
|
|
* wallet {IN/OUT} Initialized wallet structure.
|
|
*
|
|
* NOTES
|
|
* The syntax for a WRL is <Wallet Type>:<Wallet Type Parameters>.
|
|
*
|
|
* Wallet Type Wallet Type Parameters.
|
|
* ----------- ----------------------
|
|
* File Pathname (e.g. "file:/home/asriniva")
|
|
* Oracle Connect string (e.g. "oracle:scott/tiger@oss")
|
|
*
|
|
* There are also defaults. If the WRL is NZT_DEFAULT_WRL, then
|
|
* the platform specific WRL default is used. If only the wallet
|
|
* type is specified, then the WRL type specific default is used
|
|
* (e.g. "oracle:")
|
|
*
|
|
* There is an implication with Oracle that should be stated: An
|
|
* Oracle based wallet can be implemented in a user's private space
|
|
* or in world readable space.
|
|
*
|
|
* When the wallet is opened, the password is verified by hashing
|
|
* it and comparing against the password hash stored with the
|
|
* wallet. The list of personas (and their associated identities)
|
|
* is built and stored into the wallet structure.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_RIO_OPEN RIO could not open wallet (see network trace file).
|
|
* NZERROR_TK_PASSWORD Password verification failed.
|
|
* NZERROR_TK_WRLTYPE WRL type is not known.
|
|
* NZERROR_TK_WRLPARM WRL parm does not match type.
|
|
*/
|
|
nzerror nztwOpenWallet( nzctx *, ub4, text *, ub4, text *,
|
|
nzttWallet * );
|
|
|
|
|
|
/*---------------------- nztwCloseWallet ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztwCloseWallet - Close a wallet
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* wallet {IN/OUT} Wallet.
|
|
*
|
|
* NOTES
|
|
* Closing a wallet also closes all personas associated with that
|
|
* wallet. It does not cause a persona to automatically be saved
|
|
* if it has changed. The implication is that a persona can be
|
|
* modified by an application but if it is not explicitly saved it
|
|
* reverts back to what was in the wallet.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_RIO_CLOSE RIO could not close wallet (see network trace file).
|
|
*/
|
|
nzerror nztwCloseWallet( nzctx *, nzttWallet * );
|
|
|
|
/*--------------------nztwGetCertInfo----------------------------*/
|
|
/****NOTE: This function is a temporary hack.****/
|
|
/****DO NOT CALL. It will soon disappear.****/
|
|
nzerror nztwGetCertInfo( nzctx *nz_context,
|
|
nzosContext *nzosCtx,
|
|
nzttWallet *walletRef,
|
|
void *peerCert );
|
|
|
|
|
|
/*------------------------ nztwConstructWallet -----------------------*/
|
|
/*
|
|
*
|
|
* nzerror nztwConstructWallet( nzctx *oss_context,
|
|
* nzttPolicy openPolicy,
|
|
* nzttPolicy securePolicy,
|
|
* ub1 *ldapName,
|
|
* ub4 ldapNamelen,
|
|
* nzstrc *wrl,
|
|
* nzttPersona *personas,
|
|
* nzttWallet **wallet );
|
|
*/
|
|
|
|
/*---------------------- nztwRetrievePersonaCopy ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztwRetrievePersonaCopy - Retrieves a persona based from wallet
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* wallet {IN} Wallet.
|
|
* index {IN} Which wallet index to remove (first persona is zero).
|
|
* persona {OUT} Persona found.
|
|
*
|
|
* NOTES
|
|
* Retrieves a persona from the wallet based on the index number passed
|
|
* in. This persona is a COPY of the one stored in the wallet, therefore
|
|
* it is perfectly fine for the wallet to be closed after this call is
|
|
* made.
|
|
*
|
|
* The caller is responsible for disposing of the persona when completed.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztwRetrievePersonaCopy( nzctx *, nzttWallet *, ub4,
|
|
nzttPersona ** );
|
|
|
|
|
|
/*---------------------- nztwRetrievePersonaCopyByName ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztwRetrievePersonaCopyByName - Retrieves a persona based on its name.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* wallet {IN} Wallet.
|
|
* name {IN} Name of the persona
|
|
* persona {OUT} Persona found.
|
|
*
|
|
* NOTES
|
|
* Retrieves a persona from the wallet based on the name of the persona.
|
|
* This persona is a COPY of the one stored in the wallet, therefore
|
|
* it is perfectly fine for the wallet to be closed after this call is
|
|
* made.
|
|
*
|
|
* The caller is responsible for disposing of the persona when completed.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztwRetrievePersonaCopyByName( nzctx *, nzttWallet *, char *,
|
|
nzttPersona ** );
|
|
|
|
/*---------------------- nzteOpenPersona ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteOpenPersona - Open a persona.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN/OUT} Persona.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_PASSWORD Password failed to decrypt persona.
|
|
* NZERROR_TK_BADPRL Persona resource locator did not work.
|
|
* NZERROR_RIO_OPEN Could not open persona (see network trace file).
|
|
*/
|
|
nzerror nzteOpenPersona( nzctx *, nzttPersona * );
|
|
|
|
/*--------------------- nzteClosePersona ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteClosePersona - Close a persona.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN/OUT} Persona.
|
|
*
|
|
* NOTES
|
|
* Closing a persona does not store the persona, it simply releases
|
|
* the memory associated with the crypto engine.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nzteClosePersona( nzctx *, nzttPersona * );
|
|
|
|
/*--------------------- nzteDestroyPersona ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteDestroyPersona - Destroy a persona.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN/OUT} Persona.
|
|
*
|
|
* NOTES
|
|
* The persona is destroyd in the open state, but it will
|
|
* not be associated with a wallet.
|
|
*
|
|
* The persona parameter is doubly indirect so that at the
|
|
* conclusion of the function, the pointer can be set to NULL.
|
|
*
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_TYPE Unsupported itype/ctype combination.
|
|
* NZERROR_TK_PARMS Error in persona description.
|
|
*/
|
|
nzerror nzteDestroyPersona( nzctx *, nzttPersona ** );
|
|
|
|
/*---------------------- nzteRetrieveTrustedIdentCopy ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteRetrieveTrustedIdentCopy - Retrieves a trusted identity from persona
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* index {IN} Which wallet index to remove (first element is zero).
|
|
* identity {OUT} Trusted Identity from this persona.
|
|
*
|
|
* NOTES
|
|
* Retrieves a trusted identity from the persona based on the index
|
|
* number passed in. This identity is a COPY of the one stored in
|
|
* the persona, therefore it is perfectly fine to close the persona
|
|
* after this call is made.
|
|
*
|
|
* The caller is responsible for freeing the memory of this object
|
|
* by calling nztiAbortIdentity it is no longer needed
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nzteRetrieveTrustedIdentCopy( nzctx *, nzttPersona *, ub4,
|
|
nzttIdentity ** );
|
|
|
|
/*--------------------- nztePriKey ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztePriKey - Get the decrypted Private Key for the Persona
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* vkey {OUT} Private Key [B_KEY_OBJ]
|
|
* vkey_len {OUT} Private Key Length
|
|
*
|
|
* NOTES
|
|
* This funiction will only work for X.509 based persona which contain
|
|
* a private key.
|
|
* A copy of the private key is returned to the caller so that they do not
|
|
* have to worry about the key changeing "underneath them".
|
|
* Memory will be allocated for the vkey and therefore, the CALLER
|
|
* will be responsible for freeing this memory.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_NO_MEMORY ossctx is null.
|
|
* NZERROR_TK_BADPRL Persona resource locator did not work.
|
|
*/
|
|
nzerror nztePriKey( nzctx *, nzttPersona *, ub1 **, ub4 * );
|
|
|
|
/*--------------------- nzteMyCert ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteMyCert - Get the X.509 Certificate for a persona
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* cert {OUT} X.509 Certificate [BER encoded]
|
|
* cert_len {OUT} Certificate length
|
|
*
|
|
* NOTES
|
|
* This funiction will only work for X.509 based persona which contain
|
|
* a certificate for the self identity.
|
|
* A copy of the certificate is returned to the caller so that they do not
|
|
* have to worry about the certificate changeing "underneath them".
|
|
* Memory will be allocated for the cert and therefore, the CALLER
|
|
* will be responsible for freeing this memory.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_NO_MEMORY ossctx is null.
|
|
*/
|
|
nzerror nzteMyCert( nzctx *, nzttPersona *, ub1 **, ub4 * );
|
|
|
|
/*--------------------- nzteX509CreatePersona ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteX509CreatePersona - Given a BER X.509 cert, create a persona
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* cert {IN} X.509 Certificate [BER encoded]
|
|
* cert_len {IN} Certificate length
|
|
* persona {OUT} Persona.
|
|
*
|
|
* NOTES
|
|
* Memory will be allocated for the persona and therefore, the CALLER
|
|
* will be responsible for freeing this memory.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_NO_MEMORY ossctx is null.
|
|
*/
|
|
nzerror nzteX509CreatePersona( nzctx *, ub1 *, ub4, nzttPersona ** );
|
|
|
|
/*-------------------- nztiCreateIdentity --------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiCreateIdentity - Create an identity.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* itype {IN} Identity type.
|
|
* desc {IN} Description of identity.
|
|
* identity {IN/OUT} Identity.
|
|
*
|
|
* NOTES
|
|
* Memory is only allocated for the identity structure. The elements in
|
|
* the description struct are not copied. Rather their pointers are copied
|
|
* into the identity structure. Therefore, the caller should not free
|
|
* the elements referenced by the desc. These elements will be freed
|
|
* when the nztiDestroyIdentity is called.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_PARMS Error in description.
|
|
*/
|
|
nzerror nztiCreateIdentity( nzctx *, nzttVersion, nzttIdentityDesc *,
|
|
nzttIdentity ** );
|
|
|
|
#ifdef NZ_OLD_TOOLS
|
|
/*-------------------- nztiDuplicateIdentity --------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiDuplicateIdentity - Duplicate an identity.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* identity {IN} Target Identity.
|
|
* new_identity {IN} New Identity.
|
|
*
|
|
* NOTES
|
|
* Memory for the identity is allocated inside the function, and all
|
|
* internal identity elements as well.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTFOUND Identity not found.
|
|
* NZERROR_PARMS Error in description.
|
|
*/
|
|
nzerror nztiDuplicateIdentity( nzctx *, nzttIdentity *,
|
|
nzttIdentity ** );
|
|
#endif /* NZ_OLD_TOOLS */
|
|
|
|
/*--------------------- nztiAbortIdentity ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiAbortIdentity - Abort an unassociated identity.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* identity {IN/OUT} Identity.
|
|
*
|
|
* NOTES
|
|
* It is an error to try to abort an identity that can be
|
|
* referenced through a persona.
|
|
*
|
|
* The identity pointer is set to NULL at the conclusion.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_CANTABORT Identity is associated with persona.
|
|
*/
|
|
nzerror nztiAbortIdentity( nzctx *, nzttIdentity ** );
|
|
|
|
#ifdef NZ_OLD_TOOLS
|
|
/*----------------- nztidGetIdentityDesc -----------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztidGetIdentityDesc - Gets an Identity Description from the identity
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} Success.
|
|
* identity {IN} Identity.
|
|
* description {IN/OUT} Identity Description.
|
|
*
|
|
* NOTES
|
|
* Memory is allocated for the Identity Description. It
|
|
* is the callers responsibility to free this memory by calling
|
|
* nztiFreeIdentityDesc.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztidGetIdentityDesc( nzctx *, nzttIdentity *,
|
|
nzttIdentityDesc ** );
|
|
|
|
/*----------------- nztidFreeIdentityDesc -----------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztidFreeIdentityDesc - Frees memory for Identity Desc object.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} oss context.
|
|
* description {IN/OUT} Identity Description.
|
|
*
|
|
* NOTES
|
|
* Memory is freed for all Identity description elements. Pointer is
|
|
* then set to null.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztidFreeIdentityDesc( nzctx *, nzttIdentityDesc ** );
|
|
#endif /* NZ_OLD_TOOLS */
|
|
|
|
/*---------------- nztific_FreeIdentityContent ----------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztific_FreeIdentityContent - free the contents of an identity.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* identity {IN/OUT} freed identity
|
|
*
|
|
* NOTES
|
|
* Free a created identity.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
/*
|
|
* Free the identity content.
|
|
*/
|
|
nzerror nztific_FreeIdentityContent( nzctx *ossctx,
|
|
nzttIdentity *identity );
|
|
|
|
|
|
/*-------------------------- nztSign --------------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztSign - Create an attached signature.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Open persona acting as signer.
|
|
* state {IN} State of signature.
|
|
* inlen {IN} Length of this input part.
|
|
* in {IN} This input part.
|
|
* tdubuf {IN/OUT} TDU buffer.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow output buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztSign( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock * );
|
|
|
|
/*------------------------- nztVerify -------------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztVerify - Verify an attached signature.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* state {IN} State of verification.
|
|
* intdulen {IN} TDU length.
|
|
* intdu {IN} TDU.
|
|
* out {IN/OUT} Extracted message.
|
|
* verified {OUT} TRUE if signature verified.
|
|
* validated{OUT} TRUE if signing identity validated.
|
|
* identity {OUT} Identity of signing party.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow outptu buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztVerify( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock *, boolean *, boolean *,
|
|
nzttIdentity ** );
|
|
|
|
/*------------------------ nztValidate ------------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztValidate - Validate an identity.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* identity {IN} Identity.
|
|
* validated{OUT} TRUE if identity was validated.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztValidate( nzctx *, nzttPersona *, nzttIdentity *, boolean * );
|
|
|
|
/*-------------------- nztsd_SignDetached --------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztsd_SignDetached - Generate a detached signature.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* state {IN} State of signature.
|
|
* inlen {IN} Length of this input part.
|
|
* in {IN} This input part.
|
|
* tdubuf {IN/OUT} TDU buffer.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow output buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztsd_SignDetached( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock * );
|
|
|
|
/*------------------- nztved_VerifyDetached -------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztved_VerifyDetached - Verify a detached signature.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* state {IN} State of verification.
|
|
* inlen {IN} Length of data.
|
|
* in {IN} Data.
|
|
* intdulen {IN} Input TDU length.
|
|
* tdu {IN} Input TDU.
|
|
* verified {OUT} TRUE if signature verified.
|
|
* validated{OUT} TRUE if signing identity validated.
|
|
* identity {OUT} Identity of signing party.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztved_VerifyDetached( nzctx *, nzttPersona *, nzttces, ub4,
|
|
ub1 *, ub4, ub1 *, boolean *, boolean *,
|
|
nzttIdentity ** );
|
|
|
|
/*--------------------- nztkec_PKEncrypt ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztkec_PKEncrypt - Encrypt data symmetrically, encrypt key asymmetrically
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* nrecipients {IN} Number of recipients for this encryption.
|
|
* recipients {IN} List of recipients.
|
|
* state {IN} State of encryption.
|
|
* inlen {IN} Length of this input part.
|
|
* in {IN} This input part.
|
|
* tdubuf {IN/OUT} TDU buffer.
|
|
*
|
|
* NOTES
|
|
* There is a limitation of 1 recipient (nrecipients = 1) at this
|
|
* time.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow output buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztkec_PKEncrypt( nzctx *, nzttPersona *, ub4, nzttIdentity *,
|
|
nzttces, ub4, ub1 *, nzttBufferBlock * );
|
|
|
|
/*---------------- nztxkec_PKEncryptExpansion ----------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztxkec_PKEncryptExpansion - Determine the buffer needed for PKEncrypt
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* nrecipients {IN} Number of recipients.
|
|
* inlen {IN} Length of input.
|
|
* tdulen {out} Length of buffer need.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztxkec_PKEncryptExpansion( nzctx *, nzttPersona *, ub4, ub4,
|
|
ub4 * );
|
|
|
|
/*--------------------- nztkdc_PKDecrypt ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztkdc_PKDecrypt - Decrypt a PKEncrypted message.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* state {IN} State of encryption.
|
|
* inlen {IN} Length of this input part.
|
|
* in {IN} This input part.
|
|
* tdubuf {IN/OUT} TDU buffer.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow output buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztkdc_PKDecrypt( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock * );
|
|
|
|
/*-------------------------- nztHash --------------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztHash - Generate a hash.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* state {IN} State of hash.
|
|
* inlen {IN} Length of this input.
|
|
* in {IN} This input.
|
|
* tdu {IN/OUT} Output tdu.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztHash( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock * );
|
|
|
|
/*----------------------- nztSeedRandom -----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztSeedRandom - Seed the random function
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* seedlen {IN} Length of seed.
|
|
* seed {IN} Seed.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztSeedRandom( nzctx *, nzttPersona *, ub4, ub1 * );
|
|
|
|
/*--------------------- nztrb_RandomBytes ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztrb_RandomBytes - Generate a buffer random bytes.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* nbytes {IN} Number of bytes desired.
|
|
* out {IN/OUT} Buffer block for bytes.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztrb_RandomBytes( nzctx *, nzttPersona *, ub4,
|
|
nzttBufferBlock * );
|
|
|
|
/*-------------------- nztrn_RandomNumber --------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztrn_RandomNumber - Generate a random number
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* num {OUT} Number.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztrn_RandomNumber( nzctx *, nzttPersona *, uword * );
|
|
|
|
/*---------------------- nztbbInitBlock ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztbbInitBlock - Initialize a buffer block.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* block {IN/OUT} Buffer block.
|
|
*
|
|
* NOTES
|
|
* The buffer block is initialized to be empty (all members are set
|
|
* to 0/NULL). Such a block will be allocated memory as needed.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztbbInitBlock( nzctx *, nzttBufferBlock * );
|
|
|
|
/*---------------------- nztbbReuseBlock ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztbbReuseBlock - Reuse an already initialized and possibly used block.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* block {IN/OUT} Buffer block.
|
|
*
|
|
* NOTES
|
|
* This function simply sets the used length member of the buffer
|
|
* block to 0. If the block already has memory allocated to it,
|
|
* this will cause it to be reused.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztbbReuseBlock( nzctx *, nzttBufferBlock * );
|
|
|
|
/*---------------------- nztbbSizeBlock ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztbbSizeBlock - Size an initialized block to a particular size.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* len {IN} Minimum number of unused bytes desired.
|
|
* block {IN/OUT} Buffer block.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztbbSizeBlock( nzctx *, ub4, nzttBufferBlock * );
|
|
|
|
/*----------------------- nztbbGrowBlock -----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzbbGrowBlock - Increase the size of the buffer block.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* inc {IN} Number of bytes to increase.
|
|
* block {IN/OUT} Buffer block.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztbbGrowBlock( nzctx *, ub4, nzttBufferBlock * );
|
|
|
|
/*---------------------- nztbbPurgeBlock ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztbbPurgeBlock - Purge a buffer block of its memory.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* block {IN/OUT} Buffer block.
|
|
*
|
|
* NOTES
|
|
* The memory used by the buffer block as the buffer is released.
|
|
* The buffer block itself is not affected.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztbbPurgeBlock( nzctx *, nzttBufferBlock * );
|
|
|
|
/*----------------------- nztbbSetBlock -----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztbbSetBlock - Set a buffer block to a known state.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* flags {IN} Flags to set.
|
|
* buflen {IN} Length of buffer.
|
|
* usedlen {IN} Used length.
|
|
* buffer {IN} Buffer.
|
|
* block {IN/OUT} Buffer block
|
|
*
|
|
* NOTES
|
|
* If buflen > 0, objlen == 0, and obj == NULL, then buflen bytes
|
|
* of memory is allocated and a pointer is stored in the buffer
|
|
* block.
|
|
*
|
|
* The buffer parameter remains unchanged.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztbbSetBlock( nzctx *, uword, ub4, ub4, ub1 *,
|
|
nzttBufferBlock * );
|
|
|
|
|
|
/*--------------------- nztiGetSecInfo ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiGetSecInfo - Get some security information for SSL
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} persona
|
|
* dname {OUT} distinguished name of the certificate
|
|
* dnamelen {OUT} length of the distinguished name
|
|
* issuername {OUT} issuer name of the certificate
|
|
* certhash {OUT} SHA1 hash of the certificate
|
|
* certhashlen{OUT} length of the hash
|
|
* NOTES
|
|
* This function allocate memories for issuername, certhash, and dname.
|
|
* To deallocate memory for those params, you should call nztdbuf_DestroyBuf.
|
|
* RETURNS
|
|
*
|
|
*/
|
|
nzerror nztiGetSecInfo( nzctx *, nzttPersona *, text **, ub4 *,
|
|
text **, ub4 *, ub1 **, ub4 * );
|
|
|
|
|
|
/*---------------------- nztiGetDName ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiGetDName - Get the distinguished name for the given identity
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* identity {IN} identity need to get dname from
|
|
* dn {OUT} distinguished name
|
|
* dnlen {OUT} length of the dname
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
*
|
|
*/
|
|
|
|
nzerror nztiGetDName( nzctx *, nzttIdentity *,
|
|
text **, ub4 * );
|
|
|
|
/*------------------- nztiGetIssuerName -------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiGetIssuerName - Get IssuerName for the given identity
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* identity {IN} identity need to get issuername from
|
|
* issuername {OUT} issuer's name
|
|
* issuernamelen {OUT} length of the issuer's name
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
*
|
|
*/
|
|
nzerror nztiGetIssuerName( nzctx *, nzttIdentity *,
|
|
text **, ub4 * );
|
|
|
|
|
|
/*-------------------- nztgch_GetCertHash --------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztgch_GetCertHash - Get SHA1 hash for the certificate of the identity
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* identity {IN} identity need to get issuername from
|
|
* certHash {OUT} certHash buffer
|
|
* hashLen {OUT} length of the certHash
|
|
*
|
|
* NOTES
|
|
* Need to call nztdbuf_DestroyBuf to deallocate memory for certHash.
|
|
* RETURNS
|
|
*
|
|
*/
|
|
nzerror nztgch_GetCertHash( nzctx *, nzttIdentity *,
|
|
ub1 **, ub4 * );
|
|
|
|
/*-------------------- nztdbuf_DestroyBuf --------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztdbuf_DestroyBuf - Deallocation funtions for ub1 and text buffer
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* buf {IN} Allocated buffer to be destroyed.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
*
|
|
*/
|
|
nzerror nztdbuf_DestroyBuf( nzctx *, void ** );
|
|
|
|
|
|
/*----------------------- nztGetCertChain -----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztGetCertChain -
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
*
|
|
*/
|
|
nzerror nztGetCertChain( nzctx *, nzttWallet * );
|
|
|
|
/*----------------------- nztCompareDN -----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztCompareDN -
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* dn1 {IN} distinguished name 1
|
|
* dn2 {IN} distinguished name 2
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK succeeded
|
|
* others failed
|
|
*
|
|
*/
|
|
nzerror nztCompareDN( nzctx *, ub1 *,ub4 , ub1 *, ub4, boolean * );
|
|
|
|
|
|
#ifdef NZ_OLD_TOOLS
|
|
/*--------------------- nztIdentityAlloc ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztIdentityAlloc - Allocate memory for nzttIdentity context
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* identity {OUT} nzttIdentity context
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK succeeded
|
|
* others failed
|
|
*
|
|
*/
|
|
nzerror nztIdentityAlloc( nzctx *, nzttIdentity ** );
|
|
|
|
/*--------------------- nztIPrivateAlloc ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztIPrivateAlloc - Allocate memory for nzttIdentityPrivate
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
*
|
|
* osscntxt {IN} OSS context.
|
|
* ipriv {OUT} identityPrivate structure
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK succeeded
|
|
* others failed
|
|
*
|
|
*/
|
|
|
|
nzerror nztIPrivateAlloc( nzctx *, nzttIdentityPrivate **);
|
|
|
|
|
|
/*---------------------- nztIDupContent ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztIDupContent -
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* targetIdentity{OUT} target identity
|
|
* sourceIdentity {IN} source identity
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK succeeded
|
|
* others failed
|
|
*
|
|
*/
|
|
|
|
nzerror nztIDupContent( nzctx *, nzttIdentity *, nzttIdentity * );
|
|
/*---------------------- nztIPDuplicate ----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztIPDuplicate -
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* target_ipriv {OUT} target identityPrivate
|
|
* source_ipriv {IN} source identityPrivate
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK succeeded
|
|
* others failed
|
|
*
|
|
*/
|
|
nzerror nztIPDuplicate( nzctx *, nzttIdentityPrivate **,
|
|
nzttIdentityPrivate * );
|
|
|
|
/*--------------------- nztiDupIdentList ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiDupIdentList -
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* source_identities {IN} source identity list
|
|
* numIdent {OUT} number of identity in the list
|
|
* ppidentity {OUT} Target of identity
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK succeeded
|
|
* others failed
|
|
*
|
|
*/
|
|
nzerror nztiDupIdentList( nzctx *, nzttIdentity *, ub4 *,
|
|
nzttIdentity ** );
|
|
|
|
/*--------------------- nztFreeIdentList ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztFreeIdentList - Free memory for a list of Identities
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* identity {IN} identity context
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK succeeded
|
|
* others failed
|
|
*
|
|
*/
|
|
nzerror nztFreeIdentList( nzctx *, nzttIdentity ** );
|
|
#endif /* NZ_OLD_TOOLS */
|
|
|
|
/*--------------------- nztCheckVaLidity ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztCheckVaLidity - Check the validity of certificate
|
|
*
|
|
* PARAMETERS
|
|
* Name {IN/OUT} Description
|
|
* osscntxt {IN} OSS context.
|
|
* start_time Start time of the certificate
|
|
* end_time End time of the certificate
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK succeeded
|
|
* others failed
|
|
*
|
|
*/
|
|
nzerror nztCheckValidity( nzctx *, ub4 , ub4 );
|
|
|
|
/*--------------------- nztwCreateWallet ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztwCreateWallet - Create a new wallet.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* wrllen {IN} Length of wallet resource locator.
|
|
* wrl {IN} WRL.
|
|
* pwdlen {IN} Length of password (see notes below).
|
|
* pwd {IN} Password.
|
|
* wallet {IN/OUT} Wallet.
|
|
*
|
|
* NOTES
|
|
* It is an error to try to create a wallet that already exists.
|
|
* The previously existing wallet must be destroyed first.
|
|
*
|
|
* The wallet itself is not encrypted. Rather, all the personas in
|
|
* the wallet are encrypted under the same password. A hash of the
|
|
* password is stored in the wallet.
|
|
*
|
|
* Upon success, an empty open wallet is stored in the wallet
|
|
* parameter.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Sucess.
|
|
* NZERROR_TK_WALLET_EXISTS Wallet already exists.
|
|
* NZERROR_RIO_OPEN RIO could not create wallet (see trace file).
|
|
*/
|
|
nzerror nztwCreateWallet( nzctx *, ub4, text *, ub4, text *,
|
|
nzttWallet * );
|
|
|
|
|
|
/*--------------------- nztwDestroyWallet ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztwDestroyWallet - Destroy an existing wallet.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* wrllen {IN} Length of wallet resource locator.
|
|
* wrl {IN} WRL.
|
|
* pwdlen {IN} Length of password.
|
|
* pwd {IN} Password.
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_PASSWORD Password verification failed.
|
|
* NZERROR_RIO_OPEN RIO could not open wallet (see trace file).
|
|
* NZERROR_RIO_DELETE Delete failed (see trace file).
|
|
*/
|
|
nzerror nztwDestroyWallet( nzctx *, ub4, text *, ub4, text * );
|
|
|
|
/*--------------------- nzteStorePersona ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteStorePersona - Store an open persona in a wallet.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN/OUT} Persona.
|
|
* wallet {IN/OUT} Wallet.
|
|
*
|
|
* NOTES
|
|
* If the open persona is not associated with any wallet (it was
|
|
* created via the nzteClosePersona function), then storing the
|
|
* persona creates that association. The wallet will also have an
|
|
* updated persona list that reflects this association.
|
|
*
|
|
* If the open persona was associated with wallet 'A' (it was
|
|
* opened via the nztwOpenWallet function), and is stored back into
|
|
* wallet 'A', then then the old persona is overwritten by the new
|
|
* persona if the password can be verified. Recall that all
|
|
* personas have a unique identity id. If that id changes then
|
|
* storing the persona will put a new persona in the wallet.
|
|
*
|
|
* If the open persona was associated with wallet 'A' and is stored
|
|
* into wallet 'B', and if wallet 'B' does not contain a persona
|
|
* with that unique identity id, then the persona will be copied
|
|
* into wallet 'B', wallet 'B''s persona list will be updated, and
|
|
* the persona structure will be updated to be associated with
|
|
* wallet 'B'. If wallet 'B' already contained the persona, it
|
|
* would be overwritten by the new persona.
|
|
*
|
|
* The persona parameter is doubly indirect so that at the
|
|
* conclusion of the function call, the pointer can be directed to
|
|
* the persona in the wallet.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_PASSWORD Password verification failed.
|
|
* NZERROR_RIO_STORE Store failed (see network trace file).
|
|
*/
|
|
nzerror nzteStorePersona( nzctx *, nzttPersona **, nzttWallet * );
|
|
|
|
/*--------------------- nzteRemovePersona ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteRemovePersona - Remove a persona from the wallet.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN/OUT} Persona.
|
|
*
|
|
* NOTES
|
|
* The password is verified before trying to remove the persona.
|
|
*
|
|
* If the persona is open, it is closed. The persona is removed
|
|
* from the wallet list and the persona pointer is set to NULL.
|
|
*
|
|
* A double indirect pointer to the persona is required so that the
|
|
* persona pointer can be set to NULL upon completion.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_PASSWORD Password verification failed.
|
|
* NZERROR_RIO_DELETE Delete failed.
|
|
*/
|
|
nzerror nzteRemovePersona( nzctx *, nzttPersona ** );
|
|
|
|
/*--------------------- nzteCreatePersona ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteCreatePersona - Create a persona.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* itype {IN} Identity type.
|
|
* ctype {IN} Cipher type.
|
|
* desc {IN} Persona description.
|
|
* persona {OUT} Persona.
|
|
*
|
|
* NOTES
|
|
* The resulting persona is created in the open state, but it will
|
|
* not be associated with a wallet.
|
|
*
|
|
* The memory for the persona is allocated by the function.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_TYPE Unsupported itype/ctype combination.
|
|
* NZERROR_TK_PARMS Error in persona description.
|
|
*/
|
|
nzerror nzteCreatePersona( nzctx *, nzttVersion, nzttCipherType,
|
|
nzttPersonaDesc *, nzttPersona ** );
|
|
|
|
|
|
/*----------------- nztiStoreTrustedIdentity -----------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiStoreTrustedIdentity - Store an identity into a persona.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} Success.
|
|
* identity {IN/OUT} Trusted Identity.
|
|
* persona {IN/OUT} Persona.
|
|
*
|
|
* NOTES
|
|
* The identity is not saved with the persona in the wallet until
|
|
* the persona is stored.
|
|
*
|
|
* The identity parameter is double indirect so that it can point
|
|
* into the persona at the conclusion of the call.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztiStoreTrustedIdentity( nzctx *, nzttIdentity **,
|
|
nzttPersona * );
|
|
|
|
/*--------------------- nzteSetProtection ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteSetProtection - Set the protection type for a CE function.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN/OUT} Persona.
|
|
* func {IN} CE function.
|
|
* tdufmt {IN} TDU Format.
|
|
* protinfo {IN} Protection information specific to this format.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_PROTECTION Unsupported protection.
|
|
* NZERROR_TK_PARMS Error in protection info.
|
|
*/
|
|
nzerror nzteSetProtection( nzctx *, nzttPersona *, nzttcef, nztttdufmt,
|
|
nzttProtInfo * );
|
|
|
|
/*--------------------- nzteGetProtection ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nzteGetProtection - Get the protection type for a CE function.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* func {IN} CE function.
|
|
* tdufmt {OUT} TDU format.
|
|
* protinfo {OUT} Protection information.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nzteGetProtection( nzctx *, nzttPersona *, nzttcef, nztttdufmt *,
|
|
nzttProtInfo * );
|
|
|
|
/*-------------------- nztiRemoveIdentity --------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiRemoveIdentity - Remove an identity from an open persona.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* identity {IN/OUT} Identity.
|
|
*
|
|
* NOTES
|
|
* If the persona is not stored, this identity will still be in the
|
|
* persona stored in the wallet.
|
|
*
|
|
* The identity parameter is doubly indirect so that at the
|
|
* conclusion of the function, the pointer can be set to NULL.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTFOUND Identity not found.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
*/
|
|
nzerror nztiRemoveIdentity( nzctx *, nzttIdentity ** );
|
|
|
|
/*----------------- nztifdn -----------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztifdn - create an Identity From a Distinguished Name
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* length {IN} Length of the distinguished name
|
|
* distinguished_name {IN} distinguished name string
|
|
* ppidentity {OUT} created identity
|
|
*
|
|
* NOTES
|
|
* Given a distinguished name, return the identity that corresponds to it.
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
*/
|
|
nzerror nztifdn( nzctx *ossctx,
|
|
ub4 length,
|
|
text *distinguished_name,
|
|
nzttIdentity **ppidentity );
|
|
|
|
/*--------------------- nztxSignExpansion ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztxSignExpansion - Determine the size of the attached signature buffer.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* inlen {IN} Length of input.
|
|
* tdulen {OUT} Buffer needed for signature.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztxSignExpansion( nzctx *, nzttPersona *, ub4, ub4 * );
|
|
|
|
/*--------------- nztxsd_SignDetachedExpansion ---------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztxsd_SignDetachedExpansion - Determine the size of buffer needed.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* inlen {IN} Length of input.
|
|
* tdulen {OUT} Buffer needed for signature.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztxsd_SignDetachedExpansion( nzctx *, nzttPersona *, ub4,
|
|
ub4 * );
|
|
|
|
/*------------------------ nztEncrypt ------------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztEncrypt - Symmetrically encrypt
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* inlen {IN} Length of this input part.
|
|
* in {IN} This input part.
|
|
* tdubuf {IN/OUT} TDU buffer.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztEncrypt( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock * );
|
|
|
|
/*------------------- nztxEncryptExpansion -------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztxEncryptExpansion - Determine the size of the TDU to encrypt.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* inlen {IN} Length of this input part.
|
|
* tdulen {OUT} Length of TDU.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztxEncryptExpansion( nzctx *, nzttPersona *, ub4, ub4 * );
|
|
|
|
/*------------------------ nztDecrypt ------------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztDecrypt - Decrypt an Encrypted message.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* state {IN} State of decryption.
|
|
* inlen {IN} Length of this input part.
|
|
* in {IN} This input part.
|
|
* out {IN/OUT} Cleartext message.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztDecrypt( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock * );
|
|
|
|
/*------------------------ nztEnvelope ------------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztEnvelope - Sign and PKEncrypt a message.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* nrecipients {IN} Number of recipients for this encryption.
|
|
* recipients {IN} List of recipients.
|
|
* state {IN} State of encryption.
|
|
* inlen {IN} Length of this input part.
|
|
* in {IN} This input part.
|
|
* tdubuf {IN/OUT} TDU buffer.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow output buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztEnvelope( nzctx *, nzttPersona *, ub4, nzttIdentity *,
|
|
nzttces, ub4, ub1 *, nzttBufferBlock * );
|
|
|
|
/*----------------------- nztDeEnvelope -----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztDeEnvelope - PKDecrypt and verify a message.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* state {IN} State of encryption.
|
|
* inlen {IN} Length of this input part.
|
|
* in {IN} This input part.
|
|
* out {OUT} Message from TDU.
|
|
* verified {OUT} TRUE if verified.
|
|
* validated {OUT} TRUE if validated.
|
|
* sender {OUT} Identity of sender.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztDeEnvelope( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock *, boolean *, boolean *,
|
|
nzttIdentity ** );
|
|
|
|
/*----------------------- nztKeyedHash -----------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztKeyedHash - Generate a keyed hash.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* state {IN} State of hash.
|
|
* inlen {IN} Length of this input.
|
|
* in {IN} This input.
|
|
* tdu {IN/OUT} Output tdu.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_CANTGROW Needed to grow TDU buffer but could not.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztKeyedHash( nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
|
|
nzttBufferBlock * );
|
|
|
|
/*------------------ nztxKeyedHashExpansion ------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztxKeyedHashExpansion - Determine the space needed for a keyed hash.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* inlen {IN} Length of this input.
|
|
* tdulen {OUT} TDU length.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztxKeyedHashExpansion( nzctx *, nzttPersona *, ub4,
|
|
ub4 * );
|
|
|
|
/*--------------------- nztxHashExpansion ---------------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztxHashExpansion - Determine the size of the TDU for a hash.
|
|
*
|
|
* PARAMETERS
|
|
* osscntxt {IN} OSS context.
|
|
* persona {IN} Persona.
|
|
* inlen {IN} Length of this input.
|
|
* tdulen {OUT} TDU length.
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK Success.
|
|
* NZERROR_TK_NOTOPEN Persona is not open.
|
|
* NZERROR_TK_NOTSUPP Function not supported with persona.
|
|
*/
|
|
nzerror nztxHashExpansion( nzctx *, nzttPersona *, ub4, ub4 * );
|
|
|
|
/*---------------- nztiae_IsAuthEnabled ----------------*/
|
|
|
|
/*
|
|
* NAME
|
|
* nztiae_IsAuthEnabled - Checks to see if Authentication is Enabled
|
|
* in the current Cipher Spec.
|
|
*
|
|
* PARAMETERS
|
|
* ctx {IN} Oracle SSL Context
|
|
* ncipher {IN} CipherSuite
|
|
* authEnabled {OUT} Boolean for is Auth Enabled?
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK on success.
|
|
* NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized.
|
|
*/
|
|
|
|
nzerror nztiae_IsAuthEnabled( nzctx *ctx,
|
|
ub2 ncipher,
|
|
boolean *authEnabled );
|
|
|
|
/*---------------- nztiee_IsEncrEnabled ----------------*/
|
|
/*
|
|
* NAME
|
|
* nztiee_IsEncrEnabled - Checks to see if Encryption is Enabled
|
|
* in the current Cipher Spec.
|
|
*
|
|
* PARAMETERS
|
|
* ctx {IN} Oracle SSL Context
|
|
* ncipher {IN} CipherSuite
|
|
* EncrEnabled {OUT} Boolean for is Auth Enabled?
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK on success.
|
|
* NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized.
|
|
*/
|
|
|
|
nzerror nztiee_IsEncrEnabled( nzctx *ctx,
|
|
ub2 ncipher,
|
|
boolean *EncrEnabled );
|
|
|
|
/*---------------- nztihe_IsHashEnabled ----------------*/
|
|
/*
|
|
* NAME
|
|
* nztihe_IsHashEnabled - Checks to see if HAshing is Enabled
|
|
* in the current Cipher Spec.
|
|
*
|
|
* PARAMETERS
|
|
* ctx {IN} Oracle SSL Context
|
|
* ncipher {IN} CipherSuite
|
|
* hashEnabled {OUT} Boolean for is Auth Enabled?
|
|
*
|
|
* NOTES
|
|
*
|
|
* RETURNS
|
|
* NZERROR_OK on success.
|
|
* NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized.
|
|
*/
|
|
|
|
nzerror nztihe_IsHashEnabled( nzctx *ctx,
|
|
ub2 ncipher,
|
|
boolean *hashEnabled );
|
|
|
|
/*
|
|
*
|
|
*/
|
|
|
|
nzerror nztGetIssuerName( nzctx *ctx,
|
|
nzttIdentity *identity,
|
|
ub1 **issuername,
|
|
ub4 *issuernamelen );
|
|
|
|
nzerror nztGetSubjectName( nzctx *ctx,
|
|
nzttIdentity *identity,
|
|
ub1 **subjectname,
|
|
ub4 *subjectnamelen );
|
|
|
|
nzerror nztGetBase64Cert( nzctx *ctx,
|
|
nzttIdentity *identity,
|
|
ub1 **b64cert,
|
|
ub4 *b64certlen );
|
|
|
|
nzerror nztGetSerialNumber( nzctx *ctx,
|
|
nzttIdentity *identity,
|
|
ub1 **serialnum,
|
|
ub4 *serialnumlen );
|
|
|
|
nzerror nztGetValidDate( nzctx *ctx,
|
|
nzttIdentity *identity,
|
|
ub4 *startdate,
|
|
ub4 *enddate );
|
|
|
|
nzerror nztGetVersion( nzctx *ctx,
|
|
nzttIdentity *identity,
|
|
nzstrc *pVerStr );
|
|
|
|
nzerror nztGetPublicKey( nzctx *ctx,
|
|
nzttIdentity *identity,
|
|
ub1 **pubKey,
|
|
ub4 *pubKeylen );
|
|
|
|
nzerror nztGenericDestroy( nzctx *ctx,
|
|
ub1 **var );
|
|
|
|
nzerror nztSetAppDefaultLocation( nzctx *ctx,
|
|
text *,
|
|
size_t );
|
|
|
|
nzerror nztSearchNZDefault( nzctx *ctx,
|
|
boolean *search );
|
|
|
|
nzerror nztSetLightWeight(nzctx *ctx,
|
|
boolean flag);
|
|
|
|
#endif /* NZT_ORACLE */
|
|
|