#ifndef _OPENSSL_ASN1_H_
#define _OPENSSL_ASN1_H_
#include <openssl/rsa.h>
#include <openssl/dsa.h>
#include <openssl/dh.h>
#include <Security/osKeyTemplates.h>
#include <Security/cssmtype.h>
#include <security_cdsa_utilities/cssmdata.h>
#include <security_asn1/SecNssCoder.h>
#ifdef __cplusplus
extern "C" {
#endif
BIGNUM *cssmDataToBn(
const CSSM_DATA &cdata);
void bnToCssmData(
const BIGNUM *bn,
CSSM_DATA &cdata,
SecNssCoder &coder);
unsigned cssmDataToInt(
const CSSM_DATA &cdata);
void intToCssmData(
unsigned num,
CSSM_DATA &cdata,
SecNssCoder &coder);
CSSM_RETURN RSAPublicKeyDecode(
RSA *openKey,
CSSM_KEYBLOB_FORMAT format,
void *p,
size_t length);
CSSM_RETURN RSAPublicKeyEncode(
RSA *openKey,
CSSM_KEYBLOB_FORMAT format,
const CssmData &descData,
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,
const CssmData &descData,
CssmOwnedData &encodedKey);
CSSM_RETURN RSAOAEPPublicKeyDecode(
RSA *openKey,
void *p,
size_t length,
CSSM_DATA *label);
CSSM_RETURN RSAOAEPPublicKeyEncode(
RSA *openKey,
const CSSM_DATA *label,
CssmOwnedData &encodedKey);
CSSM_RETURN RSAOAEPPrivateKeyDecode(
RSA *openKey,
void *p,
size_t length,
CSSM_DATA *label);
CSSM_RETURN RSAOAEPPrivateKeyEncode(
RSA *openKey,
const CSSM_DATA *label,
CssmOwnedData &encodedKey);
CSSM_RETURN generateDigestInfo(
const void *messageDigest,
size_t digestLen,
CSSM_ALGORITHMS digestAlg, 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,
const CssmData &descData,
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,
const CssmData &descData,
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, CssmOwnedData &encodedInfo,
size_t maxEncodedSize);
#ifdef __cplusplus
}
#endif
#endif