1 /* -*- Mode: C; tab-width: 8 -*-*/
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this
4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 
6 #ifndef _CMMFIT_H_
7 #define _CMMFIT_H_
8 
9 /*
10  * All fields marked by a PKIStausInfo in comments is an integer
11  * with the following possible values.
12  *
13  *  Integer Value          Meaning
14  *  -------------          -------
15  *         0               granted- got exactly what you asked for.
16  *
17  *         1               grantedWithMods-got something like what you asked
18  *                          for;requester is responsible for ascertainging the
19  *                          differences.
20  *
21  *         2               rejection-you don't get what you asked for; more
22  *                          information elsewhere in the message
23  *
24  *         3               waiting-the request body part has not yet been
25  *                          processed, expect to hear more later.
26  *
27  *         4               revocationWarning-this message contains a warning
28  *                          that a revocation is imminent.
29  *
30  *         5               revocationNotification-notification that a
31  *                          revocation has occurred.
32  *
33  *         6               keyUpdateWarning-update already done for the
34  *                          oldCertId specified in FullCertTemplate.
35  */
36 
37 struct CMMFPKIStatusInfoStr {
38     SECItem status;
39     SECItem statusString;
40     SECItem failInfo;
41 };
42 
43 struct CMMFCertOrEncCertStr {
44     union {
45         CERTCertificate *certificate;
46         CRMFEncryptedValue *encryptedCert;
47     } cert;
48     CMMFCertOrEncCertChoice choice;
49     SECItem derValue;
50 };
51 
52 struct CMMFCertifiedKeyPairStr {
53     CMMFCertOrEncCert certOrEncCert;
54     CRMFEncryptedValue *privateKey;
55     SECItem derPublicationInfo; /* We aren't creating
56                                  * PKIPublicationInfo's, so
57                                  * we'll store away the der
58                                  * here if we decode one that
59                                  * does have pubInfo.
60                                  */
61     SECItem unwrappedPrivKey;
62 };
63 
64 struct CMMFCertResponseStr {
65     SECItem certReqId;
66     CMMFPKIStatusInfo status; /*PKIStatusInfo*/
67     CMMFCertifiedKeyPair *certifiedKeyPair;
68 };
69 
70 struct CMMFCertRepContentStr {
71     CERTCertificate **caPubs;
72     CMMFCertResponse **response;
73     PLArenaPool *poolp;
74     PRBool isDecoded;
75 };
76 
77 struct CMMFChallengeStr {
78     SECAlgorithmID *owf;
79     SECItem witness;
80     SECItem senderDER;
81     SECItem key;
82     SECItem challenge;
83     SECItem randomNumber;
84 };
85 
86 struct CMMFRandStr {
87     SECItem integer;
88     SECItem senderHash;
89     CERTGeneralName *sender;
90 };
91 
92 struct CMMFPOPODecKeyChallContentStr {
93     CMMFChallenge **challenges;
94     PLArenaPool *poolp;
95     int numChallenges;
96     int numAllocated;
97 };
98 
99 struct CMMFPOPODecKeyRespContentStr {
100     SECItem **responses;
101     PLArenaPool *poolp;
102 };
103 
104 struct CMMFKeyRecRepContentStr {
105     CMMFPKIStatusInfo status; /* PKIStatusInfo */
106     CERTCertificate *newSigCert;
107     CERTCertificate **caCerts;
108     CMMFCertifiedKeyPair **keyPairHist;
109     PLArenaPool *poolp;
110     int numKeyPairs;
111     int allocKeyPairs;
112     PRBool isDecoded;
113 };
114 
115 #endif /* _CMMFIT_H_ */
116