C++ 如何将字节数组中的给定公钥转换为mbedtls_ecdsa_publickey结构以验证ecdsa签名?

C++ 如何将字节数组中的给定公钥转换为mbedtls_ecdsa_publickey结构以验证ecdsa签名?,c++,esp32,mbedtls,C++,Esp32,Mbedtls,我正在尝试转换字节数组中的给定公钥,以使用它验证微控制器程序中的mbedtls签名。这就是我试过的。它编译并运行,但我得到的解析不起作用,我最终的错误输出 static void parsePubkey (){ mbedtls_printf("try parsing pubkey\n"); unsigned char publickeyarray[]= {89,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,7,

我正在尝试转换字节数组中的给定公钥,以使用它验证微控制器程序中的mbedtls签名。这就是我试过的。它编译并运行,但我得到的解析不起作用,我最终的错误输出

   static void parsePubkey (){

 mbedtls_printf("try parsing pubkey\n");

    unsigned char publickeyarray[]= {89,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,7,3,66,0,4,153,195,189,136,225,177,220,236,249,9,82,66,56,253,86,249,66,169,178,30,95,166,79,25,234,131,236,177,24,248,153,228,139,184,133,34,165,150,91,81,118,84,133,79,229,210,38,82,163,97,220,5,69,85,81,20,64,217,87,64,162,187,120,224};

    mbedtls_pk_context pk;
    mbedtls_pk_init(&pk);


    int pkret = mbedtls_pk_parse_public_key(&pk, publickeyarray, sizeof(publickeyarray));

        if (pkret != 0){
            mbedtls_printf("Error\n");
        }else{
            mbedtls_printf("parsed pubkey");
        }


}

请指定公钥的格式。了解您使用的关键参数(即哪条曲线)也会很有帮助。函数
mbedtls\u pk\u parse\u public\u key
需要PEM或DER编码的公钥()。我无法使用
openssl asn1parse-inform DER
openssl asn1parse-inform PEM
解码您的密钥,因此我假设它是其他格式。只是原始密钥位吗?