• Work with certificate

    From fernando moreno@21:1/5 to All on Mon May 31 04:02:38 2021
    Good evening:

    Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.

    Thanks for your atention

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jamal@21:1/5 to fernando moreno on Thu Jun 3 13:53:12 2021
    Hello Fernando!

    Chilkatsoft has free (no licene required) ActiveX and .NET versions of
    their components: Cert, CertChain and CertStore which have methods and properties to handle certificates.

    https://www.chilkatsoft.com/downloads.asp

    Jamal


    Check the docs at:
    On 5/31/2021 7:02 AM, fernando moreno wrote:
    Good evening:

    Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.

    Thanks for your atention


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From fernando moreno@21:1/5 to All on Wed Jun 9 04:24:36 2021
    El jueves, 3 de junio de 2021 a las 19:53:16 UTC+2, Jamal escribió:
    Hello Fernando!

    Chilkatsoft has free (no licene required) ActiveX and .NET versions of
    their components: Cert, CertChain and CertStore which have methods and properties to handle certificates.

    https://www.chilkatsoft.com/downloads.asp

    Jamal


    Check the docs at:
    On 5/31/2021 7:02 AM, fernando moreno wrote:
    Good evening:

    Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.

    Thanks for your atention

    Thanks you for your help.

    Have you worked with these classes?

    I have problems with the Init.

    METHOD bGenerar2( ) CLASS Certificados
    local cTexto as string
    local nElemento :=1 as int
    local numCerts :=0 as int
    local cert :='' as string
    local osCert as Chilkat_9_5_0_CertStore_1
    local lReadOnly :=true as logic
    local success :=true as logic

    oscert:=Chilkat_9_5_0_CertStore_1{}
    success := oscert:OpenCurrentUserStore(lReadOnly)
    If !success
    AVISOS(self,"error",oscert:LastErrorText,true)
    return
    EndIf
    cTexto:=''
    numCerts:= oscert:NumCertificates_
    for nElemento:=i to numCerts
    cert := oscert:GetCertificate(i)
    cTexto :=oscert:subjetDN+" - "+oscert:SubjectE+crlf
    next

    self:oDCmCert:Value :=cTexto
    return true

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jamal@21:1/5 to fernando moreno on Thu Jun 10 04:04:36 2021
    I did not work with them (until just now), but you have quite a few
    errors that you must clear in your declarations and loop. I suggest your
    read the ActiveX documentation carefully.

    For example:
    1. OpenCurrentUserStore() returns a long not a logic.
    2. The the loop must start at 0 to numCerts - 1.
    3. GetCertificate() returns a ChilkatCert not a string!

    I created automation server classes for: IChilkatCertStore and IChilkatCert

    Here is a working sample in VO 2.8 - 2838:

    METHOD GetCertificates( ) CLASS TestDlg

    local cTexto := "" as string
    local i as int
    local numCerts := 0 as int

    local lReadOnly := true as logic
    local ok as long

    local oCertStore as IChilkatCertStore
    local oChilkatCert as IChilkatCert

    oChilkatCert := IChilkatCert{}

    oCertStore := IChilkatCertStore{}

    ok := oCertStore:OpenCurrentUserStore(lReadOnly)

    If ok == 0 // error
    InfoBox{self,"error", oCertStore:LastErrorText}:show()
    oCertStore := null_object
    return self
    else

    numCerts := oCertStore:NumCertificates

    for i := 0 to numCerts - 1

    oChilkatCert := oCertStore:GetCertificate(i)

    if oChilkatCert != null_object

    cTexto += AsString(oChilkatCert:SubjectDN) +" - "+
    AsString(oChilkatCert:SubjectE) + crlf
    else
    ? "oChilkatCert Error: " + oChilkatCert:LastErrorText
    endif
    next

    self:oDCmCert:Value :=cTexto



    endif

    oChilkatCert := null_object
    oCertStore := null_object


    RETURN self

    Note: if you get a class mismatch on oCertStore:GetCertificate(i),
    either make sure you uncheck Class Checking option in Compiler options
    or change the GetCertificate() method to return IChilkatCert class object:

    METHOD GetCertificate(;
    index; // AS LONG
    ) CLASS IChilkatCertStore

    LOCAL oMethod AS cOleMethod
    LOCAL uRetValue AS USUAL

    oMethod := cOleMethod{}
    oMethod:symName := String2Symbol("GetCertificate")
    oMethod:iMemberid := 116
    oMethod:wInvokeKind := INVOKE_METHOD
    oMethod:nParams := 1
    oMethod:lNamedArgs := TRUE
    oMethod:cParamTypes := VTS_I4
    oMethod:bRetType := VT_DISPATCH

    uRetValue := SELF:__Invoke(oMethod, DWORD(_BP+16),PCount())
    // To use a pre-defined class here,
    // change OLEAutoObject to desired class name
    uRetValue := iif( uRetValue:pInterface != null_ptr , IChilkatCert{uRetValue}, null_object)


    RETURN (uRetValue)





    Jamal

    On 6/9/2021 7:24 AM, fernando moreno wrote:
    El jueves, 3 de junio de 2021 a las 19:53:16 UTC+2, Jamal escribió:
    Hello Fernando!

    Chilkatsoft has free (no licene required) ActiveX and .NET versions of
    their components: Cert, CertChain and CertStore which have methods and
    properties to handle certificates.

    https://www.chilkatsoft.com/downloads.asp

    Jamal


    Check the docs at:
    On 5/31/2021 7:02 AM, fernando moreno wrote:
    Good evening:



    Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.

    Thanks for your atention

    Thanks you for your help.

    Have you worked with these classes?

    I have problems with the Init.

    METHOD bGenerar2( ) CLASS Certificados
    local cTexto as string
    local nElemento :=1 as int
    local numCerts :=0 as int
    local cert :='' as string
    local osCert as Chilkat_9_5_0_CertStore_1
    local lReadOnly :=true as logic
    local success :=true as logic

    oscert:=Chilkat_9_5_0_CertStore_1{}
    success := oscert:OpenCurrentUserStore(lReadOnly)
    If !success
    AVISOS(self,"error",oscert:LastErrorText,true)
    return
    EndIf
    cTexto:=''
    numCerts:= oscert:NumCertificates_
    for nElemento:=i to numCerts
    cert := oscert:GetCertificate(i)
    cTexto :=oscert:subjetDN+" - "+oscert:SubjectE+crlf
    next

    self:oDCmCert:Value :=cTexto
    return true


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From fernando moreno@21:1/5 to All on Thu Jun 17 04:04:11 2021
    El jueves, 10 de junio de 2021 a las 10:04:38 UTC+2, Jamal escribió:
    I did not work with them (until just now), but you have quite a few
    errors that you must clear in your declarations and loop. I suggest your read the ActiveX documentation carefully.

    For example:
    1. OpenCurrentUserStore() returns a long not a logic.
    2. The the loop must start at 0 to numCerts - 1.
    3. GetCertificate() returns a ChilkatCert not a string!

    I created automation server classes for: IChilkatCertStore and IChilkatCert

    Here is a working sample in VO 2.8 - 2838:

    METHOD GetCertificates( ) CLASS TestDlg

    local cTexto := "" as string
    local i as int
    local numCerts := 0 as int

    local lReadOnly := true as logic
    local ok as long

    local oCertStore as IChilkatCertStore
    local oChilkatCert as IChilkatCert

    oChilkatCert := IChilkatCert{}

    oCertStore := IChilkatCertStore{}

    ok := oCertStore:OpenCurrentUserStore(lReadOnly)

    If ok == 0 // error
    InfoBox{self,"error", oCertStore:LastErrorText}:show()
    oCertStore := null_object
    return self
    else

    numCerts := oCertStore:NumCertificates

    for i := 0 to numCerts - 1

    oChilkatCert := oCertStore:GetCertificate(i)

    if oChilkatCert != null_object

    cTexto += AsString(oChilkatCert:SubjectDN) +" - "+ AsString(oChilkatCert:SubjectE) + crlf
    else
    ? "oChilkatCert Error: " + oChilkatCert:LastErrorText
    endif
    next

    self:oDCmCert:Value :=cTexto
    endif

    oChilkatCert := null_object
    oCertStore := null_object


    RETURN self

    Note: if you get a class mismatch on oCertStore:GetCertificate(i),
    either make sure you uncheck Class Checking option in Compiler options
    or change the GetCertificate() method to return IChilkatCert class object:

    METHOD GetCertificate(;
    index; // AS LONG
    ) CLASS IChilkatCertStore

    LOCAL oMethod AS cOleMethod
    LOCAL uRetValue AS USUAL

    oMethod := cOleMethod{}
    oMethod:symName := String2Symbol("GetCertificate")
    oMethod:iMemberid := 116
    oMethod:wInvokeKind := INVOKE_METHOD
    oMethod:nParams := 1
    oMethod:lNamedArgs := TRUE
    oMethod:cParamTypes := VTS_I4
    oMethod:bRetType := VT_DISPATCH

    uRetValue := SELF:__Invoke(oMethod, DWORD(_BP+16),PCount())
    // To use a pre-defined class here,
    // change OLEAutoObject to desired class name
    uRetValue := iif( uRetValue:pInterface != null_ptr , IChilkatCert{uRetValue}, null_object)


    RETURN (uRetValue)





    Jamal
    On 6/9/2021 7:24 AM, fernando moreno wrote:
    El jueves, 3 de junio de 2021 a las 19:53:16 UTC+2, Jamal escribió:
    Hello Fernando!

    Chilkatsoft has free (no licene required) ActiveX and .NET versions of
    their components: Cert, CertChain and CertStore which have methods and
    properties to handle certificates.

    https://www.chilkatsoft.com/downloads.asp

    Jamal


    Check the docs at:
    On 5/31/2021 7:02 AM, fernando moreno wrote:
    Good evening:



    Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.

    Thanks for your atention

    Thanks you for your help.

    Have you worked with these classes?

    I have problems with the Init.

    METHOD bGenerar2( ) CLASS Certificados
    local cTexto as string
    local nElemento :=1 as int
    local numCerts :=0 as int
    local cert :='' as string
    local osCert as Chilkat_9_5_0_CertStore_1
    local lReadOnly :=true as logic
    local success :=true as logic

    oscert:=Chilkat_9_5_0_CertStore_1{}
    success := oscert:OpenCurrentUserStore(lReadOnly)
    If !success
    AVISOS(self,"error",oscert:LastErrorText,true)
    return
    EndIf
    cTexto:=''
    numCerts:= oscert:NumCertificates_
    for nElemento:=i to numCerts
    cert := oscert:GetCertificate(i)
    cTexto :=oscert:subjetDN+" - "+oscert:SubjectE+crlf
    next

    self:oDCmCert:Value :=cTexto
    return true

    Thank you, but it doesn't work well.

    It shows an error in the init:

    ***********************ERROR********************************
    Visual Objects (Version 2.8. Build 0.2816), Version 2.8
    07/08/2020 19:30:09
    Application: C:\QR\Application.DBG

    Error message:
    --------------
    Error Code: Invalid argument type.
    Subsystem: GUI Classes
    Function: CONTROL:INIT
    Argument: NIL
    Argument Number: 1
    Description: Invalid argument type.
    CallStack:
    APP:START (Line:6)
    START (Line:6)

    Error Object created:
    --------------------
    SubSystem :GUI Classes
    SubCode :0
    GenCode :Waiting...
    OsCode :0
    ArgType :NIL
    FuncPtr :0x00000000
    ArgNum :1
    FuncSym :CONTROL:INIT
    Severity :0
    CanDefault :.T.
    CanRetry :.F.
    CanSubstitute :.F.
    Operation :
    Description :Invalid argument type.
    FileName :
    Tries :1
    FileHandle :0
    SubCodeText :
    Arg :NIL
    ArgTypeReq :NIL
    MaxSize :0
    SubstituteType :NIL
    CallFuncSym :
    --------------------

    Could we please talk in private?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jamal@21:1/5 to fernando moreno on Thu Jun 17 11:42:12 2021
    Privately?

    I offer VO consulting services if you are interested. You may contact me
    at vodotnet AT gmail.com for details.

    Jamal

    On 6/17/2021 7:04 AM, fernando moreno wrote:
    El jueves, 10 de junio de 2021 a las 10:04:38 UTC+2, Jamal escribió:
    I did not work with them (until just now), but you have quite a few
    errors that you must clear in your declarations and loop. I suggest your
    read the ActiveX documentation carefully.

    For example:
    1. OpenCurrentUserStore() returns a long not a logic.
    2. The the loop must start at 0 to numCerts - 1.
    3. GetCertificate() returns a ChilkatCert not a string!

    I created automation server classes for: IChilkatCertStore and IChilkatCert >>
    Here is a working sample in VO 2.8 - 2838:

    METHOD GetCertificates( ) CLASS TestDlg

    local cTexto := "" as string
    local i as int
    local numCerts := 0 as int

    local lReadOnly := true as logic
    local ok as long

    local oCertStore as IChilkatCertStore
    local oChilkatCert as IChilkatCert

    oChilkatCert := IChilkatCert{}

    oCertStore := IChilkatCertStore{}

    ok := oCertStore:OpenCurrentUserStore(lReadOnly)

    If ok == 0 // error
    InfoBox{self,"error", oCertStore:LastErrorText}:show()
    oCertStore := null_object
    return self
    else

    numCerts := oCertStore:NumCertificates

    for i := 0 to numCerts - 1

    oChilkatCert := oCertStore:GetCertificate(i)

    if oChilkatCert != null_object

    cTexto += AsString(oChilkatCert:SubjectDN) +" - "+
    AsString(oChilkatCert:SubjectE) + crlf
    else
    ? "oChilkatCert Error: " + oChilkatCert:LastErrorText
    endif
    next

    self:oDCmCert:Value :=cTexto
    endif

    oChilkatCert := null_object
    oCertStore := null_object


    RETURN self

    Note: if you get a class mismatch on oCertStore:GetCertificate(i),
    either make sure you uncheck Class Checking option in Compiler options
    or change the GetCertificate() method to return IChilkatCert class object: >>
    METHOD GetCertificate(;
    index; // AS LONG
    ) CLASS IChilkatCertStore

    LOCAL oMethod AS cOleMethod
    LOCAL uRetValue AS USUAL

    oMethod := cOleMethod{}
    oMethod:symName := String2Symbol("GetCertificate")
    oMethod:iMemberid := 116
    oMethod:wInvokeKind := INVOKE_METHOD
    oMethod:nParams := 1
    oMethod:lNamedArgs := TRUE
    oMethod:cParamTypes := VTS_I4
    oMethod:bRetType := VT_DISPATCH

    uRetValue := SELF:__Invoke(oMethod, DWORD(_BP+16),PCount())
    // To use a pre-defined class here,
    // change OLEAutoObject to desired class name
    uRetValue := iif( uRetValue:pInterface != null_ptr ,
    IChilkatCert{uRetValue}, null_object)


    RETURN (uRetValue)





    Jamal
    On 6/9/2021 7:24 AM, fernando moreno wrote:
    El jueves, 3 de junio de 2021 a las 19:53:16 UTC+2, Jamal escribió:
    Hello Fernando!

    Chilkatsoft has free (no licene required) ActiveX and .NET versions of >>>> their components: Cert, CertChain and CertStore which have methods and >>>> properties to handle certificates.

    https://www.chilkatsoft.com/downloads.asp

    Jamal


    Check the docs at:
    On 5/31/2021 7:02 AM, fernando moreno wrote:
    Good evening:



    Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.

    Thanks for your atention

    Thanks you for your help.

    Have you worked with these classes?

    I have problems with the Init.

    METHOD bGenerar2( ) CLASS Certificados
    local cTexto as string
    local nElemento :=1 as int
    local numCerts :=0 as int
    local cert :='' as string
    local osCert as Chilkat_9_5_0_CertStore_1
    local lReadOnly :=true as logic
    local success :=true as logic

    oscert:=Chilkat_9_5_0_CertStore_1{}
    success := oscert:OpenCurrentUserStore(lReadOnly)
    If !success
    AVISOS(self,"error",oscert:LastErrorText,true)
    return
    EndIf
    cTexto:=''
    numCerts:= oscert:NumCertificates_
    for nElemento:=i to numCerts
    cert := oscert:GetCertificate(i)
    cTexto :=oscert:subjetDN+" - "+oscert:SubjectE+crlf
    next

    self:oDCmCert:Value :=cTexto
    return true

    Thank you, but it doesn't work well.

    It shows an error in the init:

    ***********************ERROR********************************
    Visual Objects (Version 2.8. Build 0.2816), Version 2.8
    07/08/2020 19:30:09
    Application: C:\QR\Application.DBG

    Error message:
    --------------
    Error Code: Invalid argument type.
    Subsystem: GUI Classes
    Function: CONTROL:INIT
    Argument: NIL
    Argument Number: 1
    Description: Invalid argument type.
    CallStack:
    APP:START (Line:6)
    START (Line:6)

    Error Object created:
    --------------------
    SubSystem :GUI Classes
    SubCode :0
    GenCode :Waiting...
    OsCode :0
    ArgType :NIL
    FuncPtr :0x00000000
    ArgNum :1
    FuncSym :CONTROL:INIT
    Severity :0
    CanDefault :.T.
    CanRetry :.F.
    CanSubstitute :.F.
    Operation :
    Description :Invalid argument type.
    FileName :
    Tries :1
    FileHandle :0
    SubCodeText :
    Arg :NIL
    ArgTypeReq :NIL
    MaxSize :0
    SubstituteType :NIL
    CallFuncSym :
    --------------------

    Could we please talk in private?


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)