/gecko_api/include/crmft.h
C Header | 220 lines | 106 code | 21 blank | 93 comment | 0 complexity | bcdada24135a430e88bac3536cfc1b69 MD5 | raw file
- /* -*- Mode: C; tab-width: 8 -*-*/
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * 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 the Initial Developer are Copyright (C) 1994-2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
- /* 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_*/