#ifndef _DER_PLIST_H_
#define _DER_PLIST_H_
#include <CoreFoundation/CoreFoundation.h>
#ifdef __cplusplus
extern "C" {
#endif
static const CFIndex kSecDERErrorUnknownEncoding = -1;
static const CFIndex kSecDERErrorUnsupportedDERType = -2;
static const CFIndex kSecDERErrorAllocationFailure = -3;
static const CFIndex kSecDERErrorUnsupportedNumberType = -4;
static const CFIndex kSecDERErrorUnsupportedCFObject = -5;
static const CFIndex kSecDERErrorNullInput = -6;
static const CFIndex kSecDERErrorCCDEREncode = -7;
static const CFIndex kSecDERErrorOverflow = -8;
extern CFStringRef sSecDERErrorDomain;
enum {
kCFPropertyListDERFormat_v1_0 = 400
};
size_t der_sizeof_plist(CFPropertyListRef pl, CFErrorRef *error);
uint8_t* der_encode_plist(CFPropertyListRef pl, CFErrorRef *error,
const uint8_t *der, uint8_t *der_end);
uint8_t* der_encode_plist_repair(CFPropertyListRef pl, CFErrorRef *error,
bool repair, const uint8_t *der, uint8_t *der_end);
const uint8_t* der_decode_plist(CFAllocatorRef pl,
CFPropertyListRef* cf, CFErrorRef *error,
const uint8_t* der, const uint8_t *der_end);
CFDataRef CFPropertyListCreateDERData(CFAllocatorRef allocator, CFPropertyListRef plist, CFErrorRef *error);
CFPropertyListRef CFPropertyListCreateWithDERData(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags options, CFPropertyListFormat *format, CFErrorRef *error);
#ifdef __cplusplus
} #endif
#endif