The RSA component provides an interface to the OpenSSL RSA library of signing algorithms.

The RSA component is available in firmware version 4.7 and later.

Supported Interfaces

Description

This component can be used to sign/verify using RSA. 

Typically, you would use the roEVPDigest component to create a message digest, then use roRSA to sign it.

 

Example: RSA signing using SHA1
ba = CreateObject("roByteArray")
' ...populate bytearray...
digest = CreateObject("roEVPDigest")
digest.Setup("sha1")
hashString = digest.Process(ba)
hashBA = CreateObject("roByteArray")
hashBA.FromHexString(hashString)
rsa = CreateObject("roRSA")
' ... save private key to tmp:/privateKey.txt
rsa.SetPrivateKey("tmp:/privateKey.txt")
rsa.SetDigestAlgorithm("sha1")
signature = rsa.Sign(hashBA)
Example: RSA verification using SHA1
rsa = CreateObject("roRSA")
rsa.SetPublicKey(:tmp:/publicKey.txt")
rsa.SetDigestAlgorithm("sha1")
' see hashBA and signature from above example
result = rsa.Verify(hashBA, signature)
if (result = 1)
    print "Verified"
else
    print "Not verified, result = " ; result
end if