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 conversion for this program is as follows:

     

          $set ilusing"System""
          $set ilusing"System.Security.Cryptography" 
           class-id xmldigisign.RSASample.
           working-storage section.
           method-id main static.
           local-storage section.
           procedure division.
    		   try 
                  *> Create a new instance of RSACryptoServiceProvider.
    		      perform using rsa as type RSACryptoServiceProvider = new RSACryptoServiceProvider
    				 *>The hash to sign. 
    				 declare hash as type Byte occurs any 
    		         perform using sha256 as type SHA256 = type SHA256::Create
    					declare #data as type Byte occurs 20 = table of
                          type Byte(59, 4, 248, 102, 77, 97, 142, 201, 210, 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135)
    					set hash = sha256::ComputeHash(#data)
    		         end-perform
     
                  *> Create an RSASignatureFormatter object and pass it the               
    			  *> RSACryptoServiceProvider to transfer the key information. 
    				 declare RSAFormatter as type RSAPKCS1SignatureFormatter = new RSAPKCS1SignatureFormatter(rsa) 
    			  *> Set the hash algorithm to SHA256. 
    
                     invoke RSAFormatter::SetHashAlgorithm("SHA256")
    			  *> Create a signature for HashValue and return it. 
    				 declare SignedHash as type Byte occurs any = RSAFormatter::CreateSignature(hash)
    		      end-perform
    		   catch e as type CryptographicException
    		      display e::Message
    		   end-try
    		   goback.
    
           end method.
    
           end class.
    
    
Reply
  • The conversion for this program is as follows:

     

          $set ilusing"System""
          $set ilusing"System.Security.Cryptography" 
           class-id xmldigisign.RSASample.
           working-storage section.
           method-id main static.
           local-storage section.
           procedure division.
    		   try 
                  *> Create a new instance of RSACryptoServiceProvider.
    		      perform using rsa as type RSACryptoServiceProvider = new RSACryptoServiceProvider
    				 *>The hash to sign. 
    				 declare hash as type Byte occurs any 
    		         perform using sha256 as type SHA256 = type SHA256::Create
    					declare #data as type Byte occurs 20 = table of
                          type Byte(59, 4, 248, 102, 77, 97, 142, 201, 210, 12, 224, 93, 25, 41, 100, 197, 213, 134, 130, 135)
    					set hash = sha256::ComputeHash(#data)
    		         end-perform
     
                  *> Create an RSASignatureFormatter object and pass it the               
    			  *> RSACryptoServiceProvider to transfer the key information. 
    				 declare RSAFormatter as type RSAPKCS1SignatureFormatter = new RSAPKCS1SignatureFormatter(rsa) 
    			  *> Set the hash algorithm to SHA256. 
    
                     invoke RSAFormatter::SetHashAlgorithm("SHA256")
    			  *> Create a signature for HashValue and return it. 
    				 declare SignedHash as type Byte occurs any = RSAFormatter::CreateSignature(hash)
    		      end-perform
    		   catch e as type CryptographicException
    		      display e::Message
    		   end-try
    		   goback.
    
           end method.
    
           end class.
    
    
Children
No Data