]> git.saurik.com Git - apple/security.git/blame - libsecurity_apple_csp/open_ssl/opensslUtils/opensslAsn1.h
Security-55471.14.18.tar.gz
[apple/security.git] / libsecurity_apple_csp / open_ssl / opensslUtils / opensslAsn1.h
CommitLineData
b1ab9ed8
A
1/*
2 * Copyright (c) 2003 Apple Computer, Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19/*
20 * opensslAsn1.h - ANS1 encode/decode of openssl object, libssnasn1 version
21 */
22
23#ifndef _OPENSSL_ASN1_H_
24#define _OPENSSL_ASN1_H_
25
26
27#include <openssl/rsa.h>
28#include <openssl/dsa.h>
29#include <openssl/dh.h>
30#include <Security/osKeyTemplates.h>
31#include <Security/cssmtype.h>
32#include <security_cdsa_utilities/cssmdata.h>
33#include <security_asn1/SecNssCoder.h>
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/* CSSM_DATA --> BIGNUM */
40BIGNUM *cssmDataToBn(
41 const CSSM_DATA &cdata);
42
43/* BIGNUM --> CSSM_DATA, mallocing from a SecNssCoder's PL_ArenaPool */
44void bnToCssmData(
45 const BIGNUM *bn,
46 CSSM_DATA &cdata,
47 SecNssCoder &coder);
48
49/* CSSM_DATA --> unsigned int */
50unsigned cssmDataToInt(
51 const CSSM_DATA &cdata);
52
53/* unsigned int --> CSSM_DATA, mallocing from an SecNssCoder */
54void intToCssmData(
55 unsigned num,
56 CSSM_DATA &cdata,
57 SecNssCoder &coder);
58
59/*
60 * DER encode/decode RSA keys in various formats.
61 */
62CSSM_RETURN RSAPublicKeyDecode(
63 RSA *openKey,
64 CSSM_KEYBLOB_FORMAT format,
65 void *p,
66 size_t length);
67CSSM_RETURN RSAPublicKeyEncode(
68 RSA *openKey,
69 CSSM_KEYBLOB_FORMAT format,
70 const CssmData &descData,
71 CssmOwnedData &encodedKey);
72CSSM_RETURN RSAPrivateKeyDecode(
73 RSA *openKey,
74 CSSM_KEYBLOB_FORMAT format,
75 void *p,
76 size_t length);
77CSSM_RETURN RSAPrivateKeyEncode(
78 RSA *openKey,
79 CSSM_KEYBLOB_FORMAT format,
80 const CssmData &descData,
81 CssmOwnedData &encodedKey);
82CSSM_RETURN RSAOAEPPublicKeyDecode(
83 RSA *openKey,
84 void *p,
85 size_t length,
86 /* mallocd and returned label */
87 CSSM_DATA *label);
88CSSM_RETURN RSAOAEPPublicKeyEncode(
89 RSA *openKey,
90 const CSSM_DATA *label,
91 CssmOwnedData &encodedKey);
92CSSM_RETURN RSAOAEPPrivateKeyDecode(
93 RSA *openKey,
94 void *p,
95 size_t length,
96 /* mallocd and returned label */
97 CSSM_DATA *label);
98CSSM_RETURN RSAOAEPPrivateKeyEncode(
99 RSA *openKey,
100 const CSSM_DATA *label,
101 CssmOwnedData &encodedKey);
102
103CSSM_RETURN generateDigestInfo(
104 const void *messageDigest,
105 size_t digestLen,
106 CSSM_ALGORITHMS digestAlg, // CSSM_ALGID_SHA1, etc.
107 CssmOwnedData &encodedInfo,
108 size_t maxEncodedSize);
109CSSM_RETURN DSAPublicKeyDecode(
110 DSA *openKey,
111 CSSM_KEYBLOB_FORMAT format,
112 void *p,
113 size_t length);
114CSSM_RETURN DSAPublicKeyEncode(
115 DSA *openKey,
116 CSSM_KEYBLOB_FORMAT format,
117 const CssmData &descData,
118 CssmOwnedData &encodedKey);
119CSSM_RETURN DSAPrivateKeyDecode(
120 DSA *openKey,
121 CSSM_KEYBLOB_FORMAT format,
122 void *p,
123 size_t length);
124CSSM_RETURN DSAPrivateKeyEncode(
125 DSA *openKey,
126 CSSM_KEYBLOB_FORMAT format,
127 const CssmData &descData,
128 CssmOwnedData &encodedKey);
129
130CSSM_RETURN DSASigEncode(
131 DSA_SIG *openSig,
132 CssmOwnedData &encodedSig);
133CSSM_RETURN DSASigDecode(
134 DSA_SIG *openSig,
135 const void *p,
136 unsigned length);
137
138CSSM_RETURN DSAEncodeAlgParams(
139 NSS_DSAAlgParams &algParams,
140 CssmOwnedData &encodedParams);
141CSSM_RETURN DSADecodeAlgParams(
142 NSS_DSAAlgParams &algParams,
143 const void *p,
144 unsigned len,
145 SecNssCoder &coder);
146
147CSSM_RETURN DHPrivateKeyDecode(
148 DH *openKey,
149 CSSM_KEYBLOB_FORMAT format,
150 unsigned char *p,
151 unsigned length);
152CSSM_RETURN DHPrivateKeyEncode(
153 DH *openKey,
154 CSSM_KEYBLOB_FORMAT format,
155 CssmOwnedData &encodedKey);
156CSSM_RETURN DHPublicKeyDecode(
157 DH *openKey,
158 CSSM_KEYBLOB_FORMAT format,
159 unsigned char *p,
160 unsigned length);
161CSSM_RETURN DHPublicKeyEncode(
162 DH *openKey,
163 CSSM_KEYBLOB_FORMAT format,
164 CssmOwnedData &encodedKey);
165CSSM_RETURN DHParamBlockDecode(
166 const CSSM_DATA &encParam,
167 NSS_DHParameterBlock &paramBlock,
168 SecNssCoder &coder);
169
170CSSM_RETURN generateDigestInfo(
171 const void *msgDigest,
172 size_t digestLen,
173 CSSM_ALGORITHMS digestAlg, // CSSM_ALGID_SHA1, etc.
174 CssmOwnedData &encodedInfo,
175 size_t maxEncodedSize);
176
177#ifdef __cplusplus
178}
179#endif
180
181#endif /* _OPENSSL_ASN1_H_ */