/* * Copyright (c) 2003 Apple Computer, Inc. All Rights Reserved. * * The contents of this file constitute Original Code as defined in and are * subject to the Apple Public Source License Version 1.2 (the 'License'). * You may not use this file except in compliance with the License. Please obtain * a copy of the License at http://www.apple.com/publicsource and read it before * using this file. * * This Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the * specific language governing rights and limitations under the License. */ /* * opensslAsn1.h - ANS1 encode/decode of openssl object, libssnasn1 version */ #ifndef _OPENSSL_ASN1_H_ #define _OPENSSL_ASN1_H_ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* CSSM_DATA --> BIGNUM */ BIGNUM *cssmDataToBn( const CSSM_DATA &cdata); /* BIGNUM --> CSSM_DATA, mallocing from a SecNssCoder's PL_ArenaPool */ void bnToCssmData( const BIGNUM *bn, CSSM_DATA &cdata, SecNssCoder &coder); /* CSSM_DATA --> unsigned int */ unsigned cssmDataToInt( const CSSM_DATA &cdata); /* unsigned int --> CSSM_DATA, mallocing from an SecNssCoder */ void intToCssmData( unsigned num, CSSM_DATA &cdata, SecNssCoder &coder); /* * DER encode/decode RSA keys in various formats. */ CSSM_RETURN RSAPublicKeyDecode( RSA *openKey, CSSM_KEYBLOB_FORMAT format, void *p, size_t length); CSSM_RETURN RSAPublicKeyEncode( RSA *openKey, CSSM_KEYBLOB_FORMAT format, CssmOwnedData &encodedKey); CSSM_RETURN RSAPrivateKeyDecode( RSA *openKey, CSSM_KEYBLOB_FORMAT format, void *p, size_t length); CSSM_RETURN RSAPrivateKeyEncode( RSA *openKey, CSSM_KEYBLOB_FORMAT format, CssmOwnedData &encodedKey); CSSM_RETURN generateDigestInfo( const void *messageDigest, size_t digestLen, CSSM_ALGORITHMS digestAlg, // CSSM_ALGID_SHA1, etc. CssmOwnedData &encodedInfo, size_t maxEncodedSize); CSSM_RETURN DSAPublicKeyDecode( DSA *openKey, CSSM_KEYBLOB_FORMAT format, void *p, size_t length); CSSM_RETURN DSAPublicKeyEncode( DSA *openKey, CSSM_KEYBLOB_FORMAT format, CssmOwnedData &encodedKey); CSSM_RETURN DSAPrivateKeyDecode( DSA *openKey, CSSM_KEYBLOB_FORMAT format, void *p, size_t length); CSSM_RETURN DSAPrivateKeyEncode( DSA *openKey, CSSM_KEYBLOB_FORMAT format, CssmOwnedData &encodedKey); CSSM_RETURN DSASigEncode( DSA_SIG *openSig, CssmOwnedData &encodedSig); CSSM_RETURN DSASigDecode( DSA_SIG *openSig, const void *p, unsigned length); CSSM_RETURN DSAEncodeAlgParams( NSS_DSAAlgParams &algParams, CssmOwnedData &encodedParams); CSSM_RETURN DSADecodeAlgParams( NSS_DSAAlgParams &algParams, const void *p, unsigned len, SecNssCoder &coder); CSSM_RETURN DHPrivateKeyDecode( DH *openKey, CSSM_KEYBLOB_FORMAT format, unsigned char *p, unsigned length); CSSM_RETURN DHPrivateKeyEncode( DH *openKey, CSSM_KEYBLOB_FORMAT format, CssmOwnedData &encodedKey); CSSM_RETURN DHPublicKeyDecode( DH *openKey, CSSM_KEYBLOB_FORMAT format, unsigned char *p, unsigned length); CSSM_RETURN DHPublicKeyEncode( DH *openKey, CSSM_KEYBLOB_FORMAT format, CssmOwnedData &encodedKey); CSSM_RETURN DHParamBlockDecode( const CSSM_DATA &encParam, NSS_DHParameterBlock ¶mBlock, SecNssCoder &coder); CSSM_RETURN generateDigestInfo( const void *msgDigest, size_t digestLen, CSSM_ALGORITHMS digestAlg, // CSSM_ALGID_SHA1, etc. CssmOwnedData &encodedInfo, size_t maxEncodedSize); #ifdef __cplusplus } #endif #endif /* _OPENSSL_ASN1_H_ */