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
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
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:
Thanks you for your help.Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.
Thanks for your atention
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
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:
Thanks you for your help.Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.
Thanks for your atention
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
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 fewThank you, but it doesn't work well.
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:
Thanks you for your help.Does anyone know any library or sample to work with certificates? For example: extract signature, date of expiration and provide.
Thanks for your atention
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
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?
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 60:32:13 |
Calls: | 6,654 |
Calls today: | 6 |
Files: | 12,200 |
Messages: | 5,331,394 |