| Index: mozilla/security/nss/lib/pki/nsspkit.h
|
| ===================================================================
|
| --- mozilla/security/nss/lib/pki/nsspkit.h (revision 191424)
|
| +++ mozilla/security/nss/lib/pki/nsspkit.h (working copy)
|
| @@ -1,251 +0,0 @@
|
| -/* This Source Code Form is subject to the terms of the Mozilla Public
|
| - * License, v. 2.0. If a copy of the MPL was not distributed with this
|
| - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
| -
|
| -#ifndef NSSPKIT_H
|
| -#define NSSPKIT_H
|
| -
|
| -#ifdef DEBUG
|
| -static const char NSSPKIT_CVS_ID[] = "@(#) $RCSfile: nsspkit.h,v $ $Revision: 1.9 $ $Date: 2012/04/25 14:50:07 $";
|
| -#endif /* DEBUG */
|
| -
|
| -/*
|
| - * nsspkit.h
|
| - *
|
| - * This file defines the types of the top-level PKI objects.
|
| - */
|
| -
|
| -#ifndef NSSBASET_H
|
| -#include "nssbaset.h"
|
| -#endif /* NSSBASET_H */
|
| -
|
| -PR_BEGIN_EXTERN_C
|
| -
|
| -/*
|
| - * NSSCertificate
|
| - *
|
| - * This is the public representation of a Certificate. The certificate
|
| - * may be one found on a smartcard or other token, one decoded from data
|
| - * received as part of a protocol, one constructed from constituent
|
| - * parts, etc. Usually it is associated with ("in") a trust domain; as
|
| - * it can be verified only within a trust domain. The underlying type
|
| - * of certificate may be of any supported standard, e.g. PKIX, PGP, etc.
|
| - *
|
| - * People speak of "verifying (with) the server's, or correspondant's,
|
| - * certificate"; for simple operations we support that simplification
|
| - * by implementing public-key crypto operations as methods on this type.
|
| - */
|
| -
|
| -struct NSSCertificateStr;
|
| -typedef struct NSSCertificateStr NSSCertificate;
|
| -
|
| -/*
|
| - * NSSUserCertificate
|
| - *
|
| - * A ``User'' certificate is one for which the private key is available.
|
| - * People speak of "using my certificate to sign my email" and "using
|
| - * my certificate to authenticate to (or login to) the server"; for
|
| - * simple operations, we support that simplification by implementing
|
| - * private-key crypto operations as methods on this type.
|
| - *
|
| - * The current design only weakly distinguishes between certificates
|
| - * and user certificates: as far as the compiler goes they're
|
| - * interchangeable; debug libraries only have one common pointer-tracker;
|
| - * etc. However, attempts to do private-key operations on a certificate
|
| - * for which the private key is not available will fail.
|
| - *
|
| - * Open design question: should these types be more firmly separated?
|
| - */
|
| -
|
| -typedef NSSCertificate NSSUserCertificate;
|
| -
|
| -/*
|
| - * NSSPrivateKey
|
| - *
|
| - * This is the public representation of a Private Key. In general,
|
| - * the actual value of the key is not available, but operations may
|
| - * be performed with it.
|
| - */
|
| -
|
| -struct NSSPrivateKeyStr;
|
| -typedef struct NSSPrivateKeyStr NSSPrivateKey;
|
| -
|
| -/*
|
| - * NSSPublicKey
|
| - *
|
| - */
|
| -
|
| -struct NSSPublicKeyStr;
|
| -typedef struct NSSPublicKeyStr NSSPublicKey;
|
| -
|
| -/*
|
| - * NSSSymmetricKey
|
| - *
|
| - */
|
| -
|
| -struct NSSSymmetricKeyStr;
|
| -typedef struct NSSSymmetricKeyStr NSSSymmetricKey;
|
| -
|
| -/*
|
| - * NSSTrustDomain
|
| - *
|
| - * A Trust Domain is the field in which certificates may be validated.
|
| - * A trust domain will generally have one or more cryptographic modules
|
| - * open; these modules perform the cryptographic operations, and
|
| - * provide the basic "root" trust information from which the trust in
|
| - * a specific certificate or key depends.
|
| - *
|
| - * A client program, or a simple server, would typically have one
|
| - * trust domain. A server supporting multiple "virtual servers" might
|
| - * have a separate trust domain for each virtual server. The separate
|
| - * trust domains might share some modules (e.g., a hardware crypto
|
| - * accelerator) but not others (e.g., the tokens storing the different
|
| - * servers' private keys, or the databases with each server's trusted
|
| - * root certificates).
|
| - *
|
| - * This object descends from the "permananet database" in the old code.
|
| - */
|
| -
|
| -struct NSSTrustDomainStr;
|
| -typedef struct NSSTrustDomainStr NSSTrustDomain;
|
| -
|
| -/*
|
| - * NSSCryptoContext
|
| - *
|
| - * A Crypto Context is a short-term, "helper" object which is used
|
| - * for the lifetime of one ongoing "crypto operation." Such an
|
| - * operation may be the creation of a signed message, the use of an
|
| - * TLS socket connection, etc. Each crypto context is "in" a
|
| - * specific trust domain, and it may have associated with it a
|
| - * distinguished certificate, public key, private key, and/or
|
| - * symmetric key. It can also temporarily hold and use temporary
|
| - * data (e.g. intermediate certificates) which is not stored
|
| - * permanently in the trust domain.
|
| - *
|
| - * In OO terms, this interface inherits interfaces from the trust
|
| - * domain, the certificates, and the keys. It also provides
|
| - * streaming crypto operations.
|
| - *
|
| - * This object descends from the "temporary database" concept in the
|
| - * old code, but it has changed a lot as a result of what we've
|
| - * learned.
|
| - */
|
| -
|
| -typedef struct NSSCryptoContextStr NSSCryptoContext;
|
| -
|
| -/*
|
| - * fgmr others
|
| - */
|
| -
|
| -/*
|
| - * OBJECT IDENTIFIER
|
| - *
|
| - * This is the basic OID that crops up everywhere.
|
| - */
|
| -
|
| -struct NSSOIDStr; /* unused opaque structure */
|
| -typedef struct NSSOIDStr NSSOID;
|
| -
|
| -/*
|
| - * NSSTime
|
| - *
|
| - * Unfortunately, we need an "exceptional" value to indicate
|
| - * an error upon return, or "no value" on input. Note that zero
|
| - * is a perfectly valid value for both time_t and PRTime.
|
| - *
|
| - * If we were to create a "range" object, with two times for
|
| - * Not Before and Not After, we would have an obvious place for
|
| - * the somewhat arbitrary logic involved in comparing them.
|
| - *
|
| - * Failing that, let's have an NSSTime_CompareRanges function.
|
| - */
|
| -
|
| -struct NSSTimeStr;
|
| -typedef struct NSSTimeStr NSSTime;
|
| -
|
| -struct NSSTrustStr;
|
| -typedef struct NSSTrustStr NSSTrust;
|
| -
|
| -/*
|
| - * NSSUsage
|
| - *
|
| - * This is trickier than originally planned; I'll write up a
|
| - * doc on it.
|
| - *
|
| - * We'd still like nsspki.h to have a list of common usages,
|
| - * e.g.:
|
| - *
|
| - * extern const NSSUsage *NSSUsage_ClientAuth;
|
| - * extern const NSSUsage *NSSUsage_ServerAuth;
|
| - * extern const NSSUsage *NSSUsage_SignEmail;
|
| - * extern const NSSUsage *NSSUsage_EncryptEmail;
|
| - * etc.
|
| - */
|
| -
|
| -struct NSSUsageStr;
|
| -typedef struct NSSUsageStr NSSUsage;
|
| -
|
| -/*
|
| - * NSSPolicies
|
| - *
|
| - * Placeholder, for now.
|
| - */
|
| -
|
| -struct NSSPoliciesStr;
|
| -typedef struct NSSPoliciesStr NSSPolicies;
|
| -
|
| -/*
|
| - * NSSAlgorithmAndParameters
|
| - *
|
| - * Algorithm is an OID
|
| - * Parameters depend on the algorithm
|
| - */
|
| -
|
| -struct NSSAlgorithmAndParametersStr;
|
| -typedef struct NSSAlgorithmAndParametersStr NSSAlgorithmAndParameters;
|
| -
|
| -/*
|
| - * NSSCallback
|
| - *
|
| - * At minimum, a "challenge" method and a closure argument.
|
| - * Usually the challenge will just be prompting for a password.
|
| - * How OO do we want to make it?
|
| - */
|
| -
|
| -typedef struct NSSCallbackStr NSSCallback;
|
| -
|
| -struct NSSCallbackStr {
|
| - /* Prompt for a password to initialize a slot. */
|
| - PRStatus (* getInitPW)(NSSUTF8 *slotName, void *arg,
|
| - NSSUTF8 **ssoPW, NSSUTF8 **userPW);
|
| - /* Prompt for oldPW and newPW in order to change the
|
| - * password on a slot.
|
| - */
|
| - PRStatus (* getNewPW)(NSSUTF8 *slotName, PRUint32 *retries, void *arg,
|
| - NSSUTF8 **oldPW, NSSUTF8 **newPW);
|
| - /* Prompt for slot password. */
|
| - PRStatus (* getPW)(NSSUTF8 *slotName, PRUint32 *retries, void *arg,
|
| - NSSUTF8 **password);
|
| - void *arg;
|
| -};
|
| -
|
| -/* set errors - user cancelled, ... */
|
| -
|
| -typedef PRUint32 NSSOperations;
|
| -/* 1) Do we want these to be preprocessor definitions or constants? */
|
| -/* 2) What is the correct and complete list? */
|
| -
|
| -#define NSSOperations_ENCRYPT 0x0001
|
| -#define NSSOperations_DECRYPT 0x0002
|
| -#define NSSOperations_WRAP 0x0004
|
| -#define NSSOperations_UNWRAP 0x0008
|
| -#define NSSOperations_SIGN 0x0010
|
| -#define NSSOperations_SIGN_RECOVER 0x0020
|
| -#define NSSOperations_VERIFY 0x0040
|
| -#define NSSOperations_VERIFY_RECOVER 0x0080
|
| -
|
| -struct NSSPKIXCertificateStr;
|
| -
|
| -PR_END_EXTERN_C
|
| -
|
| -#endif /* NSSPKIT_H */
|
|
|