本文是参照别的文章,再根据自己实践后整理的,若有不当之处,还请批评指正!
使用openssl将C结构体转换为ASN1 Der格式时,首先需要包含如下几个头文件:
#include <openssl/asn1.h>
#include <openssl/asn1t.h>
#include <openssl/ossl_typ.h>
然后,按如下三个步骤进行操作,通过示例程序进行介绍,假如想将结构体ECCrefPublicKey 进行转换,该结构体定义如下:
typedef struct ECCrefPublicKey_st
{
unsigned char x[ECCref_MAX_LEN];
unsigned char y[ECCref_MAX_LEN];
} ECCrefPublicKey;
第一步:在头文件中定义如下结构体,并进行声明
//结构体定义(将其理解为ASN1格式下与ECCrefPublicKey相对应的结构,我们的目的就是将普通二进制格式下的ECCrefPublicKey转换为ASN1标准对应下的格式,有点类似于我们数学中学的一一映射的意思)
Typedef struct ASN_ECCPUBLICKEY_st
{
ASN1_OCTET_STRING *X