2015-08-15 33 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#,所以你有最新的最新版本。

我自己仍然無法完全編譯整個模式,儘管......只是找到了這個方法。

也許答案可以幫助有需要的人。