在OpenSSL的crypto/pem.h头文件中,PEM_write_XXXX和PEM_write_bio_XXXX系列函数用于将特定类型的数据写入文件或BIO(内存缓冲区)中,其中XXXX代表不同的数据类型。
这些函数的使用方式相似,通常接受一个文件指针(FILE*)或BIO指针(BIO*)作为参数,并将相应类型的数据写入到文件或BIO中。请根据需要选择合适的函数,并在使用时确保正确处理错误情况。
PEM_readXXX 和 PEM_read_bio_XXX 是 OpenSSL 库中用于读取 PEM 格式数据的一组接口。这些接口被用于读取不同类型的 PEM 数据,例如证书、私钥等。下面简要说明这两组接口的作用:
这组接口用于从文件或内存中读取 PEM 格式数据,其中 XXX 表示不同的数据类型,例如:
PEM_read_RSAPrivateKey:用于读取 RSA 私钥。PEM_read_RSAPublicKey:用于读取 RSA 公钥。PEM_read_X509:用于读取 X.509 证书。这些接口通常接受一个文件指针作为参数,用于从文件中读取 PEM 数据。
这组接口也用于从文件或内存中读取 PEM 格式数据,但与 PEM_readXXX 不同的是,PEM_read_bio_XXX 接受一个 BIO 结构体作为参数,用于提供更灵活的输入源支持。BIO 是 OpenSSL 中用于提供 I/O 抽象的结构体,它可以表示文件、内存等不同的数据源。
例如:
PEM_read_bio_RSAPrivateKey:用于从 BIO 中读取 RSA 私钥。PEM_read_bio_RSAPublicKey:用于从 BIO 中读取 RSA 公钥。PEM_read_bio_X509:用于从 BIO 中读取 X.509 证书。// 使用 PEM_read_RSAPrivateKey 从文件中读取 RSA 私钥
FILE *privateKeyFile = fopen("private_key.pem", "r");
RSA *rsaPrivateKey = PEM_read_RSAPrivateKey(privateKeyFile, NULL, NULL, NULL);
fclose(privateKeyFile);
// 使用 PEM_read_bio_RSAPublicKey 从内存中读取 RSA 公钥
BIO *bio = BIO_new_mem_buf(publicKeyData, publicKeyDataLength);
RSA *rsaPublicKey = PEM_read_bio_RSAPublicKey(bio, NULL, NULL, NULL);
BIO_free(bio);
这里的例子演示了如何使用 PEM_read_RSAPrivateKey 和 PEM_read_bio_RSAPublicKey 从文件和内存中读取 RSA 密钥对。其他接口的使用方式类似,只需选择适当的接口和数据源类型。