如何使用公钥

时间:2016-01-31 13:52:00

标签: c# web-services wcf encryption soap

在我的一个应用程序中,我需要调用Web服务.Web服务使用OASIS标准。条件如下:

A)必须使用user.Signature的私钥对请求进行数字签名 包含包含X.509证书详细信息的密钥信息元素。这是必需的 用于验证签名者的服务器。必须对SOAP请求中的以下元素进行签名

时间戳

的UsernameToken

B)签名后,必须使用电子归档的公钥加密请求 使用URI https://incometaxindiaefiling.gov.in/eFiling/Portal/WebServiceIncomeTaxPublicKey.cer下载公钥。 以下内容使用公钥加密 的UsernameToken

BulkPanService Servicee = new BulkPanService();


        // Create the UsernameToken we use to sign the message
        UsernameToken userToken;
        userToken = new UsernameToken("XXXXXX", "XXXXX", PasswordOption.SendHashed);
        Servicee.SetClientCredential(userToken);

        // Adds the token to the SOAP header.
        SoapContext context = Servicee.RequestSoapContext;
        context.Security.Timestamp.TtlInSeconds = 60000;
        context.Security.Tokens.Add(userToken);


        MessageSignature sig = new MessageSignature(signatureToken);
        sig.SignatureOptions = SignatureOptions.IncludeTimestamp | SignatureOptions.IncludeSoapBody;
        context.Security.Elements.Add(sig);

        BulkPanRequest request = new BulkPanRequest();
        request.uniqueRequestId = "XXXXXXXX";

        FileStream stream = File.OpenRead(@"path");
        byte[] fileBytes = new byte[stream.Length];
        stream.Read(fileBytes, 0, fileBytes.Length);
        stream.Close();
        request.dataHandler = fileBytes;

        //  First of all create an encrypting token
        X509SecurityToken encryptingToken = GetServerToken();


        // Encrypt the UsernameToken element in the SOAP header
        Servicee.RequestSoapContext.Security.Elements.Add(new EncryptedData(encryptingToken));

        BulkPanResponse response = new BulkPanResponse();
        response = Servicee.uploadBulkPan(request);

但是什么时候

Servicee.RequestSoapContext.Security.Elements.Add(new EncryptedData(encryptingToken));

行执行它抛出错误

  

WSE527:SecurityToken不支持数据加密。

请任何知道如何调用上述条件的网络服务的人帮我解决这个问题。

0 个答案:

没有答案