File "JKS-CERT-INFO.bas"

Path: /AndroCertif/JKS-CERT-INFO.bas
File size: 5.47 KB
MIME-type: text/plain
Charset: utf-8

#COMPILE EXE "JKS-CERT-INFO.exe"
#DIM ALL

$VER = "(1.0)"

'------------------------------------------------------------------------------
'   ** Constants **
'------------------------------------------------------------------------------
%IDC_LABEL1   = 1000
%IDC_LABEL2   = 1001
%IDC_TEXTBOX1 = 1002
%IDC_TEXTBOX2 = 1003
%IDC_TEXTBOX3 = 1004
%IDC_TEXTBOX4 = 1005
%IDC_TEXTBOX5 = 1006
%IDC_TEXTBOX6 = 1007
%IDC_TEXTBOX7 = 1008
'------------------------------------------------------------------------------
GLOBAL file, KSCommonName, KSOrgName, KSOrgUnit AS STRING
GLOBAL KSLocality, KSState, KSCountry, SHA1 AS STRING
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
'   ** Includes & Resources **
'------------------------------------------------------------------------------
#INCLUDE ONCE "WIN32API.INC"
#INCLUDE ONCE "AndroCertif.inc"
#RESOURCE ICON,   101, "icon4.ico"
#RESOURCE MANIFEST, 1, "XPTheme.xml"
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
'   ** Main Application Entry Point **
'------------------------------------------------------------------------------
FUNCTION PBMAIN () AS LONG
    LOCAL jks, tmprsa, r AS STRING

    IF MissingTools() THEN EXIT FUNCTION

    r = TRIM$(COMMAND$, $DQ)
    IF EXIST(r) THEN
        jks = r
    ELSE
        DISPLAY OPENFILE %HWND_DESKTOP,,, "Open JKS", "", _
            CHR$("Java KeyStore",0,"*.JKS",0), "", "", _
            %OFN_FILEMUSTEXIST TO jks
    END IF

    IF jks = "" THEN EXIT FUNCTION ' cancelled by user
    file = jks : IF INSTR(file, "\") > 0 THEN file = MID$(file, INSTR(-1, file, "\") + 1)

    r = BATCH("echo & echo.|" + toolsPath + "\keytool -list -v -keystore " + PDQ(jks))

    KSCommonName = ParsePrintCert(r, "CN")
    KSOrgName    = ParsePrintCert(r, "O")
    KSOrgUnit    = ParsePrintCert(r, "OU")
    KSLocality   = ParsePrintCert(r, "L")
    KSState      = ParsePrintCert(r, "ST")
    KSCountry    = ParsePrintCert(r, "C")
    SHA1         = ParsePrintCert(r, "SHA1 :")
    IF SHA1 = "" THEN
        SHA1     = ParsePrintCert(r, "SHA1:")
    END IF

    ShowKSInfo %HWND_DESKTOP

END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
'   ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ProcKSInfo()

    IF CB.MSG = %WM_COMMAND AND CB.CTL = %IDOK THEN ' OK BUTTON
        DIALOG END CB.HNDL
    END IF

END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
'   ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowKSInfo(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG
    LOCAL hDlg  AS DWORD

    DIALOG NEW PIXELS, hParent, EXE.NAME$+$SPC+$VER, , , 280, 220, %WS_POPUP OR %WS_BORDER _
        OR %WS_DLGFRAME  OR %WS_SYSMENU OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME _
        OR %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT OR %WS_CAPTION, %WS_EX_WINDOWEDGE _
        OR %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR, _
        TO hDlg

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, $DQ+file+$DQ+" was signed by :", 8, 6, 200, 16

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "Full name :", 8, 31, 120, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX1, KSCommonName, 128, 27, 141, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "Organization name :", 8, 52, 120, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX2, KSOrgName, 128, 48, 141, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "Organization unit :", 8, 73, 118, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX3, KSOrgUnit, 128, 69, 141, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "City / locality :", 8, 94, 118, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX4, KSLocality, 128, 90, 141, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "State / province :", 8, 116, 118, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX5, KSState, 128, 112, 141, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "2-letter country code :", 8, 137, 158, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX6, KSCountry, 128, 133, 42, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "SHA1 :", 189, 137, 80, 16, %SS_RIGHT
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX7, SHA1, 8, 159, 261, 18

    CONTROL ADD BUTTON,  hDlg, %IDOK, "OK", 176, 186, 72, 24

    DIALOG SET ICON      hDlg, "#101"
    DIALOG SHOW MODAL    hDlg, CALL ProcKSInfo TO lRslt

    FUNCTION = lRslt
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION ParsePrintCert(response AS STRING, identifier AS STRING) AS STRING
  LOCAL i, j AS LONG

  i = INSTR(response, $SPC + identifier + IIF$(ISFALSE INSTR(identifier, ":"),"=",""))
  IF ISFALSE i THEN EXIT FUNCTION
  j = INSTR(i, response, ANY ","+$CRLF)
  IF ISFALSE j THEN EXIT FUNCTION
  i += LEN($SPC + identifier) + 1
  FUNCTION = MID$(response, i, j-i)

END FUNCTION
'------------------------------------------------------------------------------