]> git.saurik.com Git - apple/security.git/blame_incremental - OSX/include/security_cryptkit/CryptKitAsn1.h
Security-57336.1.9.tar.gz
[apple/security.git] / OSX / include / security_cryptkit / CryptKitAsn1.h
... / ...
CommitLineData
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
16extern "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*/
47typedef 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
65extern const SecAsn1Template FEECurveParametersASN1Template[];
66
67/*
68 -- FEE ElGamal-style signature
69 FEEElGamalSignature ::= SEQUENCE {
70 u BigIntegerStr,
71 pmX BigIntegerStr
72 }
73*/
74typedef struct {
75 CSSM_DATA u;
76 CSSM_DATA pmX;
77} FEEElGamalSignatureASN1;
78
79extern const SecAsn1Template FEEElGamalSignatureASN1Template[];
80
81/*
82 -- FEE ECDSA-style signature
83 FEEECDSASignature ::= SEQUENCE {
84 c BigIntegerStr,
85 d BigIntegerStr
86 }
87*/
88typedef struct {
89 CSSM_DATA c;
90 CSSM_DATA d;
91} FEEECDSASignatureASN1;
92
93extern 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*/
106typedef struct {
107 CSSM_DATA version;
108 FEECurveParametersASN1 curveParams;
109 CSSM_DATA plusX;
110 CSSM_DATA minusX;
111 CSSM_DATA plusY; // OPTIONAL
112} FEEPublicKeyASN1;
113
114extern const SecAsn1Template FEEPublicKeyASN1Template[];
115
116/*
117 FEEPrivateKey ::= SEQUENCE
118 {
119 version INTEGER,
120 curveParams FEECurveParameters,
121 privData BigIntegerStr
122 }
123*/
124typedef struct {
125 CSSM_DATA version;
126 FEECurveParametersASN1 curveParams;
127 CSSM_DATA privData;
128} FEEPrivateKeyASN1;
129
130extern const SecAsn1Template FEEPrivateKeyASN1Template[];
131
132#ifdef __cplusplus
133}
134#endif
135
136#endif /* CRYPTKIT_DER_ENABLE */
137
138#endif /* _CRYPT_KIT_ASN1_H_ */