2 * Copyright (c) 2003 Apple Computer, Inc. All Rights Reserved.
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
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.
20 * opensslAsn1.h - ANS1 encode/decode of openssl object, libssnasn1 version
23 #ifndef _OPENSSL_ASN1_H_
24 #define _OPENSSL_ASN1_H_
27 #include <openssl/rsa.h>
28 #include <openssl/dsa.h>
29 #include <openssl/dh.h>
30 #include <opensslUtils/osKeyTemplates.h>
31 #include <Security/cssmtype.h>
32 #include <Security/cssmdata.h>
33 #include <SecurityNssAsn1/SecNssCoder.h>
39 /* CSSM_DATA --> BIGNUM */
41 const CSSM_DATA
&cdata
);
43 /* BIGNUM --> CSSM_DATA, mallocing from a SecNssCoder's PL_ArenaPool */
49 /* CSSM_DATA --> unsigned int */
50 unsigned cssmDataToInt(
51 const CSSM_DATA
&cdata
);
53 /* unsigned int --> CSSM_DATA, mallocing from an SecNssCoder */
60 * DER encode/decode RSA keys in various formats.
62 CSSM_RETURN
RSAPublicKeyDecode(
64 CSSM_KEYBLOB_FORMAT format
,
67 CSSM_RETURN
RSAPublicKeyEncode(
69 CSSM_KEYBLOB_FORMAT format
,
70 CssmOwnedData
&encodedKey
);
71 CSSM_RETURN
RSAPrivateKeyDecode(
73 CSSM_KEYBLOB_FORMAT format
,
76 CSSM_RETURN
RSAPrivateKeyEncode(
78 CSSM_KEYBLOB_FORMAT format
,
79 CssmOwnedData
&encodedKey
);
80 CSSM_RETURN
generateDigestInfo(
81 const void *messageDigest
,
83 CSSM_ALGORITHMS digestAlg
, // CSSM_ALGID_SHA1, etc.
84 CssmOwnedData
&encodedInfo
,
85 size_t maxEncodedSize
);
86 CSSM_RETURN
DSAPublicKeyDecode(
88 CSSM_KEYBLOB_FORMAT format
,
91 CSSM_RETURN
DSAPublicKeyEncode(
93 CSSM_KEYBLOB_FORMAT format
,
94 CssmOwnedData
&encodedKey
);
95 CSSM_RETURN
DSAPrivateKeyDecode(
97 CSSM_KEYBLOB_FORMAT format
,
100 CSSM_RETURN
DSAPrivateKeyEncode(
102 CSSM_KEYBLOB_FORMAT format
,
103 CssmOwnedData
&encodedKey
);
105 CSSM_RETURN
DSASigEncode(
107 CssmOwnedData
&encodedSig
);
108 CSSM_RETURN
DSASigDecode(
113 CSSM_RETURN
DSAEncodeAlgParams(
114 NSS_DSAAlgParams
&algParams
,
115 CssmOwnedData
&encodedParams
);
116 CSSM_RETURN
DSADecodeAlgParams(
117 NSS_DSAAlgParams
&algParams
,
122 CSSM_RETURN
DHPrivateKeyDecode(
124 CSSM_KEYBLOB_FORMAT format
,
127 CSSM_RETURN
DHPrivateKeyEncode(
129 CSSM_KEYBLOB_FORMAT format
,
130 CssmOwnedData
&encodedKey
);
131 CSSM_RETURN
DHPublicKeyDecode(
133 CSSM_KEYBLOB_FORMAT format
,
136 CSSM_RETURN
DHPublicKeyEncode(
138 CSSM_KEYBLOB_FORMAT format
,
139 CssmOwnedData
&encodedKey
);
140 CSSM_RETURN
DHParamBlockDecode(
141 const CSSM_DATA
&encParam
,
142 NSS_DHParameterBlock
¶mBlock
,
145 CSSM_RETURN
generateDigestInfo(
146 const void *msgDigest
,
148 CSSM_ALGORITHMS digestAlg
, // CSSM_ALGID_SHA1, etc.
149 CssmOwnedData
&encodedInfo
,
150 size_t maxEncodedSize
);
156 #endif /* _OPENSSL_ASN1_H_ */