当我在PEM编码的完整证书链上使用OpenSSL.crypto.load_certificate(b'< PEM encoded certificate bytes >')
函数时,仅第一个证书作为OpenSSL.crypto.X509
对象被加载。
其余证书将被完全忽略。我认为这是因为解析器命中“ END CERTIFICATE”并停止读取。 OpenSSL(或其他地方)中是否有实用程序功能来解析和加载整个证书链?
“完整证书链”是指PEM格式的证书,其中包含多个----- BEGIN CERTIFICATE -----
/ ----- END CERTIFICATE -----
标记。
答案 0 :(得分:1)
这是一个简短的代码段,可从PEM编码的字节缓冲区读取所有证书:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int lotto_gen()
{
int ball = 1 + rand() % 45;
return ball;
}
void swap(int* a, int* b)
{
int r;
r = *a;
*a = *b;
*b = r;
}
void shuffle(int* arr, int size)
{
int i,r;
for (i = 0; i < size; i++)
{
r = rand() % (size - i) + i;
swap(arr + i, arr + r);
}
}
int main (void)
{
int i,j;
int lotto[45] = { 0 };
int size = sizeof(lotto) / sizeof(lotto[0]);
srand(time(0));
for (i = 0; i < 10; i++)
{
lotto[i]=lotto_gen();
}
for (j = 0; j < 10; j++)
{
printf("[");
for (i = 0; i < 6; i++)
{
printf("%d ", lotto[i]);
}
printf("]\n");
}
return 0;
}