怎么使用C++里wincrypt.h的PKCS#7加密

这是关键代码,基本是直接扣微软的官方文档,
CRYPT_SIGN_MESSAGE_PARA SigParams;
SigParams.cbSize = sizeof(CRYPT_SIGN_MESSAGE_PARA);
SigParams.dwMsgEncodingType = MY_ENCODING_TYPE;
SigParams.pSigningCert = pSignerCert;
SigParams.HashAlgorithm.pszObjId = szOID_PKCS_7;
SigParams.HashAlgorithm.Parameters.cbData = NULL;
SigParams.cMsgCert = 1;
SigParams.rgpMsgCert = &pSignerCert;
SigParams.cAuthAttr = 0;
SigParams.dwInnerContentType = 0;
SigParams.cMsgCrl = 0;
SigParams.cUnauthAttr = 0;
SigParams.dwFlags = 0;
SigParams.pvHashAuxInfo = NULL;
SigParams.rgAuthAttr = NULL;

// First, get the size of the signed BLOB.

if(CryptSignMessage(
    &SigParams,
    FALSE,
    1,
    MessageArray,
    MessageSizeArray,
    NULL,
    &cbSignedMessageBlob))
{XXXXXX}
    但是总是报80091002错误,如果吧SZOID改成其他的如szOID_OIWSEC_sha1RSASign则正常。
    ![图片说明](https://img-ask.csdn.net/upload/201601/07/1452179845_36074.png);这问题困扰我很久了,请大牛助攻!!!!!
    http://blog.csdn.net/wangsifu2009/article/details/7560306

http://www.cnblogs.com/hfww/archive/2012/11/15/2770924.html