#ifndef _CL_FIELDS_COMMON_H_
#define _CL_FIELDS_COMMON_H_
#include <Security/cssmtype.h>
#include <security_cdsa_utilities/cssmdata.h>
#include "DecodedItem.h"
#include <security_utilities/globalizer.h>
#include <Security/X509Templates.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef bool (getItemFieldFcn) (
DecodedItem &item,
unsigned index, uint32 &numFields, CssmOwnedData &fieldValue); typedef void (setItemFieldFcn) (
DecodedItem &item,
const CssmData &fieldValue);
typedef void (freeFieldFcn) (
CssmOwnedData &fieldValue);
bool clOidToNssInfo(
const CSSM_OID &oid,
unsigned &nssObjLen, const SecAsn1Template *&templ);
void tbsSetCheck(
void *fieldToSet,
const CssmData &fieldValue,
uint32 expLength,
const char *op);
bool tbsGetCheck(
const void *requiredField,
uint32 reqIndex);
void getFieldExtenCommon(
void *cdsaObj, const DecodedExten &decodedExt,
CssmOwnedData &fieldValue);
CSSM_X509_EXTENSION_PTR verifySetFreeExtension(
const CssmData &fieldValue,
bool berEncoded); void freeFieldExtenCommon(
CSSM_X509_EXTENSION_PTR exten,
Allocator &alloc);
bool getField_RDN_NSS (
const NSS_Name &nssName,
CssmOwnedData &fieldValue);
void freeField_RDN (
CssmOwnedData &fieldValue);
bool getField_normRDN_NSS (
const CSSM_DATA &derName,
uint32 &numFields, CssmOwnedData &fieldValue);
void freeField_Time (
CssmOwnedData &fieldValue);
bool getField_TimeNSS (
const NSS_Time &derTime,
unsigned index, uint32 &numFields, CssmOwnedData &fieldValue); void setField_TimeNSS (
const CssmData &fieldValue,
NSS_Time &nssTime,
SecNssCoder &coder);
void getField_AlgIdNSS (
const CSSM_X509_ALGORITHM_IDENTIFIER &srcAlgId,
CssmOwnedData &fieldValue); void setField_AlgIdNSS (
const CssmData &fieldValue,
CSSM_X509_ALGORITHM_IDENTIFIER &dstAlgId,
SecNssCoder &coder);
void freeField_AlgId (
CssmOwnedData &fieldValue);
getItemFieldFcn getFieldUnknownExt, getField_Unimplemented;
setItemFieldFcn setFieldUnknownExt, setField_ReadOnly;
freeFieldFcn freeFieldUnknownExt, freeFieldSimpleExtension;
#ifdef __cplusplus
}
#endif
#endif