Sample code for 30+ languages & platforms
PureBasic

Duplicate Java Verify RSA Signature

See more RSA Examples

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

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkRsa.pb"
IncludeFile "CkCert.pb"

Procedure ChilkatExample()

    success.i = 0

    ; 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);  
    ;     }  
    ; } 

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

    cert.i = CkCert::ckCreate()
    If cert.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkCert::ckLoadFromBase64(cert,base64Certificate)
    If success = 0
        Debug CkCert::ckLastErrorText(cert)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

    rsa.i = CkRsa::ckCreate()
    If rsa.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkRsa::ckSetX509Cert(rsa,cert,0)
    If success = 0
        Debug CkRsa::ckLastErrorText(rsa)
        CkCert::ckDispose(cert)
        CkRsa::ckDispose(rsa)
        ProcedureReturn
    EndIf

    CkRsa::setCkEncodingMode(rsa, "base64")
    success = CkRsa::ckVerifyStringENC(rsa,base64DataToBeSigned,"sha256",base64Signature)
    If success = 0
        Debug CkRsa::ckLastErrorText(rsa)
        CkCert::ckDispose(cert)
        CkRsa::ckDispose(rsa)
        ProcedureReturn
    EndIf

    Debug "Signature verified."


    CkCert::ckDispose(cert)
    CkRsa::ckDispose(rsa)


    ProcedureReturn
EndProcedure