本文主要是介绍openssl C++研发之pem格式处理详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、PEM_writeXXX和EM_write_bio_XXX
在OpenSSL的crypto/pem.h
头文件中,PEM_write_XXXX
和PEM_write_bio_XXXX
系列函数用于将特定类型的数据写入文件或BIO(内存缓冲区)中,其中XXXX
代表不同的数据类型。
这些函数的使用方式相似,通常接受一个文件指针(FILE*
)或BIO指针(BIO*
)作为参数,并将相应类型的数据写入到文件或BIO中。请根据需要选择合适的函数,并在使用时确保正确处理错误情况。
1.1 PEM_write_X509 / PEM_write_bio_X509
- 用于将X.509证书(X509结构体)写入文件或BIO中。
1.2 PEM_write_PrivateKey / PEM_write_bio_PrivateKey
- 用于将私钥(EVP_PKEY结构体)写入文件或BIO中。
1.3 PEM_write_PUBKEY / PEM_write_bio_PUBKEY
- 用于将公钥(EVP_PKEY结构体,通常是RSA、DSA、EC等密钥的公钥部分)写入文件或BIO中。
1.4. PEM_write_PKCS8PrivateKey / PEM_write_bio_PKCS8PrivateKey
- 用于将PKCS#8格式的私钥(EVP_PKEY结构体)写入文件或BIO中。
1.5. PEM_write_RSAPrivateKey / PEM_write_bio_RSAPrivateKey
- 用于将RSA私钥写入文件或BIO中。
1.6. PEM_write_RSAPublicKey / PEM_write_bio_RSAPublicKey
- 用于将RSA公钥写入文件或BIO中。
1.7. PEM_write_DSA / PEM_write_bio_DSA
- 用于将DSA密钥对(DSA结构体)写入文件或BIO中。
1.8. PEM_write_ECPrivateKey / PEM_write_bio_ECPrivateKey
- 用于将EC(椭圆曲线)私钥写入文件或BIO中。
1.9. PEM_write_EC_PUBKEY / PEM_write_bio_EC_PUBKEY
- 用于将EC公钥写入文件或BIO中。
二、PEM_writeXXX和EM_write_bio_XXX
PEM_readXXX
和 PEM_read_bio_XXX
是 OpenSSL 库中用于读取 PEM 格式数据的一组接口。这些接口被用于读取不同类型的 PEM 数据,例如证书、私钥等。下面简要说明这两组接口的作用:
2.1. PEM_readXXX
这组接口用于从文件或内存中读取 PEM 格式数据,其中 XXX
表示不同的数据类型,例如:
PEM_read_RSAPrivateKey
:用于读取 RSA 私钥。PEM_read_RSAPublicKey
:用于读取 RSA 公钥。PEM_read_X509
:用于读取 X.509 证书。- 等等…
这些接口通常接受一个文件指针作为参数,用于从文件中读取 PEM 数据。
2.2. PEM_read_bio_XXX
这组接口也用于从文件或内存中读取 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 证书。- 等等…
2.3. 使用示例
// 使用 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 密钥对。其他接口的使用方式类似,只需选择适当的接口和数据源类型。
这篇关于openssl C++研发之pem格式处理详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!