VB.Net by API/System.Security.Cryptography/DSACryptoServiceProvider
DSACryptoServiceProvider.FromXmlString
<source lang="vbnet">
Imports System Imports System.IO Imports System.Security.Cryptography Imports System.Text Public Class DSASign
Public Shared Sub Main(ByVal CmdArgs() As String) If CmdArgs.Length <> 3 Then Console.WriteLine("usage: DSASign <key xml> <sign>") End End If Dim xkey As String = LoadString(CmdArgs(0)) Dim fs As FileStream = File.OpenRead(CmdArgs(1)) Dim dsa As DSACryptoServiceProvider = New DSACryptoServiceProvider dsa.FromXmlString(xkey) Dim sig() As Byte = dsa.SignData(fs) fs.Close() SaveString(CmdArgs(2), Convert.ToString(sig)) Console.WriteLine("Signature in {0}} file", CmdArgs(2)) End Sub Shared Public Sub SaveString(ByVal fname As String, ByVal data As String) Dim datas() As Byte = (New ASCIIEncoding).GetBytes(data) Dim fs As FileStream = File.OpenWrite(fname) fs.SetLength(0) fs.Write(datas, 0, datas.Length) fs.Close() End Sub Shared Public Function LoadString(ByVal fname As String) As String Dim finfo As FileInfo = New FileInfo(fname) Dim length As String = CType(finfo.Length, String) Dim buf() As Byte = New Byte(length) {} Dim fs As FileStream = File.OpenRead(fname) fs.Read(buf, 0, buf.Length) fs.Close() Return (New ASCIIEncoding).GetString(buf) End Function
End Class
</source>
DSACryptoServiceProvider.SignData
<source lang="vbnet"> Imports System Imports System.IO Imports System.Security.Cryptography Imports System.Text Public Class DSASign
Public Shared Sub Main(ByVal CmdArgs() As String) If CmdArgs.Length <> 3 Then Console.WriteLine("usage: DSASign <key xml> <data> <sign>") End End If Dim xkey As String = LoadString(CmdArgs(0)) Dim fs As FileStream = File.OpenRead(CmdArgs(1)) Dim dsa As DSACryptoServiceProvider = New DSACryptoServiceProvider dsa.FromXmlString(xkey) Dim sig() As Byte = dsa.SignData(fs) fs.Close() SaveString(CmdArgs(2), Convert.ToString(sig)) Console.WriteLine("Signature in {0}} file", CmdArgs(2)) End Sub Shared Public Sub SaveString(ByVal fname As String, ByVal data As String) Dim datas() As Byte = (New ASCIIEncoding).GetBytes(data) Dim fs As FileStream = File.OpenWrite(fname) fs.SetLength(0) fs.Write(datas, 0, datas.Length) fs.Close() End Sub Shared Public Function LoadString(ByVal fname As String) As String Dim finfo As FileInfo = New FileInfo(fname) Dim length As String = CType(finfo.Length, String) Dim buf() As Byte = New Byte(length) {} Dim fs As FileStream = File.OpenRead(fname) fs.Read(buf, 0, buf.Length) fs.Close() Return (New ASCIIEncoding).GetString(buf) End Function
End Class
</source>