| /* -*- Mode: C; tab-width: 8 -*-*/ |
| /* 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 _CRMFIT_H_ |
| #define _CRMFIT_H_ |
| |
| struct CRMFCertReqMessagesStr { |
| CRMFCertReqMsg **messages; |
| PLArenaPool *poolp; |
| }; |
| |
| struct CRMFCertExtensionStr { |
| SECItem id; |
| SECItem critical; |
| SECItem value; |
| }; |
| |
| struct CRMFOptionalValidityStr { |
| SECItem notBefore; |
| SECItem notAfter; |
| }; |
| |
| struct CRMFCertTemplateStr { |
| SECItem version; |
| SECItem serialNumber; |
| SECAlgorithmID *signingAlg; |
| CERTName *issuer; |
| CRMFOptionalValidity *validity; |
| CERTName *subject; |
| CERTSubjectPublicKeyInfo *publicKey; |
| SECItem issuerUID; |
| SECItem subjectUID; |
| CRMFCertExtension **extensions; |
| int numExtensions; |
| }; |
| |
| struct CRMFCertIDStr { |
| SECItem issuer; /* General Name */ |
| SECItem serialNumber; /*INTEGER*/ |
| }; |
| |
| struct CRMFEncryptedValueStr { |
| SECAlgorithmID *intendedAlg; |
| SECAlgorithmID *symmAlg; |
| SECItem encSymmKey; /*BIT STRING */ |
| SECAlgorithmID *keyAlg; |
| SECItem valueHint; /*OCTET STRING */ |
| SECItem encValue; /*BIT STRING */ |
| }; |
| |
| /* |
| * The field derValue will contain the actual der |
| * to include in the encoding or that was read in |
| * from a der blob. |
| */ |
| struct CRMFEncryptedKeyStr { |
| union { |
| SEC_PKCS7ContentInfo *envelopedData; |
| CRMFEncryptedValue encryptedValue; |
| } value; |
| CRMFEncryptedKeyChoice encKeyChoice; |
| SECItem derValue; |
| }; |
| |
| /* ASN1 must only have one of the following 3 options. */ |
| struct CRMFPKIArchiveOptionsStr { |
| union { |
| CRMFEncryptedKey encryptedKey; |
| SECItem keyGenParameters; |
| SECItem archiveRemGenPrivKey; /* BOOLEAN */ |
| } option; |
| CRMFPKIArchiveOptionsType archOption; |
| }; |
| |
| struct CRMFPKIPublicationInfoStr { |
| SECItem action; /* Possible values */ |
| /* dontPublish (0), pleasePublish (1) */ |
| CRMFSinglePubInfo **pubInfos; |
| }; |
| |
| struct CRMFControlStr { |
| SECOidTag tag; |
| SECItem derTag; |
| SECItem derValue; |
| /* These will be C structures used to represent the various |
| * options. Values that can't be stored as der right away. |
| * After creating these structures, we'll place their der |
| * encoding in derValue so the encoder knows how to get to |
| * it. |
| */ |
| union { |
| CRMFCertID oldCertId; |
| CRMFPKIArchiveOptions archiveOptions; |
| CRMFPKIPublicationInfo pubInfo; |
| CRMFProtocolEncrKey protEncrKey; |
| } value; |
| }; |
| |
| struct CRMFCertRequestStr { |
| SECItem certReqId; |
| CRMFCertTemplate certTemplate; |
| CRMFControl **controls; |
| /* The following members are used by the internal implementation, but |
| * are not part of the encoding. |
| */ |
| PLArenaPool *poolp; |
| PRUint32 requestID; /* This is the value that will be encoded into |
| * the certReqId field. |
| */ |
| }; |
| |
| struct CRMFAttributeStr { |
| SECItem derTag; |
| SECItem derValue; |
| }; |
| |
| struct CRMFCertReqMsgStr { |
| CRMFCertRequest *certReq; |
| CRMFProofOfPossession *pop; |
| CRMFAttribute **regInfo; |
| SECItem derPOP; |
| /* This arena will be used for allocating memory when decoding. |
| */ |
| PLArenaPool *poolp; |
| PRBool isDecoded; |
| }; |
| |
| struct CRMFPOPOSigningKeyInputStr { |
| /* ASN1 must have only one of the next 2 options */ |
| union { |
| SECItem sender; /*General Name*/ |
| CRMFPKMACValue *publicKeyMAC; |
| } authInfo; |
| CERTSubjectPublicKeyInfo publicKey; |
| }; |
| |
| struct CRMFPOPOSigningKeyStr { |
| SECItem derInput; /*If in the future we support |
| *POPOSigningKeyInput, this will |
| *a C structure representation |
| *instead. |
| */ |
| SECAlgorithmID *algorithmIdentifier; |
| SECItem signature; /* This is a BIT STRING. Remember */ |
| }; /* that when interpreting. */ |
| |
| /* ASN1 must only choose one of these members */ |
| struct CRMFPOPOPrivKeyStr { |
| union { |
| SECItem thisMessage; /* BIT STRING */ |
| SECItem subsequentMessage; /*INTEGER*/ |
| SECItem dhMAC; /*BIT STRING*/ |
| } message; |
| CRMFPOPOPrivKeyChoice messageChoice; |
| }; |
| |
| /* ASN1 must only have one of these options. */ |
| struct CRMFProofOfPossessionStr { |
| union { |
| SECItem raVerified; |
| CRMFPOPOSigningKey signature; |
| CRMFPOPOPrivKey keyEncipherment; |
| CRMFPOPOPrivKey keyAgreement; |
| } popChoice; |
| CRMFPOPChoice popUsed; /*Not part of encoding*/ |
| }; |
| |
| struct CRMFPKMACValueStr { |
| SECAlgorithmID algID; |
| SECItem value; /*BIT STRING*/ |
| }; |
| |
| struct CRMFSinglePubInfoStr { |
| SECItem pubMethod; /* Possible Values: |
| * dontCare (0) |
| * x500 (1) |
| * web (2) |
| * ldap (3) |
| */ |
| CERTGeneralName *pubLocation; /* General Name */ |
| }; |
| |
| #endif /* _CRMFIT_H_ */ |