Annotation of win32/sql/oracle/include/oci/nzt.h, revision 1.1.1.1

1.1       parser      1: /* DISABLE check_long_lines */
                      2: 
                      3: /* Copyright (c) Oracle Corporation 1996, 1997, 1998, 1999.  All Rights Reserved. */
                      4: /* Copyright (c) Oracle Corporation 1996, 1997, 1998, 1999.  All Rights Reserved. */
                      5: 
                      6: /*
                      7:  * $Header: /var/lib/cvsroot/parser3/parser3/src/sql/oracle/oracle32/include/oci/nzt.h,v 1.1 2001/08/22 14:02:18 parser Exp $ 
                      8:  * $Header: /var/lib/cvsroot/parser3/parser3/src/sql/oracle/oracle32/include/oci/nzt.h,v 1.1 2001/08/22 14:02:18 parser Exp $ 
                      9:  */
                     10: 
                     11: /* 
                     12:  * NAME
                     13:  *    nzt.h
                     14:  * 
                     15:  * DESCRIPTION
                     16:  *    Toolkit public declarations.
                     17:  *    
                     18:  * PUBLIC FUNCTIONS
                     19:  *    nztwOpenWallet           - Open a wallet based on a WRL and pwd.
                     20:  *    nztwCloseWallet          - Close a wallet.
                     21:  * +  nztwCreateWallet         - Create a new wallet.
                     22:  * +  nztwDestroyWallet        - Destroy an existing wallet.
                     23:  *    nztwRetrievePersonaCopy  - Retieve a copy of a particular persona.
                     24:  * +  nzteStorePersona         - Store a persona in the wallet.
                     25:  *    nzteOpenPersona          - Open a persona.
                     26:  *    nzteClosePersona         - Close a persona.
                     27:  * +  nzteRemovePersona        - Remove a persona from a wallet.
                     28:  * +  nzteCreatePersona        - Create a persona.
                     29:  *    nzteDestroyPersona       - Destroy a persona.
                     30:  *    nztiStoreTrustedIdentity - Store an identity with associated trust.
                     31:  *    nzteRetrieveTrustedIdentCopy - Retrieves a trusted identity from persona
                     32:  * +  nzteSetProtection        - Modify the protection set in a persona.
                     33:  * +  nzteGetProtection        - Get the protection set in a persona
                     34:  *    nztePriKey               - Get the Private Key (X509 Only)
                     35:  *    nzteMyCert               - Get the Certificate (X509 only)
                     36:  *    nzteX509CreatePersona    - Create a persona given an X509 Certificate.
                     37:  * +  nztiRemoveIdentity       - Remove an identity from a persona.
                     38:  *    nztiCreateIdentity       - Create an identity.
                     39:  *    nztiDuplicateIdentity    - Create a complete copy of an identity.
                     40:  *    nztiAbortIdentity        - Discard an unstored identity.
                     41:  *    nztidGetIdentityDesc     - Gets Identity Description from Identity.
                     42:  *    nztidFreeIdentityDesc    - Frees memory for Identity Desc object.
                     43:  *    nztSign                  - Generate an attached signature.
                     44:  * +  nztxSignExpansion        - Determine size of signature.
                     45:  *    nztVerify                - Verify an attached signature.               
                     46:  *    nztValidate              - Validate an identity.                       
                     47:  *    nztsd_SignDetached       - Generate a detached signature.
                     48:  * +  nztxsd_SignDetachedExpansion - Determine size of detached signature.
                     49:  *    nztved_VerifyDetached    - Verify a detached signature.                 
                     50:  * +  nztEncrypt               - Symmetric key encryption.   
                     51:  * +  nztxEncryptExpansion     - Determine the tdu length for encryption.
                     52:  * +  nztDecrypt               - Symmetric key decryption.                   
                     53:  * +  nztEnvelope              - Sign then encrypt data for recipient(s).    
                     54:  * +  nztDeEnvelope            - Reverse nztEnvelope.                        
                     55:  * +  nztKeyedHash             - Generate keyed hash.                        
                     56:  * +  nztxKeyedHashExpansion   - Determine size of TDU for keyed hash.
                     57:  *    nztHash                  - Generate hash.   
                     58:  * +  nztxHashExpansion        - Determine the size of the TDU for a hash.
                     59:  *    nztSeedRandom            - See the random number generator.
                     60:  *    nztrb_RandomBytes        - Generate a series of random bytes.          
                     61:  *    nztrn_RandomNumber       - Generate a random number.                   
                     62:  *    nztbbInitBlock           - Initialize a buffer block.                  
                     63:  *    nztbbReuseBlock          - Reuse a buffer block.           
                     64:  *    nztbbSizeBlock           - Find the size of the buffer block.
                     65:  *    nztbbGrowBlock           - Grow initialized buffer block by 'inc' bytes.
                     66:  *    nztbbPurgeBlock          - Purge the memory used within a buffer block.
                     67:  *    nztbbSetBlock            - Set block to known state.
                     68:  *    nztkec_PKEncrypt         - Encrypt data then encrypt key for recipient.
                     69:  *    nztkdc_PKDecrypt         - Decrypt PKEncrypt'ed data.                  
                     70:  *    nztific_FreeIdentityContent - Free the contents of an identity.
                     71:  *    nztifdn                  - Create an identity from a distinguished name
                     72:  *    nztcts_CipherSpecToStr   - Converts the Cipher Spec Code To String
                     73:  *    nztiae_IsAuthEnabled     - Checks to see if Authentication is Enabled
                     74:  *                               in the current Cipher Spec.
                     75:  *    nztiae_IsEncrEnabled     - Checks to see if Encryption is Enabled
                     76:  *                               in the current Cipher Spec.
                     77:  *    nztiae_IsHashEnabled     - Checks to see if Hashing is Enabled
                     78:  *                               in the current Cipher Spec.
                     79:  *
                     80:  * NOTE: the '+' indicates that these functions are UNSUPPORTED at this time.
                     81:  * 
                     82:  * NOTES
                     83:  *    
                     84:  * MODIFIED
                     85:  *    skanjila   06/25/99 - Remove nztcts_CipherSpecToStr() to NZOS.
                     86:  *    skanjila   06/23/99 - Change API of nztcts_CipherSpecToStr.
                     87:  *    lkethana   06/18/99 - rem nztIPrivateAlloc, etc
                     88:  *    lkethana   06/10/99 - changing size_t to ub4
                     89:  *    lkethana   06/02/99 - add api for getting auth/encry/hash capability of c
                     90:  *    arswamin   12/28/98 - add NZT_MAX_MD5.
                     91:  *    arswamin   12/21/98 - change signature of compareDN
                     92:  *    qdinh      12/21/98 - change size_t to ub4.
                     93:  *    inetwork   11/22/98 - Removing NZDEPRECATED definition
                     94:  *    amthakur   09/14/98 - deprecating and updating the c-structures.
                     95:  *    arswamin   09/24/98 - adding NZTTWRL_NULL for SSO support.
                     96:  *    amthakur   07/30/98 - changing the prototype of nztGetCertChain.
                     97:  *    qdinh      05/01/98 - add NZTTIDENTTYPE_INVALID_TYPE
                     98:  *    qdinh      04/17/98 - add NZTTWRL_ORACLE.
                     99:  *    ascott     10/08/97 - implement nztiStoreTrustedIdentity
                    100:  *    ascott     10/07/97 - add nztiGetIdentityDesc
                    101:  *    ascott     09/28/97 - clarify prototype comments and error codes
                    102:  *    ascott     09/05/97 - update identity: create, destroy, duplicate
                    103:  *    ascott     08/21/97 - add GetCert and GetPriKey
                    104:  *    ascott     08/07/97 - add other WRL settings
                    105:  *    asriniva   03/25/97 - Add ANSI prototypes
                    106:  *    rwessman   03/19/97 - Added prototypes for nztific_FreeIdentityContent()
                    107:  *    asriniva   03/11/97 - Fix olint errors
                    108:  *    sdange     02/28/97 - Removed inclusion of nz0decl.h
                    109:  *    sdange     02/18/97 - Moved nzt specific declarations from nz0decl.h
                    110:  *    asriniva   01/21/97 - Remove prototypes.
                    111:  *    asriniva   10/31/96 - Include oratypes.h
                    112:  *    asriniva   10/15/96 - Declare buffer block helper functions
                    113:  *    asriniva   10/08/96 - First pass at wallet open/close
                    114:  *    asriniva   10/04/96 - Add random number seed function
                    115:  *    asriniva   10/03/96 - Reorder parameters in nztbbSetBlock
                    116:  *    asriniva   10/03/96 - Keep editing.
                    117:  *    asriniva   10/03/96 - Continued edits.
                    118:  *    asriniva   10/02/96 - Continue editing.
                    119:  *    asriniva   09/26/96 -
                    120:  */
                    121:    
                    122: /* ENABLE check_long_lines */
                    123: 
                    124: #ifndef NZT_ORACLE
                    125: #define NZT_ORACLE
                    126: 
                    127: #ifndef ORATYPES
                    128: # include <oratypes.h>
                    129: #endif /* ORATYPES */
                    130: 
                    131: #ifndef NZERROR_ORACLE
                    132: # include <nzerror.h>         /* NZ error type */
                    133: #endif /* NZERROR_ORACLE */
                    134: 
                    135: #define NZT_MAX_SHA1 20
                    136: #define NZT_MAX_MD5  16
                    137: 
                    138: /***************************************/
                    139: /* PUBLIC CONSTANTS, MACROS, AND TYPES */
                    140: /***************************************/
                    141: 
                    142: /*
                    143:  * Wallet Resource Locator Type Strings
                    144:  *
                    145:  * WRL TYPE        PARAMETERS      BEHAVIOR
                    146:  * ========        ==========      =====================================
                    147:  * default:          <none>        Uses directory defined by the parameter
                    148:  *                                 SNZD_DEFAULT_FILE_DIRECTORY which in 
                    149:  *                                 unix is "$HOME/oracle/oss"
                    150:  * 
                    151:  * file:            file path      example: file:/home/ascott
                    152:  * 
                    153:  * sqlnet:           <none>        In this case, the directory path will be 
                    154:  *                                 retrieved from the sqlnet.ora file under
                    155:  *                                 the oss.source.my_wallet parameter.
                    156:  * 
                    157:  */
                    158: /* Note that there is no NZT_NULL_WRL.  Instead look in snzd.h for DEFAULT_WRP
                    159:  * which is used in our new defaulting mechanism.  The NZT_DEFAULT_WRL
                    160:  * should be deprecated.
                    161:  */
                    162: #define NZT_DEFAULT_WRL    ((text *)"default:")
                    163: #define NZT_SQLNET_WRL     ((text *)"sqlnet:")
                    164: #define NZT_FILE_WRL       ((text *)"file:")
                    165: #define NZT_ORACLE_WRL    ((text *)"oracle:")
                    166: #define NZT_NO_PASSWORD    ((text *)"")  /* NEVER USED */
                    167: 
                    168: enum nzttwrl 
                    169: {
                    170:    NZTTWRL_DEFAULT = 1,    /* Default, use SNZD_DEFAULT_FILE_DIRECTORY */
                    171:    NZTTWRL_SQLNET,         /* Use oss.source.my_wallet in sqlnet.ora file */
                    172:    NZTTWRL_FILE,           /* Find the wallet in this directory */
                    173:    NZTTWRL_ORACLE,        /* Get the wallet from OSS db */
                    174:    NZTTWRL_NULL            /* New SSO defaulting mechanism */
                    175: };
                    176: typedef enum nzttwrl nzttwrl;
                    177: 
                    178: #ifndef NZ0DECL_ORACLE
                    179:    /*
                    180:     * With the elimination of nz0decl.h from public, we need this
                    181:     * redundant typedef.
                    182:     */
                    183:    typedef struct nzctx nzctx;
                    184: #endif /* NZ0DECL_ORACLE */
                    185: 
                    186: /* Moved from nz0decl.h */
                    187: 
                    188: typedef struct nzttIdentity nzttIdentity;
                    189: typedef struct nzttIdentityPrivate nzttIdentityPrivate;
                    190: typedef struct nzttPersona nzttPersona;
                    191: typedef struct nzttPersonaPrivate nzttPersonaPrivate;
                    192: typedef struct nzttWallet nzttWallet;
                    193: typedef struct nzttWalletPrivate nzttWalletPrivate;
                    194: typedef struct nzttWalletObj nzttWalletObj; /* For wallet object */
                    195: 
                    196: /*
                    197:  * Crypto Engine State
                    198:  *
                    199:  * Once the crypto engine (CE) has been initialized for a particular
                    200:  * cipher, it is either at the initial state, or it is continuing to
                    201:  * use the cipher.  NZTCES_END is used to change the state back to
                    202:  * initialized and flush any remaining output.  NZTTCES_RESET can be
                    203:  * used to change the state back to initialized and throw away any
                    204:  * remaining output.
                    205:  */
                    206: enum nzttces 
                    207: {
                    208:    NZTTCES_CONTINUE = 1,    /* Continue processing input */
                    209:    NZTTCES_END,             /* End processing input */
                    210:    NZTTCES_RESET            /* Reset processing and skip generating output */
                    211: };
                    212: typedef enum nzttces nzttces;
                    213: 
                    214: /*
                    215:  * Crypto Engine Functions
                    216:  *
                    217:  * List of crypto engine categories; used to index into protection
                    218:  * vector.
                    219:  */
                    220: enum nzttcef
                    221: {
                    222:    NZTTCEF_DETACHEDSIGNATURE = 1,   /* Signature, detached from content */
                    223:    NZTTCEF_SIGNATURE,               /* Signature combined with content */
                    224:    NZTTCEF_ENVELOPING,              /* Signature and encryption with content */
                    225:    NZTTCEF_PKENCRYPTION,            /* Encryption for one or more recipients */
                    226:    NZTTCEF_ENCRYPTION,              /* Symmetric encryption */
                    227:    NZTTCEF_KEYEDHASH,               /* Keyed hash/checkusm */
                    228:    NZTTCEF_HASH,                    /* Hash/checsum */
                    229:    NZTTCEF_RANDOM,                  /* Random byte generation */
                    230: 
                    231:    NZTTCEF_LAST                     /* Used for array size */
                    232: };
                    233: typedef enum nzttcef nzttcef;
                    234: 
                    235: /*
                    236:  * State of the persona.
                    237:  */
                    238: enum nzttState
                    239: {
                    240:    NZTTSTATE_EMPTY = 0,     /* is not in any state(senseless???) */
                    241:    NZTTSTATE_REQUESTED,     /* cert-request */
                    242:    NZTTSTATE_READY,         /* certificate */
                    243:    NZTTSTATE_INVALID,         /* certificate */
                    244:    NZTTSTATE_RENEWAL        /* renewal-requested */
                    245: };
                    246: typedef enum nzttState nzttState;
                    247: 
                    248: /*
                    249:  * Cert-version types
                    250:  * 
                    251:  * This is used to quickly look-up the cert-type
                    252:  */
                    253: enum nzttVersion
                    254: {
                    255:    NZTTVERSION_X509v1 = 1,        /* X.509v1 */
                    256:    NZTTVERSION_X509v3,            /* X.509v3 */
                    257: #ifdef NZDEPRECATED
                    258:    NZTTVERSION_SYMMETRIC,         /* Symmetric */
                    259: #endif
                    260:    NZTTVERSION_INVALID_TYPE       /* For Initialization */
                    261: };
                    262: typedef enum nzttVersion nzttVersion;
                    263: 
                    264: /*
                    265:  * Cipher Types
                    266:  *
                    267:  * List of all cryptographic algorithms, some of which may not be
                    268:  * available.
                    269:  */
                    270: enum nzttCipherType 
                    271: {
                    272:    NZTTCIPHERTYPE_RSA = 1,          /* RSA public key */
                    273:    NZTTCIPHERTYPE_DES,              /* DES */
                    274:    NZTTCIPHERTYPE_RC4,              /* RC4 */
                    275:    NZTTCIPHERTYPE_MD5DES,           /* DES encrypted MD5 with salt (PBE) */
                    276:    NZTTCIPHERTYPE_MD5RC2,           /* RC2 encrypted MD5 with salt (PBE) */
                    277:    NZTTCIPHERTYPE_MD5,              /* MD5 */
                    278:    NZTTCIPHERTYPE_SHA               /* SHA */
                    279: };
                    280: typedef enum nzttCipherType nzttCipherType;
                    281: 
                    282: /*
                    283:  * TDU Formats
                    284:  *
                    285:  * List of possible toolkit data unit (TDU) formats.  Depending on the
                    286:  * function and cipher used some may be not be available.
                    287:  */
                    288: enum nztttdufmt
                    289: {
                    290:    NZTTTDUFMT_PKCS7 = 1,            /* PKCS7 format */
                    291:    NZTTTDUFMT_RSAPAD,               /* RSA padded format */
                    292:    NZTTTDUFMT_ORACLEv1,             /* Oracle v1 format */
                    293:    NZTTTDUFMT_LAST                  /* Used for array size */
                    294: };
                    295: typedef enum nztttdufmt nztttdufmt;
                    296: 
                    297: /*
                    298:  * Validate State
                    299:  *
                    300:  * Possible validation states an identity can be in.
                    301:  */
                    302: enum nzttValState
                    303: {
                    304:    NZTTVALSTATE_NONE = 1,        /* Needs to be validated */
                    305:    NZTTVALSTATE_GOOD,            /* Validated */
                    306:    NZTTVALSTATE_REVOKED          /* Failed to validate */
                    307: };
                    308: typedef enum nzttValState nzttValState;
                    309: 
                    310: /*
                    311:  * Policy Fields <----NEW (09/14/98)
                    312:  *
                    313:  * Policies enforced
                    314:  */
                    315: enum nzttPolicy
                    316: {
                    317:    NZTTPOLICY_NONE = 0,
                    318:    NZTTPOLICY_RETRY_1, /* number of retries for decryption = 1 */
                    319:    NZTTPOLICY_RETRY_2, /* number of retries for decryption = 2 */
                    320:    NZTTPOLICY_RETRY_3  /* number of retries for decryption = 3 */
                    321: };
                    322: typedef enum nzttPolicy nzttPolicy;
                    323: 
                    324: /*
                    325:  * Persona Usage <----NEW (09/14/98)
                    326:  *
                    327:  * what a persona will be used for?
                    328:  */
                    329: enum nzttUsage
                    330: {
                    331:    NZTTUSAGE_NONE = 0,
                    332:    NZTTUSAGE_SSL  /* persona for SSL usage */
                    333: };
                    334: typedef enum nzttUsage nzttUsage;
                    335: 
                    336: /*
                    337:  * Personas and identities have unique id's that are represented with
                    338:  * 128 bits.
                    339:  */
                    340: typedef ub1 nzttID[16];
                    341: 
                    342: /*
                    343:  * Identity Types
                    344:  *
                    345:  * List of all Identity types..
                    346:  */
                    347: enum nzttIdentType 
                    348: {
                    349:    NZTTIDENTITYTYPE_INVALID_TYPE = 0,  
                    350:    NZTTIDENTITYTYPE_CERTIFICTAE,      
                    351:    NZTTIDENTITYTYPE_CERT_REQ,      
                    352:    NZTTIDENTITYTYPE_RENEW_CERT_REQ,      
                    353:    NZTTIDENTITYTYPE_CLEAR_ETP,      
                    354:    NZTTIDENTITYTYPE_CLEAR_UTP,      
                    355:    NZTTIDENTITYTYPE_CLEAR_PTP       
                    356: };
                    357: typedef enum nzttIdentType nzttIdentType;
                    358: 
                    359: /*
                    360:  * Timestamp as 32 bit quantity in UTC.
                    361:  */
                    362: typedef ub1 nzttTStamp[4];
                    363: 
                    364: /*
                    365:  * Buffer Block
                    366:  *
                    367:  * A function that needs to fill (and possibly grow) an output buffer
                    368:  * uses an output parameter block to describe each buffer.
                    369:  *
                    370:  * The flags_nzttBufferBlock member tells the function whether the
                    371:  * buffer can be grown or not.  If flags_nzttBufferBlock is 0, then
                    372:  * the buffer will be realloc'ed automatically.  
                    373:  *
                    374:  * The buflen_nzttBufferBLock member is set to the length of the
                    375:  * buffer before the function is called and will be the length of the
                    376:  * buffer when the function is finished.  If buflen_nzttBufferBlock is
                    377:  * 0, then the initial pointer stored in pobj_nzttBufferBlock is
                    378:  * ignored.
                    379:  *
                    380:  * The objlen_nzttBufferBlock member is set to the length of the
                    381:  * object stored in the buffer when the function is finished.  If the
                    382:  * initial buffer had a non-0 length, then it is possible that the
                    383:  * object length is shorter than the buffer length.
                    384:  *
                    385:  * The pobj_nzttBufferBlock member is a pointer to the output object.
                    386:  */
                    387: struct nzttBufferBlock
                    388: {
                    389: # define NZT_NO_AUTO_REALLOC     0x1
                    390: 
                    391:    uword flags_nzttBufferBlock;     /* Flags */
                    392:    ub4 buflen_nzttBufferBlock;   /* Total length of buffer */
                    393:    ub4 usedlen_nzttBufferBlock;  /* Length of used buffer part */
                    394:    ub1 *buffer_nzttBufferBlock;     /* Pointer to buffer */
                    395: };
                    396: typedef struct nzttBufferBlock nzttBufferBlock;
                    397: 
                    398: /*
                    399:  * Wallet.
                    400:  */
                    401: struct nzttWallet
                    402: {
                    403:    ub1 *ldapName_nzttWallet;              /* user's LDAP Name */
                    404:    ub4  ldapNamelen_nzttWallet;           /* len of user's LDAP Name */
                    405:    nzttPolicy securePolicy_nzttWallet;    /* secured-policy of the wallet */
                    406:    nzttPolicy openPolicy_nzttWallet;      /* open-policy of the wallet */
                    407:    nzttPersona *persona_nzttWallet;       /* List of personas in wallet */
                    408:    nzttWalletPrivate *private_nzttWallet; /* Private wallet information */
                    409: #ifdef NZDEPRECATED
                    410:    ub4 npersona_nzttWallet;            /* Number of personas */
                    411: #endif
                    412: };
                    413: 
                    414: /*
                    415:  * The wallet contains, one or more personas.  A persona always
                    416:  * contains its private key and its identity.  It may also contain
                    417:  * other 3rd party identites.  All identities qualified with trust
                    418:  * where the qualifier can indicate anything from untrusted to trusted
                    419:  * for specific operations.
                    420:  */
                    421: 
                    422: /*
                    423:  * Persona
                    424:  *
                    425:  * Structure containing information about a persona.
                    426:  */
                    427: struct nzttPersona
                    428: {
                    429:    ub1 *genericName_nzttPersona;              /* user-friendly persona name  */
                    430:    ub4  genericNamelen_nzttPersona;           /* persona-name length */
                    431:    nzttUsage usage_nzttPersona;               /* persona usage; SSL/SET/.. */
                    432:    nzttState state_nzttPersona;               /* persona state-requested/ready */
                    433:    nzttPersonaPrivate *private_nzttPersona;   /* Opaque part of persona */
                    434:    nzttIdentity *mycertreqs_nzttPersona;      /* My cert-requests */
                    435:    nzttIdentity *mycerts_nzttPersona;         /* My certificates */
                    436:    nzttIdentity *mytps_nzttPersona;           /* List of trusted identities */
                    437:    struct nzttPersona *next_nzttPersona;      /* Next persona */
                    438: #ifdef NZDEPRECATED
                    439:    ub4 ntps_nzttPersona;                   /* Num of trusted identities */
                    440: #endif
                    441: };
                    442: 
                    443: /*
                    444:  * Identity
                    445:  *
                    446:  * Structure containing information about an identity.
                    447:  *
                    448:  * NOTE
                    449:  *  -- the next_trustpoint field only applies to trusted identities and
                    450:  *     has no meaning (i.e. is NULL) for self identities.
                    451:  */
                    452: struct nzttIdentity
                    453: {
                    454:    text *dn_nzttIdentity;                      /* Alias */
                    455:    ub4 dnlen_nzttIdentity;                  /* Length of alias */
                    456:    text *comment_nzttIdentity;                 /* Comment  */
                    457:    ub4 commentlen_nzttIdentity;             /* Length of comment */
                    458:    nzttIdentityPrivate *private_nzttIdentity;  /* Opaque part of identity */
                    459:    nzttIdentity *next_nzttIdentity;            /* next identity in list */
                    460: };
                    461: 
                    462: struct nzttPKCS7ProtInfo
                    463: {
                    464:    nzttCipherType mictype_nzttPKCS7ProtInfo;    /* Hash cipher */
                    465:    nzttCipherType symmtype_nzttPKCS7ProtInfo;   /* Symmetric cipher */
                    466:    ub4 keylen_nzttPKCS7ProtInfo;             /* Length of key to use */
                    467: };
                    468: typedef struct nzttPKCS7ProtInfo nzttPKCS7ProtInfo;
                    469: 
                    470: /*
                    471:  * Protection Information.
                    472:  *
                    473:  * Information specific to a type of protection.
                    474:  */
                    475: union nzttProtInfo
                    476: {
                    477:    nzttPKCS7ProtInfo pkcs7_nzttProtInfo;
                    478: };
                    479: typedef union nzttProtInfo nzttProtInfo;
                    480: 
                    481: /*
                    482:  * A description of a persona so that the toolkit can create one.  A
                    483:  * persona can be symmetric or asymmetric and both contain an
                    484:  * identity.  The identity for an asymmetric persona will be the
                    485:  * certificate and the identity for the symmetric persona will be
                    486:  * descriptive information about the persona.  In either case, an
                    487:  * identity will have been created before the persona is created.
                    488:  *
                    489:  * A persona can be stored separately from the wallet that references
                    490:  * it.  By default, a persona is stored with the wallet (it inherits
                    491:  * with WRL used to open the wallet).  If a WRL is specified, then it
                    492:  * is used to store the actuall persona and the wallet will have a
                    493:  * reference to it.
                    494:  */
                    495: struct nzttPersonaDesc
                    496: {
                    497:    ub4 privlen_nzttPersonaDesc;        /* Length of private info (key)*/
                    498:    ub1 *priv_nzttPersonaDesc;             /* Private information */
                    499:    ub4 prllen_nzttPersonaDesc;         /* Length of PRL */
                    500:    text *prl_nzttPersonaDesc;             /* PRL for storage */
                    501:    ub4 aliaslen_nzttPersonaDesc;       /* Length of alias */
                    502:    text *alias_nzttPersonaDesc;           /* Alias */
                    503:    ub4 longlen_nzttPersonaDesc;        /* Length of longer description*/
                    504:    text *long_nzttPersonaDesc;            /* Longer persona description */
                    505: };
                    506: typedef struct nzttPersonaDesc nzttPersonaDesc;
                    507: 
                    508: /*
                    509:  * A description of an identity so that the toolkit can create one.
                    510:  * Since an identity can be symmetric or asymmetric, the asymmetric
                    511:  * identity information will not be used when a symmetric identity is
                    512:  * created.  This means the publen_nzttIdentityDesc and
                    513:  * pub_nzttIdentityDesc members will not be used when creating a
                    514:  * symmetric identity.
                    515:  */
                    516: struct nzttIdentityDesc
                    517: {
                    518:    ub4 publen_nzttIdentityDesc;        /* Length of identity */
                    519:    ub1 *pub_nzttIdentityDesc;             /* Type specific identity */
                    520:    ub4 dnlen_nzttIdentityDesc;         /* Length of alias */
                    521:    text *dn_nzttIdentityDesc;             /* Alias */
                    522:    ub4 longlen_nzttIdentityDesc;       /* Length of longer description */
                    523:    text *long_nzttIdentityDesc;           /* Longer description */
                    524:    ub4 quallen_nzttIdentityDesc;       /* Length of trust qualifier */
                    525:    text *trustqual_nzttIdentityDesc;      /* Trust qualifier */
                    526: };
                    527: typedef struct nzttIdentityDesc nzttIdentityDesc;
                    528: 
                    529: /********************************/
                    530: /* PUBLIC FUNCTION DECLARATIONS */
                    531: /********************************/
                    532: 
                    533: /*---------------------- nztwOpenWallet ----------------------*/
                    534: 
                    535: /*
                    536:  * NAME
                    537:  *    nztwOpenWallet - Open a wallet based on a wallet Resource Locator (WRL).
                    538:  * 
                    539:  * PARAMETERS
                    540:  *    osscntxt {IN}     OSS context. 
                    541:  *    wrllen   {IN}     Length of WRL.
                    542:  *    wrl      {IN}     WRL.
                    543:  *    pwdlen   {IN}     Length of password.
                    544:  *    pwd      {IN}     Password.
                    545:  *    wallet   {IN/OUT} Initialized wallet structure.   
                    546:  * 
                    547:  * NOTES
                    548:  *    The syntax for a WRL is <Wallet Type>:<Wallet Type Parameters>.
                    549:  *
                    550:  *    Wallet Type       Wallet Type Parameters.
                    551:  *    -----------       ----------------------
                    552:  *    File              Pathname (e.g. "file:/home/asriniva")
                    553:  *    Oracle            Connect string (e.g. "oracle:scott/tiger@oss")
                    554:  *
                    555:  *    There are also defaults.  If the WRL is NZT_DEFAULT_WRL, then
                    556:  *    the platform specific WRL default is used.  If only the wallet
                    557:  *    type is specified, then the WRL type specific default is used
                    558:  *    (e.g. "oracle:")
                    559:  *
                    560:  *    There is an implication with Oracle that should be stated: An
                    561:  *    Oracle based wallet can be implemented in a user's private space
                    562:  *    or in world readable space.
                    563:  *
                    564:  *    When the wallet is opened, the password is verified by hashing
                    565:  *    it and comparing against the password hash stored with the
                    566:  *    wallet.  The list of personas (and their associated identities)
                    567:  *    is built and stored into the wallet structure.
                    568:  *    
                    569:  * RETURNS
                    570:  *    NZERROR_OK           Success.
                    571:  *    NZERROR_RIO_OPEN     RIO could not open wallet (see network trace file).
                    572:  *    NZERROR_TK_PASSWORD  Password verification failed.
                    573:  *    NZERROR_TK_WRLTYPE   WRL type is not known.
                    574:  *    NZERROR_TK_WRLPARM   WRL parm does not match type.
                    575:  */
                    576: #ifdef __STDC__
                    577: nzerror nztwOpenWallet(nzctx *, ub4, text *, ub4, text *, 
                    578:                            nzttWallet *);
                    579: #else
                    580: nzerror nztwOpenWallet(/*_ nzctx *, ub4, text *, ub4, text *, 
                    581:                            nzttWallet * _*/);
                    582: #endif /* __STDC __*/
                    583: 
                    584: /*---------------------- nztwCloseWallet ----------------------*/
                    585: 
                    586: /*
                    587:  * NAME
                    588:  *    nztwCloseWallet - Close a wallet
                    589:  * 
                    590:  * PARAMETERS
                    591:  *    osscntxt {IN}     OSS context.
                    592:  *    wallet   {IN/OUT} Wallet.
                    593:  * 
                    594:  * NOTES
                    595:  *    Closing a wallet also closes all personas associated with that
                    596:  *    wallet.  It does not cause a persona to automatically be saved
                    597:  *    if it has changed.  The implication is that a persona can be
                    598:  *    modified by an application but if it is not explicitly saved it
                    599:  *    reverts back to what was in the wallet.
                    600:  *
                    601:  * RETURNS
                    602:  *    NZERROR_OK           Success.
                    603:  *    NZERROR_RIO_CLOSE    RIO could not close wallet (see network trace file).
                    604:  */
                    605: #ifdef __STDC__
                    606: nzerror nztwCloseWallet(nzctx *, nzttWallet *);
                    607: #else
                    608: nzerror nztwCloseWallet(/*_ nzctx *, nzttWallet * _*/);
                    609: #endif /* __STDC__ */
                    610: 
                    611: /*------------------------ nztwConstructWallet -----------------------*/
                    612: /*
                    613:  * 
                    614:  * nzerror nztwConstructWallet( nzctx *oss_context,    
                    615:  *                               nzttPolicy openPolicy,
                    616:  *                               nzttPolicy securePolicy,
                    617:  *                               ub1 *ldapName,
                    618:  *                               ub4 ldapNamelen,
                    619:  *                               nzstrc *wrl,
                    620:  *                               nzttPersona *personas,
                    621:  *                               nzttWallet **wallet );
                    622:  */
                    623: 
                    624: /*---------------------- nztwRetrievePersonaCopy ----------------------*/
                    625: 
                    626: /*
                    627:  * NAME
                    628:  *    nztwRetrievePersonaCopy - Retrieves a persona based from wallet
                    629:  * 
                    630:  * PARAMETERS
                    631:  *    osscntxt {IN}     OSS context. 
                    632:  *    wallet   {IN}     Wallet.
                    633:  *    index    {IN}     Which wallet index to remove (first persona is zero).
                    634:  *    persona  {OUT}    Persona found.
                    635:  * 
                    636:  * NOTES
                    637:  *    Retrieves a persona from the wallet based on the index number passed
                    638:  *    in.  This persona is a COPY of the one stored in the wallet, therefore
                    639:  *    it is perfectly fine for the wallet to be closed after this call is 
                    640:  *    made.
                    641:  *
                    642:  *    The caller is responsible for disposing of the persona when completed.
                    643:  *
                    644:  * RETURNS
                    645:  *    NZERROR_OK           Success.
                    646:  */
                    647: #ifdef __STDC__
                    648: nzerror nztwRetrievePersonaCopy(nzctx *, nzttWallet *, ub4, nzttPersona **);
                    649: #else
                    650: nzerror nztwRetrievePersonaCopy(/*_ nzctx *, nzttWallet *, ub4, 
                    651:                            nzttPersona ** _*/);
                    652: #endif /* __STDC __*/
                    653: 
                    654: 
                    655: /*---------------------- nzteOpenPersona ----------------------*/
                    656: 
                    657: /*
                    658:  * NAME
                    659:  *    nzteOpenPersona - Open a persona.
                    660:  * 
                    661:  * PARAMETERS
                    662:  *    osscntxt {IN}     OSS context. 
                    663:  *    persona  {IN/OUT} Persona.
                    664:  * 
                    665:  * NOTES
                    666:  *    
                    667:  * RETURNS
                    668:  *    NZERROR_OK           Success.
                    669:  *    NZERROR_TK_PASSWORD  Password failed to decrypt persona.
                    670:  *    NZERROR_TK_BADPRL    Persona resource locator did not work.
                    671:  *    NZERROR_RIO_OPEN     Could not open persona (see network trace file).
                    672:  */
                    673: #ifdef __STDC__
                    674: nzerror nzteOpenPersona(nzctx *, nzttPersona *);
                    675: #else
                    676: nzerror nzteOpenPersona(/*_ nzctx *, nzttPersona * _*/);
                    677: #endif /* __STDC __*/
                    678: 
                    679: /*--------------------- nzteClosePersona ---------------------*/
                    680: 
                    681: /*
                    682:  * NAME
                    683:  *    nzteClosePersona - Close a persona.
                    684:  * 
                    685:  * PARAMETERS
                    686:  *    osscntxt {IN}     OSS context.
                    687:  *    persona  {IN/OUT} Persona.
                    688:  * 
                    689:  * NOTES
                    690:  *    Closing a persona does not store the persona, it simply releases
                    691:  *    the memory associated with the crypto engine.
                    692:  *    
                    693:  * RETURNS
                    694:  *    NZERROR_OK        Success.
                    695:  */
                    696: #ifdef __STDC__
                    697: nzerror nzteClosePersona(nzctx *, nzttPersona *);
                    698: #else
                    699: nzerror nzteClosePersona(/*_ nzctx *, nzttPersona * _*/);
                    700: #endif /* __STDC __*/
                    701: 
                    702: /*--------------------- nzteDestroyPersona ---------------------*/
                    703: 
                    704: /*
                    705:  * NAME
                    706:  *    nzteDestroyPersona - Destroy a persona.
                    707:  * 
                    708:  * PARAMETERS
                    709:  *    osscntxt {IN}        OSS context.
                    710:  *    persona  {IN/OUT}    Persona.
                    711:  * 
                    712:  * NOTES
                    713:  *    The persona is destroyd in the open state, but it will
                    714:  *    not be associated with a wallet.
                    715:  *    
                    716:  *    The persona parameter is doubly indirect so that at the
                    717:  *    conclusion of the function, the pointer can be set to NULL.
                    718:  *
                    719:  *
                    720:  * RETURNS
                    721:  *    NZERROR_OK        Success.
                    722:  *    NZERROR_TK_TYPE   Unsupported itype/ctype combination.
                    723:  *    NZERROR_TK_PARMS  Error in persona description.
                    724:  */
                    725: #ifdef __STDC__
                    726: nzerror nzteDestroyPersona(nzctx *,  nzttPersona **);
                    727: #else
                    728: nzerror nzteDestroyPersona(/*_ nzctx *, nzttPersona ** _*/);
                    729: #endif /* __STDC __*/
                    730: 
                    731: /*---------------------- nzteRetrieveTrustedIdentCopy ----------------------*/
                    732: 
                    733: /*
                    734:  * NAME
                    735:  *    nzteRetrieveTrustedIdentCopy - Retrieves a trusted identity from persona
                    736:  * 
                    737:  * PARAMETERS
                    738:  *    osscntxt {IN}     OSS context. 
                    739:  *    persona  {IN}     Persona.
                    740:  *    index    {IN}     Which wallet index to remove (first element is zero).
                    741:  *    identity {OUT}    Trusted Identity from this persona.
                    742:  * 
                    743:  * NOTES
                    744:  *    Retrieves a trusted identity from the persona based on the index 
                    745:  *    number passed in.  This identity is a COPY of the one stored in 
                    746:  *    the persona, therefore it is perfectly fine to close the persona
                    747:  *    after this call is made.
                    748:  *
                    749:  *    The caller is responsible for freeing the memory of this object 
                    750:  *    by calling nztiAbortIdentity it is no longer needed
                    751:  *
                    752:  * RETURNS
                    753:  *    NZERROR_OK           Success.
                    754:  */
                    755: #ifdef __STDC__
                    756: nzerror nzteRetrieveTrustedIdentCopy(nzctx *, nzttPersona *, ub4, 
                    757:                                     nzttIdentity **);
                    758: #else
                    759: nzerror nzteRetrieveTrustedIdentCopy(/*_ nzctx *, nzttPersona *, ub4, 
                    760:                            nzttIdentity ** _*/);
                    761: #endif /* __STDC __*/
                    762: 
                    763: /*--------------------- nztePriKey ---------------------*/
                    764: 
                    765: /*
                    766:  * NAME
                    767:  *    nztePriKey - Get the decrypted Private Key for the Persona
                    768:  * 
                    769:  * PARAMETERS
                    770:  *    osscntxt {IN}     OSS context.
                    771:  *    persona  {IN}     Persona.
                    772:  *    vkey     {OUT}    Private Key [B_KEY_OBJ]
                    773:  *    vkey_len {OUT}    Private Key Length
                    774:  * 
                    775:  * NOTES
                    776:  *    This funiction will only work for X.509 based persona which contain
                    777:  *    a private key.  
                    778:  *    A copy of the private key is returned to the caller so that they do not 
                    779:  *    have to worry about the key changeing "underneath them".
                    780:  *    Memory will be allocated for the vkey and therefore, the CALLER
                    781:  *    will be responsible for freeing this memory.
                    782:  *
                    783:  * RETURNS
                    784:  *    NZERROR_OK           Success.
                    785:  *    NZERROR_NO_MEMORY    ossctx is null.
                    786:  *    NZERROR_TK_BADPRL    Persona resource locator did not work.
                    787:  */
                    788: #ifdef __STDC__
                    789: nzerror nztePriKey(nzctx *, nzttPersona *, ub1 **, ub4 *);
                    790: #else
                    791: nzerror nztePriKey(/*_ nzctx *, nzttPersona *, ub1 **, ub4 * _*/);
                    792: #endif /* __STDC __*/
                    793: 
                    794: /*--------------------- nzteMyCert ---------------------*/
                    795: 
                    796: /*
                    797:  * NAME
                    798:  *    nzteMyCert - Get the X.509 Certificate for a persona
                    799:  * 
                    800:  * PARAMETERS
                    801:  *    osscntxt {IN}     OSS context.
                    802:  *    persona  {IN}     Persona.
                    803:  *    cert     {OUT}    X.509 Certificate [BER encoded]
                    804:  *    cert_len {OUT}    Certificate length
                    805:  * 
                    806:  * NOTES
                    807:  *    This funiction will only work for X.509 based persona which contain
                    808:  *    a certificate for the self identity. 
                    809:  *    A copy of the certificate is returned to the caller so that they do not 
                    810:  *    have to worry about the certificate changeing "underneath them".
                    811:  *    Memory will be allocated for the cert and therefore, the CALLER
                    812:  *    will be responsible for freeing this memory.
                    813:  *
                    814:  * RETURNS
                    815:  *    NZERROR_OK           Success.
                    816:  *    NZERROR_NO_MEMORY    ossctx is null.
                    817:  */
                    818: #ifdef __STDC__
                    819: nzerror nzteMyCert(nzctx *, nzttPersona *, ub1 **, ub4 *);
                    820: #else
                    821: nzerror nzteMyCert(/*_ nzctx *, nzttPersona *, ub1 **, ub4 * _*/);
                    822: #endif /* __STDC __*/
                    823: 
                    824: /*--------------------- nzteX509CreatePersona ---------------------*/
                    825: 
                    826: /*
                    827:  * NAME
                    828:  *    nzteX509CreatePersona - Given a BER X.509 cert, create a persona
                    829:  * 
                    830:  * PARAMETERS
                    831:  *    osscntxt {IN}     OSS context.
                    832:  *    cert     {IN}     X.509 Certificate [BER encoded]
                    833:  *    cert_len {IN}     Certificate length
                    834:  *    persona  {OUT}    Persona.
                    835:  * 
                    836:  * NOTES
                    837:  *    Memory will be allocated for the persona and therefore, the CALLER
                    838:  *    will be responsible for freeing this memory.
                    839:  *
                    840:  * RETURNS
                    841:  *    NZERROR_OK           Success.
                    842:  *    NZERROR_NO_MEMORY    ossctx is null.
                    843:  */
                    844: #ifdef __STDC__
                    845: nzerror nzteX509CreatePersona(nzctx *, ub1 *, ub4, nzttPersona **);
                    846: #else
                    847: nzerror nzteX509CreatePersona(/*_ nzctx *, ub1 *, ub4, nzttPersona ** _*/);
                    848: #endif /* __STDC __*/
                    849: 
                    850: /*-------------------- nztiCreateIdentity --------------------*/
                    851: 
                    852: /*
                    853:  * NAME
                    854:  *    nztiCreateIdentity - Create an identity.
                    855:  * 
                    856:  * PARAMETERS
                    857:  *    osscntxt {IN}     OSS context.
                    858:  *    itype    {IN}     Identity type.
                    859:  *    desc     {IN}     Description of identity.
                    860:  *    identity {IN/OUT} Identity.
                    861:  * 
                    862:  * NOTES
                    863:  *    Memory is only allocated for the identity structure.  The elements in
                    864:  *    the description struct are not copied.  Rather their pointers are copied
                    865:  *    into the identity structure.  Therefore, the caller should not free
                    866:  *    the elements referenced by the desc.  These elements will be freed
                    867:  *    when the nztiDestroyIdentity is called.
                    868:  *    
                    869:  * RETURNS
                    870:  *    NZERROR_OK        Success.
                    871:  *    NZERROR_PARMS     Error in description.
                    872:  */
                    873: #ifdef __STDC__
                    874: nzerror nztiCreateIdentity(nzctx *, nzttVersion, nzttIdentityDesc *,
                    875:                                nzttIdentity **);
                    876: #else
                    877: nzerror nztiCreateIdentity(/*_ nzctx *, nzttVersion, nzttIdentityDesc *,
                    878:                                nzttIdentity ** _*/);
                    879: #endif /* __STDC __*/
                    880: 
                    881: #ifdef NZ_OLD_TOOLS
                    882: /*-------------------- nztiDuplicateIdentity --------------------*/
                    883: 
                    884: /*
                    885:  * NAME
                    886:  *    nztiDuplicateIdentity - Duplicate an identity.
                    887:  * 
                    888:  * PARAMETERS
                    889:  *    osscntxt     {IN}     OSS context.
                    890:  *    identity     {IN}     Target Identity.
                    891:  *    new_identity {IN}     New Identity.
                    892:  * 
                    893:  * NOTES
                    894:  *    Memory for the identity is allocated inside the function, and all
                    895:  *    internal identity elements as well.
                    896:  *    
                    897:  * RETURNS
                    898:  *    NZERROR_OK        Success.
                    899:  *    NZERROR_TK_NOTFOUND  Identity not found.
                    900:  *    NZERROR_PARMS     Error in description.
                    901:  */
                    902: #ifdef __STDC__
                    903: nzerror nztiDuplicateIdentity(nzctx *, nzttIdentity *, 
                    904:                               nzttIdentity **);
                    905: #else
                    906: nzerror nztiDuplicateIdentity(/*_ nzctx *, nzttIdentity *, 
                    907:                               nzttIdentity ** _*/);
                    908: #endif /* __STDC __*/
                    909: #endif /* NZ_OLD_TOOLS */
                    910: 
                    911: /*--------------------- nztiAbortIdentity ---------------------*/
                    912: 
                    913: /*
                    914:  * NAME
                    915:  *    nztiAbortIdentity - Abort an unassociated identity.
                    916:  * 
                    917:  * PARAMETERS
                    918:  *    osscntxt {IN}     OSS context.
                    919:  *    identity {IN/OUT} Identity.
                    920:  * 
                    921:  * NOTES
                    922:  *    It is an error to try to abort an identity that can be
                    923:  *    referenced through a persona.
                    924:  *    
                    925:  *    The identity pointer is set to NULL at the conclusion.
                    926:  * 
                    927:  * RETURNS
                    928:  *    NZERROR_OK           Success.
                    929:  *    NZERROR_CANTABORT    Identity is associated with persona.
                    930:  */
                    931: #ifdef __STDC__
                    932: nzerror nztiAbortIdentity(nzctx *, nzttIdentity **);
                    933: #else
                    934: nzerror nztiAbortIdentity(/*_ nzctx *, nzttIdentity ** _*/);
                    935: #endif /* __STDC __*/
                    936: 
                    937: #ifdef NZ_OLD_TOOLS
                    938: /*----------------- nztidGetIdentityDesc -----------------*/
                    939: 
                    940: /*
                    941:  * NAME
                    942:  *    nztidGetIdentityDesc - Gets an Identity Description from the identity
                    943:  * 
                    944:  * PARAMETERS
                    945:  *    osscntxt    {IN}     Success.
                    946:  *    identity    {IN}     Identity.
                    947:  *    description {IN/OUT} Identity Description.
                    948:  * 
                    949:  * NOTES
                    950:  *    Memory is allocated for the Identity Description. It
                    951:  *    is the callers responsibility to free this memory by calling 
                    952:  *    nztiFreeIdentityDesc.
                    953:  *
                    954:  * RETURNS
                    955:  *    NZERROR_OK     Success.
                    956:  */
                    957: #ifdef __STDC__
                    958: nzerror nztidGetIdentityDesc(nzctx *, nzttIdentity *, 
                    959:                              nzttIdentityDesc **);
                    960: #else
                    961: nzerror nztidGetIdentityDesc(/*_ nzctx *, nzttIdentity *,
                    962:                                      nzttIdentityDesc ** _*/);
                    963: #endif /* __STDC __*/
                    964: 
                    965: /*----------------- nztidFreeIdentityDesc -----------------*/
                    966: 
                    967: /*
                    968:  * NAME
                    969:  *    nztidFreeIdentityDesc - Frees memory for Identity Desc object.
                    970:  * 
                    971:  * PARAMETERS
                    972:  *    osscntxt    {IN}     oss context.
                    973:  *    description {IN/OUT} Identity Description.
                    974:  * 
                    975:  * NOTES
                    976:  *    Memory is freed for all Identity description elements.  Pointer is 
                    977:  *    then set to null.
                    978:  *
                    979:  * RETURNS
                    980:  *    NZERROR_OK     Success.
                    981:  */
                    982: #ifdef __STDC__
                    983: nzerror nztidFreeIdentityDesc(nzctx *, nzttIdentityDesc **);
                    984: #else
                    985: nzerror nztidFreeIdentityDesc(/*_ nzctx *, nzttIdentityDesc ** _*/);
                    986: #endif /* __STDC __*/
                    987: #endif /* NZ_OLD_TOOLS */
                    988: 
                    989: /*---------------- nztific_FreeIdentityContent ----------------*/
                    990: 
                    991: /*
                    992:  * NAME
                    993:  *     nztific_FreeIdentityContent - free the contents of an identity.
                    994:  * 
                    995:  * PARAMETERS
                    996:  *    osscntxt         {IN}     OSS context.
                    997:  *    identity         {IN/OUT} freed identity
                    998:  * 
                    999:  * NOTES
                   1000:  *    Free a created identity.
                   1001:  *
                   1002:  * RETURNS
                   1003:  *    NZERROR_OK     Success.
                   1004:  */
                   1005: /*
                   1006:  * Free the identity content.
                   1007:  */
                   1008: #ifdef __STDC__
                   1009: nzerror nztific_FreeIdentityContent(nzctx *ossctx,
                   1010:                                         nzttIdentity *identity);
                   1011: #else
                   1012: nzerror nztific_FreeIdentityContent(/*_ nzctx *ossctx,
                   1013:                                         nzttIdentity *identity _*/);
                   1014: #endif /* __STDC __*/
                   1015: 
                   1016: 
                   1017: /*-------------------------- nztSign --------------------------*/
                   1018: 
                   1019: /*
                   1020:  * NAME
                   1021:  *    nztSign - Create an attached signature.
                   1022:  * 
                   1023:  * PARAMETERS
                   1024:  *    osscntxt {IN}     OSS context.
                   1025:  *    persona  {IN}     Open persona acting as signer.
                   1026:  *    state    {IN}     State of signature.
                   1027:  *    inlen    {IN}     Length of this input part.
                   1028:  *    in       {IN}     This input part.
                   1029:  *    tdubuf   {IN/OUT} TDU buffer.
                   1030:  * 
                   1031:  * NOTES
                   1032:  *    
                   1033:  * RETURNS
                   1034:  *    NZERROR_OK           Success.
                   1035:  *    NZERROR_TK_CANTGROW  Needed to grow output buffer but could not.
                   1036:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1037:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1038:  */
                   1039: #ifdef __STDC__
                   1040: nzerror nztSign(nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   1041:                     nzttBufferBlock *);
                   1042: #else
                   1043: nzerror nztSign(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   1044:                     nzttBufferBlock * _*/);
                   1045: #endif /* __STDC __*/
                   1046: 
                   1047: /*------------------------- nztVerify -------------------------*/
                   1048: 
                   1049: /*
                   1050:  * NAME
                   1051:  *    nztVerify - Verify an attached signature.
                   1052:  * 
                   1053:  * PARAMETERS
                   1054:  *    osscntxt {IN}     OSS context.
                   1055:  *    persona  {IN}     Persona.
                   1056:  *    state    {IN}     State of verification.
                   1057:  *    intdulen {IN}     TDU length.
                   1058:  *    intdu    {IN}     TDU.
                   1059:  *    out      {IN/OUT} Extracted message.
                   1060:  *    verified {OUT}    TRUE if signature verified.
                   1061:  *    validated{OUT}    TRUE if signing identity validated.
                   1062:  *    identity {OUT} Identity of signing party.
                   1063:  * 
                   1064:  * NOTES
                   1065:  *    
                   1066:  * RETURNS
                   1067:  *    NZERROR_OK           Success.
                   1068:  *    NZERROR_TK_CANTGROW  Needed to grow outptu buffer but could not.
                   1069:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1070:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1071:  */
                   1072: #ifdef __STDC__
                   1073: nzerror nztVerify(nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   1074:                       nzttBufferBlock *, boolean *, boolean *,
                   1075:                       nzttIdentity **);
                   1076: #else
                   1077: nzerror nztVerify(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   1078:                       nzttBufferBlock *, boolean *, boolean *,
                   1079:                       nzttIdentity ** _*/);
                   1080: #endif /* __STDC __*/
                   1081: 
                   1082: /*------------------------ nztValidate ------------------------*/
                   1083: 
                   1084: /*
                   1085:  * NAME
                   1086:  *    nztValidate - Validate an identity.
                   1087:  * 
                   1088:  * PARAMETERS
                   1089:  *    osscntxt {IN}  OSS context.
                   1090:  *    persona  {IN}  Persona.
                   1091:  *    identity {IN}  Identity.
                   1092:  *    validated{OUT} TRUE if identity was validated.  
                   1093:  * 
                   1094:  * NOTES
                   1095:  *    
                   1096:  * RETURNS
                   1097:  *    NZERROR_OK           Success.
                   1098:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1099:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1100:  */
                   1101: #ifdef __STDC__
                   1102: nzerror nztValidate(nzctx *, nzttPersona *, nzttIdentity *, boolean *);
                   1103: #else
                   1104: nzerror nztValidate(/*_ nzctx *, nzttPersona *, nzttIdentity *, boolean * _*/);
                   1105: #endif /* __STDC __*/
                   1106: 
                   1107: /*-------------------- nztsd_SignDetached --------------------*/
                   1108: 
                   1109: /*
                   1110:  * NAME
                   1111:  *    nztsd_SignDetached - Generate a detached signature.
                   1112:  * 
                   1113:  * PARAMETERS
                   1114:  *    osscntxt {IN}     OSS context.
                   1115:  *    persona  {IN}     Persona.
                   1116:  *    state    {IN}     State of signature.
                   1117:  *    inlen    {IN}     Length of this input part.
                   1118:  *    in       {IN}     This input part.
                   1119:  *    tdubuf   {IN/OUT} TDU buffer.
                   1120:  * 
                   1121:  * NOTES
                   1122:  *    
                   1123:  * RETURNS
                   1124:  *    NZERROR_OK           Success.
                   1125:  *    NZERROR_TK_CANTGROW  Needed to grow output buffer but could not.
                   1126:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1127:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1128:  */
                   1129: #ifdef __STDC__
                   1130: nzerror nztsd_SignDetached(nzctx *, nzttPersona *, nzttces, ub4, ub1 *, 
                   1131:                                nzttBufferBlock *);
                   1132: #else
                   1133: nzerror nztsd_SignDetached(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *, 
                   1134:                                nzttBufferBlock * _*/);
                   1135: #endif /* __STDC __*/
                   1136: 
                   1137: /*------------------- nztved_VerifyDetached -------------------*/
                   1138: 
                   1139: /*
                   1140:  * NAME
                   1141:  *    nztved_VerifyDetached - Verify a detached signature.
                   1142:  * 
                   1143:  * PARAMETERS
                   1144:  *    osscntxt {IN}     OSS context.
                   1145:  *    persona  {IN}     Persona.
                   1146:  *    state    {IN}     State of verification.
                   1147:  *    inlen    {IN}     Length of data.
                   1148:  *    in       {IN}     Data.
                   1149:  *    intdulen {IN}     Input TDU length.
                   1150:  *    tdu      {IN}     Input TDU.
                   1151:  *    verified {OUT}    TRUE if signature verified.
                   1152:  *    validated{OUT}    TRUE if signing identity validated.
                   1153:  *    identity {OUT} Identity of signing party.
                   1154:  * 
                   1155:  * NOTES
                   1156:  *    
                   1157:  * RETURNS
                   1158:  *    NZERROR_OK           Success.
                   1159:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1160:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1161:  */
                   1162: #ifdef __STDC__
                   1163: nzerror nztved_VerifyDetached(nzctx *, nzttPersona *, nzttces, ub4, 
                   1164:                                   ub1 *, ub4, ub1 *, boolean *, boolean *, 
                   1165:                                   nzttIdentity **);
                   1166: #else
                   1167: nzerror nztved_VerifyDetached(/*_ nzctx *, nzttPersona *, nzttces, ub4, 
                   1168:                                   ub1 *, ub4, ub1 *, boolean *, boolean *, 
                   1169:                                   nzttIdentity ** _*/);
                   1170: #endif /* __STDC __*/
                   1171: 
                   1172: /*--------------------- nztkec_PKEncrypt ---------------------*/
                   1173: 
                   1174: /*
                   1175:  * NAME
                   1176:  *    nztkec_PKEncrypt - Encrypt data symmetrically, encrypt key asymmetrically
                   1177:  * 
                   1178:  * PARAMETERS
                   1179:  *    osscntxt    {IN}     OSS context.
                   1180:  *    persona     {IN}     Persona.
                   1181:  *    nrecipients {IN}     Number of recipients for this encryption.
                   1182:  *    recipients  {IN}     List of recipients.
                   1183:  *    state       {IN}     State of encryption.
                   1184:  *    inlen       {IN}     Length of this input part.
                   1185:  *    in          {IN}     This input part.
                   1186:  *    tdubuf      {IN/OUT} TDU buffer.
                   1187:  * 
                   1188:  * NOTES
                   1189:  *    There is a limitation of 1 recipient (nrecipients = 1) at this
                   1190:  *    time.
                   1191:  *    
                   1192:  * RETURNS
                   1193:  *    NZERROR_OK           Success.
                   1194:  *    NZERROR_TK_CANTGROW  Needed to grow output buffer but could not.
                   1195:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1196:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1197:  */
                   1198: #ifdef __STDC__
                   1199: nzerror nztkec_PKEncrypt(nzctx *, nzttPersona *, ub4, nzttIdentity *, 
                   1200:                              nzttces, ub4, ub1 *, nzttBufferBlock *);
                   1201: #else
                   1202: nzerror nztkec_PKEncrypt(/*_ nzctx *, nzttPersona *, ub4, nzttIdentity *, 
                   1203:                              nzttces, ub4, ub1 *, nzttBufferBlock * _*/);
                   1204: #endif /* __STDC __*/
                   1205: 
                   1206: /*---------------- nztxkec_PKEncryptExpansion ----------------*/
                   1207: 
                   1208: /*
                   1209:  * NAME
                   1210:  *    nztxkec_PKEncryptExpansion - Determine the buffer needed for PKEncrypt
                   1211:  * 
                   1212:  * PARAMETERS
                   1213:  *    osscntxt    {IN}     OSS context. 
                   1214:  *    persona     {IN}     Persona.
                   1215:  *    nrecipients {IN}     Number of recipients.
                   1216:  *    inlen       {IN}     Length of input.
                   1217:  *    tdulen      {out}    Length of buffer need.
                   1218:  * 
                   1219:  * NOTES
                   1220:  *    
                   1221:  * RETURNS
                   1222:  *    NZERROR_OK           Success.
                   1223:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1224:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1225:  */
                   1226: #ifdef __STDC__
                   1227: nzerror nztxkec_PKEncryptExpansion(nzctx *, nzttPersona *, ub4, ub4,
                   1228:                                        ub4 *);
                   1229: #else
                   1230: nzerror nztxkec_PKEncryptExpansion(/*_ nzctx *, nzttPersona *, ub4, ub4,
                   1231:                                        ub4 * _*/);
                   1232: #endif /* __STDC __*/
                   1233: 
                   1234: /*--------------------- nztkdc_PKDecrypt ---------------------*/
                   1235: 
                   1236: /*
                   1237:  * NAME
                   1238:  *    nztkdc_PKDecrypt - Decrypt a PKEncrypted message.
                   1239:  * 
                   1240:  * PARAMETERS
                   1241:  *    osscntxt    {IN}     OSS context.
                   1242:  *    persona     {IN}     Persona.
                   1243:  *    state       {IN}     State of encryption.
                   1244:  *    inlen       {IN}     Length of this input part.
                   1245:  *    in          {IN}     This input part.
                   1246:  *    tdubuf      {IN/OUT} TDU buffer.
                   1247:  * 
                   1248:  * NOTES
                   1249:  *    
                   1250:  * RETURNS
                   1251:  *    NZERROR_OK           Success.
                   1252:  *    NZERROR_TK_CANTGROW  Needed to grow output buffer but could not.
                   1253:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1254:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1255:  */
                   1256: #ifdef __STDC__
                   1257: nzerror nztkdc_PKDecrypt(nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   1258:                              nzttBufferBlock *);
                   1259: #else
                   1260: nzerror nztkdc_PKDecrypt(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   1261:                              nzttBufferBlock * _*/);
                   1262: #endif /* __STDC __*/
                   1263: 
                   1264: /*-------------------------- nztHash --------------------------*/
                   1265: 
                   1266: /*
                   1267:  * NAME
                   1268:  *    nztHash - Generate a hash.
                   1269:  * 
                   1270:  * PARAMETERS
                   1271:  *    osscntxt {IN}     OSS context.
                   1272:  *    persona  {IN}     Persona.
                   1273:  *    state    {IN}     State of hash.
                   1274:  *    inlen    {IN}     Length of this input.
                   1275:  *    in       {IN}     This input.
                   1276:  *    tdu      {IN/OUT} Output tdu.
                   1277:  * 
                   1278:  * NOTES
                   1279:  *    
                   1280:  * RETURNS
                   1281:  *    NZERROR_OK           Success.
                   1282:  *    NZERROR_TK_CANTGROW  Needed to grow TDU buffer but could not.
                   1283:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1284:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1285:  */
                   1286: #ifdef __STDC__
                   1287: nzerror nztHash(nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   1288:                     nzttBufferBlock *);
                   1289: #else
                   1290: nzerror nztHash(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   1291:                     nzttBufferBlock * _*/);
                   1292: #endif /* __STDC __*/
                   1293: 
                   1294: /*----------------------- nztSeedRandom -----------------------*/
                   1295: 
                   1296: /*
                   1297:  * NAME
                   1298:  *    nztSeedRandom - Seed the random function
                   1299:  * 
                   1300:  * PARAMETERS
                   1301:  *    osscntxt {IN}  OSS context.
                   1302:  *    persona  {IN}  Persona.
                   1303:  *    seedlen  {IN}  Length of seed.
                   1304:  *    seed     {IN}  Seed.
                   1305:  * 
                   1306:  * NOTES
                   1307:  *    
                   1308:  * RETURNS
                   1309:  *    NZERROR_OK           Success.
                   1310:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1311:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1312:  */
                   1313: #ifdef __STDC__
                   1314: nzerror nztSeedRandom(nzctx *, nzttPersona *, ub4, ub1 *);
                   1315: #else
                   1316: nzerror nztSeedRandom(/*_ nzctx *, nzttPersona *, ub4, ub1 * _*/);
                   1317: #endif /* __STDC __*/
                   1318: 
                   1319: /*--------------------- nztrb_RandomBytes ---------------------*/
                   1320: 
                   1321: /*
                   1322:  * NAME
                   1323:  *    nztrb_RandomBytes - Generate a buffer random bytes.
                   1324:  * 
                   1325:  * PARAMETERS
                   1326:  *    osscntxt {IN}     OSS context.
                   1327:  *    persona  {IN}     Persona.
                   1328:  *    nbytes   {IN}     Number of bytes desired.
                   1329:  *    out      {IN/OUT} Buffer block for bytes.
                   1330:  * 
                   1331:  * NOTES
                   1332:  *    
                   1333:  * RETURNS
                   1334:  *    NZERROR_OK           Success.
                   1335:  *    NZERROR_TK_CANTGROW  Needed to grow TDU buffer but could not.
                   1336:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1337:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1338:  */
                   1339: #ifdef __STDC__
                   1340: nzerror nztrb_RandomBytes(nzctx *, nzttPersona *, ub4, 
                   1341:                               nzttBufferBlock *);
                   1342: #else
                   1343: nzerror nztrb_RandomBytes(/*_ nzctx *, nzttPersona *, ub4, 
                   1344:                               nzttBufferBlock * _*/);
                   1345: #endif /* __STDC __*/
                   1346: 
                   1347: /*-------------------- nztrn_RandomNumber --------------------*/
                   1348: 
                   1349: /*
                   1350:  * NAME
                   1351:  *    nztrn_RandomNumber - Generate a random number
                   1352:  * 
                   1353:  * PARAMETERS
                   1354:  *    osscntxt {IN}     OSS context.
                   1355:  *    persona  {IN}     Persona.
                   1356:  *    num      {OUT}    Number.
                   1357:  * 
                   1358:  * NOTES
                   1359:  *    
                   1360:  * RETURNS
                   1361:  *    NZERROR_OK           Success.
                   1362:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   1363:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   1364:  */
                   1365: #ifdef __STDC__
                   1366: nzerror nztrn_RandomNumber(nzctx *, nzttPersona *, uword *);
                   1367: #else
                   1368: nzerror nztrn_RandomNumber(/*_ nzctx *, nzttPersona *, uword * _*/);
                   1369: #endif /* __STDC __*/
                   1370: 
                   1371: /*---------------------- nztbbInitBlock ----------------------*/
                   1372: 
                   1373: /*
                   1374:  * NAME
                   1375:  *    nztbbInitBlock - Initialize a buffer block.
                   1376:  * 
                   1377:  * PARAMETERS
                   1378:  *    osscntxt {IN}     OSS context.
                   1379:  *    block    {IN/OUT} Buffer block.
                   1380:  * 
                   1381:  * NOTES
                   1382:  *    The buffer block is initialized to be empty (all members are set
                   1383:  *    to 0/NULL).  Such a block will be allocated memory as needed.
                   1384:  *    
                   1385:  * RETURNS
                   1386:  *    NZERROR_OK        Success.
                   1387:  */
                   1388: #ifdef __STDC__
                   1389: nzerror nztbbInitBlock(nzctx *, nzttBufferBlock *);
                   1390: #else
                   1391: nzerror nztbbInitBlock(/*_ nzctx *, nzttBufferBlock * _*/);
                   1392: #endif /* __STDC __*/
                   1393: 
                   1394: /*---------------------- nztbbReuseBlock ----------------------*/
                   1395: 
                   1396: /*
                   1397:  * NAME
                   1398:  *    nztbbReuseBlock - Reuse an already initialized and possibly used block.
                   1399:  * 
                   1400:  * PARAMETERS
                   1401:  *    osscntxt {IN}     OSS context.
                   1402:  *    block    {IN/OUT} Buffer block.
                   1403:  * 
                   1404:  * NOTES
                   1405:  *    This function simply sets the used length member of the buffer
                   1406:  *    block to 0.  If the block already has memory allocated to it,
                   1407:  *    this will cause it to be reused.
                   1408:  *    
                   1409:  * RETURNS
                   1410:  *    NZERROR_OK        Success.
                   1411:  */
                   1412: #ifdef __STDC__
                   1413: nzerror nztbbReuseBlock(nzctx *, nzttBufferBlock *);
                   1414: #else
                   1415: nzerror nztbbReuseBlock(/*_ nzctx *, nzttBufferBlock * _*/);
                   1416: #endif /* __STDC __*/
                   1417: 
                   1418: /*---------------------- nztbbSizeBlock ----------------------*/
                   1419: 
                   1420: /*
                   1421:  * NAME
                   1422:  *    nztbbSizeBlock - Size an initialized block to a particular size.
                   1423:  * 
                   1424:  * PARAMETERS
                   1425:  *    osscntxt {IN}     OSS context.
                   1426:  *    len      {IN}     Minimum number of unused bytes desired.
                   1427:  *    block    {IN/OUT} Buffer block.
                   1428:  *
                   1429:  * NOTES
                   1430:  *    
                   1431:  * RETURNS
                   1432:  *    NZERROR_OK        Success.
                   1433:  */
                   1434: #ifdef __STDC__
                   1435: nzerror nztbbSizeBlock(nzctx *, ub4, nzttBufferBlock *);
                   1436: #else
                   1437: nzerror nztbbSizeBlock(/*_ nzctx *, ub4, nzttBufferBlock * _*/);
                   1438: #endif /* __STDC __*/
                   1439: 
                   1440: /*----------------------- nztbbGrowBlock -----------------------*/
                   1441: 
                   1442: /*
                   1443:  * NAME
                   1444:  *    nzbbGrowBlock - Increase the size of the buffer block.
                   1445:  * 
                   1446:  * PARAMETERS
                   1447:  *    osscntxt {IN}     OSS context.
                   1448:  *    inc      {IN}     Number of bytes to increase.
                   1449:  *    block    {IN/OUT} Buffer block.
                   1450:  *
                   1451:  * NOTES
                   1452:  *    
                   1453:  * RETURNS
                   1454:  *    NZERROR_OK        Success.
                   1455:  */
                   1456: #ifdef __STDC__
                   1457: nzerror nztbbGrowBlock(nzctx *, ub4, nzttBufferBlock *);
                   1458: #else
                   1459: nzerror nztbbGrowBlock(/*_ nzctx *, ub4, nzttBufferBlock * _*/);
                   1460: #endif /* __STDC __*/
                   1461: 
                   1462: /*---------------------- nztbbPurgeBlock ----------------------*/
                   1463: 
                   1464: /*
                   1465:  * NAME
                   1466:  *    nztbbPurgeBlock - Purge a buffer block of its memory.
                   1467:  * 
                   1468:  * PARAMETERS
                   1469:  *    osscntxt {IN}     OSS context.
                   1470:  *    block    {IN/OUT} Buffer block.
                   1471:  * 
                   1472:  * NOTES
                   1473:  *    The memory used by the buffer block as the buffer is released.
                   1474:  *    The buffer block itself is not affected.
                   1475:  *    
                   1476:  * RETURNS
                   1477:  *    NZERROR_OK        Success.
                   1478:  */
                   1479: #ifdef __STDC__
                   1480: nzerror nztbbPurgeBlock(nzctx *, nzttBufferBlock *);
                   1481: #else
                   1482: nzerror nztbbPurgeBlock(/*_ nzctx *, nzttBufferBlock * _*/);
                   1483: #endif /* __STDC __*/
                   1484: 
                   1485: /*----------------------- nztbbSetBlock -----------------------*/
                   1486: 
                   1487: /*
                   1488:  * NAME
                   1489:  *    nztbbSetBlock - Set a buffer block to a known state.
                   1490:  * 
                   1491:  * PARAMETERS
                   1492:  *    osscntxt {IN}     OSS context.
                   1493:  *    flags    {IN}     Flags to set.
                   1494:  *    buflen   {IN}     Length of buffer.
                   1495:  *    usedlen  {IN}     Used length.
                   1496:  *    buffer   {IN}     Buffer.
                   1497:  *    block    {IN/OUT} Buffer block
                   1498:  * 
                   1499:  * NOTES
                   1500:  *    If buflen > 0, objlen == 0, and obj == NULL, then buflen bytes
                   1501:  *    of memory is allocated and a pointer is stored in the buffer
                   1502:  *    block.
                   1503:  *
                   1504:  *    The buffer parameter remains unchanged.
                   1505:  *    
                   1506:  * RETURNS
                   1507:  *    NZERROR_OK        Success.
                   1508:  */
                   1509: #ifdef __STDC__
                   1510: nzerror nztbbSetBlock(nzctx *,  uword, ub4, ub4, ub1 *, 
                   1511:                           nzttBufferBlock *);
                   1512: #else
                   1513: nzerror nztbbSetBlock(/*_ nzctx *,  uword, ub4, ub4, ub1 *, 
                   1514:                           nzttBufferBlock * _*/);
                   1515: #endif /* __STDC __*/
                   1516: 
                   1517: 
                   1518: /*--------------------- nztiGetSecInfo ---------------------*/
                   1519: 
                   1520: /*
                   1521:  * NAME
                   1522:  *     nztiGetSecInfo - Get some security information for SSL
                   1523:  * 
                   1524:  * PARAMETERS
                   1525:  *     Name    {IN/OUT}        Description
                   1526:  *     osscntxt {IN}           OSS context.
                   1527:  *     persona  {IN}           persona
                   1528:  *     dname    {OUT}          distinguished name of the certificate
                   1529:  *     dnamelen {OUT}          length of the distinguished name 
                   1530:  *     issuername {OUT}        issuer name of the certificate
                   1531:  *     certhash {OUT}          SHA1 hash of the certificate
                   1532:  *     certhashlen{OUT}        length of the hash
                   1533:  * NOTES
                   1534:  *     This function allocate memories for issuername, certhash, and dname.
                   1535:  *     To deallocate memory for those params, you should call nztdbuf_DestroyBuf.
                   1536:  * RETURNS
                   1537:  *     
                   1538:  */
                   1539: #ifdef __STDC__
                   1540: nzerror nztiGetSecInfo(nzctx *, nzttPersona *, text **, ub4 *,
                   1541:                         text **, ub4 *, ub1 **, ub4 *);
                   1542: #else
                   1543: nzerror nztiGetSecInfo(/*_ nzctx *, nzttPersona *, text **, ub4 *,
                   1544:                           text **, ub4 *, ub1 **, ub4 * _*/);
                   1545: #endif /* __STDC__ */
                   1546: 
                   1547: 
                   1548: /*---------------------- nztiGetDName ----------------------*/
                   1549: 
                   1550: /*
                   1551:  * NAME
                   1552:  *     nztiGetDName - Get the distinguished name for the given identity
                   1553:  * 
                   1554:  * PARAMETERS
                   1555:  *     Name    {IN/OUT}        Description
                   1556:  *     osscntxt {IN}           OSS context.
                   1557:  *     identity {IN}           identity need to get dname from
                   1558:  *     dn      {OUT}           distinguished name
                   1559:  *     dnlen   {OUT}           length of the dname
                   1560:  *
                   1561:  * NOTES
                   1562:  *     
                   1563:  * RETURNS
                   1564:  *     
                   1565:  */
                   1566: 
                   1567: #ifdef __STDC__
                   1568: nzerror nztiGetDName(nzctx *, nzttIdentity *,
                   1569:                     text **, ub4 *);
                   1570: #else
                   1571: nzerror nztiGetDName(/*_ nzctx *, nzttIdentity *,
                   1572:                             text **, ub4 * _*/);
                   1573: #endif /* __STDC__ */
                   1574: 
                   1575: /*------------------- nztiGetIssuerName -------------------*/
                   1576: 
                   1577: /*
                   1578:  * NAME
                   1579:  *     nztiGetIssuerName -  Get IssuerName for the given identity 
                   1580:  * 
                   1581:  * PARAMETERS
                   1582:  *     Name    {IN/OUT}        Description
                   1583:  *     osscntxt {IN}           OSS context.
                   1584:  *     identity {IN}           identity need to get issuername from
                   1585:  *     issuername {OUT}        issuer's name
                   1586:  *     issuernamelen {OUT}     length of the issuer's name
                   1587:  * 
                   1588:  * NOTES
                   1589:  *     
                   1590:  * RETURNS
                   1591:  *     
                   1592:  */
                   1593: #ifdef __STDC__
                   1594: nzerror nztiGetIssuerName(nzctx *, nzttIdentity *,
                   1595:                             text **, ub4 *);
                   1596: #else
                   1597: nzerror nztiGetIssuerName(/*_ nzctx *, nzttIdentity *,
                   1598:                              text **, ub4 * _*/);
                   1599: #endif /* __STDC__ */
                   1600: 
                   1601: 
                   1602: /*-------------------- nztgch_GetCertHash --------------------*/
                   1603: 
                   1604: /*
                   1605:  * NAME
                   1606:  *     nztgch_GetCertHash -  Get SHA1 hash for the certificate of the identity 
                   1607:  * 
                   1608:  * PARAMETERS
                   1609:  *     Name    {IN/OUT}        Description
                   1610:  *     osscntxt {IN}           OSS context.
                   1611:  *     identity {IN}           identity need to get issuername from
                   1612:  *     certHash {OUT}          certHash buffer 
                   1613:  *     hashLen {OUT}           length of the certHash 
                   1614:  * 
                   1615:  * NOTES
                   1616:  *     Need to call nztdbuf_DestroyBuf to deallocate memory for certHash.      
                   1617:  * RETURNS
                   1618:  *     
                   1619:  */
                   1620: #ifdef __STDC__
                   1621: nzerror nztgch_GetCertHash(nzctx *, nzttIdentity *,
                   1622:                             ub1 **, ub4 *);
                   1623: #else
                   1624: nzerror nztgch_GetCertHash(/*_ nzctx *, nzttIdentity *,
                   1625:                             ub1 **, ub4 * _*/);
                   1626: #endif /* __STDC__ */
                   1627: 
                   1628: /*-------------------- nztdbuf_DestroyBuf --------------------*/
                   1629: 
                   1630: /*
                   1631:  * NAME
                   1632:  *     nztdbuf_DestroyBuf - Deallocation funtions for ub1 and text buffer 
                   1633:  * 
                   1634:  * PARAMETERS
                   1635:  *     Name    {IN/OUT}        Description
                   1636:  *     osscntxt {IN}           OSS context.
                   1637:  *     buf      {IN}           Allocated buffer to be destroyed.
                   1638:  * 
                   1639:  * NOTES
                   1640:  *     
                   1641:  * RETURNS
                   1642:  *     
                   1643:  */
                   1644: #ifdef __STDC__
                   1645: nzerror nztdbuf_DestroyBuf( nzctx *, dvoid **);
                   1646: #else
                   1647: nzerror nztdbuf_DestroyBuf(/*_ nzctx *, dvoid ** _*/);
                   1648: #endif /* __STDC__ */
                   1649: 
                   1650: 
                   1651: /*----------------------- nztGetCertChain -----------------------*/
                   1652: 
                   1653: /*
                   1654:  * NAME
                   1655:  *     nztGetCertChain - 
                   1656:  * 
                   1657:  * PARAMETERS
                   1658:  *     Name    {IN/OUT}        Description
                   1659:  *     osscntxt {IN}           OSS context.
                   1660:  * 
                   1661:  * NOTES
                   1662:  *     
                   1663:  * RETURNS
                   1664:  *     
                   1665:  */
                   1666: #ifdef __STDC__
                   1667: nzerror nztGetCertChain(nzctx *, nzttWallet * );
                   1668: #else
                   1669: nzerror nztGetCertChain(/*_ nzctx *, nzttWallet _*/);
                   1670: #endif /* __STDC__ */
                   1671: 
                   1672: /*----------------------- nztCompareDN -----------------------*/
                   1673: 
                   1674: /*
                   1675:  * NAME
                   1676:  *     nztCompareDN - 
                   1677:  * 
                   1678:  * PARAMETERS
                   1679:  *     Name    {IN/OUT}        Description
                   1680:  *     osscntxt {IN}           OSS context.
                   1681:  *     dn1     {IN}            distinguished name 1
                   1682:  *     dn2     {IN}            distinguished name 2
                   1683:  * 
                   1684:  * NOTES
                   1685:  *     
                   1686:  * RETURNS
                   1687:  *     NZERROR_OK              succeeded
                   1688:  *     others                  failed
                   1689:  *     
                   1690:  */
                   1691: #ifdef __STDC__
                   1692: nzerror nztCompareDN(nzctx *, ub1 *, ub4,  ub1 *, ub4, boolean * );
                   1693: #else
                   1694: nzerror nztCompareDN(/*_ nzctx *, ub1 *,ub4 ,  ub1 *, ub4, boolean * _*/);
                   1695: #endif/* __STDC__ */
                   1696: 
                   1697: 
                   1698: #ifdef NZ_OLD_TOOLS
                   1699: /*--------------------- nztIdentityAlloc ---------------------*/
                   1700: 
                   1701: /*
                   1702:  * NAME
                   1703:  *     nztIdentityAlloc - Allocate memory for nzttIdentity context
                   1704:  * 
                   1705:  * PARAMETERS
                   1706:  *     Name    {IN/OUT}        Description
                   1707:  *     osscntxt {IN}           OSS context.
                   1708:  *     identity {OUT}          nzttIdentity context
                   1709:  * 
                   1710:  * NOTES
                   1711:  *     
                   1712:  * RETURNS
                   1713:  *     NZERROR_OK              succeeded
                   1714:  *     others                  failed
                   1715:  *     
                   1716:  */
                   1717: #ifdef __STDC__
                   1718: nzerror nztIdentityAlloc(nzctx *, nzttIdentity **);
                   1719: #else
                   1720: nzerror nztIdentityAlloc(/*_ nzctx *, nzttIdentity ** _*/);
                   1721: #endif/* __STDC__ */
                   1722: 
                   1723: /*--------------------- nztIPrivateAlloc ---------------------*/
                   1724: 
                   1725: /*
                   1726:  * NAME
                   1727:  *     nztIPrivateAlloc - Allocate memory for nzttIdentityPrivate
                   1728:  * 
                   1729:  * PARAMETERS
                   1730:  *     Name    {IN/OUT}        Description
                   1731:  * 
                   1732:  *     osscntxt {IN}           OSS context.
                   1733:  *     ipriv   {OUT}           identityPrivate structure
                   1734:  * NOTES
                   1735:  *     
                   1736:  * RETURNS
                   1737:  *     NZERROR_OK              succeeded
                   1738:  *     others                  failed
                   1739:  *     
                   1740:  */
                   1741: 
                   1742: #ifdef __STDC__
                   1743: nzerror nztIPrivateAlloc( nzctx *, nzttIdentityPrivate **);
                   1744: #else
                   1745: nzerror nztIPrivateAlloc( nzctx *, nzttIdentityPrivate **);
                   1746: #endif /* __STDC__ */
                   1747: 
                   1748: 
                   1749: /*---------------------- nztIDupContent ----------------------*/
                   1750: 
                   1751: /*
                   1752:  * NAME
                   1753:  *     nztIDupContent - 
                   1754:  * 
                   1755:  * PARAMETERS
                   1756:  *     Name    {IN/OUT}        Description
                   1757:  *     osscntxt {IN}           OSS context.
                   1758:  *     targetIdentity{OUT}     target identity
                   1759:  *     sourceIdentity {IN}     source identity
                   1760:  * NOTES
                   1761:  *     
                   1762:  * RETURNS
                   1763:  *     NZERROR_OK              succeeded
                   1764:  *     others                  failed
                   1765:  *     
                   1766:  */
                   1767: 
                   1768: #ifdef __STDC__
                   1769: nzerror nztIDupContent( nzctx *, nzttIdentity *, nzttIdentity *);
                   1770: #else
                   1771: nzerror nztIDupContent(/*_ nzctx *, nzttIdentity *, nzttIdentity * _*/);
                   1772: #endif
                   1773: /*---------------------- nztIPDuplicate ----------------------*/
                   1774: 
                   1775: /*
                   1776:  * NAME
                   1777:  *     nztIPDuplicate - 
                   1778:  * 
                   1779:  * PARAMETERS
                   1780:  *     Name    {IN/OUT}        Description
                   1781:  *     osscntxt {IN}           OSS context.
                   1782:  *     target_ipriv {OUT}      target identityPrivate
                   1783:  *     source_ipriv {IN}       source identityPrivate
                   1784:  * 
                   1785:  * NOTES
                   1786:  *     
                   1787:  * RETURNS
                   1788:  *     NZERROR_OK              succeeded
                   1789:  *     others                  failed
                   1790:  *     
                   1791:  */
                   1792: #ifdef __STDC__
                   1793: nzerror nztIPDuplicate( nzctx *, nzttIdentityPrivate **,
                   1794:                        nzttIdentityPrivate *);
                   1795: #else
                   1796: nzerror nztIPDuplicate(/*_ nzctx *, nzttIdentityPrivate **,
                   1797:                         nzttIdentityPrivate * _*/);
                   1798: #endif /* __STDC__ */
                   1799: 
                   1800: /*--------------------- nztiDupIdentList ---------------------*/
                   1801: 
                   1802: /*
                   1803:  * NAME
                   1804:  *     nztiDupIdentList - 
                   1805:  * 
                   1806:  * PARAMETERS
                   1807:  *     Name    {IN/OUT}        Description
                   1808:  *     osscntxt {IN}           OSS context.
                   1809:  *     source_identities {IN}  source identity list
                   1810:  *     numIdent {OUT}          number of identity in the list
                   1811:  *     ppidentity {OUT}        Target of identity      
                   1812:  *     
                   1813:  * NOTES
                   1814:  *     
                   1815:  * RETURNS
                   1816:  *     NZERROR_OK              succeeded
                   1817:  *     others                  failed
                   1818:  *     
                   1819:  */
                   1820: #ifdef __STDC__
                   1821: nzerror nztiDupIdentList( nzctx *, nzttIdentity  *, ub4 *, nzttIdentity **);
                   1822: #else
                   1823: 
                   1824: nzerror nztiDupIdentList(/*_ nzctx *, nzttIdentity  *, ub4 *, nzttIdentity ** _*/);
                   1825: #endif
                   1826: 
                   1827: /*--------------------- nztFreeIdentList ---------------------*/
                   1828: 
                   1829: /*
                   1830:  * NAME
                   1831:  *     nztFreeIdentList - Free memory for a list of Identities
                   1832:  * 
                   1833:  * PARAMETERS
                   1834:  *     Name    {IN/OUT}        Description
                   1835:  *     osscntxt {IN}           OSS context.
                   1836:  *     identity {IN}           identity context
                   1837:  *
                   1838:  * NOTES
                   1839:  *     
                   1840:  * RETURNS
                   1841:  *     NZERROR_OK              succeeded
                   1842:  *     others                  failed
                   1843:  *     
                   1844:  */
                   1845: #ifdef __STDC__
                   1846: nzerror nztFreeIdentList( nzctx *, nzttIdentity **);
                   1847: #else
                   1848: nzerror nztFreeIdentList(/*_ nzctx *, nzttIdentity ** _*/);
                   1849: #endif
                   1850: #endif /* NZ_OLD_TOOLS */
                   1851: 
                   1852: /*--------------------- nztCheckVaLidity ---------------------*/
                   1853: 
                   1854: /*
                   1855:  * NAME
                   1856:  *     nztCheckVaLidity -  Check the validity of certificate
                   1857:  * 
                   1858:  * PARAMETERS
                   1859:  *     Name    {IN/OUT}        Description
                   1860:  *     osscntxt {IN}           OSS context.
                   1861:  *     start_time              Start time of the certificate
                   1862:  *     end_time                End time of the certificate
                   1863:  * 
                   1864:  * NOTES
                   1865:  *     
                   1866:  * RETURNS
                   1867:  *     NZERROR_OK              succeeded
                   1868:  *     others                  failed
                   1869:  *     
                   1870:  */
                   1871: #ifdef __STDC__
                   1872: nzerror nztCheckValidity( nzctx *, ub4 , ub4 );
                   1873: #else
                   1874: nzerror nztCheckValidity(/*_ nzctx *, ub4 , ub4 _*/);
                   1875: #endif
                   1876: 
                   1877: /*--------------------- nztwCreateWallet ---------------------*/
                   1878: 
                   1879: /*
                   1880:  * NAME
                   1881:  *    nztwCreateWallet - Create a new wallet.
                   1882:  * 
                   1883:  * PARAMETERS
                   1884:  *    osscntxt {IN}     OSS context.
                   1885:  *    wrllen   {IN}     Length of wallet resource locator.
                   1886:  *    wrl      {IN}     WRL.
                   1887:  *    pwdlen   {IN}     Length of password (see notes below).
                   1888:  *    pwd      {IN}     Password.
                   1889:  *    wallet   {IN/OUT} Wallet. 
                   1890:  * 
                   1891:  * NOTES
                   1892:  *    It is an error to try to create a wallet that already exists.
                   1893:  *    The previously existing wallet must be destroyed first.
                   1894:  *
                   1895:  *    The wallet itself is not encrypted.  Rather, all the personas in
                   1896:  *    the wallet are encrypted under the same password.  A hash of the
                   1897:  *    password is stored in the wallet.
                   1898:  *
                   1899:  *    Upon success, an empty open wallet is stored in the wallet
                   1900:  *    parameter.
                   1901:  *    
                   1902:  * RETURNS
                   1903:  *    NZERROR_OK                 Sucess.
                   1904:  *    NZERROR_TK_WALLET_EXISTS   Wallet already exists.
                   1905:  *    NZERROR_RIO_OPEN           RIO could not create wallet (see trace file).
                   1906:  */
                   1907: #ifdef __STDC__
                   1908: nzerror nztwCreateWallet(nzctx *, ub4, text *, ub4, text *, 
                   1909:                              nzttWallet *);
                   1910: #else
                   1911: nzerror nztwCreateWallet(/*_ nzctx *, ub4, text *, ub4, text *, 
                   1912:                              nzttWallet * _*/);
                   1913: #endif /* __STDC__ */
                   1914: 
                   1915: 
                   1916: /*--------------------- nztwDestroyWallet ---------------------*/
                   1917: 
                   1918: /*
                   1919:  * NAME
                   1920:  *    nztwDestroyWallet - Destroy an existing wallet.
                   1921:  * 
                   1922:  * PARAMETERS
                   1923:  *    osscntxt {IN}     OSS context.
                   1924:  *    wrllen   {IN}     Length of wallet resource locator.
                   1925:  *    wrl      {IN}     WRL.
                   1926:  *    pwdlen   {IN}     Length of password.
                   1927:  *    pwd      {IN}     Password.
                   1928:  * NOTES
                   1929:  *    
                   1930:  * RETURNS
                   1931:  *    NZERROR_OK           Success.
                   1932:  *    NZERROR_TK_PASSWORD  Password verification failed.
                   1933:  *    NZERROR_RIO_OPEN     RIO could not open wallet (see trace file).
                   1934:  *    NZERROR_RIO_DELETE   Delete failed (see trace file).
                   1935:  */
                   1936: #ifdef __STDC__
                   1937: nzerror nztwDestroyWallet(nzctx *, ub4, text *, ub4, text *);
                   1938: #else
                   1939: nzerror nztwDestroyWallet(/*_ nzctx *, ub4, text *, ub4, text * _*/);
                   1940: #endif /* __STDC __*/
                   1941: 
                   1942: /*--------------------- nzteStorePersona ---------------------*/
                   1943: 
                   1944: /*
                   1945:  * NAME
                   1946:  *    nzteStorePersona - Store an open persona in a wallet.
                   1947:  * 
                   1948:  * PARAMETERS
                   1949:  *    osscntxt {IN}     OSS context. 
                   1950:  *    persona  {IN/OUT} Persona.
                   1951:  *    wallet   {IN/OUT} Wallet.
                   1952:  * 
                   1953:  * NOTES
                   1954:  *    If the open persona is not associated with any wallet (it was
                   1955:  *    created via the nzteClosePersona function), then storing the
                   1956:  *    persona creates that association.  The wallet will also have an
                   1957:  *    updated persona list that reflects this association.
                   1958:  *
                   1959:  *    If the open persona was associated with wallet 'A' (it was
                   1960:  *    opened via the nztwOpenWallet function), and is stored back into
                   1961:  *    wallet 'A', then then the old persona is overwritten by the new
                   1962:  *    persona if the password can be verified.  Recall that all
                   1963:  *    personas have a unique identity id.  If that id changes then
                   1964:  *    storing the persona will put a new persona in the wallet.
                   1965:  *
                   1966:  *    If the open persona was associated with wallet 'A' and is stored
                   1967:  *    into wallet 'B', and if wallet 'B' does not contain a persona
                   1968:  *    with that unique identity id, then the persona will be copied
                   1969:  *    into wallet 'B', wallet 'B''s persona list will be updated, and
                   1970:  *    the persona structure will be updated to be associated with
                   1971:  *    wallet 'B'.  If wallet 'B' already contained the persona, it
                   1972:  *    would be overwritten by the new persona.
                   1973:  *
                   1974:  *    The persona parameter is doubly indirect so that at the
                   1975:  *    conclusion of the function call, the pointer can be directed to
                   1976:  *    the persona in the wallet.
                   1977:  *
                   1978:  * RETURNS
                   1979:  *    NZERROR_OK           Success.
                   1980:  *    NZERROR_TK_PASSWORD  Password verification failed.
                   1981:  *    NZERROR_RIO_STORE    Store failed (see network trace file).
                   1982:  */
                   1983: #ifdef __STDC__
                   1984: nzerror nzteStorePersona(nzctx *, nzttPersona **, nzttWallet *);
                   1985: #else
                   1986: nzerror nzteStorePersona(/*_ nzctx *, nzttPersona **, nzttWallet * _*/);
                   1987: #endif /* __STDC __*/
                   1988: 
                   1989: /*--------------------- nzteRemovePersona ---------------------*/
                   1990: 
                   1991: /*
                   1992:  * NAME
                   1993:  *    nzteRemovePersona - Remove a persona from the wallet.
                   1994:  * 
                   1995:  * PARAMETERS
                   1996:  *    osscntxt {IN}     OSS context.
                   1997:  *    persona  {IN/OUT} Persona.
                   1998:  * 
                   1999:  * NOTES
                   2000:  *    The password is verified before trying to remove the persona.
                   2001:  *    
                   2002:  *    If the persona is open, it is closed.  The persona is removed
                   2003:  *    from the wallet list and the persona pointer is set to NULL.
                   2004:  *    
                   2005:  *    A double indirect pointer to the persona is required so that the
                   2006:  *    persona pointer can be set to NULL upon completion.
                   2007:  *
                   2008:  * RETURNS
                   2009:  *    NZERROR_OK           Success.
                   2010:  *    NZERROR_TK_PASSWORD  Password verification failed.
                   2011:  *    NZERROR_RIO_DELETE   Delete failed.
                   2012:  */
                   2013: #ifdef __STDC__
                   2014: nzerror nzteRemovePersona(nzctx *, nzttPersona **);
                   2015: #else
                   2016: nzerror nzteRemovePersona(/*_ nzctx *, nzttPersona ** _*/);
                   2017: #endif /* __STDC __*/
                   2018: 
                   2019: /*--------------------- nzteCreatePersona ---------------------*/
                   2020: 
                   2021: /*
                   2022:  * NAME
                   2023:  *    nzteCreatePersona - Create a persona.
                   2024:  * 
                   2025:  * PARAMETERS
                   2026:  *    osscntxt {IN}     OSS context.
                   2027:  *    itype    {IN}     Identity type.
                   2028:  *    ctype    {IN}     Cipher type.
                   2029:  *    desc     {IN}     Persona description.
                   2030:  *    persona  {OUT}    Persona.
                   2031:  * 
                   2032:  * NOTES
                   2033:  *    The resulting persona is created in the open state, but it will
                   2034:  *    not be associated with a wallet.
                   2035:  *    
                   2036:  *    The memory for the persona is allocated by the function.
                   2037:  *
                   2038:  * RETURNS
                   2039:  *    NZERROR_OK        Success.
                   2040:  *    NZERROR_TK_TYPE   Unsupported itype/ctype combination.
                   2041:  *    NZERROR_TK_PARMS  Error in persona description.
                   2042:  */
                   2043: #ifdef __STDC__
                   2044: nzerror nzteCreatePersona(nzctx *, nzttVersion, nzttCipherType, 
                   2045:                          nzttPersonaDesc *, nzttPersona **);
                   2046: #else
                   2047: nzerror nzteCreatePersona(/*_ nzctx *, nzttVersion, nzttCipherType, 
                   2048:                               nzttPersonaDesc *, nzttPersona ** _*/);
                   2049: #endif /* __STDC __*/
                   2050: 
                   2051: 
                   2052: /*----------------- nztiStoreTrustedIdentity -----------------*/
                   2053: 
                   2054: /*
                   2055:  * NAME
                   2056:  *    nztiStoreTrustedIdentity - Store an identity into a persona.
                   2057:  * 
                   2058:  * PARAMETERS
                   2059:  *    osscntxt {IN}     Success.
                   2060:  *    identity {IN/OUT} Trusted Identity.
                   2061:  *    persona  {IN/OUT} Persona.    
                   2062:  * 
                   2063:  * NOTES
                   2064:  *    The identity is not saved with the persona in the wallet until
                   2065:  *    the persona is stored.
                   2066:  *    
                   2067:  *    The identity parameter is double indirect so that it can point
                   2068:  *    into the persona at the conclusion of the call.
                   2069:  *
                   2070:  * RETURNS
                   2071:  *    NZERROR_OK     Success.
                   2072:  */
                   2073: #ifdef __STDC__
                   2074: nzerror nztiStoreTrustedIdentity(nzctx *, nzttIdentity **,
                   2075:                                      nzttPersona *);
                   2076: #else
                   2077: nzerror nztiStoreTrustedIdentity(/*_ nzctx *, nzttIdentity **,
                   2078:                                      nzttPersona * _*/);
                   2079: #endif /* __STDC __*/
                   2080: 
                   2081: /*--------------------- nzteSetProtection ---------------------*/
                   2082: 
                   2083: /*
                   2084:  * NAME
                   2085:  *    nzteSetProtection - Set the protection type for a CE function.
                   2086:  * 
                   2087:  * PARAMETERS
                   2088:  *    osscntxt {IN}     OSS context.
                   2089:  *    persona  {IN/OUT} Persona.
                   2090:  *    func     {IN}     CE function.
                   2091:  *    tdufmt   {IN}     TDU Format.
                   2092:  *    protinfo {IN}     Protection information specific to this format.
                   2093:  * 
                   2094:  * NOTES
                   2095:  *    
                   2096:  * RETURNS
                   2097:  *    NZERROR_OK              Success.
                   2098:  *    NZERROR_TK_PROTECTION   Unsupported protection.
                   2099:  *    NZERROR_TK_PARMS        Error in protection info.
                   2100:  */
                   2101: #ifdef __STDC__
                   2102: nzerror nzteSetProtection(nzctx *, nzttPersona *, nzttcef, nztttdufmt,
                   2103:                               nzttProtInfo *);
                   2104: #else
                   2105: nzerror nzteSetProtection(/*_ nzctx *, nzttPersona *, nzttcef, nztttdufmt,
                   2106:                               nzttProtInfo * _*/);
                   2107: #endif /* __STDC __*/
                   2108: 
                   2109: /*--------------------- nzteGetProtection ---------------------*/
                   2110: 
                   2111: /*
                   2112:  * NAME
                   2113:  *    nzteGetProtection - Get the protection type for a CE function.
                   2114:  * 
                   2115:  * PARAMETERS
                   2116:  *    osscntxt {IN}     OSS context.
                   2117:  *    persona  {IN}     Persona.
                   2118:  *    func     {IN}     CE function.
                   2119:  *    tdufmt   {OUT}    TDU format.
                   2120:  *    protinfo {OUT}    Protection information.
                   2121:  * 
                   2122:  * NOTES
                   2123:  *    
                   2124:  * RETURNS
                   2125:  *    NZERROR_OK        Success.
                   2126:  */
                   2127: #ifdef __STDC__
                   2128: nzerror nzteGetProtection(nzctx *, nzttPersona *, nzttcef, nztttdufmt *,
                   2129:                               nzttProtInfo *);
                   2130: #else
                   2131: nzerror nzteGetProtection(/*_ nzctx *, nzttPersona *, nzttcef, nztttdufmt *,
                   2132:                               nzttProtInfo * _*/);
                   2133: #endif /* __STDC __*/
                   2134: 
                   2135: /*-------------------- nztiRemoveIdentity --------------------*/
                   2136: 
                   2137: /*
                   2138:  * NAME
                   2139:  *    nztiRemoveIdentity - Remove an identity from an open persona.
                   2140:  * 
                   2141:  * PARAMETERS
                   2142:  *    osscntxt {IN}     OSS context. 
                   2143:  *    identity {IN/OUT}     Identity.
                   2144:  * 
                   2145:  * NOTES
                   2146:  *    If the persona is not stored, this identity will still be in the
                   2147:  *    persona stored in the wallet.
                   2148:  *    
                   2149:  *    The identity parameter is doubly indirect so that at the
                   2150:  *    conclusion of the function, the pointer can be set to NULL.
                   2151:  *
                   2152:  * RETURNS
                   2153:  *    NZERROR_OK           Success.
                   2154:  *    NZERROR_TK_NOTFOUND  Identity not found.
                   2155:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2156:  */
                   2157: #ifdef __STDC__
                   2158: nzerror nztiRemoveIdentity(nzctx *, nzttIdentity **);
                   2159: #else
                   2160: nzerror nztiRemoveIdentity(/*_ nzctx *, nzttIdentity ** _*/);
                   2161: #endif /* __STDC __*/
                   2162: 
                   2163: /*----------------- nztifdn -----------------*/
                   2164: 
                   2165: /*
                   2166:  * NAME
                   2167:  *    nztifdn - create an Identity From a Distinguished Name
                   2168:  * 
                   2169:  * PARAMETERS
                   2170:  *    osscntxt           {IN}  OSS context.
                   2171:  *    length             {IN}  Length of the distinguished name
                   2172:  *    distinguished_name {IN}  distinguished name string
                   2173:  *    ppidentity         {OUT} created identity
                   2174:  * 
                   2175:  * NOTES
                   2176:  *    Given a distinguished name, return the identity that corresponds to it.
                   2177:  *
                   2178:  * RETURNS
                   2179:  *    NZERROR_OK     Success.
                   2180:  */
                   2181: #ifdef __STDC__
                   2182: nzerror nztifdn(nzctx         *ossctx,
                   2183:                     ub4         length,
                   2184:                     text          *distinguished_name,
                   2185:                     nzttIdentity **ppidentity);
                   2186: #else
                   2187: nzerror nztifdn(/*_ nzctx         *ossctx,
                   2188:                     ub4         length,
                   2189:                     text          *distinguished_name,
                   2190:                     nzttIdentity **ppidentity _*/);
                   2191: #endif /* __STDC __*/
                   2192: 
                   2193: /*--------------------- nztxSignExpansion ---------------------*/
                   2194: 
                   2195: /*
                   2196:  * NAME
                   2197:  *    nztxSignExpansion - Determine the size of the attached signature buffer.
                   2198:  * 
                   2199:  * PARAMETERS
                   2200:  *    osscntxt {IN}  OSS context.
                   2201:  *    persona  {IN}  Persona.
                   2202:  *    inlen    {IN}  Length of input.
                   2203:  *    tdulen   {OUT} Buffer needed for signature.
                   2204:  *
                   2205:  * NOTES
                   2206:  *    
                   2207:  * RETURNS
                   2208:  *    NZERROR_OK           Success.
                   2209:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2210:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2211:  */
                   2212: #ifdef __STDC__
                   2213: nzerror nztxSignExpansion(nzctx *, nzttPersona *, ub4, ub4 *);
                   2214: #else
                   2215: nzerror nztxSignExpansion(/*_ nzctx *, nzttPersona *, ub4, ub4 * _*/);
                   2216: #endif /* __STDC __*/
                   2217: 
                   2218: /*--------------- nztxsd_SignDetachedExpansion ---------------*/
                   2219: 
                   2220: /*
                   2221:  * NAME
                   2222:  *    nztxsd_SignDetachedExpansion - Determine the size of buffer needed.
                   2223:  * 
                   2224:  * PARAMETERS
                   2225:  *    osscntxt {IN}  OSS context.
                   2226:  *    persona  {IN}  Persona.
                   2227:  *    inlen    {IN}  Length of input.
                   2228:  *    tdulen   {OUT} Buffer needed for signature.
                   2229:  * 
                   2230:  * NOTES
                   2231:  *    
                   2232:  * RETURNS
                   2233:  *    NZERROR_OK           Success.
                   2234:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2235:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2236:  */
                   2237: #ifdef __STDC__
                   2238: nzerror nztxsd_SignDetachedExpansion(nzctx *, nzttPersona *, ub4,
                   2239:                                          ub4 *);
                   2240: #else
                   2241: nzerror nztxsd_SignDetachedExpansion(/*_ nzctx *, nzttPersona *, ub4,
                   2242:                                          ub4 * _*/);
                   2243: #endif /* __STDC __*/
                   2244: 
                   2245: /*------------------------ nztEncrypt ------------------------*/
                   2246: 
                   2247: /*
                   2248:  * NAME
                   2249:  *    nztEncrypt - Symmetrically encrypt
                   2250:  * 
                   2251:  * PARAMETERS
                   2252:  *    osscntxt    {IN}     OSS context.
                   2253:  *    persona     {IN}     Persona.
                   2254:  *    inlen       {IN}     Length of this input part.
                   2255:  *    in          {IN}     This input part.
                   2256:  *    tdubuf      {IN/OUT} TDU buffer.
                   2257:  * 
                   2258:  * NOTES
                   2259:  *    
                   2260:  * RETURNS
                   2261:  *    NZERROR_OK           Success.
                   2262:  *    NZERROR_TK_CANTGROW  Needed to grow TDU buffer but could not.
                   2263:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2264:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2265:  */
                   2266: #ifdef __STDC__
                   2267: nzerror nztEncrypt(nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   2268:                        nzttBufferBlock *);
                   2269: #else
                   2270: nzerror nztEncrypt(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   2271:                        nzttBufferBlock * _*/);
                   2272: #endif /* __STDC __*/
                   2273: 
                   2274: /*------------------- nztxEncryptExpansion -------------------*/
                   2275: 
                   2276: /*
                   2277:  * NAME
                   2278:  *    nztxEncryptExpansion - Determine the size of the TDU to encrypt.
                   2279:  * 
                   2280:  * PARAMETERS
                   2281:  *    osscntxt    {IN}  OSS context.
                   2282:  *    persona     {IN}  Persona.
                   2283:  *    inlen       {IN}  Length of this input part.
                   2284:  *    tdulen      {OUT} Length of TDU.
                   2285:  * 
                   2286:  * NOTES
                   2287:  *    
                   2288:  * RETURNS
                   2289:  *    NZERROR_OK           Success.
                   2290:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2291:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2292:  */
                   2293: #ifdef __STDC__
                   2294: nzerror nztxEncryptExpansion(nzctx *, nzttPersona *, ub4, ub4 *);
                   2295: #else
                   2296: nzerror nztxEncryptExpansion(/*_ nzctx *, nzttPersona *, ub4, ub4 * _*/);
                   2297: #endif /* __STDC __*/
                   2298: 
                   2299: /*------------------------ nztDecrypt ------------------------*/
                   2300: 
                   2301: /*
                   2302:  * NAME
                   2303:  *    nztDecrypt - Decrypt an Encrypted message.
                   2304:  * 
                   2305:  * PARAMETERS
                   2306:  *    osscntxt {IN}     OSS context.
                   2307:  *    persona  {IN}     Persona.
                   2308:  *    state    {IN}     State of decryption.
                   2309:  *    inlen    {IN}     Length of this input part.
                   2310:  *    in       {IN}     This input part.
                   2311:  *    out      {IN/OUT} Cleartext message.
                   2312:  * 
                   2313:  * NOTES
                   2314:  *    
                   2315:  * RETURNS
                   2316:  *    NZERROR_OK           Success.
                   2317:  *    NZERROR_TK_CANTGROW  Needed to grow TDU buffer but could not.
                   2318:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2319:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2320:  */
                   2321: #ifdef __STDC__
                   2322: nzerror nztDecrypt(nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   2323:                        nzttBufferBlock *);
                   2324: #else
                   2325: nzerror nztDecrypt(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   2326:                        nzttBufferBlock * _*/);
                   2327: #endif /* __STDC __*/
                   2328: 
                   2329: /*------------------------ nztEnvelope ------------------------*/
                   2330: 
                   2331: /*
                   2332:  * NAME
                   2333:  *    nztEnvelope - Sign and PKEncrypt a message.
                   2334:  * 
                   2335:  * PARAMETERS
                   2336:  *    osscntxt    {IN}     OSS context.
                   2337:  *    persona     {IN}     Persona.
                   2338:  *    nrecipients {IN}     Number of recipients for this encryption.
                   2339:  *    recipients  {IN}     List of recipients.
                   2340:  *    state       {IN}     State of encryption.
                   2341:  *    inlen       {IN}     Length of this input part.
                   2342:  *    in          {IN}     This input part.
                   2343:  *    tdubuf      {IN/OUT} TDU buffer.
                   2344:  *
                   2345:  * NOTES
                   2346:  *    
                   2347:  * RETURNS
                   2348:  *    NZERROR_OK           Success.
                   2349:  *    NZERROR_TK_CANTGROW  Needed to grow output buffer but could not.
                   2350:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2351:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2352:  */
                   2353: #ifdef __STDC__
                   2354: nzerror nztEnvelope(nzctx *, nzttPersona *, ub4, nzttIdentity *,
                   2355:                         nzttces, ub4, ub1 *, nzttBufferBlock *);
                   2356: #else
                   2357: nzerror nztEnvelope(/*_ nzctx *, nzttPersona *, ub4, nzttIdentity *,
                   2358:                         nzttces, ub4, ub1 *, nzttBufferBlock * _*/);
                   2359: #endif /* __STDC __*/
                   2360: 
                   2361: /*----------------------- nztDeEnvelope -----------------------*/
                   2362: 
                   2363: /*
                   2364:  * NAME
                   2365:  *    nztDeEnvelope - PKDecrypt and verify a message.
                   2366:  * 
                   2367:  * PARAMETERS
                   2368:  *    osscntxt    {IN}     OSS context.
                   2369:  *    persona     {IN}     Persona.
                   2370:  *    state       {IN}     State of encryption.
                   2371:  *    inlen       {IN}     Length of this input part.
                   2372:  *    in          {IN}     This input part.
                   2373:  *    out         {OUT}    Message from TDU.
                   2374:  *    verified    {OUT}    TRUE if verified.
                   2375:  *    validated   {OUT}    TRUE if validated.
                   2376:  *    sender      {OUT}    Identity of sender.
                   2377:  *
                   2378:  * NOTES
                   2379:  *    
                   2380:  * RETURNS
                   2381:  *    NZERROR_OK           Success.
                   2382:  *    NZERROR_TK_CANTGROW  Needed to grow TDU buffer but could not.
                   2383:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2384:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2385:  */
                   2386: #ifdef __STDC__
                   2387: nzerror nztDeEnvelope(nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   2388:                           nzttBufferBlock *, boolean *, boolean *,
                   2389:                           nzttIdentity **);
                   2390: #else
                   2391: nzerror nztDeEnvelope(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   2392:                           nzttBufferBlock *, boolean *, boolean *,
                   2393:                           nzttIdentity ** _*/);
                   2394: #endif /* __STDC __*/
                   2395: 
                   2396: /*----------------------- nztKeyedHash -----------------------*/
                   2397: 
                   2398: /*
                   2399:  * NAME
                   2400:  *    nztKeyedHash - Generate a keyed hash.
                   2401:  * 
                   2402:  * PARAMETERS
                   2403:  *    osscntxt {IN}     OSS context.
                   2404:  *    persona  {IN}     Persona.
                   2405:  *    state    {IN}     State of hash.
                   2406:  *    inlen    {IN}     Length of this input.
                   2407:  *    in       {IN}     This input.
                   2408:  *    tdu      {IN/OUT} Output tdu.
                   2409:  * 
                   2410:  * NOTES
                   2411:  *    
                   2412:  * RETURNS
                   2413:  *    NZERROR_OK           Success.
                   2414:  *    NZERROR_TK_CANTGROW  Needed to grow TDU buffer but could not.
                   2415:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2416:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2417:  */
                   2418: #ifdef __STDC__
                   2419: nzerror nztKeyedHash(nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   2420:                          nzttBufferBlock *);
                   2421: #else
                   2422: nzerror nztKeyedHash(/*_ nzctx *, nzttPersona *, nzttces, ub4, ub1 *,
                   2423:                          nzttBufferBlock * _*/);
                   2424: #endif /* __STDC __*/
                   2425: 
                   2426: /*------------------ nztxKeyedHashExpansion ------------------*/
                   2427: 
                   2428: /*
                   2429:  * NAME
                   2430:  *    nztxKeyedHashExpansion - Determine the space needed for a keyed hash.
                   2431:  * 
                   2432:  * PARAMETERS
                   2433:  *    osscntxt {IN}  OSS context.
                   2434:  *    persona  {IN}  Persona.
                   2435:  *    inlen    {IN}  Length of this input.
                   2436:  *    tdulen   {OUT} TDU length.
                   2437:  * 
                   2438:  * NOTES
                   2439:  *    
                   2440:  * RETURNS
                   2441:  *    NZERROR_OK           Success.
                   2442:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2443:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2444:  */
                   2445: #ifdef __STDC__
                   2446: nzerror nztxKeyedHashExpansion(nzctx *, nzttPersona *, ub4, 
                   2447:                                    ub4 *);
                   2448: #else
                   2449: nzerror nztxKeyedHashExpansion(/*_ nzctx *, nzttPersona *, ub4, 
                   2450:                                    ub4 * _*/);
                   2451: #endif /* __STDC __*/
                   2452: 
                   2453: /*--------------------- nztxHashExpansion ---------------------*/
                   2454: 
                   2455: /*
                   2456:  * NAME
                   2457:  *    nztxHashExpansion - Determine the size of the TDU for a hash.
                   2458:  * 
                   2459:  * PARAMETERS
                   2460:  *    osscntxt {IN}  OSS context.
                   2461:  *    persona  {IN}  Persona.
                   2462:  *    inlen    {IN}  Length of this input.
                   2463:  *    tdulen   {OUT} TDU length.
                   2464:  * 
                   2465:  * NOTES
                   2466:  *    
                   2467:  * RETURNS
                   2468:  *    NZERROR_OK           Success.
                   2469:  *    NZERROR_TK_NOTOPEN   Persona is not open.
                   2470:  *    NZERROR_TK_NOTSUPP   Function not supported with persona.
                   2471:  */
                   2472: #ifdef __STDC__
                   2473: nzerror nztxHashExpansion(nzctx *, nzttPersona *, ub4, ub4 *);
                   2474: #else
                   2475: nzerror nztxHashExpansion(/*_ nzctx *, nzttPersona *, ub4, ub4 * _*/);
                   2476: #endif /* __STDC __*/
                   2477: 
                   2478: /*---------------- nztiae_IsAuthEnabled ----------------*/
                   2479: 
                   2480: /*
                   2481:  * NAME
                   2482:  *     nztiae_IsAuthEnabled -  Checks to see if Authentication is Enabled
                   2483:  *                               in the current Cipher Spec.
                   2484:  * 
                   2485:  * PARAMETERS
                   2486:  *     ctx     {IN}    Oracle SSL Context
                   2487:  *      ncipher {IN}    CipherSuite
                   2488:  *      authEnabled {OUT} Boolean for is Auth Enabled?
                   2489:  * 
                   2490:  * NOTES
                   2491:  *     
                   2492:  * RETURNS
                   2493:  *      NZERROR_OK on success.
                   2494:  *      NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized.
                   2495:  */
                   2496: 
                   2497: #ifdef __STDC__
                   2498: nzerror nztiae_IsAuthEnabled( nzctx *, ub2, boolean *);
                   2499: #else
                   2500: nzerror nztiae_IsAuthEnabled(/*_ nzctx *ctx, 
                   2501:                                   ub2 ncipher, 
                   2502:                                   boolean *authEnabled _*/);
                   2503: #endif
                   2504: 
                   2505: /*---------------- nztiee_IsEncrEnabled ----------------*/
                   2506: /*
                   2507:  * NAME
                   2508:  *     nztiee_IsEncrEnabled -  Checks to see if Encryption is Enabled
                   2509:  *                               in the current Cipher Spec.
                   2510:  * 
                   2511:  * PARAMETERS
                   2512:  *     ctx     {IN}    Oracle SSL Context
                   2513:  *      ncipher {IN}    CipherSuite
                   2514:  *      EncrEnabled {OUT} Boolean for is Auth Enabled?
                   2515:  * 
                   2516:  * NOTES
                   2517:  *     
                   2518:  * RETURNS
                   2519:  *      NZERROR_OK on success.
                   2520:  *      NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized.
                   2521:  */
                   2522: 
                   2523: #ifdef __STDC__
                   2524: nzerror nztiee_IsEncrEnabled( nzctx *, ub2, boolean *);
                   2525: #else
                   2526: nzerror nztiee_IsEncrEnabled(/*_ nzctx *ctx, 
                   2527:                                   ub2 ncipher, 
                   2528:                                   boolean *EncrEnabled _*/);
                   2529: #endif
                   2530: /*---------------- nztihe_IsHashEnabled ----------------*/
                   2531: /*
                   2532:  * NAME
                   2533:  *     nztihe_IsHashEnabled -  Checks to see if HAshing is Enabled
                   2534:  *                               in the current Cipher Spec.
                   2535:  * 
                   2536:  * PARAMETERS
                   2537:  *     ctx     {IN}    Oracle SSL Context
                   2538:  *      ncipher {IN}    CipherSuite
                   2539:  *      hashEnabled {OUT} Boolean for is Auth Enabled?
                   2540:  * 
                   2541:  * NOTES
                   2542:  *     
                   2543:  * RETURNS
                   2544:  *      NZERROR_OK on success.
                   2545:  *      NZERROR_TK_INV_CIPHR_TYPE if Cipher Spec is not Recognized.
                   2546:  */
                   2547: 
                   2548: #ifdef __STDC__
                   2549: nzerror nztihe_IsHashEnabled( nzctx *, ub2, boolean *);
                   2550: #else
                   2551: nzerror nztihe_IsHashEnabled(/*_ nzctx *ctx, 
                   2552:                                   ub2 ncipher, 
                   2553:                                   boolean *hashEnabled _*/);
                   2554: #endif
                   2555: #endif /* NZT_ORACLE */
                   2556: 

E-mail: