92 lines
2.1 KiB
C
Executable File
92 lines
2.1 KiB
C
Executable File
/*
|
|
**********************************************************************************************************************
|
|
* eGon
|
|
* the Embedded GO-ON Bootloader System
|
|
* eGON arm boot sub-system
|
|
*
|
|
* Copyright(C), 2006-2014, Allwinner Technology Co., Ltd.
|
|
* All Rights Reserved
|
|
*
|
|
* File :
|
|
*
|
|
* By : Jerry
|
|
*
|
|
* Version : V2.00
|
|
*
|
|
* Date :
|
|
*
|
|
* Descript:
|
|
**********************************************************************************************************************
|
|
*/
|
|
#ifndef _SUNXI_OPENSSL_EXT_H__
|
|
#define _SUNXI_OPENSSL_EXT_H__
|
|
|
|
#include "x509.h"
|
|
#include "bn.h"
|
|
|
|
#define SUNXI_EXTENSION_ITEM_MAX (8)
|
|
|
|
typedef struct
|
|
{
|
|
int extension_num;
|
|
u8 *name[SUNXI_EXTENSION_ITEM_MAX];
|
|
uint name_len[SUNXI_EXTENSION_ITEM_MAX];
|
|
u8 *value[SUNXI_EXTENSION_ITEM_MAX];
|
|
uint value_len[SUNXI_EXTENSION_ITEM_MAX];
|
|
}
|
|
sunxi_extension_t;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
u8 *n;
|
|
u32 n_len;
|
|
u8 *e;
|
|
u32 e_len;
|
|
}
|
|
sunxi_key_t;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
long version;
|
|
long serial_num;
|
|
sunxi_key_t pubkey;
|
|
sunxi_extension_t extension;
|
|
}
|
|
sunxi_certif_info_t;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
int head;
|
|
int head_len;
|
|
u8 *data;
|
|
int data_len;
|
|
}
|
|
sunxi_asn1_t;
|
|
|
|
int sunxi_certif_create(X509 **certif, u8 *buf, int len);
|
|
int sunxi_certif_free(X509 *certif);
|
|
int sunxi_certif_probe_serial_num(X509 *x);
|
|
int sunxi_certif_probe_version(X509 *x);
|
|
int sunxi_certif_probe_extension(X509 *x, sunxi_certif_info_t *sunxi_certif);
|
|
int sunxi_certif_probe_pubkey(X509 *x, sunxi_key_t *pubkey);
|
|
|
|
int sunxi_bytes_merge(u8 *dst, u32 dst_len, u8 *src, uint src_len);
|
|
|
|
int sunxi_certif_probe_ext(sunxi_certif_info_t *sunxi_certif, u8 *buf, u32 len);
|
|
int sunxi_certif_verify_itself(sunxi_certif_info_t *sunxi_certif, u8 *buf, u32 len);
|
|
|
|
int OBJ_obj2name(char *dst_buf, int buf_len, const ASN1_OBJECT *a);
|
|
int ASN1_STRING_mem(char *bp, const ASN1_STRING *v);
|
|
|
|
void sunxi_certif_mem_reset(void);
|
|
|
|
void reset_BIO_reset(void);
|
|
void reset_OBJ_nid2ln_reset(void);
|
|
void reset_CRYPTO_reset(void);
|
|
void reset_D2I_reset(void);
|
|
|
|
#endif
|