首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenSSL ASN.1编程教程

OpenSSL ASN.1编程教程
EN

Stack Overflow用户
提问于 2012-06-20 19:24:12
回答 2查看 6K关注 0票数 11

我正在寻找任何关于使用OpenSSL库进行ASN.1 DER编码的C/C++教程、示例代码或文档。

EN

回答 2

Stack Overflow用户

发布于 2012-08-24 19:08:32

嗯,正如你在openssl网站上看到的,没有ASN.1函数的官方文档。

但是你可以一直使用download openssl sources。解压后,您可以在doc/crypto目录中查看ASN.1的文档。

代码语言:javascript
复制
# ~/tmp/openssl-1.0.1c/doc/crypto> ls -1 | grep -i asn
ASN1_generate_nconf.pod
ASN1_OBJECT_new.pod
ASN1_STRING_length.pod
ASN1_STRING_new.pod
ASN1_STRING_print_ex.pod
d2i_ASN1_OBJECT.pod

这个文件是plain old documentation,我相信,可以转换为超文本标记语言/PDF。它包含了你想要的东西。

票数 5
EN

Stack Overflow用户

发布于 2018-07-10 05:29:08

代码语言:javascript
复制
#include <openssl/asn1.h>
#include <cstdio>
#include <cstring>

void xprint(void *data, int len) {
  unsigned char *ptr = reinterpret_cast<unsigned char*>(data);
  for (int i = 0; i < len; i++) {
    printf("%x ", *ptr);
    ptr += 1;
  }
  printf("\n");
}

void str_test() {
  ASN1_STRING asn1str;
  const char *s = "stackoverflow save the world!aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
  ASN1_STRING_set(&asn1str, s, strlen(s) + 1);
  const char *value = reinterpret_cast<char*>(ASN1_STRING_data(&asn1str));
  printf("The value is %s, strlen: %zu\n", value, strlen(value));
  unsigned char *ptr = new unsigned char[1024];
  int ret = M_i2d_ASN1_OCTET_STRING(&asn1str, &ptr);
  // int ret = i2d_ASN1_bytes(&asn1str, &ptr, V_ASN1_OCTET_STRING, V_ASN1_UNIVERSAL);
  printf("return: %d\n", ret);
  xprint(ptr - ret, ret);
}

int main(int argc, char** argv) {
  str_test();
  return 0;
}

希望这能帮你节省一些时间和精力。

http://www.umich.edu/~x509/ssleay/asn1_convert.html这个链接非常有用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11118454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档