Thursday, January 23, 2020

 

Decode X509 Certificate in PL/SQL - Oracle

Sample how to decode X509 in PL/SQL.

-- JAVA PROCEDURE FOR DECODE X509 CERTIFICATE. SAMPLE FOR ISSUERDN
-- MORE on X509Certificate https://docs.oracle.com/javase/8/docs/api/java/security/cert/X509Certificate.html
create or replace and compile java source named testx509src as
import java.security.cert.*;
  import java.io.*;
  import java.sql.*;
  import java.security.Principal;
  import oracle.sql.CHAR;

  public class TestX509 {
      public static oracle.sql.CHAR getIssuer(CHAR cert)
              throws SQLException, IOException, CertificateException {

          String aa = new String(cert.getString());

          CertificateFactory cf = CertificateFactory.getInstance("X.509");
          ByteArrayInputStream bytes = new ByteArrayInputStream(aa.getBytes());
          X509Certificate c = (X509Certificate) cf.generateCertificate(bytes);

          Principal principal = c.getIssuerDN();
          String issuerDn = principal.getName();
          
          oracle.sql.CHAR AAA = new oracle.sql.CHAR(issuerDn, null );
          return AAA;

      }
  }
/  

--PL/SQL INTERFACE FOR JAVA CALL
CREATE OR REPLACE FUNCTION CERT_getIssuer(cert in varchar2)
  RETURN VARCHAR2
  AS LANGUAGE JAVA
  NAME 'TestX509.getIssuer(oracle.sql.CHAR) return oracle.sql.CHAR';
/
--TEST SCRIPT
declare
  x509certificate varchar2(4000);
begin
x509certificate := '-----BEGIN CERTIFICATE-----
MIIBfzCCASmgAwIBAgIQWFSKzCWO2ptOAc2F3MKZSzANBgkqhkiG9w0BAQQFADAa
MRgwFgYDVQQDEw9Sb290Q2VydGlmaWNhdGUwHhcNMDExMDE5MTMwNzQxWhcNMzkx
MjMxMjM1OTU5WjAaMRgwFgYDVQQDEw9Vc2VyQ2VydGlmaWNhdGUwXDANBgkqhkiG
9w0BAQEFAANLADBIAkEA24gypa2YFGZHKznEWWbqIWNVXCM35W7RwJwhGpNsuBCj
NT6KEo66F+OOMgZmb0KrEZHBJASJ3n4Cqbt4aHm/2wIDAQABo0swSTBHBgNVHQEE
QDA+gBBch+eYzOPgVRbMq5vGpVWooRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mC
EMlg/HS1KKqSRcg8a30Za7EwDQYJKoZIhvcNAQEEBQADQQCYBIHBqQQJePi5Hzfo
CxeUaYlXmvbxVNkxM65Pplsj3h4ntfZaynmlhahH3YsnnA8wk6xPt04LjSId12RB
PeuO
-----END CERTIFICATE-----';
dbms_output.put_line( cert_getissuer(x509certificate) );
end;
/


Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?