gecko-dev/security/nss/lib/crmf/crmft.h
wtc%netscape.com 6f7422a77a Bugzilla bug #65416: assign values explicitly to enumeration constants.
The same values that the compiler would assign are assigned, with only
one exception (cmmfNoPKIStatus in cmmft.h).  This is patch id=22555,
reviewed by Nelson Bolyard.
2001-01-18 16:36:43 +00:00

218 lines
6.7 KiB
C

/* -*- Mode: C; tab-width: 8 -*-*/
/*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1994-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU General Public License Version 2 or later (the
* "GPL"), in which case the provisions of the GPL are applicable
* instead of those above. If you wish to allow use of your
* version of this file only under the terms of the GPL and not to
* allow others to use your version of this file under the MPL,
* indicate your decision by deleting the provisions above and
* replace them with the notice and other provisions required by
* the GPL. If you do not delete the provisions above, a recipient
* may use your version of this file under either the MPL or the
* GPL.
*/
/* Header file with all of the structures and types that will be exported
* by the security library for implementation of CRMF.
*/
#ifndef _CRMFT_H_
#define _CRMFT_H_
/* Use these enumerated values for adding fields to the certificate request */
typedef enum {
crmfVersion = 0,
crmfSerialNumber = 1,
crmfSigningAlg = 2,
crmfIssuer = 3,
crmfValidity = 4,
crmfSubject = 5,
crmfPublicKey = 6,
crmfIssuerUID = 7,
crmfSubjectUID = 8,
crmfExtension = 9
} CRMFCertTemplateField;
/*
* An enumeration for the different types of controls.
*/
typedef enum {
crmfNoControl = 0,
crmfRegTokenControl = 1,
crmfAuthenticatorControl = 2,
crmfPKIPublicationInfoControl = 3,
crmfPKIArchiveOptionsControl = 4,
crmfOldCertIDControl = 5,
crmfProtocolEncrKeyControl = 6
} CRMFControlType;
/*
* The possible values that are passed into CRMF_CreatePKIPublicationInfo
*/
typedef enum {
crmfDontPublish = 0,
crmfPleasePublish = 1
} CRMFPublicationAction;
/*
* An enumeration for the possible for pubMethod which is a part of
* the SinglePubInfo ASN1 type.
*/
typedef enum {
crmfDontCare = 0,
crmfX500 = 1,
crmfWeb = 2,
crmfLdap = 3
} CRMFPublicationMethod;
/*
* An enumeration for the different options for PKIArchiveOptions type.
*/
typedef enum {
crmfNoArchiveOptions = 0,
crmfEncryptedPrivateKey = 1,
crmfKeyGenParameters = 2,
crmfArchiveRemGenPrivKey = 3
} CRMFPKIArchiveOptionsType;
/*
* An enumeration for the different options for ProofOfPossession
*/
typedef enum {
crmfNoPOPChoice = 0,
crmfRAVerified = 1,
crmfSignature = 2,
crmfKeyEncipherment = 3,
crmfKeyAgreement = 4
} CRMFPOPChoice;
/*
* An enumertion type for options for the authInfo field of the
* CRMFPOPOSigningKeyInput structure.
*/
typedef enum {
crmfSender = 0,
crmfPublicKeyMAC = 1
} CRMFPOPOSkiInputAuthChoice;
/*
* An enumeration for the SubsequentMessage Options.
*/
typedef enum {
crmfNoSubseqMess = 0,
crmfEncrCert = 1,
crmfChallengeResp = 2
} CRMFSubseqMessOptions;
/*
* An enumeration for the choice used by POPOPrivKey.
*/
typedef enum {
crmfNoMessage = 0,
crmfThisMessage = 1,
crmfSubsequentMessage = 2,
crmfDHMAC = 3
} CRMFPOPOPrivKeyChoice;
/*
* An enumeration for the choices for the EncryptedKey type.
*/
typedef enum {
crmfNoEncryptedKeyChoice = 0,
crmfEncryptedValueChoice = 1,
crmfEnvelopedDataChoice = 2
} CRMFEncryptedKeyChoice;
/*
* TYPE: CRMFEncoderOutputCallback
* This function type defines a prototype for a function that the CRMF
* library expects when encoding is performed.
*
* ARGUMENTS:
* arg
* This will be a pointer the user passed into an encoding function.
* The user of the library is free to use this pointer in any way.
* The most common use is to keep around a buffer for writing out
* the DER encoded bytes.
* buf
* The DER encoded bytes that should be written out.
* len
* The number of DER encoded bytes to write out.
*
*/
typedef void (*CRMFEncoderOutputCallback) (void *arg,
const char *buf,
unsigned long len);
/*
* Type for the function that gets a password. Just in case we ever
* need to support publicKeyMAC for POPOSigningKeyInput
*/
typedef SECItem* (*CRMFMACPasswordCallback) (void *arg);
typedef struct CRMFOptionalValidityStr CRMFOptionalValidity;
typedef struct CRMFValidityCreationInfoStr CRMFGetValidity;
typedef struct CRMFCertTemplateStr CRMFCertTemplate;
typedef struct CRMFCertRequestStr CRMFCertRequest;
typedef struct CRMFCertReqMsgStr CRMFCertReqMsg;
typedef struct CRMFCertReqMessagesStr CRMFCertReqMessages;
typedef struct CRMFProofOfPossessionStr CRMFProofOfPossession;
typedef struct CRMFPOPOSigningKeyStr CRMFPOPOSigningKey;
typedef struct CRMFPOPOSigningKeyInputStr CRMFPOPOSigningKeyInput;
typedef struct CRMFPOPOPrivKeyStr CRMFPOPOPrivKey;
typedef struct CRMFPKIPublicationInfoStr CRMFPKIPublicationInfo;
typedef struct CRMFSinglePubInfoStr CRMFSinglePubInfo;
typedef struct CRMFPKIArchiveOptionsStr CRMFPKIArchiveOptions;
typedef struct CRMFEncryptedKeyStr CRMFEncryptedKey;
typedef struct CRMFEncryptedValueStr CRMFEncryptedValue;
typedef struct CRMFCertIDStr CRMFCertID;
typedef struct CRMFCertIDStr CRMFOldCertID;
typedef CERTSubjectPublicKeyInfo CRMFProtocolEncrKey;
typedef struct CRMFValidityCreationInfoStr CRMFValidityCreationInfo;
typedef struct CRMFCertExtCreationInfoStr CRMFCertExtCreationInfo;
typedef struct CRMFPKMACValueStr CRMFPKMACValue;
typedef struct CRMFAttributeStr CRMFAttribute;
typedef struct CRMFControlStr CRMFControl;
typedef CERTGeneralName CRMFGeneralName;
typedef struct CRMFCertExtensionStr CRMFCertExtension;
struct CRMFValidityCreationInfoStr {
PRTime *notBefore;
PRTime *notAfter;
};
struct CRMFCertExtCreationInfoStr {
CRMFCertExtension **extensions;
int numExtensions;
};
/*
* Some ASN1 Templates that may be needed.
*/
extern const SEC_ASN1Template CRMFCertReqMessagesTemplate[];
extern const SEC_ASN1Template CRMFCertRequestTemplate[];
#endif /*_CRMFT_H_*/