:Start of postmsg
![]() | ![]() |
|---|
If you are viewing this script in your browser you can save it as a VDS 5.x source file (*.dsc) to run it.
#
# DragonSphere Software's Home Page
#
# All Source Files for this demo including postmsg.zip
#
# This demo shows the use of the CAPICOM ActiveX control and WinHTTPRequest ActiveX control from Microsoft
# This demo also shows how to post SOAP requests to Google's Search engine.
# Google SOAP Search API
#
Option Language,$09
Title Post Message
# Place these resources in your resource directory
#RESOURCE ADD,TEXT,demo.txt,XMLDEMO
#RESOURCE ADD,TEXT,Header.txt,XMLHEAD
#External vdsbrw50.dll
# Register the CAPICOM.dll with the users system
# It is best to save this dll into the Windows System directory
run regsvr32.exe /s capicom.dll,WAIT
If @Greater(@Name(@SYSINFO(DSVER)),4)
External GadgetX.dll,5.0
# GadgetX Commands/Functions
#DEFINE COMMAND,GADGETX,OLE,SET,CALL,DEFINE
#DEFINE FUNCTION,GADGETX,OLE,GET,CALL,GETLASTERROR,OR,ADDROF
# Browser Command/Function
# #DEFINE COMMAND,BROWSER
# #DEFINE FUNCTION,BROWSER
# Script Commands/Functions
#DEFINE FUNCTION,CertList
#DEFINE COMMAND,DisplayCert,ReadCertStore
# Table Commands/Functions
#INCLUDE utils.dsc
Else
Warn This example is designed for VDS 5+
Goto CLOSE
End
Define Variable,Object,http
Define Variable,Object,res
Define Variable,Object,userstore
Define Variable,Object,certs
Define Variable,Object,cert
Define Variable,Collection,colcerts
Define Constant,OLE_TRUE,-1
Define Constant,OLE_FALSE,0
# CAPICOM_ERROR_CODE
Define Constant,CAPICOM_E_ENCODE_INVALID_TYPE,-2138570496
Define Constant,CAPICOM_E_EKU_INVALID_OID,-2138570240
Define Constant,CAPICOM_E_EKU_OID_NOT_INITIALIZED,-2138570239
Define Constant,CAPICOM_E_CERTIFICATE_NOT_INITIALIZED,-2138570224
Define Constant,CAPICOM_E_CERTIFICATE_NO_PRIVATE_KEY,-2138570223
Define Constant,CAPICOM_E_CHAIN_NOT_BUILT,-2138570208
Define Constant,CAPICOM_E_STORE_NOT_OPENED,-2138570192
Define Constant,CAPICOM_E_STORE_EMPTY,-2138570191
Define Constant,CAPICOM_E_STORE_INVALID_OPEN_MODE,-2138570190
Define Constant,CAPICOM_E_STORE_INVALID_SAVE_AS_TYPE,-2138570189
Define Constant,CAPICOM_E_ATTRIBUTE_NAME_NOT_INITIALIZED,-2138570176
Define Constant,CAPICOM_E_ATTRIBUTE_VALUE_NOT_INITIALIZED,-2138570175
Define Constant,CAPICOM_E_ATTRIBUTE_INVALID_NAME,-2138570174
Define Constant,CAPICOM_E_ATTRIBUTE_INVALID_VALUE,-2138570173
Define Constant,CAPICOM_E_SIGNER_NOT_INITIALIZED,-2138570160
Define Constant,CAPICOM_E_SIGNER_NOT_FOUND,-2138570159
Define Constant,CAPICOM_E_SIGNER_NO_CHAIN,-2138570158
Define Constant,CAPICOM_E_SIGNER_INVALID_USAGE,-2138570157
Define Constant,CAPICOM_E_SIGN_NOT_INITIALIZED,-2138570144
Define Constant,CAPICOM_E_SIGN_INVALID_TYPE,-2138570143
Define Constant,CAPICOM_E_SIGN_NOT_SIGNED,-2138570142
Define Constant,CAPICOM_E_INVALID_ALGORITHM,-2138570128
Define Constant,CAPICOM_E_INVALID_KEY_LENGTH,-2138570127
Define Constant,CAPICOM_E_ENVELOP_NOT_INITIALIZED,-2138570112
Define Constant,CAPICOM_E_ENVELOP_INVALID_TYPE,-2138570111
Define Constant,CAPICOM_E_ENVELOP_NO_RECIPIENT,-2138570110
Define Constant,CAPICOM_E_ENVELOP_RECIPIENT_NOT_FOUND,-2138570109
Define Constant,CAPICOM_E_ENCRYPT_NOT_INITIALIZED,-2138570096
Define Constant,CAPICOM_E_ENCRYPT_INVALID_TYPE,-2138570095
Define Constant,CAPICOM_E_ENCRYPT_NO_SECRET,-2138570094
Define Constant,CAPICOM_E_NOT_SUPPORTED,-2138568448
Define Constant,CAPICOM_E_UI_DISABLED,-2138568447
Define Constant,CAPICOM_E_CANCELLED,-2138568446
Define Constant,CAPICOM_E_NOT_ALLOWED,-2138568445
Define Constant,CAPICOM_E_OUT_OF_RESOURCE,-2138568444
Define Constant,CAPICOM_E_INTERNAL,-2138568431
Define Constant,CAPICOM_E_UNKNOWN,-2138568295
Define Constant,CAPICOM_E_PRIVATE_KEY_NOT_INITIALIZED,-2138569984
Define Constant,CAPICOM_E_PRIVATE_KEY_NOT_EXPORTABLE,-2138569983
Define Constant,CAPICOM_E_ENCODE_NOT_INITIALIZED,-2138569952
Define Constant,CAPICOM_E_EXTENSION_NOT_INITIALIZED,-2138569936
Define Constant,CAPICOM_E_PROPERTY_NOT_INITIALIZED,-2138569920
Define Constant,CAPICOM_E_FIND_INVALID_TYPE,-2138569904
Define Constant,CAPICOM_E_FIND_INVALID_PREDEFINED_POLICY,-2138569903
Define Constant,CAPICOM_E_CODE_NOT_INITIALIZED,-2138569888
Define Constant,CAPICOM_E_CODE_NOT_SIGNED,-2138569887
Define Constant,CAPICOM_E_CODE_DESCRIPTION_NOT_INITIALIZED,-2138569886
Define Constant,CAPICOM_E_CODE_DESCRIPTION_URL_NOT_INITIALIZED,-2138569885
Define Constant,CAPICOM_E_CODE_INVALID_TIMESTAMP_URL,-2138569884
Define Constant,CAPICOM_E_HASH_NO_DATA,-2138569872
Define Constant,CAPICOM_E_INVALID_CONVERT_TYPE,-2138569856
# CAPICOM_ENCODING_TYPE
Define Constant,CAPICOM_ENCODE_BASE64,0
Define Constant,CAPICOM_ENCODE_BINARY,1
Define Constant,CAPICOM_ENCODE_ANY,-1
# CAPICOM_EKU
Define Constant,CAPICOM_EKU_OTHER,0
Define Constant,CAPICOM_EKU_SERVER_AUTH,1
Define Constant,CAPICOM_EKU_CLIENT_AUTH,2
Define Constant,CAPICOM_EKU_CODE_SIGNING,3
Define Constant,CAPICOM_EKU_EMAIL_PROTECTION,4
Define Constant,CAPICOM_EKU_SMARTCARD_LOGON,5
Define Constant,CAPICOM_EKU_ENCRYPTING_FILE_SYSTEM,6
# CAPICOM_CHECK_FLAG
Define Constant,CAPICOM_CHECK_NONE,0
Define Constant,CAPICOM_CHECK_TRUSTED_ROOT,1
Define Constant,CAPICOM_CHECK_TIME_VALIDITY,2
Define Constant,CAPICOM_CHECK_SIGNATURE_VALIDITY,4
Define Constant,CAPICOM_CHECK_ONLINE_REVOCATION_STATUS,8
Define Constant,CAPICOM_CHECK_OFFLINE_REVOCATION_STATUS,16
Define Constant,CAPICOM_CHECK_COMPLETE_CHAIN,32
Define Constant,CAPICOM_CHECK_NAME_CONSTRAINTS,64
Define Constant,CAPICOM_CHECK_BASIC_CONSTRAINTS,128
Define Constant,CAPICOM_CHECK_NESTED_VALIDITY_PERIOD,256
Define Constant,CAPICOM_CHECK_ONLINE_ALL,495
Define Constant,CAPICOM_CHECK_OFFLINE_ALL,503
# CAPICOM_CERT_INFO_TYPE
Define Constant,CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME,0
Define Constant,CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME,1
Define Constant,CAPICOM_CERT_INFO_SUBJECT_EMAIL_NAME,2
Define Constant,CAPICOM_CERT_INFO_ISSUER_EMAIL_NAME,3
Define Constant,CAPICOM_CERT_INFO_SUBJECT_UPN,4
Define Constant,CAPICOM_CERT_INFO_ISSUER_UPN,5
Define Constant,CAPICOM_CERT_INFO_SUBJECT_DNS_NAME,6
Define Constant,CAPICOM_CERT_INFO_ISSUER_DNS_NAME,7
# CAPICOM_STORE_LOCATION
Define Constant,CAPICOM_MEMORY_STORE,0
Define Constant,CAPICOM_LOCAL_MACHINE_STORE,1
Define Constant,CAPICOM_CURRENT_USER_STORE,2
Define Constant,CAPICOM_ACTIVE_DIRECTORY_USER_STORE,3
Define Constant,CAPICOM_SMART_CARD_USER_STORE,4
# CAPICOM_STORE_OPEN_MODE
Define Constant,CAPICOM_STORE_OPEN_READ_ONLY,0
Define Constant,CAPICOM_STORE_OPEN_READ_WRITE,1
Define Constant,CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,2
Define Constant,CAPICOM_STORE_OPEN_EXISTING_ONLY,128
Define Constant,CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED,256
# CAPICOM_ACTIVE_DIRECTORY_SEARCH_LOCATION
Define Constant,CAPICOM_SEARCH_ANY,0
Define Constant,CAPICOM_SEARCH_GLOBAL_CATALOG,1
Define Constant,CAPICOM_SEARCH_DEFAULT_DOMAIN,2
# CAPICOM_STORE_SAVE_AS_TYPE
Define Constant,CAPICOM_STORE_SAVE_AS_SERIALIZED,0
Define Constant,CAPICOM_STORE_SAVE_AS_PKCS7,1
# CAPICOM_ATTRIBUTE
Define Constant,CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME,0
Define Constant,CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME,1
Define Constant,CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION,2
# CAPICOM_SIGNED_DATA_VERIFY_FLAG
Define Constant,CAPICOM_VERIFY_SIGNATURE_ONLY,0
Define Constant,CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE,1
# CAPICOM_ENCRYPTION_ALGORITHM
Define Constant,CAPICOM_ENCRYPTION_ALGORITHM_RC2,0
Define Constant,CAPICOM_ENCRYPTION_ALGORITHM_RC4,1
Define Constant,CAPICOM_ENCRYPTION_ALGORITHM_DES,2
Define Constant,CAPICOM_ENCRYPTION_ALGORITHM_3DES,3
Define Constant,CAPICOM_ENCRYPTION_ALGORITHM_AES,4
# CAPICOM_ENCRYPTION_KEY_LENGTH
Define Constant,CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM,0
Define Constant,CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS,1
Define Constant,CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS,2
Define Constant,CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS,3
Define Constant,CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS,4
Define Constant,CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS,5
# CAPICOM_SECRET_TYPE
Define Constant,CAPICOM_SECRET_PASSWORD,0
# CAPICOM_KEY_ALGORITHM
Define Constant,CAPICOM_KEY_ALGORITHM_OTHER,0
Define Constant,CAPICOM_KEY_ALGORITHM_RSA,1
Define Constant,CAPICOM_KEY_ALGORITHM_DSS,2
# CAPICOM_OID
Define Constant,CAPICOM_OID_OTHER,0
Define Constant,CAPICOM_OID_AUTHORITY_KEY_IDENTIFIER_EXTENSION,1
Define Constant,CAPICOM_OID_KEY_ATTRIBUTES_EXTENSION,2
Define Constant,CAPICOM_OID_CERT_POLICIES_95_EXTENSION,3
Define Constant,CAPICOM_OID_KEY_USAGE_RESTRICTION_EXTENSION,4
Define Constant,CAPICOM_OID_LEGACY_POLICY_MAPPINGS_EXTENSION,5
Define Constant,CAPICOM_OID_SUBJECT_ALT_NAME_EXTENSION,6
Define Constant,CAPICOM_OID_ISSUER_ALT_NAME_EXTENSION,7
Define Constant,CAPICOM_OID_BASIC_CONSTRAINTS_EXTENSION,8
Define Constant,CAPICOM_OID_SUBJECT_KEY_IDENTIFIER_EXTENSION,9
Define Constant,CAPICOM_OID_KEY_USAGE_EXTENSION,10
Define Constant,CAPICOM_OID_PRIVATEKEY_USAGE_PERIOD_EXTENSION,11
Define Constant,CAPICOM_OID_SUBJECT_ALT_NAME2_EXTENSION,12
Define Constant,CAPICOM_OID_ISSUER_ALT_NAME2_EXTENSION,13
Define Constant,CAPICOM_OID_BASIC_CONSTRAINTS2_EXTENSION,14
Define Constant,CAPICOM_OID_NAME_CONSTRAINTS_EXTENSION,15
Define Constant,CAPICOM_OID_CRL_DIST_POINTS_EXTENSION,16
Define Constant,CAPICOM_OID_CERT_POLICIES_EXTENSION,17
Define Constant,CAPICOM_OID_POLICY_MAPPINGS_EXTENSION,18
Define Constant,CAPICOM_OID_AUTHORITY_KEY_IDENTIFIER2_EXTENSION,19
Define Constant,CAPICOM_OID_POLICY_CONSTRAINTS_EXTENSION,20
Define Constant,CAPICOM_OID_ENHANCED_KEY_USAGE_EXTENSION,21
Define Constant,CAPICOM_OID_CERTIFICATE_TEMPLATE_EXTENSION,22
Define Constant,CAPICOM_OID_APPLICATION_CERT_POLICIES_EXTENSION,23
Define Constant,CAPICOM_OID_APPLICATION_POLICY_MAPPINGS_EXTENSION,24
Define Constant,CAPICOM_OID_APPLICATION_POLICY_CONSTRAINTS_EXTENSION,25
Define Constant,CAPICOM_OID_AUTHORITY_INFO_ACCESS_EXTENSION,26
Define Constant,CAPICOM_OID_SERVER_AUTH_EKU,100
Define Constant,CAPICOM_OID_CLIENT_AUTH_EKU,101
Define Constant,CAPICOM_OID_CODE_SIGNING_EKU,102
Define Constant,CAPICOM_OID_EMAIL_PROTECTION_EKU,103
Define Constant,CAPICOM_OID_IPSEC_END_SYSTEM_EKU,104
Define Constant,CAPICOM_OID_IPSEC_TUNNEL_EKU,105
Define Constant,CAPICOM_OID_IPSEC_USER_EKU,106
Define Constant,CAPICOM_OID_TIME_STAMPING_EKU,107
Define Constant,CAPICOM_OID_CTL_USAGE_SIGNING_EKU,108
Define Constant,CAPICOM_OID_TIME_STAMP_SIGNING_EKU,109
Define Constant,CAPICOM_OID_SERVER_GATED_CRYPTO_EKU,110
Define Constant,CAPICOM_OID_ENCRYPTING_FILE_SYSTEM_EKU,111
Define Constant,CAPICOM_OID_EFS_RECOVERY_EKU,112
Define Constant,CAPICOM_OID_WHQL_CRYPTO_EKU,113
Define Constant,CAPICOM_OID_NT5_CRYPTO_EKU,114
Define Constant,CAPICOM_OID_OEM_WHQL_CRYPTO_EKU,115
Define Constant,CAPICOM_OID_EMBEDED_NT_CRYPTO_EKU,116
Define Constant,CAPICOM_OID_ROOT_LIST_SIGNER_EKU,117
Define Constant,CAPICOM_OID_QUALIFIED_SUBORDINATION_EKU,118
Define Constant,CAPICOM_OID_KEY_RECOVERY_EKU,119
Define Constant,CAPICOM_OID_DIGITAL_RIGHTS_EKU,120
Define Constant,CAPICOM_OID_LICENSES_EKU,121
Define Constant,CAPICOM_OID_LICENSE_SERVER_EKU,122
Define Constant,CAPICOM_OID_SMART_CARD_LOGON_EKU,123
Define Constant,CAPICOM_OID_PKIX_POLICY_QUALIFIER_CPS,124
Define Constant,CAPICOM_OID_PKIX_POLICY_QUALIFIER_USERNOTICE,125
# CAPICOM_PROPID
Define Constant,CAPICOM_PROPID_UNKNOWN,0
Define Constant,CAPICOM_PROPID_KEY_PROV_HANDLE,1
Define Constant,CAPICOM_PROPID_KEY_PROV_INFO,2
Define Constant,CAPICOM_PROPID_SHA1_HASH,3
Define Constant,CAPICOM_PROPID_HASH_PROP,3
Define Constant,CAPICOM_PROPID_MD5_HASH,4
Define Constant,CAPICOM_PROPID_KEY_CONTEXT,5
Define Constant,CAPICOM_PROPID_KEY_SPEC,6
Define Constant,CAPICOM_PROPID_IE30_RESERVED,7
Define Constant,CAPICOM_PROPID_PUBKEY_HASH_RESERVED,8
Define Constant,CAPICOM_PROPID_ENHKEY_USAGE,9
Define Constant,CAPICOM_PROPID_CTL_USAGE,9
Define Constant,CAPICOM_PROPID_NEXT_UPDATE_LOCATION,10
Define Constant,CAPICOM_PROPID_FRIENDLY_NAME,11
Define Constant,CAPICOM_PROPID_PVK_FILE,12
Define Constant,CAPICOM_PROPID_DESCRIPTION,13
Define Constant,CAPICOM_PROPID_ACCESS_STATE,14
Define Constant,CAPICOM_PROPID_SIGNATURE_HASH,15
Define Constant,CAPICOM_PROPID_SMART_CARD_DATA,16
Define Constant,CAPICOM_PROPID_EFS,17
Define Constant,CAPICOM_PROPID_FORTEZZA_DATA,18
Define Constant,CAPICOM_PROPID_ARCHIVED,19
Define Constant,CAPICOM_PROPID_KEY_IDENTIFIER,20
Define Constant,CAPICOM_PROPID_AUTO_ENROLL,21
Define Constant,CAPICOM_PROPID_PUBKEY_ALG_PARA,22
Define Constant,CAPICOM_PROPID_CROSS_CERT_DIST_POINTS,23
Define Constant,CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH,24
Define Constant,CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH,25
Define Constant,CAPICOM_PROPID_ENROLLMENT,26
Define Constant,CAPICOM_PROPID_DATE_STAMP,27
Define Constant,CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH,28
Define Constant,CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH,29
Define Constant,CAPICOM_PROPID_EXTENDED_ERROR_INFO,30
Define Constant,CAPICOM_PROPID_RENEWAL,64
Define Constant,CAPICOM_PROPID_ARCHIVED_KEY_HASH,65
Define Constant,CAPICOM_PROPID_FIRST_RESERVED,66
Define Constant,CAPICOM_PROPID_LAST_RESERVED,32767
Define Constant,CAPICOM_PROPID_FIRST_USER,32768
Define Constant,CAPICOM_PROPID_LAST_USER,65535
# CAPICOM_PROV_TYPE
Define Constant,CAPICOM_PROV_RSA_FULL,1
Define Constant,CAPICOM_PROV_RSA_SIG,2
Define Constant,CAPICOM_PROV_DSS,3
Define Constant,CAPICOM_PROV_FORTEZZA,4
Define Constant,CAPICOM_PROV_MS_EXCHANGE,5
Define Constant,CAPICOM_PROV_SSL,6
Define Constant,CAPICOM_PROV_RSA_SCHANNEL,12
Define Constant,CAPICOM_PROV_DSS_DH,13
Define Constant,CAPICOM_PROV_EC_ECDSA_SIG,14
Define Constant,CAPICOM_PROV_EC_ECNRA_SIG,15
Define Constant,CAPICOM_PROV_EC_ECDSA_FULL,16
Define Constant,CAPICOM_PROV_EC_ECNRA_FULL,17
Define Constant,CAPICOM_PROV_DH_SCHANNEL,18
Define Constant,CAPICOM_PROV_SPYRUS_LYNKS,20
Define Constant,CAPICOM_PROV_RNG,21
Define Constant,CAPICOM_PROV_INTEL_SEC,22
Define Constant,CAPICOM_PROV_REPLACE_OWF,23
Define Constant,CAPICOM_PROV_RSA_AES,24
# CAPICOM_CERTIFICATE_SAVE_AS_TYPE
Define Constant,CAPICOM_CERTIFICATE_SAVE_AS_PFX,0
Define Constant,CAPICOM_CERTIFICATE_SAVE_AS_CER,1
# CAPICOM_CERTIFICATES_SAVE_AS_TYPE
Define Constant,CAPICOM_CERTIFICATES_SAVE_AS_SERIALIZED,0
Define Constant,CAPICOM_CERTIFICATES_SAVE_AS_PKCS7,1
Define Constant,CAPICOM_CERTIFICATES_SAVE_AS_PFX,2
# CAPICOM_CERTIFICATE_INCLUDE_OPTION
Define Constant,CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT,0
Define Constant,CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN,1
Define Constant,CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY,2
# CAPICOM_KEY_SPEC
Define Constant,CAPICOM_KEY_SPEC_KEYEXCHANGE,1
Define Constant,CAPICOM_KEY_SPEC_SIGNATURE,2
# CAPICOM_KEY_LOCATION
Define Constant,CAPICOM_CURRENT_USER_KEY,0
Define Constant,CAPICOM_LOCAL_MACHINE_KEY,1
# CAPICOM_KEY_STORAGE_FLAG
Define Constant,CAPICOM_KEY_STORAGE_DEFAULT,0
Define Constant,CAPICOM_KEY_STORAGE_EXPORTABLE,1
Define Constant,CAPICOM_KEY_STORAGE_USER_PROTECTED,2
# CAPICOM_EXPORT_FLAG
Define Constant,CAPICOM_EXPORT_DEFAULT,0
Define Constant,CAPICOM_EXPORT_IGNORE_PRIVATE_KEY_NOT_EXPORTABLE_ERROR,1
# CAPICOM_KEY_USAGE
Define Constant,CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE,128
Define Constant,CAPICOM_NON_REPUDIATION_KEY_USAGE,64
Define Constant,CAPICOM_KEY_ENCIPHERMENT_KEY_USAGE,32
Define Constant,CAPICOM_DATA_ENCIPHERMENT_KEY_USAGE,16
Define Constant,CAPICOM_KEY_AGREEMENT_KEY_USAGE,8
Define Constant,CAPICOM_KEY_CERT_SIGN_KEY_USAGE,4
Define Constant,CAPICOM_OFFLINE_CRL_SIGN_KEY_USAGE,2
Define Constant,CAPICOM_CRL_SIGN_KEY_USAGE,2
Define Constant,CAPICOM_ENCIPHER_ONLY_KEY_USAGE,1
Define Constant,CAPICOM_DECIPHER_ONLY_KEY_USAGE,32768
# CAPICOM_CERTIFICATE_FIND_TYPE
Define Constant,CAPICOM_CERTIFICATE_FIND_SHA1_HASH,0
Define Constant,CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME,1
Define Constant,CAPICOM_CERTIFICATE_FIND_ISSUER_NAME,2
Define Constant,CAPICOM_CERTIFICATE_FIND_ROOT_NAME,3
Define Constant,CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME,4
Define Constant,CAPICOM_CERTIFICATE_FIND_EXTENSION,5
Define Constant,CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,6
Define Constant,CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY,7
Define Constant,CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY,8
Define Constant,CAPICOM_CERTIFICATE_FIND_TIME_VALID,9
Define Constant,CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID,10
Define Constant,CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED,11
Define Constant,CAPICOM_CERTIFICATE_FIND_KEY_USAGE,12
# CAPICOM_HASH_ALGORITHM
Define Constant,CAPICOM_HASH_ALGORITHM_SHA1,0
Define Constant,CAPICOM_HASH_ALGORITHM_MD2,1
Define Constant,CAPICOM_HASH_ALGORITHM_MD4,2
Define Constant,CAPICOM_HASH_ALGORITHM_MD5,3
# For information of where the users Certificates are stored goto the following URL
# System Store Locations
# For this example I am using the MY certificate store since this is the default
# where client side certificates are stored.
Define Constant,CAPICOM_MY_STORE,My
Define Constant,CAPICOM_CA_STORE,CA
Define Constant,CAPICOM_ROOT_STORE,Root
# WinHttpRequestOption
Define Constant,WinHttpRequestOption_UserAgentString,0
Define Constant,WinHttpRequestOption_URL,1
Define Constant,WinHttpRequestOption_URLCodePage,2
Define Constant,WinHttpRequestOption_EscapePercentInURL,3
Define Constant,WinHttpRequestOption_SslErrorIgnoreFlags,4
Define Constant,WinHttpRequestOption_SelectCertificate,5
Define Constant,WinHttpRequestOption_EnableRedirects,6
Define Constant,WinHttpRequestOption_UrlEscapeDisable,7
Define Constant,WinHttpRequestOption_UrlEscapeDisableQuery,8
Define Constant,WinHttpRequestOption_SecureProtocols,9
Define Constant,WinHttpRequestOption_EnableTracing,10
Define Constant,WinHttpRequestOption_RevertImpersonationOverSsl,11
Define Constant,WinHttpRequestOption_EnableHttpsToHttpRedirects,12
Define Constant,WinHttpRequestOption_EnablePassportAuthentication,13
Define Constant,WinHttpRequestOption_MaxAutomaticRedirects,14
Define Constant,WinHttpRequestOption_MaxResponseHeaderSize,15
Define Constant,WinHttpRequestOption_MaxResponseDrainSize,16
Define Constant,WinHttpRequestOption_EnableHttp1_1,17
Define Constant,WinHttpRequestOption_EnableCertificateRevocationCheck,18
# WinHttpRequestAutoLogonPolicy
Define Constant,AutoLogonPolicy_Always,0
Define Constant,AutoLogonPolicy_OnlyIfBypassProxy,1
Define Constant,AutoLogonPolicy_Never,2
# WinHttpRequestSslErrorFlags
Define Constant,SslErrorFlag_UnknownCA,256
Define Constant,SslErrorFlag_CertWrongUsage,512
Define Constant,SslErrorFlag_CertCNInvalid,4096
Define Constant,SslErrorFlag_CertDateInvalid,8192
Define Constant,SslErrorFlag_Ignore_All,13056
# WinHttpRequestSecureProtocols
Define Constant,SecureProtocol_SSL2,8
Define Constant,SecureProtocol_SSL3,32
Define Constant,SecureProtocol_TLS1,128
Define Constant,SecureProtocol_ALL,168
Define Constant,HTTPREQUEST_SETCREDENTIALS_FOR_SERVER,0
Define Constant,HTTPREQUEST_SETCREDENTIALS_FOR_PROXY,1
# IWinHttpRequestEvents Interface
# Define IID,IWinHttpRequestEvents,{F97F4E15-B787-4212-80D1-D380CBBF982E}
# Map a user defined VDS Event Name to a Member ID for IWinHttpRequestEvents
# Define EventMap,IWinHttpRequestEvents,OnResponseStart,1610678272
# Define EventMap,IWinHttpRequestEvents,OnResponseDataAvailable,1610678273
# Define EventMap,IWinHttpRequestEvents,OnResponseFinished,1610678274
# Define EventMap,IWinHttpRequestEvents,OnError,1610678275
# Tab element message API constants
Define Constant,TCM_SETCURSEL,4876
Define Constant,TCM_SETCURFOCUS,4912
Ole Init
#Ole Exceptions,SHOW
List Create,1
List LoadFile,1,#header.txt
%%HeaderTxt = @Text(1)
List Clear,1
List LoadFile,1,#demo.txt
%%DemoXML = @Text(1)
List Clear,1
List Close,1
#Dim http As New MSXML2.XMLHTTP
# Create XMLHTTP/ServerXMLHTTP/WinHttprequest object
# You can use any of these three objects.
# Set http = CreateObject("WinHttp.WinHttprequest.5")
# Set http = CreateObject("MSXML2.XMLHTTP")
# Set http = CreateObject("MSXML2.ServerXMLHTTP")
Set http,@Ole(Create,"WinHttp.WinHttprequest.5.1",NULL)
:Main Dialog
DIALOG CREATE,Post Message,-1,0,800,600
REM *** Modified by Dialog Designer on 10/13/2006 - 14:45 ***
DIALOG ADD,TAB,TAB1,10,11,780,555,Certificates|Message Request|Response From Server
# Response from Server Tab
DIALOG ADD,TEXT,respheader_txt,50,36,,,Header from Response
DIALOG ADD,EDIT,respheader_edt,68,31,735,89,,,MULTI,SCROLL
DIALOG ADD,TEXT,respbody_txt,166,37,,,Body from Response
DIALOG ADD,EDIT,EDIT1,188,30,740,358,,,MULTI,SCROLL
# Post Information Tab
DIALOG ADD,TEXT,username_txt,67,32,52,13,User Name
DIALOG ADD,EDIT,username_edt,83,28,180,19
DIALOG ADD,TEXT,pass_txt,66,243,46,13,Password
DIALOG ADD,EDIT,pass_edt,83,239,180,19,,,PASSWORD
DIALOG ADD,TEXT,URL_txt,104,33,19,13,URL
DIALOG ADD,EDIT,URL_edt,120,28,696,19,http://api.google.com/search/beta2
DIALOG ADD,TEXT,reqheader_txt,140,34,91,13,Header of Request
DIALOG ADD,EDIT,reqheader_edt,157,30,697,111,,,MULTI,SCROLL
DIALOG ADD,BUTTON,header_btn,156,730,40,22,...
DIALOG ADD,TEXT,reqbody_txt,270,34,80,13,Body of Request
DIALOG ADD,EDIT,reqbody_edt,285,30,698,261,,,MULTI,SCROLL
DIALOG ADD,BUTTON,browse_btn,286,732,40,22,...,Click to load XML file...
DIALOG ADD,BUTTON,go_btn,524,730,40,22,&Go
# Certificate Tab
DIALOG ADD,LINE,LINE1,44,22,758,511
DIALOG ADD,TABLE,TABLE1,44,22,758,511,Index[80]|Issued To[195]|Issued By[195]|Issued Date[125]|Expiration Date[125],,DBLCLICK
DIALOG ADD,STATUS,STATUS1,[250]|
# Hide Response from Server elements
DIALOG HIDE,respheader_txt
DIALOG HIDE,respheader_edt
DIALOG HIDE,respbody_txt
DIALOG HIDE,EDIT1
# Hide Post Information elements
DIALOG HIDE,username_txt
DIALOG HIDE,username_edt
DIALOG HIDE,pass_txt
DIALOG HIDE,pass_edt
DIALOG HIDE,URL_txt
DIALOG HIDE,URL_edt
DIALOG HIDE,reqheader_txt
DIALOG HIDE,reqheader_edt
DIALOG HIDE,reqbody_txt
DIALOG HIDE,reqbody_edt
DIALOG HIDE,go_btn
DIALOG HIDE,browse_btn
DIALOG HIDE,header_btn
DIALOG SHOW
DIALOG SET,reqheader_edt,%%HeaderTxt
DIALOG SET,reqbody_edt,%%DemoXML
Table Set,ExtStyle,TABLE1,GRIDLINES|FULLROWSELECT|INFOTIP
%%Oldlocation =
%%Headers =
List create,7
List Create,9
List Create,5
ReadCertStore
%A = @GetLastError()
# Connect to the Event Interface
# %%cookie = @Ole(ConnectEvents,http,IWinHttpRequestEvents)
:evloop
wait event,0.3
%E = @event()
if %E
goto %E
end
goto evloop
:TIMER
goto evloop
:CLOSE
If @Get(http)
# Must be called before your program exits
# Ole DisConnectEvents,http,IWinHttpRequestEvents,%%cookie
Ole Free,object,http
End
If @Get(userstore)
Ole Free,object,userstore
End
Ole Exceptions,HIDE
Ole UnInit
Exit
:TABLE1DBLCLICK
%%Item = @Item(TABLE1,,0)
If @Greater(%%Item,0)
DisplayCert userstore,%%Item
End
goto evloop
:CertificatesCLICK
# Hide Response from Server elements
DIALOG HIDE,respheader_txt
DIALOG HIDE,respheader_edt
DIALOG HIDE,respbody_txt
DIALOG HIDE,EDIT1
# Hide Post Information elements
DIALOG HIDE,URL_txt
DIALOG HIDE,URL_edt
DIALOG HIDE,reqheader_txt
DIALOG HIDE,reqheader_edt
DIALOG HIDE,reqbody_txt
DIALOG HIDE,reqbody_edt
DIALOG HIDE,go_btn
DIALOG HIDE,browse_btn
DIALOG HIDE,header_btn
DIALOG HIDE,username_txt
DIALOG HIDE,username_edt
DIALOG HIDE,pass_txt
DIALOG HIDE,pass_edt
# Show Certificates elements
DIALOG SHOW,LINE1
Goto evloop
:Message RequestCLICK
# Hide Certificates elements
Dialog HIDE,LINE1
# Hide Response from Server elements
DIALOG HIDE,respheader_txt
DIALOG HIDE,respheader_edt
DIALOG HIDE,respbody_txt
DIALOG HIDE,EDIT1
# Show Post Information elements
DIALOG SHOW,URL_txt
DIALOG SHOW,URL_edt
DIALOG SHOW,reqbody_txt
DIALOG SHOW,reqbody_edt
DIALOG SHOW,reqheader_txt
DIALOG SHOW,reqheader_edt
DIALOG SHOW,go_btn
DIALOG SHOW,browse_btn
DIALOG SHOW,header_btn
DIALOG SHOW,username_txt
DIALOG SHOW,username_edt
DIALOG SHOW,pass_txt
DIALOG SHOW,pass_edt
Goto evloop
:Response from ServerCLICK
# Hide Certificates elements
Dialog HIDE,LINE1
# Hide Post Information elements
DIALOG HIDE,URL_txt
DIALOG HIDE,URL_edt
DIALOG HIDE,reqheader_txt
DIALOG HIDE,reqheader_edt
DIALOG HIDE,reqbody_txt
DIALOG HIDE,reqbody_edt
DIALOG HIDE,go_btn
DIALOG HIDE,browse_btn
DIALOG HIDE,header_btn
DIALOG HIDE,username_txt
DIALOG HIDE,username_edt
DIALOG HIDE,pass_txt
DIALOG HIDE,pass_edt
# Show Response from Server elements
DIALOG SHOW,respheader_txt
DIALOG SHOW,respheader_edt
DIALOG SHOW,respbody_txt
DIALOG SHOW,EDIT1
Goto evloop
:BROWSE_BTNBUTTON
%F = @filedlg("Meta files (*.xml, *.htm, *.html)|*.xml;*.htm;*.html|Text files|*.txt",File to Post)
If @Ok()
List create,8
List LoadFile,8,%F
Dialog Set,reqbody_edt,@Text(8)
List clear,8
List close,8
End
goto evloop
:HEADER_BTNBUTTON
%F = @filedlg("Text files (*.txt)|*.txt|Meta files (*.xml, *.htm, *.html)|*.xml;*.htm;*.html|All files (*.*)|*.*",Headers to Add)
If @Ok()
List create,8
List LoadFile,8,%F
Dialog Set,reqheader_edt,@Text(8)
List clear,8
List close,8
End
goto evloop
:CLOSECONN_BTNBUTTON
goto evloop
:GO_BTNBUTTON
DIALOG CURSOR,WAIT
# ReadCertStore
%%Location = @dlgtext(URL_edt)
If %%Location
Ole Set,http,"Option(^d) = ^B",WinHttpRequestOption_EnableHttp1_1,True
Ole Set,http,"Option(^d) = ^d",WinHttpRequestOption_SecureProtocols,SecureProtocol_ALL
Ole Set,http,"Option(^d) = ^d",WinHttpRequestOption_SslErrorIgnoreFlags,SslErrorFlag_Ignore_All
# Open URL As POST request
# http.Open "POST", URL, False
If @dlgtext(reqbody_edt)
Ole Call,http,"Open(^B,^B,^B)","POST",%%Location,False
Else
Ole Call,http,"Open(^B,^B,^B)","GET",%%Location,False
End
# Ole Set,http,"Option(^d) = ^B",WinHttpRequestOption_EnableTracing,True
Ole Set,http,"Option(^d) = ^B",WinHttpRequestOption_UserAgentString,@CHR(34)A simple HTTP client application@CHR(34)
# Set Content-Type header
# http.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + Boundary
If @dlgtext(reqheader_edt)
%%ReqHeaders = @dlgtext(reqheader_edt)
List Assign,9,%%ReqHeaders
%%cnt = 0
%%count = @count(9)
%%OldSep = @fsep()
Option FieldSep,:
Repeat
%%Item = @Trim(@Item(9,%%cnt))
If %%Item
Parse "%%Name;%%Value",%%Item
Ole Call,http,"setRequestHeader(^B,^B)",%%Name,%%Value
End
%%cnt = @succ(%%cnt)
Until @Equal(%%cnt,%%count)
Option FieldSep,%%OldSep
End
If @Greater(@Index(TABLE1),0)
rem set the Cert you want to use.
If @Equal(%%Location,%%OldLocation)
Else
Ole Call,http,"SetClientCertificate(^B)","CURRENT_USER\"@Get(CAPICOM_MY_STORE)"\"@Item(TABLE1,@Index(TABLE1),1)
End
End
If @both(@dlgtext(username_edt),@dlgtext(pass_edt))
rem set the User creds you want to use.
If @Equal(%%Location,%%OldLocation)
Else
Ole Call,http,"SetCredentials(^B,^B,^d)",@dlgtext(username_edt),@dlgtext(pass_edt),HTTPREQUEST_SETCREDENTIALS_FOR_SERVER
End
End
if @dlgtext(reqbody_edt)
# Send the form data To URL As POST binary request
# http.send FormData
# Info @dlgtext(reqbody_edt)@CR()
%%SendData = @dlgtext(reqbody_edt)
Ole Call,http,"Send(^B)",%%SendData
Else
Ole Call,http,Send
End
# Wait for it!!!
# Wait for it!!!!
Ole Call,http,"WaitForResponse(^d)",-1
%%SendErrTxt =
%%SendErrCode =
List Clear,9
%%SendError = @GetLastError()
While %%SendError
List Append,9,%%SendError
%A = @Match(9,DateTime:)
If %A
%%tmpDateTime = @Item(9)
%%OldSep = @fsep()
Option FieldSep,@Tab()
Parse "%%Txt;%%DateTimeVal",%%tmpDateTime
List Put,9,Logged At:@Tab()@DateTime(ddddd tt,%%DateTimeVal)
Option FieldSep,%%OldSep
End
%A = @Match(9,Member:)
If %A
%%tmpMember = @Item(9)
%%OldSep = @fsep()
Option FieldSep,@Tab()
Parse "%%Txt;%%MemVal",%%tmpMember
List Put,9,Method:@Tab()@Substr(%%MemVal,2,@pred(@Pos(@chr(40),%%MemVal)))
Option FieldSep,%%OldSep
End
%A = @Match(9,Function:)
If %A
List Delete,9
End
%A = @Match(9,Error In:)
If %A
List Delete,9
End
%%SendError = @GetLastError()
Wend
# Dialog Set,STATUS1,Data sent...
# Get a result of the script which has received upload
# WinHTTPPostRequest = http.responseText
%%Status = @Ole(Get,http,^d,Status) @Ole(Get,http,^B,StatusText)
# %%Header = @Ole(Get,http,^B,GetResponseHeader)
%%Headers = @Ole(Get,http,^B,GetAllResponseHeaders)
Dialog Set,respheader_edt,%%Headers
%%Data = @Ole(Get,http,^B,responseText)
If %%Data
List Clear,9
List Assign,9,%%Data
End
Dialog set,EDIT1,@Text(9)
If @Equal(%%Status,200 OK)
Dialog Set,STATUS1,%%Status@Tab()Success...
Else
Dialog Set,STATUS1,Error:%%Status@Tab()Sorry can't go there...
End
If @dlgtext(respheader_edt)
%%Headers = @dlgtext(respheader_edt)
If @dlgtext(reqheader_edt)
%%ReqHeaders = @dlgtext(reqheader_edt)
List Assign,5,%%ReqHeaders
List Assign,9,%%Headers
%%OldSep = @fsep()
Option FieldSep,:
%%cnt = 0
%%count = @count(9)
Repeat
%%Item = @Trim(@Item(9,%%cnt))
If %%Item
Parse "%%Name;%%Value",%%Item
If @Equal(%%Name,Set-Cookie)
%%CookieName = @SubStr(%%Value,1,@Pred(@Pos(=,%%Value)))
%%CookieValue = @Trim(@SubStr(%%Value,@Succ(@Pos(=,%%Value)),@Pred(@Pos(;,%%Value))))
List seek,5,0
If @Match(5,%%CookieName)
Else
If %%CookieValue
List Add,5,@Strdel(%%Name,1,4): %%CookieName=%%CookieValue
End
End
End
End
%%cnt = @succ(%%cnt)
Until @Equal(%%cnt,%%count)
Option FieldSep,%%OldSep
Dialog Set,reqheader_edt,@Text(5)
End
End
%%OldLocation = %%Location
DIALOG CURSOR,
%A = @SendMsg(@Winexists(~TAB1),@Get(TCM_SETCURFOCUS),2,0)
%A = @SendMsg(@winexists(~TAB1),@Get(TCM_SETCURSEL),2,0)
Goto evloop
:IWinHttpRequestEventsOnResponseStart
# The next lines extract the event parameters
# The parameters are comma separated
# Save the current field separator
%%OldSep = @fsep()
# Change the field separator to a comma
Option FieldSep,@chr(44)
# Use Parse to separate the parameters into VDS variables
Parse "%%Status;%%ContentType",@Ole(EventParamsList,IWinHttpRequestEventsOnResponseStart)
# Now do something really cool with the parameters
# %%Status;%%ContentType
# Change the field separator back to the original
Option FieldSep,%%OldSep
goto evloop
:IWinHttpRequestEventsOnResponseDataAvailable
# The next line will extract the event parameter
%%Data = @Ole(EventParamsList,IWinHttpRequestEventsOnResponseDataAvailable)
# Now do something really cool with the parameter
Dialog Set,Status1,%%Data
goto evloop
:IWinHttpRequestEventsOnResponseFinished
# The event was fired
%%ResponseFinished = 1
# Dialog Set,Status1,IWinHttpRequestEventsOnResponseFinished event was fired
goto evloop
:IWinHttpRequestEventsOnError
# The next lines extract the event parameters
# The parameters are comma separated
# Save the current field separator
%%OldSep = @fsep()
# Change the field separator to a comma
Option FieldSep,@chr(44)
# Use Parse to separate the parameters into VDS variables
Parse "%%ErrorNumber;%%ErrorDescription",@Ole(EventParamsList,IWinHttpRequestEventsOnError)
# Now do something really cool with the parameters
# %%ErrorNumber;%%ErrorDescription
# Change the field separator back to the original
Option FieldSep,%%OldSep
goto evloop
:ReadCertStore
If @Get(userstore)
Ole Free,object,userstore
End
Set userstore,@Ole(Create,"CAPICOM.Store.2",NULL)
%%certs = @CertList(userstore,CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME,CAPICOM_CURRENT_USER_STORE,CAPICOM_MY_STORE,@Or(CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED,CAPICOM_STORE_OPEN_EXISTING_ONLY))
If %%certs
List Assign,TABLE1,%%certs
List seek,TABLE1,0
List Insert,TABLE1,0@Tab()@Tab()" "@Tab()" "@Tab()" "@Tab()
List see,TABLE1,0
Else
Warn No Client side Certs installed
End
Exit
:CertList
%R =
Ole Call,%1,"Open(^d,^B,^d)",%3,%4,%5
%%StoreName = @Ole(Get,%1,^B,Name)
Set certs,@Ole(Get,%1,"^o",Certificates)
Set colcerts,@Ole(BeginCollection,certs)
%i = 1
While @Ole(Next,cert,In,colcerts)
%R = %R%i@Tab()
%s = @Ole(Get,cert,"^B","SubjectName")
%n = @SubStr(%s,@sum(@Pos("CN=",%s),3),@len(%s))
if @Greater(@Pos(@chr(44),%n),0)
%%Name = @SubStr(%n,1,@Pred(@Pos(@chr(44),%n)))
%R = %R@SubStr(%n,1,@Pred(@Pos(@chr(44),%n)))@Tab()
else
%R = %R%n@Tab()
end
%s = @Ole(Get,cert,"^B","IssuerName")
%n = @SubStr(%s,@sum(@Pos("CN=",%s),3),@len(%s))
if @Greater(@Pos(@chr(44),%n),0)
%R = %R@SubStr(%n,1,@Pred(@Pos(@chr(44),%n)))@Tab()
else
%R = %R%n@Tab()
end
%s = @Ole(Get,cert,"^D","ValidFromDate")
%R = %R@datetime(ddddd tt,%s)@Tab()
%s = @Ole(Get,cert,"^D","ValidToDate")
%R = %R@datetime(ddddd tt,%s)@Tab()@CR()
rem %R = %R@Ole(Get,%1,"^B","Certificates.Item(^d).GetInfo(^d)",%i,%2)@CR()
rem Ole Call,userstore,"Certificates.Item(^d).Display",%%cnt
%i = @succ(%i)
Wend
Ole Free,Collection,colcerts
Dialog Set,STATUS1,Certificate Store Name: %%StoreName@TAB()Number of Certificates: @Pred(%i)
Exit %R
:DisplayCert
If @Get(%1)
Ole Call,%1,"Certificates.Item(^d).Display",%2
End
Exit
copyright © DragonSphere Software 2000-2006
Terms and Conditions