assinar xml

Boa dia a todos, por favor estou tentando fazer uma assinatura digital em um XML, e esta dando super certo com a ajuda do exemples que Chris Glazier e Altair Borges me enviaram, porem esta assinando com o algoritimo RSA-SHA1 mas eu preciso assinar com algoritimo RSA-SHA256, eu achei um exemplo que eu acredite que seja o que eu preciso conforme esta abaixo em C#, mas não estou conseguindo converter o Visual COBOL for Visual Studio, se alguém conseguir me ajudar ficarei muito agradecido.

 

atenciosamente

 

Renato Soares Vieira

 

using System; using System.Security.Cryptography; class RSASample { static void Main() { try { //Create a new instance of RSACryptoServiceProvider. using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { //The hash to sign. byte[] hash; using (SHA256 sha256 = SHA256.Create()) { byte[] data = new byte[] { 59, 4, 248, 102, 77, 97, 142, 201, 210, 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135 }; hash = sha256.ComputeHash(data); } //Create an RSASignatureFormatter object and pass it the //RSACryptoServiceProvider to transfer the key information. RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(rsa); //Set the hash algorithm to SHA256. RSAFormatter.SetHashAlgorithm("SHA256"); //Create a signature for HashValue and return it. byte[] SignedHash = RSAFormatter.CreateSignature(hash); } } catch (CryptographicException e) { Console.WriteLine(e.Message); } } }

Parents
  • The example code that you provided makes use of .NET classes that are in non-default .NET assemblies.  In order to make these classes available you must reference the assemblies.

    RSAPKCS1SHA256SignatureDescription is a class whose full name is System.Deployment.Internal.CodeSigning.RSAPKCS1SHA256SignatureDescription.

    At the top of the class I set the following directive:

    $set ilusing"System.Deployment.Internal.CodeSigning"

    This allows us to reference the class as RSAPKCS1SHA256SignatureDescription instead of specifying the full namespace.

    The RSAPKCS1SHA256SignatureDescription class is found in the .NET Assembly System.Deployment.dll. In order to find the class you have to add a reference to this assembly in your project. You can do this by right-clicking on the References folder in the project and selecting Add Reference and then navigate to System.Deployment in the list of .NET assemblies and select it and click on OK. It will then show up in the list as shown below:

Reply
  • The example code that you provided makes use of .NET classes that are in non-default .NET assemblies.  In order to make these classes available you must reference the assemblies.

    RSAPKCS1SHA256SignatureDescription is a class whose full name is System.Deployment.Internal.CodeSigning.RSAPKCS1SHA256SignatureDescription.

    At the top of the class I set the following directive:

    $set ilusing"System.Deployment.Internal.CodeSigning"

    This allows us to reference the class as RSAPKCS1SHA256SignatureDescription instead of specifying the full namespace.

    The RSAPKCS1SHA256SignatureDescription class is found in the .NET Assembly System.Deployment.dll. In order to find the class you have to add a reference to this assembly in your project. You can do this by right-clicking on the References folder in the project and selecting Add Reference and then navigate to System.Deployment in the list of .NET assemblies and select it and click on OK. It will then show up in the list as shown below:

Children
No Data