0

我正在尝试将 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(" failed\n  !  mbedtls_x509_crt_parse_file returned -0x%04x\n\n", -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;
   }
4

1 回答 1

0

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

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

更正这两件事后,我能够将 CN 解析为缓冲区。

谢谢

于 2020-12-04T07:04:20.133 回答