2015-08-15 96 views
0

我想要做的是我自己的例程(CPP优先),可以创建一个证书请求消息,如RFC4211所示。ASN模式 - 证书请求格式(RFC4211)

我明白这样做的方式首先得到一个ASN模块描述,然后编译它以获得我可以用来创建一个我需要的类型的对象的代码(在这种情况下,一个CertReqMessage )。然后我可以使用BER或XER或其他编码...

因此,我首先收集所有需要的ASN模块,该列表包含大量的RFCS - RFC4211,RFC5280,RFC5652,RFC5755和可能另一个我现在缺少了。我从RFC提取它们,然后尝试编译它们,但我无法编译所有文件(我使用此编译器http://lionet.info/asn1c/compiler.html)。 “最低级别”RFcs(不从其他人导入)可以工作,但是当我将其他RFC添加到编译列表中时(通常是在添加最后一个时),我会收到一条消息,指出一个或两个外部找不到模块,即使它们在参数列表中作为要编译的文件。我也收到有关ASN模块之间表达式冲突的消息...

我试图把所有的模块放到一个文件中,并使用这个编译器:http://asn1-playground.oss.com/它看起来可以工作(有一些警告),但是我无法得到代码使用这个在线的。

我不知道什么是错 - 这个asn1c编译器(v0.9.27)有问题,还是有一些我必须做的,我没有做的?我是否必须自己手动纠正所有这些冲突以及进口或什么?

还是有一些更好的编译器,我可以使用?

感谢您的帮助!

回答

0

如果有人有兴趣或有同样的问题 -

我发现了一个“解决方案”在Java中使用BouncyCastle的API(1.49-1.52)。该库包括我需要的CMS容器和CRMF等的特定实现,并且我能够找到一些(但不是非常详细的)示例应用程序,从中可以构建我需要的消息。

如果你在C#中需要这个,请记住,C#bouncycastle实现不像Java那样被维护,并且在API中有所不同。有一些工具可以让你将库从java移植到C#,所以你有最新的最新版本。

我自己仍然无法完全编译整个模式,尽管......只是找到了这个方法。

也许答案可以帮助有需要的人。