2011-09-19 5 views
6

こんにちは私は、署名されたコンテンツを通常のMIMEライブラリで処理できるように、平文のスマートなpkcs#7(p7m)をスマートに変換する方法を見つけることができませんでした。不透明なpkcs7 p7mから分離されたsmimeへの変換

私はp7mファイルを取り出し、有効な署名をkepingしているsmimeメッセージに変換したいと思います。

手順は次のようになります

  • 抽出物を分離署名と新しいSMIME構造にP7M

  • パックすべてからP7M

  • 抽出CMS構造からコンテンツを締結

この操作は可能ですか?

私はopensslマニュアルを検索しましたが、それを行う方法が見つかりませんでした。

答えて

1

Iは、次のコードで剥離ものに不透明署名付きメッセージを変換することができた:

#include <openssl/evp.h> 
#include <openssl/bio.h> 
#include <openssl/pkcs7.h> 

int main(int argc, char **argv) 
{ 
    BIO *data = NULL, *bin = NULL, *bout = NULL; 
    PKCS7 *p7, *p7b; 

    OpenSSL_add_all_algorithms(); 

    bin = BIO_new_file("opaque.p7m", "rb"); 
    p7 = SMIME_read_PKCS7(bin, &data); 
    p7b = PKCS7_dup(p7); 

    data = PKCS7_dataInit(p7, NULL); 

    PKCS7_set_detached(p7b, 1); 

    bout = BIO_new_file("detached.p7m", "wb"); 
    SMIME_write_PKCS7(bout, p7b, data, PKCS7_BINARY | SMIME_DETACHED); 
} 

Iは、次のコマンドでopaque.p7mを生成するプログラムをテストする:

$ openssl smime -sign -in foo.txt -signer my.crt -inkey my.key -nodetach -out opaque.p7m 

簡潔にするために、上記のコードはチェックがありません。さまざまな入力形式を受け入れるには、SMIME_read_PKCS7PEM_read_bio_PKCS7(PEM)またはd2i_PKCS7_bio(DER)に変更します。

関連する問題