c-将X.509证书的使用者名称解析到缓冲区



我试图将X.509证书的使用者名称解析到缓冲区中,但收到了负值。可能出了什么问题?

int32_t ret;
size_t n = 0;
uint8_t *p = NULL;
mbedtls_x509_crt testcert;
mbedtls_x509_crt_init(&testcert);
if (ret = mbedtls_x509_crt_parse_file(&testcert, "testcert.pem"))
{
printf(" failedn  !  mbedtls_x509_crt_parse_file returned -0x%04xnn", -ret);
return ret;
}
ret = mbedtls_x509_dn_gets(p, n, &testcert.subject);
if (ret <= 0)
{
printf("mbedtls_x509_dn_gets returned %02x", -ret);
return ret;
}

我在上面的代码片段中犯了错误。

  1. 我没有为指针分配内存p
  2. ";n〃应该是缓冲区的最大大小

在纠正了这两件事之后,我能够将CN解析到缓冲区。

谢谢

最新更新