OpenSSL を使用して電子メール メッセージに署名しようとしています。電子メール メッセージに対してクリア テキスト署名を実行したいと考えています。
コマンドでコマンドプロンプトを使用してこれを行うことができることを私は知っています:
openssl smime -sign -in hw.txt -text -out signed.msg -signer mycert.pem
しかし、Cコードを使用してこれを行うにはどうすればよいですか?
これは私が今していることです:
int flgs = PKCS7_DETACHED | PKCS7_TEXT;
PKCS7 * p7 = PKCS7_sign(signCert, pKey, certs, bio, flgs);
if(p7 != NULL) {
int res = PKCS7_final(p7, bio, flags);
__android_log_print(ANDROID_LOG_DEBUG, "OpenSSLJni", "\nFinal result is: %d", res);
FILE *outfile = fopen("/storage/sdcard0/sign_output.txt", "w");
BIO* out = BIO_new_fp(outfile, BIO_NOCLOSE) ;// BIO_new_file(outfile, "");
BIO_reset(bio);
SMIME_write_PKCS7(out, p7, bio, flags);
return true;
}
しかし、出力ファイルでは、本文と署名の両方ではなく、署名のみを取得しています。
ポインタはありますか?