]>
Commit | Line | Data |
---|---|---|
b1ab9ed8 A |
1 | /* |
2 | * CryptKitAsn1.h - ASN1 templates for FEE objects | |
3 | */ | |
4 | ||
5 | #ifndef _CRYPT_KIT_ASN1_H_ | |
6 | #define _CRYPT_KIT_ASN1_H_ | |
7 | ||
8 | #include "ckconfig.h" | |
9 | ||
10 | #if CRYPTKIT_DER_ENABLE | |
11 | ||
12 | #include <Security/cssmtype.h> | |
13 | #include <Security/secasn1t.h> | |
14 | ||
15 | #ifdef __cplusplus | |
16 | extern "C" { | |
17 | #endif | |
18 | ||
19 | /* | |
20 | -- FEE Curve parameters (defined in <security_cryptkit/feeTypes.h>) | |
21 | FEEPrimeType ::= INTEGER { FPT_Mersenne(0), FPT_FEE(1), FPT_General(2) } | |
22 | FEECurveType ::= INTEGER { FCT_Montgomery(0), FCT_Weierstrass(1), | |
23 | FCT_General(2) } | |
24 | */ | |
25 | ||
26 | /* | |
27 | FEECurveParameters ::= SEQUENCE | |
28 | { | |
29 | primeType FEEPrimeType, | |
30 | curveType FEECurveType, | |
31 | q INTEGER, -- unsigned | |
32 | k INTEGER, -- signed | |
33 | m INTEGER, | |
34 | a BigIntegerStr, | |
35 | bb BigIntegerStr, -- can't use variable/field b | |
36 | c BigIntegerStr, | |
37 | x1Plus BigIntegerStr, | |
38 | x1Minus BigIntegerStr, | |
39 | cOrderPlus BigIntegerStr, | |
40 | cOrderMinus BigIntegerStr, | |
41 | x1OrderPlus BigIntegerStr, | |
42 | x1OrderMinus BigIntegerStr, | |
43 | basePrime BigIntegerStr OPTIONAL | |
44 | -- iff FEEPrimeType == CT_GENERAL | |
45 | } | |
46 | */ | |
47 | typedef struct { | |
48 | CSSM_DATA primeType; | |
49 | CSSM_DATA curveType; | |
50 | CSSM_DATA q; | |
51 | CSSM_DATA k; | |
52 | CSSM_DATA m; | |
53 | CSSM_DATA a; | |
54 | CSSM_DATA b_; // can't use variable/field b | |
55 | CSSM_DATA c; | |
56 | CSSM_DATA x1Plus; | |
57 | CSSM_DATA x1Minus; | |
58 | CSSM_DATA cOrderPlus; | |
59 | CSSM_DATA cOrderMinus; | |
60 | CSSM_DATA x1OrderPlus; | |
61 | CSSM_DATA x1OrderMinus; | |
62 | CSSM_DATA basePrime; // OPTIONAL | |
63 | } FEECurveParametersASN1; | |
64 | ||
65 | extern const SecAsn1Template FEECurveParametersASN1Template[]; | |
66 | ||
67 | /* | |
68 | -- FEE ElGamal-style signature | |
69 | FEEElGamalSignature ::= SEQUENCE { | |
70 | u BigIntegerStr, | |
71 | pmX BigIntegerStr | |
72 | } | |
73 | */ | |
74 | typedef struct { | |
75 | CSSM_DATA u; | |
76 | CSSM_DATA pmX; | |
77 | } FEEElGamalSignatureASN1; | |
78 | ||
79 | extern const SecAsn1Template FEEElGamalSignatureASN1Template[]; | |
80 | ||
81 | /* | |
82 | -- FEE ECDSA-style signature | |
83 | FEEECDSASignature ::= SEQUENCE { | |
84 | c BigIntegerStr, | |
85 | d BigIntegerStr | |
86 | } | |
87 | */ | |
88 | typedef struct { | |
89 | CSSM_DATA c; | |
90 | CSSM_DATA d; | |
91 | } FEEECDSASignatureASN1; | |
92 | ||
93 | extern const SecAsn1Template FEEECDSASignatureASN1Template[]; | |
94 | ||
95 | /* | |
96 | FEEPublicKey ::= SEQUENCE | |
97 | { | |
98 | version INTEGER, | |
99 | curveParams FEECurveParameters, | |
100 | plusX BigIntegerStr, | |
101 | minusX BigIntegerStr, | |
102 | plusY BigIntegerStr OPTIONAL | |
103 | -- iff FEECurveType == ct-weierstrass | |
104 | } | |
105 | */ | |
106 | typedef struct { | |
107 | CSSM_DATA version; | |
108 | FEECurveParametersASN1 curveParams; | |
109 | CSSM_DATA plusX; | |
110 | CSSM_DATA minusX; | |
111 | CSSM_DATA plusY; // OPTIONAL | |
112 | } FEEPublicKeyASN1; | |
113 | ||
114 | extern const SecAsn1Template FEEPublicKeyASN1Template[]; | |
115 | ||
116 | /* | |
117 | FEEPrivateKey ::= SEQUENCE | |
118 | { | |
119 | version INTEGER, | |
120 | curveParams FEECurveParameters, | |
121 | privData BigIntegerStr | |
122 | } | |
123 | */ | |
124 | typedef struct { | |
125 | CSSM_DATA version; | |
126 | FEECurveParametersASN1 curveParams; | |
127 | CSSM_DATA privData; | |
128 | } FEEPrivateKeyASN1; | |
129 | ||
130 | extern const SecAsn1Template FEEPrivateKeyASN1Template[]; | |
131 | ||
132 | #ifdef __cplusplus | |
133 | } | |
134 | #endif | |
135 | ||
136 | #endif /* CRYPTKIT_DER_ENABLE */ | |
137 | ||
138 | #endif /* _CRYPT_KIT_ASN1_H_ */ |