VB.Net by API/System.Security.Cryptography/DSACryptoServiceProvider
DSACryptoServiceProvider.FromXmlString
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
DSACryptoServiceProvider.SignData
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