CryptoSys PKI examples VB6 to VB.NET

RSA_RawPublic

Transforms raw data using an RSA public key.

VB6/VBA

Debug.Print "Testing RSA_RawPublic ..."
Dim sEncDataHex As String
Dim abData() As Byte
Dim nDataLen As Long
Dim strCertFile As String
Dim nKeyLen As Long
Dim strPublicKey As String
Dim nRet As Long

' Cut and paste from DUMPASN1 output
sEncDataHex = "2F 23 82 D2 F3 09 5F B8 0C 58 EB 4E" & _
    "9D BF 89 9A 81 E5 75 C4 91 3D D3 D0" & _
    "D5 7B B6 D5 FE 94 A1 8A AC E3 C4 84" & _
    "F5 CD 60 4E 27 95 F6 CF 00 86 76 75" & _
    "3F 2B F0 E7 D4 02 67 A7 F5 C7 8D 16" & _
    "04 A5 B3 B5 E7 D9 32 F0 24 EF E7 20" & _
    "44 D5 9F 07 C5 53 24 FA CE 01 1D 0F" & _
    "17 13 A7 2A 95 9D 2B E4 03 95 14 0B" & _
    "E9 39 0D BA CE 6E 9C 9E 0C E8 98 E6" & _
    "55 13 D4 68 6F D0 07 D7 A2 B1 62 4C" & _
    "E3 8F AF FD E0 D5 5D C7"

' Convert to bytes
abData = cnvBytesFromHexStr(sEncDataHex)
' Check
Debug.Print cnvHexStrFromBytes(abData)

strCertFile = "AliceRSASignByCarl.cer"
' Read in PublicKey as base64 string - pre-dimension first
nKeyLen = RSA_GetPublicKeyFromCert("", 0, strCertFile, 0)
Debug.Print "KeyLen = " & nKeyLen
If nKeyLen <= 0 Then
    Debug.Print pkiGetLastError()
    MsgBox "Unable to retrieve private key"
    Exit Sub
End If
' Pre-dimension the string to receive data
strPublicKey = String(nKeyLen, " ")
' Read in the Key
nRet = RSA_GetPublicKeyFromCert(strPublicKey, nKeyLen, strCertFile, 0)
Debug.Print "PubKey length= " & RSA_KeyBits(strPublicKey) & " bits"

' Verify using the public key
nDataLen = UBound(abData) + 1
Debug.Print "Input:  " & cnvHexStrFromBytes(abData)
nRet = RSA_RawPublic(abData(0), nDataLen, strPublicKey, 0)
Debug.Print "Output: " & cnvHexStrFromBytes(abData)

Output

Testing RSA_RawPublic ...
2F2382D2F3095FB80C58EB4E9DBF899A81E575C4913DD3D0D57BB6D5FE94A18AACE3C484F5CD604E2795F6CF008676753F2BF0E7D40267A7F5C78D1604A5B3B5E7D932F024EFE72044D59F07C55324FACE011D0F1713A72A959D2BE40395140BE9390DBACE6E9C9E0CE898E65513D4686FD007D7A2B1624CE38FAFFDE0D55DC7
KeyLen = 220
PubKey length= 1024 bits
Input:  2F2382D2F3095FB80C58EB4E9DBF899A81E575C4913DD3D0D57BB6D5FE94A18AACE3C484F5CD604E2795F6CF008676753F2BF0E7D40267A7F5C78D1604A5B3B5E7D932F024EFE72044D59F07C55324FACE011D0F1713A72A959D2BE40395140BE9390DBACE6E9C9E0CE898E65513D4686FD007D7A2B1624CE38FAFFDE0D55DC7
Output: 0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003021300906052B0E03021A05000414406AEC085279BA6E16022D9E0629C0229687DD48

VB.NET

Console.WriteLine("Testing RSA_RawPublic ...")
Dim sEncDataHex As String
Dim abData() As Byte
Dim strCertFile As String
Dim sbPublicKey As StringBuilder

' Cut and paste from DUMPASN1 output
sEncDataHex = "2F 23 82 D2 F3 09 5F B8 0C 58 EB 4E" & _
    "9D BF 89 9A 81 E5 75 C4 91 3D D3 D0" & _
    "D5 7B B6 D5 FE 94 A1 8A AC E3 C4 84" & _
    "F5 CD 60 4E 27 95 F6 CF 00 86 76 75" & _
    "3F 2B F0 E7 D4 02 67 A7 F5 C7 8D 16" & _
    "04 A5 B3 B5 E7 D9 32 F0 24 EF E7 20" & _
    "44 D5 9F 07 C5 53 24 FA CE 01 1D 0F" & _
    "17 13 A7 2A 95 9D 2B E4 03 95 14 0B" & _
    "E9 39 0D BA CE 6E 9C 9E 0C E8 98 E6" & _
    "55 13 D4 68 6F D0 07 D7 A2 B1 62 4C" & _
    "E3 8F AF FD E0 D5 5D C7"

' Convert to bytes
abData = Cnv.FromHex(sEncDataHex)
' Check
Console.WriteLine(Cnv.ToHex(abData))

strCertFile = "AliceRSASignByCarl.cer"
' Read in PublicKey as base64 string - pre-dimension first
sbPublicKey = Rsa.GetPublicKeyFromCert(strCertFile)
Console.WriteLine("IntKeyLen = " & sbPublicKey.Length)
If sbPublicKey.Length = 0 Then
    Console.WriteLine(General.LastError())
    Console.WriteLine("Unable to retrieve private key")
    Exit Sub
End If
Console.WriteLine("PubKey length= " & Rsa.KeyBits(sbPublicKey.ToString()) & " bits")

' Verify using the public key
Console.WriteLine("Input:  " & Cnv.ToHex(abData))
abData = Rsa.RawPublic(abData, sbPublicKey.ToString())
Console.WriteLine("Output: " & Cnv.ToHex(abData))

[Contents]

[HOME]   [NEXT: RSA_ReadPrivateKeyInfo...]

Copyright © 2010-20 D.I. Management Services Pty Ltd. All rights reserved.