- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从 X509 结构化证书中检索 key 使用值,我尝试了以下代码
X509* lcert=NULL;
lCert=PEM_read(filename); // function will return the certificate in X509
unsigned long lKeyusage= lCert->ex_kusage;
当我打印 lKeyusage 值时.. 有时我得到 128 ... 有时我得到相同证书的 0 ..谁能告诉我错误是什么?如果我做错了,请给我一些示例代码或正确的 API ..
最佳答案
我认为最简单的方法是使用内存 BIO:
...
X509 *lcert = NULL;
BUF_MEM *bptr = NULL;
char *buf = NULL;
int loc;
FILE *f = fopen("your cert goes here", "rb");
if( (lcert = PEM_read_X509(f, &lcert, NULL, NULL)) == NULL){
// error handling...
}
loc = X509_get_ext_by_NID( lcert, NID_key_usage, -1);
X509_EXTENSION *ex = X509_get_ext(lcert, loc);
BIO *bio = BIO_new(BIO_s_mem());
if(!X509V3_EXT_print(bio, ex, 0, 0)){
// error handling...
}
BIO_flush(bio);
BIO_get_mem_ptr(bio, &bptr);
// now bptr contains the strings of the key_usage, take
// care that bptr->data is NOT NULL terminated, so
// to print it well, let's do something..
buf = (char *)malloc( (bptr->length + 1)*sizeof(char) );
memcpy(buf, bptr->data, bptr->length);
buf[bptr->length] = '\0';
// Now you can printf it or parse it, the way you want...
printf ("%s\n", buf);
...
在我的例子中,对于测试证书,它打印了“数字签名、不可否认、 key 加密”
还有其他方法,比如使用 ASN1_BIT_STRING *。如果以上内容不符合您的需求,我可以告诉您。
问候。
关于openssl - 如何从 X509 证书中获取 Keyusage 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10011730/
我正在尝试从我的 Java EE 程序向需要证书身份验证的主机发送 HTTPS 请求。我有一个正确的 keystore 文件,带有导入 CA 的信任库,两者的列表显示证书在里面。 但是我收到以下错误:
我正在编写一个小型 CA 实现。可以从现有证书引导此 CA。执行此操作后,我想验证输入是否具有正确的扩展名: private static final Set REQUIRED_CA_EXTENSIO
我正在尝试验证证书以确保它具有正确的 keyUsage。但是看不到我如何将我的 X509KeyUsageFlags.KeyEncypherment 使用标志指定到此应用程序策略中。 这是我目前的代码。
在 bouncycastle我可以从 KeyUsage 开始创建 DEROctetString。 如何从 DEROctetString 开始获取 KeyUsage? 示例: DEROctetStrin
我想从 X509 结构化证书中检索 key 使用值,我尝试了以下代码 X509* lcert=NULL; lCert=PEM_read(filename); // function will re
任何人都可以发布用于添加到 PKCS10 bouncycaSTLe 证书的 Java 代码请求有关 KeyUsage 的扩展(例如 KeyUsage.keyEncipherment)。 我没有找到任何
我正在尝试使用 keytool 实用程序创建证书。我需要一些关于keyUsage的信息,我已经看到了javadoc 。 但是我无法理解各种按键用法之间的差异,例如: 什么是digitalSignatu
我正在尝试在我的客户端应用程序和 WebSphere 服务器之间建立 SSL 连接。我的服务器证书支持以下 key 用法: Digital Signature, Certificate Signing
我们开发了一个基于 Web 的 Java 应用程序,该应用程序在 Windows 2008 上的 IIS 下的 Tomcat 中运行。该网站在 IIS 中启用了双向(相互)SSL,要求客户端使用 x.
我是一名优秀的程序员,十分优秀!