Sample code for 30+ languages & platforms
Lua

Duplicate Java Verify RSA Signature

See more RSA Examples

Demonstrates how to duplicate a snippet of Java code that verifies an RSA signature.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- This requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

-- This example duplicates the following Java code:

-- import com.sun.org.apache.xml.internal.security.utils.Base64;
-- import java.io.ByteArrayInputStream;
-- import java.security.PublicKey;
-- import java.security.Signature;
-- import java.security.cert.CertificateFactory;
-- import java.security.cert.X509Certificate;
-- public class validateSazetak {
--   public static void main(String[] args) {
--   String signatureAlgorithm = "SHA256withRSA";
--   String base64DataToBeSigned = "Hlp...LE4=";
--   String base64Certificate = "MII...TlQ==";
--   String base64Signature = "I00...pZA==";
--   try {
--       CertificateFactory cf;
--       X509Certificate certificate = null;
--       cf = CertificateFactory.getInstance("X.509");
--       certificate = (X509Certificate) cf.generateCertificate(new
--       ByteArrayInputStream(Base64.decode(base64Certificate)));
--
--       Signature signature = Signature.getInstance(signatureAlgorithm, "SunRsaSign");
--       PublicKey pk = (PublicKey) certificate.getPublicKey();
--       signature.initVerify(pk);
--
--       byte[] hashBytes = Base64.decode(base64DataToBeSigned);
--       signature.update(hashBytes);
--
--       byte[] sigBytes = Base64.decode(base64Signature);
--       boolean validity = signature.verify(sigBytes);
--       System.out.println("Is valid signature:" + validity);
--     } catch (Exception e) {
--         System.out.println(e);
--     }
-- }

local base64DataToBeSigned = "Hlp...LE4="
local base64Certificate = "MII...TlQ=="
local base64Signature = "I00...pZA=="

local cert = chilkat.Cert.new()
local success = cert:load_from_base64(base64Certificate)
if not success then
    print(cert.last_error_text)
    return
end

local rsa = chilkat.Rsa.new()

success = rsa:set_x509_cert(cert, false)
if not success then
    print(rsa.last_error_text)
    return
end

rsa.encoding_mode = "base64"
success = rsa:verify_string_enc(base64DataToBeSigned, "sha256", base64Signature)
if not success then
    print(rsa.last_error_text)
    return
end

print("Signature verified.")