/*
 * =====================================================================================
 *
 *       Filename:  certParser.h
 *
 *    Description:  X.509 v3 parser
 *
 *        Version:  1.0
 *        Created:  12/05/2017 10:29:15 AM
 *       Compiler:  armcc
 *
 *         Author:  Dongwook Shim (), dw.shim@samsung.com
 *        Company:  Samsung Electronics
 *
 *        Copyright (c) 2017 by Samsung Electronics, All rights reserved.
 *
 * =====================================================================================
 */

#ifndef __CERT_PARSER_H__
#define __CERT_PARSER_H__

#include <stdint.h>

#include "keyManager.h"
#include "x509/x509v3.h"

int32_t checkCertificate(const uint8_t *buf, uint32_t len, KEY *ca);
int32_t getCAPublicKey(KEY** ca, uint32_t keyType);
int32_t getCertHash(const struct x509_certificate* cert, int32_t* algo, uint8_t* digest, uint32_t* digestLen);
uint8_t getCertPublicKeyType(const struct x509_certificate* cert);
int32_t getCertUID(uint8_t* cert, int16_t certLen, uint8_t* uid, uint32_t uidLen);
int32_t parseCert(uint8_t* cert, int16_t certLen, uint8_t* out, uint32_t *outLen);
int32_t verifyCertificateWithCA(const uint8_t *derCert, uint16_t derCertLen, struct x509_certificate *x509Cert);
int32_t validateDrkCert(struct x509_certificate *cert);
#endif	// End of __CERT_PARSER_H__
