File "JKS-MAKER.bas"

Path: /AndroCertif/JKS-MAKER.bas
File size: 9.76 KB
MIME-type:
Charset: utf-8

#COMPILE EXE "JKS-MAKER.exe"
#DIM ALL

$VER = "(1.0)"

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

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

'------------------------------------------------------------------------------
'   ** Main Application Entry Point **
'------------------------------------------------------------------------------
FUNCTION PBMAIN () AS LONG
    LOCAL ks, er AS STRING
    LOCAL tmpKS AS STRING

    IF MissingTools() THEN EXIT FUNCTION

    tmpKS = ENVIRON$("TEMP") + "\keystore.jks"

    IF ShowNewKS(%HWND_DESKTOP) = 0 THEN EXIT FUNCTION ' cancelled by user

    IF ShowKSAliasPW(%HWND_DESKTOP) = 0 THEN EXIT FUNCTION ' cancelled by user

    KILL "keystore.jks"
    er = BATCH( toolsPath + "\keytool -genkey -keyalg RSA -keystore " + PDQ(tmpKS) _
              + " -alias " + KSAlias + " -storepass " + KSPassword _
              + " -keypass " + KSPassword + " -validity 10000" _
              + " -dname " + $DQ + "CN=" + KSCommonName _
              + ", OU=" + KSOrgUnit + ", O=" + KSOrgName _
              + ", L=" + KSLocality + ", S=" + KSState _
              + ", C=" + KSCountry + $DQ )

    IF NOT EXIST(tmpKS) THEN
      ?"ERROR!"+$CR+$CR+"Detail:"+$CR+er,%MB_ICONERROR,EXE.NAME$+$SPC+$VER
      EXIT FUNCTION
    END IF

    DISPLAY SAVEFILE %HWND_DESKTOP, , , "Save keystore as", "", _
        CHR$("Java KeyStore",0,"*.JKS",0,"All files",0,"*.*",0), _
        "keystore.jks", "jks", %OFN_CREATEPROMPT TO ks

    IF ks = "" THEN KILL tmpKS : EXIT FUNCTION ' cancelled by user

    IF EXIST(ks) THEN
        IF ?(ks+$CR+"A file with this name already exists. Replace ?", _
            %MB_ICONQUESTION OR %MB_YESNO, EXE.NAME$+$SPC+$VER) _
            <> %IDYES THEN KILL tmpKS : EXIT FUNCTION
    END IF

    KILL ks
    NAME tmpKS AS ks

    IF NOT EXIST("JKS2PEM+PK8.exe") THEN
        ?"Correctly created Java KeyStore:"+$CR+ks,%MB_ICONINFORMATION,EXE.NAME$+$SPC+$VER
        EXIT FUNCTION
    END IF

    IF ?("Correctly created Java KeyStore:"+$CR+ks+$CR+$CR _
    +"Convert to PEM + PKCS8 ?",%MB_ICONQUESTION OR %MB_YESNO, _
    EXE.NAME$+$SPC+$VER) = %IDNO THEN EXIT FUNCTION

    SHELL("JKS2PEM+PK8.exe " + KSPassword + " " + PDQ(ks))

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

'------------------------------------------------------------------------------
'   ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ProcNewKS()
    LOCAL e AS STRING

    IF CB.MSG = %WM_COMMAND AND CB.CTL = %IDOK AND _ ' OK BUTTON
        (CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1) THEN
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX1 TO e
        e = TRIM$(e) : IF e <> "" THEN KSCommonName = e
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX2 TO e
        e = TRIM$(e) : IF e <> "" THEN KSOrgName = e
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX3 TO e
        e = TRIM$(e) : IF e <> "" THEN KSOrgUnit = e
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX4 TO e
        e = TRIM$(e) : IF e <> "" THEN KSLocality = e
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX5 TO e
        e = TRIM$(e) : IF e <> "" THEN KSState = e
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX6 TO e
        e = TRIM$(e) : IF e <> "" THEN KSCountry = e
        DIALOG END CB.HNDL, 1 ' Details validated by user

    ELSEIF CB.MSG = %WM_COMMAND AND CB.CTL = %IDCANCEL AND _ ' CANCEL BUTTON
        (CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1) THEN
        DIALOG END CB.HNDL, 0 ' Cancelled by user
    END IF

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

'------------------------------------------------------------------------------
CALLBACK FUNCTION ProcKSAliasPW()
    LOCAL p1, p2 AS STRING

    IF CB.MSG = %WM_COMMAND AND CB.CTL = %IDOK AND _ ' OK BUTTON
        (CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1) THEN
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX2 TO p1
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX3 TO p2
        IF p1 = "" OR p2 = "" THEN
            CONTROL SET FOCUS CB.HNDL, %IDC_TEXTBOX2
            MessageBox CB.HNDL, "You need to specify non-empty Alias and Password", _
                "Keystore", %MB_ICONWARNING OR %MB_TASKMODAL
            EXIT FUNCTION
        END IF
        IF p1 <> p2 THEN
            MessageBox CB.HNDL, "Passwords don't match", _
                "Keystore", %MB_ICONERROR OR %MB_TASKMODAL
            EXIT FUNCTION
        END IF
        KSPassword = p2
        CONTROL GET TEXT CB.HNDL, %IDC_TEXTBOX1 TO p1
        KSAlias = p1
        DIALOG END CB.HNDL, 1 ' Alias and Password validated by user

    ELSEIF CB.MSG = %WM_COMMAND AND CB.CTL = %IDCANCEL AND _ ' CANCEL BUTTON
        (CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1) THEN
        DIALOG END CB.HNDL, 0 ' Cancelled by user
    END IF

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

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

    DIALOG NEW PIXELS, hParent, "Java KeyStore "+$VER, , , 264, 176, %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, "Your full name :", 8, 11, 120, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX1, "Susan Jones", 128, 7, 127, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "Your organization name :", 8, 32, 120, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX2, "ABCSystems Inc.", 128, 28, 127, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "Your organization unit :", 8, 53, 118, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX3, "Purchasing", 128, 49, 125, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "Your city / locality :", 8, 74, 118, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX4, "Palo Alto", 128, 70, 125, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "Your state / province :", 8, 96, 118, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX5, "California", 128, 92, 125, 18

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL1, "Your 2-letter country code :", 8, 117, 158, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX6, "CH", 198, 113, 55, 18

    CONTROL ADD BUTTON,  hDlg, %IDCANCEL, "Cancel", 72, 144, 72, 24
    CONTROL ADD BUTTON,  hDlg, %IDOK, "OK", 176, 144, 72, 24

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

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

'------------------------------------------------------------------------------
FUNCTION ShowKSAliasPW(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt AS LONG
    LOCAL hDlg  AS DWORD
    LOCAL hFont AS DWORD

    DIALOG NEW PIXELS, hParent, "Java KeyStore "+$VER, , , 237, 130, %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,  _
        "Please enter the Alias and Password for this keystore :", 8, 4, 229, 32

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL2, "Alias :", 8, 39, 60, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX1, "Suzy", 72, 37, 160, 20

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL2, "Password :", 8, 61, 60, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX2, "", 72, 59, 160, 20, %WS_CHILD _
        OR %WS_VISIBLE OR %WS_TABSTOP OR %ES_LEFT OR %ES_PASSWORD OR _
        %ES_AUTOHSCROLL, %WS_EX_CLIENTEDGE OR %WS_EX_LEFT OR _
        %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR

    CONTROL ADD LABEL,   hDlg, %IDC_LABEL2, "Confirm :", 8, 83, 60, 16
    CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX3, "", 72, 81, 160, 20, %WS_CHILD _
        OR %WS_VISIBLE OR %WS_TABSTOP OR %ES_LEFT OR %ES_PASSWORD OR _
        %ES_AUTOHSCROLL, %WS_EX_CLIENTEDGE OR %WS_EX_LEFT OR _
        %WS_EX_LTRREADING OR %WS_EX_RIGHTSCROLLBAR

    CONTROL ADD BUTTON,  hDlg, %IDOK, "OK", 8, 105, 168, 20
    CONTROL ADD BUTTON,  hDlg, %IDCANCEL, "Cancel", 182, 105, 50, 20

    DIALOG SET ICON      hDlg, "#101"
    DIALOG SHOW MODAL    hDlg, CALL ProcKSAliasPW TO lRslt
    FUNCTION = lRslt

    FONT END hFont
END FUNCTION
'------------------------------------------------------------------------------

'