[VB6 equivalent: RSA_RawPrivate]
Dim strEPKFile As String
Dim strPubFile As String
Dim strPassword As String
Dim sbPublicKey As StringBuilder
Dim sbPrivateKey As StringBuilder
Dim abData() As Byte
Dim sHexData As String
strEPKFile = "rsa508.epk"
strPassword = "password"
' Read in the deciphered private key string
sbPrivateKey = Rsa.ReadEncPrivateKey(strEPKFile, strPassword)
If sbPrivateKey.Length = 0 Then
Console.WriteLine("Unable to retrieve private key")
Exit Sub
End If
Console.WriteLine("PriKey length= " & Rsa.KeyBits(sbPrivateKey.ToString()) & " bits")
' Create some raw data to be RSA'd
' Ref: 3.2 Signing the CertificationRequestInfo encoding
' 64-octet EB in full:
'00 01 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
'ff ff ff ff ff ff ff ff ff ff ff ff ff 00 30 20
'30 0c 06 08 2a 86 48 86 f7 0d 02 02 05 00 04 10
'dc a9 ec f1 c1 5c 1b d2 66 af f9 c8 79 93 65 cd
sHexData = "0001ffffffffffffffffffffffffffff" & _
"ffffffffffffffffffffffffff003020" & _
"300c06082a864886f70d020205000410" & _
"dca9ecf1c15c1bd266aff9c8799365cd"
abData = Cnv.FromHex(sHexData)
Console.WriteLine("Input: " & Cnv.ToHex(abData))
' Now we have our data in a byte array and
' our private key in string format,
' we are ready to do a "raw" operation
abData = Rsa.RawPrivate(abData, sbPrivateKey.ToString)
Console.WriteLine("RSA_RawPrivate returns " & abData.Length)
If abData.Length = 0 Then
Console.WriteLine("ERROR: " & General.LastError())
Else
' Display our results in hex format
Console.WriteLine("Output: " & Cnv.ToHex(abData))
End If
' Get the corresponding Public Key, also in a file
strPubFile = "rsa508.pub"
sbPublicKey = Rsa.ReadPublicKey(strPubFile)
Console.WriteLine("PubKey length= " & Rsa.KeyBits(sbPublicKey.ToString()) & " bits")
' Do a "raw" encryption with the public key
abData = Rsa.RawPublic(abData, sbPublicKey.ToString(), 0)
Console.WriteLine("RSA_RawPublic returns " & abData.Length)
If abData.Length = 0 Then
Console.WriteLine("ERROR: " & General.LastError())
Else
' Display our results in hex format
Console.WriteLine("Decrypt:" & Cnv.ToHex(abData))
End If
See Also:
Rsa.RawPrivate Method (Byte[], String)
Rsa.RawPrivate Method (Byte[], String, Int32)