Server Class
Properties Methods Events Config Settings Errors
The Server class provides support for the 3DS Server role as defined in the EMV® 3-D Secure (EMV 3DS) specification.
Syntax
class ipworks3ds.Server
Remarks
This class is designed to be used in a web server, or in a process used by a web server to facilitate EMV® 3-D Secure (EMV 3DS) functionality. The class is used primarily for the browser-based flow, but also for some operations in the app-based flow as detailed in other parts of the documentation.
Connecting with SSL Client Authentication
Many directory servers require client authentication via a client certificate. The SSLCert* properties are used to load the SSL client certificate. In order to properly authenticate to the directory server the entire certificate chain must be presented to the directory server during the initial SSL handshake. The sections below describe options for making sure the CA chain is included.
Option 1: PFX With CA Certs
The first option is to specify a PFX file which includes both the client certificate, and CA certificates. In this case the class will read the CA certificates from the PFX file and include them in the request.
Option 2: SSLCACerts Configuration Setting
Another option is to specify the CA certificates separately from the client certificate. To do this the SSLCACerts configuration setting may be set to a CrLf separated list of CA certificates. For instance:
PHP Example
$ca_int = <<<EOT
-----BEGIN CERTIFICATE-----
MIIEKzCCAxOgAwIBAgIRANTET4LIkxdH6P+CFIiHvTowDQYJKoZIhvcNAQELBQAw
...
eWHV5OW1K53o/atv59sOiW5K3crjFhsBOd5Q+cJJnU+SWinPKtANXMht+EDvYY2w
F0I1XhM+pKj7FjDr+XNj
-----END CERTIFICATE-----
EOT;
$ca_root = <<<EOT
-----BEGIN CERTIFICATE-----
MIIEFjCCAv6gAwIBAgIQetu1SMxpnENAnnOz1P+PtTANBgkqhkiG9w0BAQUFADBp
...
8ECs48NRSON+/Pqm9Hxw1H3/yz2qLG4zTI7xJVDESZGEXadLwCJXD6OReX2F/BtU
d8q23djXZbVYiIfE9ebr4g3152BlVCHZ2GyPdjhIuLeH21VbT/dyEHHA
-----END CERTIFICATE-----
EOT;
$server->doConfig('SSLCACerts=' . $ca_int . '\n' . $ca_root);
Option 3: CA Certs in Windows Store
When running on Windows the CA certificates will also be included in the request if they are present in the Personal store of the user under which the application is running.
Card Ranges
The application using the 3DS Server class should maintain a cache of card range information that can be queried when a transaction is initiated. The request_card_ranges method will retrieve card range information to be cached.
request_card_ranges requests card ranges and additional information from the directory server.
When a transaction is initiated, the first step that should be taken is to find information about the card range to which the card number belongs. This includes the protocol version(s) supported by the ACS and DS, and if one exists, any corresponding Method URL (used in the browser flow).
Results of this method should be cached in order to quickly look up information when processing transactions. It is recommended to call this method once every 24 hours at a minimum, and once per hour as a maximum to refresh the cache. The class will not cache the returned values; it is up to the user to cache these values in an appropriate location.
The first time this method is called, serial_number will be empty, indicating that all results should be returned. This is an offset the server will use to return only new updates to the card ranges (if any) since the last request. The serial_number will be populated after this method returns, and this value should be saved to be used in subsequent calls.
When a response is received, the card ranges will be made available via the component events and properties.
When message_version is set to 2.3.1, the on_card_range_data event will fire for each card range data object received, and the ranges and acs_protocol_infos properties will be populated to be accessed within the event handler. Optionally, the DS may return a list of URLs that the 3DS Server can use for communication with the DS. If present, these will be available via both the on_dsurl event and the dsur_ls property.
When message_version is set to 2.2.0 or 2.1.0, the on_card_range event will fire for each card range that is returned, and the results will also be held in the card_ranges property.
The following properties are applicable when calling this method:
- directory_server_url (required)
- serial_number
- server_transaction_id
- ServerOperatorId
- EnableDownloadCardRangeDataFile (2.3.1 only)
The following properties are populated after calling this method:
- card_ranges
- DSStartProtocolVersion
- DSEndProtocolVersion
- serial_number
- DSTransactionId
- ResendRequestCardRanges
When using message_version 2.2.0 or 2.3.1, the returned ranges may include ACS Information Indicators. These are used to indicate additional functionality supported by the ACS for the card range(s). For 2.2.0, a ACSInformationIndicator field is exposed in both card_ranges collection and on_card_range event. In version 2.3.1, this information is availalbe in the acs_protocol_infos collection via the Indicator field. Possible values are:
- 01 - Authentication Available at ACS
- 02 - Attempts Supported by ACS or DS
- 03 - Decoupled Authentication Supported
- 04 - Whitelisting Supported
- 05 - Device Binding Supported (2.3.1 only)
- 06 - WebAuthn Authentication Supported (2.3.1 only)
- 07 - SPC Authentication Supported (2.3.1 only)
- 08 - Transaction Risk Analysis Exemption Supported (2.3.1 only)
- 09 - Trust List Exemption Supported (2.3.1 only)
- 10 - Low Value Exemption Supported (2.3.1 only)
- 11 - Secure Corporate Payments Exemption Supported (2.3.1 only)
- 80-99 - Reserved for DS Use
If an error is identified with the card range data received from the directory server when calling the request_card_ranges method, the ResendRequestCardRanges configuration setting will be true, indicating that the request should be resent. When resending, if serial_number was specified for the initial request, it should be set to an empty string before calling request_card_ranges again. Otherwise, the request can be sent without the serial number again, but the server may respond with an error due to multiple requests within an hour.
Note that retrieving card ranges can consume a lot of memory, especially when retrieving the initial set of ranges. The StoreCardRangeData and UseJsonDOM configuration settings can be set to help minimize the amount of memory used. A CardRangeTempPath setting can also be used to specify a temporary path to which the PRes packet will be temporarily written prior to parsing.
When using message_version 2.3.1, if UseJsonDOM is false, the card ranges will need to be cached and processed after the request_card_ranges method returns. The card ranges would then need to be processed in the order indicated by the CardRangeRecordsReadOrder configuration setting. A check will also need to be made for overlap of ranges. If issue(s) are found, the ReportCardRangeError configuration setting should be used to report the error to the directory server.
Method Invocation
The get_method_data method prepares data to be transmitted to the ACS via the cardholder's browser.
When a transaction begins, the card range cache should be queried to find details about the card range to which the card number belongs. If a card_range_method_url is defined for the card range, this method should be used to prepare data to be sent via the cardholder's browser to the card_range_method_url.
If the card_range_method_url is not set for the specified card range, set MethodCompletionIndicator to U before calling send_auth_request.
The following properties are applicable when calling this method:
- method_notification_url (required)
This method returns a string which contains encoded data to be sent to the ACS. This includes server_transaction_id and method_notification_url. After calling this method, the returned string can be transmitted to the ACS via the cardholder's browser.
As per the EMVCo specification, create a hidden iframe in the browser and send a form with the field name threeDSMethodData containing the return value from this method and post the form to the card_range_method_url.
The ACS will record information about the customer's environment and then POST back to the method_notification_url. The page at this URL should expect a form variable with the name threeDSMethodData which will contain the original server_transaction_id value in order to match the response with the request. The form variable value will be base64url encoded and may be passed directly to the check_response method. The class will decode and parse the received value and populate server_transaction_id with the value from the received data.
If the response from the ACS is not received within 10 seconds, set MethodCompletionIndicator to N before calling send_auth_request.
Sending the Authentication Request
send_auth_request begins the 3-D Secure transaction flow by sending an authentication request to the directory_server_url.
After calling this method, check transaction_status to determine if the cardholder is authenticated (frictionless flow) or further cardholder interaction is required to complete the authentication (challenge flow).
Prior to calling send_auth_request, data must to be collected to facilitate fraud checks by the ACS. The following properties are applicable for both app-based and browser-based flows:
- acquirer_bin (required)
- acquirer_merchant_id (required)
- cardholder_name (required)
- card_number (required)
- directory_server_url (required)
- merchant_category_code (required)
- merchant_country_code (required)
- merchant_name (required)
- message_version (required)
- purchase_amount (required)
- purchase_date (required)
- requestor_id (required)
- requestor_name (required)
- requestor_url (required)
- results_url (required)
- account_type
- authentication_indicator
- BillingAddress*
- cardholder_email
- cardholder_home_phone
- cardholder_mobile_phone
- cardholder_work_phone
- DecoupledMaxTimeout
- DecoupledRequestIndicator
- device_channel
- message_category
- purchase_currency
- purchase_exponent
- ServerOperatorId
- server_transaction_id
- ShippingAddress*
- ThreeRIIndicator
App-Based Flow
In the app-based flow, device specific information is prepared by the 3DS SDK on the customer's device. This is transmitted to the 3DS Server class via a secure channel, the specifics of which are outside the scope of the classs. Set client_auth_request to this data prepared by the 3DS SDK.
Browser-Based Flow
Before calling this method, first check the cached card-range data to determine if a card_range_method_url has been set by the ACS. Card range data may be retrieved by calling request_card_ranges.
If no card_range_method_url is present for the given card, set MethodCompletionIndicator to U.
If a card_range_method_url has been specified by the ACS for the card number, the URL must be loaded in the cardholder's browser to allow the ACS to collect additional browser information for risk-based decision making. See the get_method_data for further details.
Once the method URL invocation is complete, the authentication request may be sent. If the method URL invocation failed, set MethodCompletionIndicator to N before calling send_auth_request.
The following additional properties are applicable in browser-based flow:
- notification_url (required)
- browser_accept_header (required)
- browser_language (required)
- browser_screen_height (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- browser_screen_width (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- browser_time_zone (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- browser_user_agent (required)
- browser_ip_address (conditional)
- browser_java_enabled_val (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- browser_java_script_enabled_val (not valid in 2.1.0, required in 2.2.0 and 2.3.1)
- browser_screen_color_depth (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- accept_language (2.3.1 only)
- acquirer_country_code (2.3.1 only)
Response Handling
After calling this method the transaction_status property holds the result. Possible values are:
Transaction Status | Description |
Y | Authenticated successfully |
C | Cardholder challenge required |
N | Not authenticated |
A | Not authenticated, but a proof of authentication attempt was generated in authentication_value |
U | Not authenticated due to technical or other issue |
R | Not authenticated because the issuer is rejecting authentication |
D | Challenge required; decoupled authentication confirmed |
I | Informational only; 3DS Requestor challenge preference acknowledged |
S | Challenge using SPC |
If the transaction is authenticated (Y or A), no further steps are required. The flow is considered frictionless and the 3-D Secure processing is complete. If processing a payment, the authentication_value and authentication_eci values can be included as proof of 3-D Secure authentication.
If the transaction requires a cardholder challenge (C, D or S), further steps are required.
If the transaction is not authenticated, TransactionStatusReason may contain details about the reason.
The following properties are applicable after calling this method:
- authentication_eci
- authentication_value
- transaction_status
- TransactionStatusReason
- CardholderInformation
- acsurl (if challenge required)
- ACSChallengeMandatedIndicator (if challenge required)
- AuthenticationType (if challenge required)
- DecoupledConfirmationIndicator
Response Handling - App-Based Flow
After calling this method, client_auth_response is populated with data to be transmitted back to the 3DS SDK. If a challenge is required, the client_auth_response data is used by the 3DS SDK to start when initiating the challenge process.
The 3DS Server is responsible for indicating to the 3DS SDK the results of the send_auth_request process, and whether or not a challenge is required. Exactly how this is done is outside the scope of the classs themselves. The response to the 3DS SDK over the secure channel should include information on what to do next.
Note: The transaction_status is also populated in the 3DS Server class and may be inspected prior to transmitting client_auth_response back to the 3DS SDK.
Response Handling - Browser-Based Flow
If transaction_status is C, then additional steps are required to complete the authentication. The get_challenge_request method should be called next to obtain data to be sent to the acsurl in an authentication window in the customer's browser. Once authentication is complete, the ACS will post the results to the results_url value that was specified when calling send_auth_request.
See the get_challenge_request method for more details.
If transaction_status is D, then decoupled authentication has been accepted by the ACS. DecoupledConfirmationIndicator will have a value of Y as well. Authentication will happen outside of the 3-D Secure flow and, when complete, the ACS will post the results to the results_url that was specified when calling send_auth_request.
The DecoupledTimeRemaining value, which is calculated based on the DecoupledMaxTimeout value sent in the initial authentication request, can be checked to see the amount of time remaining before decoupled authentication must be completed. If the ACS does not post the results before this value runs out, it can be assumed that decoupled authentication was not successful.
SPC-Based Authentication
SPC (Secure Payment Confirmation) provides a method to perform a challenge using preestablished FIDO credentials when using a Browser. The SPC authentication can be initiated by the 3DS Requestor via an extra AReq/ARes message pair or by the ACS via a standard Browser Challenge Flow.
For an SPC authentication to execute correctly, the following prerequisites apply:
- The ACS has an enrolled FIDO authenticator on the device for this Cardholder.
- The 3DS Requestor and/or the ACS have detected that the Cardholder Browser supports the related SPC APIs (allow="payment *; publickey-credentialsget *"). For the ACS, this information can be obtained via the Browser User Agent data element or via data obtained via the 3DS Method.
SPC-based authentication can be enabled with the following additions:
Prior to sending the initial authentication request packet (AReq) using the send_auth_request method, the ThreeDSRequestorSpcSupport configuration setting should be set to True to indicate that SPC is supported by the 3DS Requestor.
If SPC is accepted by the ACS, the resulting transaction_status should be S. The response will also contain a list of enrolled FIDO (WebAuthn) credentials associated with the cardholder, and SPC transaction data. This data is available in the following configuration settings:
- WebAuthnCredentialListCount
- WebAuthnCredentialListWebAuthnCredential
- WebAuthnCredentialListRelyingPartyId
- SPCTransactionAdditionalData
- SPCTransactionChallenge
- SPCTransactionChallengeInfoText
- SPCTransactionCurrency
- SPCTransactionDisplayName
- SPCTransactionIcon
- SPCTransactionIssuerImage
- SPCTransactionIssuerImageDark
- SPCTransactionIssuerImageMonochrome
- SPCTransactionPayeeName
- SPCTransactionPayeeOrigin
- SPCTransactionPSImage
- SPCTransactionPSImageDark
- SPCTransactionPSImageMonochrome
- SPCTransactionTimeout
- SPCTransactionValue
This information is relayed to the 3DS Requestor implementation, and the 3DS Requestor invokes the SPC authentication (SPC API) against the WebAuthn Credential list. The cardholder authenticates using the FIDO authenticator on their device, and the 3DS Requestor retrieves the Assertion Data from the SPC API call.
The 3DS Server is then configured to includes this FIDO Assertion Data is then included in a new authentication request by setting the ReqAuthData[Index] and a ReqAuthMethod[Index] of 09. If the AuthenticationInformation value was saved earlier, it can be set via the same configuration setting. If the 3DS Requestor encounters an error during SPC API invokation, this can be indicated using the SPCIncompletionIndicator.
The send_auth_request method should then be called again to transmit this data to the ACS (by way of the DS) in a second AReq.
When send_auth_request returns, the 3DS Server proceed the same as the regular browser-based flow when the ARes is returned.
When SPC authentication is to be performed, the authenticaton must be completed within 9 minutes. The component will automatically start an internal timer that can be checked using the CheckSPCTimeout configuration setting. This will return the number of seconds left for SPC authentication to complete. If the time has expired before receiving the Assertion Data from the 3DS Requestor, checking this configuration setting will cause the component to automatically send the second AReq message with an SPCIncompletionIndicator value of 03, indicating that SPC authentication timed out.
Note that SPC-based authentication is only available when a message_version of 2.3.1 is used.
Challenge Interaction
If the transaction_status is C, a challenge is required.
The get_challenge_request method is used to build the Challenge Request (CReq) which will be sent in a form post to the acsurl property via the cardholder browser.
An iframe should be created in the cardholder's browser, which will be used to send the challenge request and allow the cardholder and ACS to interact directly.
The size of the challenge window (iframe) may be any of the sizes listed in challenge_window_size. Before calling this method set challenge_window_size to the appropriate value to let the ACS know the size of the window on the cardholder's browser.
Calling this method will return a string which should be placed in a creq form variable.
The SessionData setting may also be set with any data that may be helpful to continue processing the transaction after the final challenge response is received at the notification_url. To prepare the session data for submission, query EncodedSessionData. The encoded string may then be placed in the threeDSSessionData form variable.
Note: The maximum length of the threeDSSessionData form variable, after being encoded, is 1024 bytes.
Example Form
Response Handling
Once the challenge has been completed by the cardholder, the directory server will post a Results Request (RReq) to the results_url specified when calling send_auth_request. See check_response and get_results_response for more details.
The ACS will also post the Challenge Response to the notification_url specified when calling send_auth_request. This post contains data which may be parsed to verify the challenge results. See check_response for more details.
Response Handling
After a challenge is complete, the Directory Server and ACS will POST data back to the web server for additional processing. check_response parses a variety of messages that are sent to the Server as part of the authentication process.
The following messages can be parsed using this method:
- The threeDSMethodData form variables received at the method_notification_url
- The Results Request (RReq) message received at the results_url
- The cres form variables received at the notification_url
- The Operation Request Message (OReq) sent from a DS.
When calling the method, pass the message to be parsed as the Response parameter. The properties which are populated after calling this method vary depending on the type of message being parsed. See below for additional information.
Method Data from method_notification_url
After calling get_method_data, a request is made to the card_range_method_url. After this, the ACS will make a POST to method_notification_url to inform the requestor of completion. Retrieve the threeDSMethodData form variable value that was POSTed and pass it to this method. After calling this method, the following properties are populated:
The server_transaction_id may be used to match the response with the request.Results Request message from results_url
When a challenge is completed for both app-based and browser-based flows, a POST is made to the results_url with a Results Request message.
Prior to checking this RReq message, the ServerTransactionId can be extracted using the ExtractRReqServerTransactionId configuration setting. This value can then be used to look up details on the transaction that were saved prior to starting the challenge process, including the messageVersion which must be set via the message_version property prior to passing the RReq message to the check_response method.
Pass the body of the HTTP request received at results_url to this method. This contains information about the results, and asks for a Results Response to be sent back containing the results_status.
After calling this method, the following properties are populated:
- authentication_eci
- transaction_status
- TransactionStatusReason
- ChallengeCancellationIndicator
- AuthenticationType
- authentication_value
To respond to the POST, set results_status to the appropriate value and call get_results_response to build a response message to be sent back to the directory server. Use the value from get_results_response in the application as the body of the HTTP response. Set the Content-Type header to application/JSON; charset=utf-8
If transaction_status is D and TransactionStatusReason is 29 or 30, this indicates that decoupled authentication should now be performed. When building the Results Response, a results_status value of 04 should be used. Then, within 60 seconds, a new 3RI authentication must be started with the following field requirements:
- ThreeRIIndicator set to 19, indicating Decoupled Authentication Fallback
- DecoupledRequestIndicator set to Y
- AuthenticationInformation set with threeDSReqPriorRef set to the ACS Transaction ID and threeDSReqPriorAuthMethod set to 02 (Cardholder challenge occurred by ACS).
Final Challenge Response from notification_url
In a browser-based flow, the challenge takes place directly between the cardholder and the ACS in a separate iframe or window. The ACS will POST the final challenge response to the notification_url after the challenge is complete. Retrieve the cres form variable value from the POST data and pass it to check_response. After calling this method the following properties are populated:
In addition to the cres variable, a threeDSSessionData variable will be present if SessionData was set before calling get_challenge_request. The threeDSSessionData value POSTed to notification_url may be passed to EncodedSessionData. Query SessionData to get the decoded session data.
Operation Request Message (OReq)
OReq messages are used to communicate operational information from a DS to the 3DS Server. This message is not part of the 3-D Secure authentication flow.
When an OReq message is received, check_response should be called to validate the message. There may be more than one OReq message sent in a sequence, and check_response should be called for each. The current instance of the Server object can be cached for the duration of the OReq sequence until the final OReq is received. The Operation.SequenceNumber should also be set prior to calling check_response. The component will verify the sequence number of the received OReq to ensure it's not out of sequence.
After calling this method, details are made available in operation.
If any OReq data element fails validation, Operation.MessageStatus will be set to "02". If the OReq is valid, Operation.MessageStatus will be empty.
If the OReq is valid, determine if the final OReq has been received (Operation.SequenceNumber equals Operation.SequenceTotal). If these values match, the final OReq in the sequence has been received, and get_operation_response can be used to generate the ORes message.
For valid OReq messages that are not the final OReq in the sequence, the response should be HTTP Status 200 (OK) with an empty HTTP body.
Logging Notes
Logging in the component is handled through the on_log event. This will fire anytime a message is built or a response is parsed, including error messages.
When the on_log event is fired, the message in question is made available via the Message event parameter. Properties such as EphemeralKey and DeviceParams are also available when they are gathered by the Client. The other event arguments are LogType and LogLevel:
The LogType parameter indicates the type of the log entry. Possible values are:
- "Info"
- "RequestHeaders"
- "ResponseHeaders"
- "RequestBody"
- "ResponseBody"
- "ProxyRequest"
- "ProxyResponse"
- "FirewallRequest"
- "FirewallResponse"
- "AReq"
- "ARes"
- "CReq"
- "CRes"
- "RReq"
- "RRes"
- "PReq"
- "PRes"
- "Erro"
- "EphemeralKey"
- "DeviceParams"
It is recommended to output all messages raised in this event to a file for record keeping purposes, or for later debugging issues that may have come up.
The Server and Client components also have on_data_packet_in and on_data_packet_out events that fire anytime a data packet is received or sent, respectively. The entire data packet is then accessible in the DataPacket event parameter. For encrypted packets, this would contain the full encrypted data. This parameter may be inspected for advanced troubleshooting.
Property List
The following is the full list of the properties of the class with short descriptions. Click on the links for further details.
accept_language | HTTP accept language header value sent from the cardholder's browser. |
account_type | Indicates the type of account. |
acquirer_bin | Acquiring institution identification code. |
acquirer_country_code | Acquirer Country Code. |
acquirer_merchant_id | Acquirer-assigned merchant identifier. |
acs_protocol_info_count | The number of records in the ACSProtocolInfo arrays. |
acs_protocol_info_indicator | Additional information on the card range as supplied by the ACS. |
acs_protocol_info_protocol_version | The Protocol Version supported by the ACS for the card range. |
acs_protocol_info_supported_msg_ext | A list of message extensions supported by the ACS that contains the Assigned Extension Group Identifier and the Extension Version Number. |
acs_protocol_info_three_ds_method_url | The ACS URL that will be used by the 3DS Method for a particular protocol version. |
acsurl | URL of the ACS to be used for the challenge. |
authentication_eci | Value to be passed in the authorization message. |
authentication_indicator | 3DS Requestor Authentication Indicator. |
authentication_value | Used to provide proof of authentication. |
billing_address_city | The city of the address. |
billing_address_country | The country of the address. |
billing_address_line1 | The first line of the street address or equivalent local portion of the address. |
billing_address_line2 | The second line of the street address or equivalent local portion of the address. |
billing_address_line3 | The third line of the street address or equivalent local portion of the address. |
billing_address_postal_code | The ZIP or other postal code of the address. |
billing_address_state | The state or province of the address. |
browser_accept_header | HTTP accept header sent from the cardholder's browser. |
browser_ip_address | IP address of the cardholder's browser. |
browser_java_enabled_val | Ability of the cardholder's browser to execute Java. |
browser_java_script_enabled_val | Ability of the cardholder's browser to execute JavaScript. |
browser_language | The cardholder's browser language. |
browser_screen_color_depth | The screen color depth of the cardholder's browser. |
browser_screen_height | The screen height of the cardholder's browser. |
browser_screen_width | The screen width of the cardholder's browser. |
browser_time_zone | The timezone offset of the cardholder's browser. |
browser_user_agent | The User-Agent provided by the cardholder's browser. |
card_exp_date | Expiration date of the PAN or Token. |
cardholder_email | The cardholder email address. |
cardholder_home_phone | The cardholder home phone number. |
cardholder_mobile_phone | The cardholder mobile phone number. |
cardholder_name | Name of the cardholder. |
cardholder_work_phone | The cardholder work phone number. |
card_number | Customer's account number that will be authenticated. |
card_range_count | The number of records in the CardRange arrays. |
card_range_acs_end_protocol_version | The most recent active protocol version that is supported by the ACS. |
card_range_acs_information_indicator | Additional information on the card range as supplied by the ACS. |
card_range_acs_start_protocol_version | The earliest (i. |
card_range_action | The action to be taken with the card range specified by the Start and End properties. |
card_range_ds_end_protocol_version | The most recent active protocol version that is supported by the DS. |
card_range_ds_start_protocol_version | The earliest (i. |
card_range_end | Last number in a range of credit card numbers returned by the Directory Server. |
card_range_method_url | The ACS URL that will be used by the 3DS method. |
card_range_start | First number in a range of credit card numbers returned by the Directory Server. |
challenge_window_size | Challenge window size. |
client_auth_request | The data received by the class to be sent in the authentication request. |
client_auth_response | The authentication response for an app-based flow. |
data_packet_out | Contains the data packet sent to the server. |
device_channel | Device channel. |
directory_server_url | The address of the Directory Server. |
ds_supported_protocols | Protocol Versions supported by the DS. |
dsurl_count | The number of records in the DSURL arrays. |
dsurl_country_code | The country for which the 3DS Server to DS URL can be used. |
dsurl_three_ds_server_to_ds_url | URL that the 3DS Server uses to communicate with a DS for a particular card range. |
error_packet | The error packet. |
extension_count | The number of records in the Extension arrays. |
extension_critical | Whether the extension is critical. |
extension_data | The extension data as JSON. |
extension_id | The id of the specified extension. |
extension_name | The extension name. |
merchant_category_code | Merchant category code. |
merchant_country_code | Country code of the merchant. |
merchant_name | Merchant name. |
message_category | The category of the message. |
message_version | Protocol version identifier. |
method_notification_url | The URL to which the method notification will be posted. |
notification_url | The notification URL to which the challenge response is sent. |
operation_info_category | Indicates the category/type of information. |
operation_info_description | Describes the reason for the operational communication or the response to an action taken by the recipient. |
operation_info_expiration_date | The date after which the relevance of the operational information expires. |
operation_info_message_status | Indicates the status of the operational request message sequence from the source of the OReq. |
operation_info_prior_transaction_id | The transaction ID of the prior transaction to which the operational information refers. |
operation_info_prior_transaction_id_type | The type of transaction ID of the prior transaction to which the operational information refers. |
operation_info_sequence_id | Uniquely identifies a message sequence and will remain constant in the sequence of messages. |
operation_info_sequence_number | The current message in the sequence. |
operation_info_sequence_total | The total number of messages in the sequence and will remain constant in the sequence of messages. |
operation_info_severity | Indicates the importance/severity level of the operational information. |
proxy_auth_scheme | The type of authorization to perform when connecting to the proxy. |
proxy_auto_detect | Whether to automatically detect and use proxy system settings, if available. |
proxy_password | A password if authentication is to be used for the proxy. |
proxy_port | The Transmission Control Protocol (TCP) port for the proxy Server (default 80). |
proxy_server | If a proxy Server is given, then the HTTP request is sent to the proxy instead of the server otherwise specified. |
proxy_ssl | When to use a Secure Sockets Layer (SSL) for the connection to the proxy. |
proxy_user | A username if authentication is to be used for the proxy. |
purchase_amount | Purchase amount to be authorized. |
purchase_currency | Identifies the type of currency used by the merchant. |
purchase_date | The date of the transaction. |
purchase_exponent | Minor units of currency. |
range_count | The number of records in the Range arrays. |
range_end | The final card number in the current range. |
range_start | The first card number in the current range. |
recurring_exp_date | Recurring expiration date. |
recurring_frequency | The number of days between recurring payments. |
requestor_id | Directory server assigned 3DS Requestor identifier. |
requestor_name | Directory server assigned 3DS Requestor name. |
requestor_url | 3DS Requestor website or customer care site. |
results_status | The status of the Results Request. |
results_url | 3DS Server URL. |
sdk_type | Type of the 3DS SDK used for the app-based flow. |
serial_number | Serial number indicating the state of the current card range cache. |
server_transaction_id | Server transaction identifier. |
shipping_address_city | The city of the address. |
shipping_address_country | The country of the address. |
shipping_address_line1 | The first line of the street address or equivalent local portion of the address. |
shipping_address_line2 | The second line of the street address or equivalent local portion of the address. |
shipping_address_line3 | The third line of the street address or equivalent local portion of the address. |
shipping_address_postal_code | The ZIP or other postal code of the address. |
shipping_address_state | The state or province of the address. |
ssl_accept_server_cert_effective_date | The date on which this certificate becomes valid. |
ssl_accept_server_cert_expiration_date | The date on which the certificate expires. |
ssl_accept_server_cert_extended_key_usage | A comma-delimited list of extended key usage identifiers. |
ssl_accept_server_cert_fingerprint | The hex-encoded, 16-byte MD5 fingerprint of the certificate. |
ssl_accept_server_cert_fingerprint_sha1 | The hex-encoded, 20-byte SHA-1 fingerprint of the certificate. |
ssl_accept_server_cert_fingerprint_sha256 | The hex-encoded, 32-byte SHA-256 fingerprint of the certificate. |
ssl_accept_server_cert_issuer | The issuer of the certificate. |
ssl_accept_server_cert_private_key | The private key of the certificate (if available). |
ssl_accept_server_cert_private_key_available | Whether a PrivateKey is available for the selected certificate. |
ssl_accept_server_cert_private_key_container | The name of the PrivateKey container for the certificate (if available). |
ssl_accept_server_cert_public_key | The public key of the certificate. |
ssl_accept_server_cert_public_key_algorithm | The textual description of the certificate's public key algorithm. |
ssl_accept_server_cert_public_key_length | The length of the certificate's public key (in bits). |
ssl_accept_server_cert_serial_number | The serial number of the certificate encoded as a string. |
ssl_accept_server_cert_signature_algorithm | The text description of the certificate's signature algorithm. |
ssl_accept_server_cert_store | The name of the certificate store for the client certificate. |
ssl_accept_server_cert_store_password | If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store. |
ssl_accept_server_cert_store_type | The type of certificate store for this certificate. |
ssl_accept_server_cert_subject_alt_names | Comma-separated lists of alternative subject names for the certificate. |
ssl_accept_server_cert_thumbprint_md5 | The MD5 hash of the certificate. |
ssl_accept_server_cert_thumbprint_sha1 | The SHA-1 hash of the certificate. |
ssl_accept_server_cert_thumbprint_sha256 | The SHA-256 hash of the certificate. |
ssl_accept_server_cert_usage | The text description of UsageFlags . |
ssl_accept_server_cert_usage_flags | The flags that show intended use for the certificate. |
ssl_accept_server_cert_version | The certificate's version number. |
ssl_accept_server_cert_subject | The subject of the certificate used for client authentication. |
ssl_accept_server_cert_encoded | The certificate (PEM/Base64 encoded). |
ssl_cert_effective_date | The date on which this certificate becomes valid. |
ssl_cert_expiration_date | The date on which the certificate expires. |
ssl_cert_extended_key_usage | A comma-delimited list of extended key usage identifiers. |
ssl_cert_fingerprint | The hex-encoded, 16-byte MD5 fingerprint of the certificate. |
ssl_cert_fingerprint_sha1 | The hex-encoded, 20-byte SHA-1 fingerprint of the certificate. |
ssl_cert_fingerprint_sha256 | The hex-encoded, 32-byte SHA-256 fingerprint of the certificate. |
ssl_cert_issuer | The issuer of the certificate. |
ssl_cert_private_key | The private key of the certificate (if available). |
ssl_cert_private_key_available | Whether a PrivateKey is available for the selected certificate. |
ssl_cert_private_key_container | The name of the PrivateKey container for the certificate (if available). |
ssl_cert_public_key | The public key of the certificate. |
ssl_cert_public_key_algorithm | The textual description of the certificate's public key algorithm. |
ssl_cert_public_key_length | The length of the certificate's public key (in bits). |
ssl_cert_serial_number | The serial number of the certificate encoded as a string. |
ssl_cert_signature_algorithm | The text description of the certificate's signature algorithm. |
ssl_cert_store | The name of the certificate store for the client certificate. |
ssl_cert_store_password | If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store. |
ssl_cert_store_type | The type of certificate store for this certificate. |
ssl_cert_subject_alt_names | Comma-separated lists of alternative subject names for the certificate. |
ssl_cert_thumbprint_md5 | The MD5 hash of the certificate. |
ssl_cert_thumbprint_sha1 | The SHA-1 hash of the certificate. |
ssl_cert_thumbprint_sha256 | The SHA-256 hash of the certificate. |
ssl_cert_usage | The text description of UsageFlags . |
ssl_cert_usage_flags | The flags that show intended use for the certificate. |
ssl_cert_version | The certificate's version number. |
ssl_cert_subject | The subject of the certificate used for client authentication. |
ssl_cert_encoded | The certificate (PEM/Base64 encoded). |
ssl_server_cert_effective_date | The date on which this certificate becomes valid. |
ssl_server_cert_expiration_date | The date on which the certificate expires. |
ssl_server_cert_extended_key_usage | A comma-delimited list of extended key usage identifiers. |
ssl_server_cert_fingerprint | The hex-encoded, 16-byte MD5 fingerprint of the certificate. |
ssl_server_cert_fingerprint_sha1 | The hex-encoded, 20-byte SHA-1 fingerprint of the certificate. |
ssl_server_cert_fingerprint_sha256 | The hex-encoded, 32-byte SHA-256 fingerprint of the certificate. |
ssl_server_cert_issuer | The issuer of the certificate. |
ssl_server_cert_private_key | The private key of the certificate (if available). |
ssl_server_cert_private_key_available | Whether a PrivateKey is available for the selected certificate. |
ssl_server_cert_private_key_container | The name of the PrivateKey container for the certificate (if available). |
ssl_server_cert_public_key | The public key of the certificate. |
ssl_server_cert_public_key_algorithm | The textual description of the certificate's public key algorithm. |
ssl_server_cert_public_key_length | The length of the certificate's public key (in bits). |
ssl_server_cert_serial_number | The serial number of the certificate encoded as a string. |
ssl_server_cert_signature_algorithm | The text description of the certificate's signature algorithm. |
ssl_server_cert_store | The name of the certificate store for the client certificate. |
ssl_server_cert_store_password | If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store. |
ssl_server_cert_store_type | The type of certificate store for this certificate. |
ssl_server_cert_subject_alt_names | Comma-separated lists of alternative subject names for the certificate. |
ssl_server_cert_thumbprint_md5 | The MD5 hash of the certificate. |
ssl_server_cert_thumbprint_sha1 | The SHA-1 hash of the certificate. |
ssl_server_cert_thumbprint_sha256 | The SHA-256 hash of the certificate. |
ssl_server_cert_usage | The text description of UsageFlags . |
ssl_server_cert_usage_flags | The flags that show intended use for the certificate. |
ssl_server_cert_version | The certificate's version number. |
ssl_server_cert_subject | The subject of the certificate used for client authentication. |
ssl_server_cert_encoded | The certificate (PEM/Base64 encoded). |
timeout | A timeout for the class. |
transaction_status | The transaction status from the last parsed message (ARes, RReq, or CRes). |
Method List
The following is the full list of the methods of the class with short descriptions. Click on the links for further details.
add_extension | Adds an extension to the collection. |
add_request_field | Adds a field to the data in the request. |
check_response | Parses the specified message. |
config | Sets or retrieves a configuration setting. |
get_challenge_request | Builds the Challenge Request (CReq) for browser-based flow. |
get_method_data | Prepares method data to be sent to the ACS before the authentication request is sent. |
get_operation_response | Builds and returns the Operation Response Message (ORes) to be sent back to the Directory Server. |
get_results_response | Builds and returns the Results Response Message (RRes) to be sent back to the directory server. |
interrupt | Interrupts the current action. |
request_card_ranges | Requests card ranges from the directory server. |
reset | Clears all properties to their default values. |
reset_transaction_info | Resets transaction specific information. |
send_auth_request | Sends the authentication request to the directory server. |
Event List
The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.
on_card_range | Fired when the response to a Preparation Request Message (PReq) is received. |
on_card_range_data | Fired when the response to a Preparation Request Message (PReq) is received. This event is used for card range data returned when version 2.3.1 of the protocol is used. |
on_data_packet_in | Fired when receiving a data packet from the server. |
on_data_packet_out | Fired when sending a data packet to the server. |
on_dsurl | Fired for each DS URL present in the Preparation Response Message (PRes). |
on_error | Information about errors during data delivery. |
on_log | Fires once for each log message. |
on_message_extension | Fired when a Message Extension is present in a message being parsed. |
on_ssl_server_authentication | Fired after the server presents its certificate to the client. |
on_ssl_status | Fired when secure connection progress messages are available. |
Config Settings
The following is a list of config settings for the class with short descriptions. Click on the links for further details.
AccountAgeIndicator | Cardholder Account Age Indicator. |
AccountChangeDate | Cardholder Account Change Date. |
AccountChangeIndicator | Cardholder Account Change Indicator. |
AccountDate | Date cardholder account opened. |
AccountDayTransactions | Number of account transactions in the last day. |
AccountId | Cardholder Account Identifier. |
AccountPasswordChangeDate | Cardholder Account Password Change Date. |
AccountPasswordChangeIndicator | Cardholder Account Password Change Indicator. |
AccountProvisioningAttempts | Number of account provisioning attempts in the last day. |
AccountPurchaseCount | Cardholder Account Purchase Count. |
AccountRequestorID | Cardholder Account Requestor ID. |
AccountYearTransactions | Number of account transactions in the last year. |
ACSChallengeMandatedIndicator | ACS Challenge Mandated Indicator. |
ACSOperatorId | ACS identifier assigned by DS. |
ACSReferenceNumber | Unique ACS Reference Number. |
ACSRenderingDeviceUserInterfaceMode | User interface mode the ACS will present to cardholder. |
ACSRenderingInterface | Challenge interface type presented to cardholder. |
ACSRenderingUITemplate | Challenge type presented to cardholder. |
ACSSignedContent | String value of the JWS object of the ARes message created by the ACS. |
ACSTransactionId | Unique transaction identifier assigned by the ACS. |
AddressMatch | Address Match Indicator. |
AllowNullMethodURL | Allow null MethodURL when retrieving card ranges. |
AppIP | App IP Address. |
AppURLIndicator | 3DS Requestor App URL Indicator. |
AuthenticationInformation | 3DS Requestor Prior Transaction Authentication Information. |
AuthenticationMethod | A comma separated list of authentication types used by the issuer. |
AuthenticationType | Type of authentication method used by the issuer. |
BroadInfo | Broadcast Information. |
BroadInfoCategory | Broadcast Information Category. |
BroadInfoDescription | Broadcast Information Description. |
BroadInfoExpiryDate | Broadcast Information Expiry Date. |
BroadInfoRecipients | Broadcast Information Recipient(s). |
BroadInfoSeverity | Broadcast Information Severity. |
BroadInfoSource | Broadcast Information Source. |
BrowserUserDeviceId | Browser User Device ID. |
BrowserUserId | Browser User ID. |
CardholderInformation | Information text presented to Cardholder during the transaction. |
CardholderInformationIssuerImage | Issuer image presented to the Cardholder during the transaction. |
CardholderInformationPaymentSystemImage | Payment system image presented to the Cardholder during the transaction. |
CardRangeRecordsReadOrder | Indicates the order in which to process the card range records from the PRes message. |
CardRangeTempPath | Temporary path where card range data is written. |
CardSecurityCode | Card Security Code. |
CardSecurityCodeStatus | Card Security Code Status. |
CardSecurityCodeStatusSource | Card Security Code Status Source. |
ChallengeCancellationIndicator | Challenge Cancellation Indicator. |
ChallengeErrorReportingACSTransID | Challenge Error Reporting ACS Transaction ID. |
ChallengeErrorReportingDSTransID | Challenge Error Reporting DS Transaction ID. |
ChallengeErrorReportingErrorCode | Challenge Error Reporting Error Code. |
ChallengeErrorReportingErrorComponent | Challenge Error Reporting Error Class. |
ChallengeErrorReportingErrorDescription | Challenge Error Reporting Error Description. |
ChallengeErrorReportingErrorDetail | Challenge Error Reporting Error Detail. |
ChallengeErrorReportingErrorMessageType | Challenge Error Reporting Error Message Type. |
ChallengeErrorReportingMessageType | Challenge Error Reporting Message Type. |
ChallengeErrorReportingMessageVersion | Challenge Error Reporting Message Version. |
ChallengeErrorReportingSDKTransID | Challenge Error Reporting SDK Transaction ID. |
ChallengeErrorReportingThreeDSServerTransID | Challenge Error Reporting Server Transaction ID. |
ChallengeTimeRemaining | Amount of time left to complete challenge. |
CheckSPCTimeout | Time remaining for SPC authentication to complete. |
ClearCustomRequestFields | Clear the custom request fields internal collection. |
ContinueParsingCardRangesOnError | Whether or not to continue parsing card ranges when a validation error is encountered. |
DecoupledConfirmationIndicator | ACS Decoupled Confirmation Indicator. |
DecoupledMaxTimeout | 3DS Requestor Decoupled Max Time. |
DecoupledRequestIndicator | 3DS Requestor Decoupled Request Indicator. |
DecoupledTimeRemaining | Time remaining before a RReq should be received during a decoupled authentication. |
DeliveryEmailAddress | Merchandise Delivery Email Address. |
DeliveryTimeframe | Merchandise Delivery Timeframe. |
DeviceBindingStatus | Device Binding Status. |
DeviceBindingStatusSource | Device Binding Status Source. |
DeviceInfoRecognisedVersion | Device Information Recognized Version. |
DeviceRenderingInterface | SDK Interface Device Rendering Types supported. |
DeviceRenderingUIType | SDK UI Types supported. |
DSEndProtocolVersion | DS End Protocol Version. |
DSReferenceNumber | DS Reference Number. |
DSStartProtocolVersion | DS Start Protocol Version. |
DSTransactionId | Directory server transaction ID. |
EMVPaymentTokenIndicator | EMV Payment Token Indicator. |
EMVPaymentTokenSource | EMV Payment Token Source. |
EnableDownloadCardRangeDataFile | Card Range Data Download Indicator. |
EncodedSessionData | Encoded session data that is sent in the challenge request and returned in the challenge response. |
EncryptedDeviceInfo | SDK Encrypted Data. |
ErrorCode | Code from the last error message. |
ErrorDescription | Description from the last error message. |
ErrorDetail | Additional details from the last error message. |
ExtractRReqServerTransactionId | Extacts the ServerTransactionId from the RReq packet. |
GiftCardAmount | Total gift card(s) amount. |
GiftCardCount | Total number of gift cards purchased. |
GiftCardCurrency | Gift Card Currency. |
IncomingExtensionCount | The number of extensions received from the directory server. |
IncomingExtensionCritical[Index] | Whether the extension is critical. |
IncomingExtensionData[Index] | The extension data as JSON. |
IncomingExtensionId[Index] | The id of the specified extension. |
IncomingExtensionName[Index] | The extension name. |
IncomingRawExtensions | The full JSON formatted extension data received from the directory server. |
InstalmentPaymentData | Max authorizations permitted for installment payments. |
InteractionCounter | Interaction Counter. |
LogLevel | Level of logging enabled. |
MaskSensitive | Whether to mask sensitive data in the Log event. |
MessageType | Type of message that is passed. |
MethodCompletionIndicator | 3DS Method Completion Indicator. |
MultiTransactionAcquirerMerchantID | Acquirer Merchant ID. |
MultiTransactionAVNumberUse | AV Number Use. |
MultiTransactionAVValidityTime | AV Validity Time. |
MultiTransactionCount | The total number of additional transactions specified. |
MultiTransactionMerchantAmount | Merchant Amount. |
MultiTransactionMerchantCurrencyCode | Merchant Currency Code. |
MultiTransactionMerchantCurrencyExponent | Merchant Currency Exponent. |
MultiTransactionMerchantName | Merchant Name. |
MultiTransactionSellerID | Seller ID. |
OutgoingRawExtensions | The full JSON formatted extension data sent to the directory server. |
PaymentAccountAge | Payment Account Age. |
PaymentAccountAgeIndicator | Payment Account Age Indicator. |
PaymentToken | EMV Payment Token. |
PaymentTokenAdditionalData | EMV Payment Token Additional Data. |
PaymentTokenCryptogram | EMV Payment Token Cryptogram. |
PaymentTokenStatusIndicator | EMV Payment Token Status Indicator. |
PersistCustomRequestFields | Whether or not to store custom request fields for subsequent requests. |
PreOrderDate | Expected date pre-ordered purchase will be available. |
PreOrderPurchaseIndicator | Pre-Order Purchase Indicator. |
ProtocolVersion | Protocol version identifier. |
RecurringAmount | Recurring Amount. |
RecurringAmountIndicator | Recurring Amount Indicator. |
RecurringCurrency | Recurring Currency. |
RecurringDate | Recurring Date. |
RecurringExponent | Recurring Currency Exponent. |
RecurringFrequencyIndicator | Recurring Frequency Indicator. |
ReorderItemsIndicator | Reorder Items Indicator. |
ReportCardRangeError | Report a Card Range Error to the DS. |
ReqAuthCount | Number of 3DS Requestor Authentication Data objects. |
ReqAuthData[Index] | 3DS Requestor Authentication Data. |
ReqAuthMethod[Index] | 3DS Requestor Authentication Method. |
ReqAuthTimestamp[Index] | 3DS Requestor Authentication Timestamp. |
RequestorChallengeInd | 3DS Requestor Challenge Indicator. |
ResendRequestCardRanges | Whether or not to resend the card ranges request. |
SdkAppId | SDK App ID. |
SdkAuthenticationType | SDK Authentication Type. |
SDKEphemeralPublicKey | Public key class of the ephemeral key pair generated by the Client. |
SDKMaxTimeout | SDK Maximum Timeout. |
SDKMaxTimeout | SDK Maximum Timeout. |
SDKReferenceNumber | Assigned SDK reference number. |
SDKServerSignedContent | SDK Server Signed Content. |
SDKTransactionId | SDK Transaction ID. |
SDKWrapped | Default-SDK Wrapped Indicator. |
SellerInfo | Seller Information. |
ServerOperatorId | 3DS Server identifier. |
SessionData | Session data that is sent in the challenge request and returned in the challenge response. |
ShipAddressUsageDate | Shipping address first usage date. |
ShipAddressUsageIndicator | Shipping address usage indicator. |
ShipIndicator | Shipping method indicator. |
ShipNameIndicator | Shipping Name Indicator. |
SPCIncompletionIndicator | SPC Incompletion Indicator. |
SPCTransactionAdditionalData | SPC Transaction Additional Data. |
SPCTransactionChallenge | SPC Transaction Challenge. |
SPCTransactionChallengeInfoText | SPC Transaction Challenge Information Text. |
SPCTransactionCurrency | SPC Transaction Currency. |
SPCTransactionDisplayName | SPC Transaction Display Name. |
SPCTransactionExtensionIndicator | SPC Transaction WebAuthn SPC Extension Indicator. |
SPCTransactionIcon | SPC Transaction Icon. |
SPCTransactionIssuerImage | SPC Transaction Issuer Default Image. |
SPCTransactionIssuerImageDark | SPC Transaction Issuer Dark Mode Image. |
SPCTransactionIssuerImageMonochrome | SPC Transaction Issuer Monochrome Image. |
SPCTransactionPayeeName | SPC Transaction Payee Name. |
SPCTransactionPayeeOrigin | SPC Transaction Payee Origin. |
SPCTransactionPSImage | SPC Transaction Payment System Default Image. |
SPCTransactionPSImageDark | SPC Transaction Payment System Dark Mode Image. |
SPCTransactionPSImageMonochrome | SPC Transaction Payment System Monochrome Image. |
SPCTransactionTimeout | SPC Transaction Transaction Timeout. |
SPCTransactionValue | SPC Transaction Value. |
SplitSDKLimited | Limited Split-SDK Indicator. |
SplitSDKVariant | Split-SDK Variant. |
StoreCardRangeData | Whether or not to store the card ranges in the CardRanges collection. |
SuspiciousAccountActivity | Suspicious account activity indicator. |
TaxId | Tax ID. |
ThreeDSMethodId | 3DS Method ID. |
ThreeDSRequestorSpcSupport | 3DS Requestor SPC Support. |
ThreeRIIndicator | 3RI Indicator. |
TransactionChallengeExemption | Transaction Challenge Exemption. |
TransactionCharacteristics | Transaction Characteristics. |
TransactionStatusReason | Reason for value of TransactionStatus. |
TransactionStatusReasonInfo | Transaction Status Reason Information. |
TransactionType | Transaction Type. |
TrustListStatus | Trust List Status. |
TrustListStatusSource | Trust List Status Source. |
UseAESGCM | Whether or not to use AESGCM as the encryption algorithm. |
UseJsonDOM | Whether or not the class should build an internal DOM when parsing card ranges. |
WebAuthnCredentialListCount | The total number of WebAuthen Credentials. |
WebAuthnCredentialListRelyingPartyId | WebAuthn Credential List: Relying Party ID. |
WebAuthnCredentialListWebAuthnCredential | WebAuthn Credential List: WebAuthn Credential. |
WhitelistStatus | Whitelist Status. |
WhitelistStatusSource | Whitelist Status Source. |
XChildCount | The number of child elements of the current element. |
XChildName[i] | The name of the child element. |
XChildXText[i] | The inner text of the child element. |
XElement | The name of the current element. |
XParent | The parent of the current element. |
XPath | Provides a way to point to a specific element in the returned XML or JSON response. |
XSubTree | A snapshot of the current element in the document. |
XText | The text of the current element. |
LogSSLPackets | Controls whether SSL packets are logged when using the internal security API. |
OpenSSLCADir | The path to a directory containing CA certificates. |
OpenSSLCAFile | Name of the file containing the list of CA's trusted by your application. |
OpenSSLCipherList | A string that controls the ciphers to be used by SSL. |
OpenSSLPrngSeedData | The data to seed the pseudo random number generator (PRNG). |
ReuseSSLSession | Determines if the SSL session is reused. |
SSLCACertFilePaths | The paths to CA certificate files on Unix/Linux. |
SSLCACerts | A newline separated list of CA certificates to be included when performing an SSL handshake. |
SSLCheckCRL | Whether to check the Certificate Revocation List for the server certificate. |
SSLCheckOCSP | Whether to use OCSP to check the status of the server certificate. |
SSLCipherStrength | The minimum cipher strength used for bulk encryption. |
SSLClientCACerts | A newline separated list of CA certificates to use during SSL client certificate validation. |
SSLEnabledCipherSuites | The cipher suite to be used in an SSL negotiation. |
SSLEnabledProtocols | Used to enable/disable the supported security protocols. |
SSLEnableRenegotiation | Whether the renegotiation_info SSL extension is supported. |
SSLIncludeCertChain | Whether the entire certificate chain is included in the SSLServerAuthentication event. |
SSLKeyLogFile | The location of a file where per-session secrets are written for debugging purposes. |
SSLNegotiatedCipher | Returns the negotiated cipher suite. |
SSLNegotiatedCipherStrength | Returns the negotiated cipher suite strength. |
SSLNegotiatedCipherSuite | Returns the negotiated cipher suite. |
SSLNegotiatedKeyExchange | Returns the negotiated key exchange algorithm. |
SSLNegotiatedKeyExchangeStrength | Returns the negotiated key exchange algorithm strength. |
SSLNegotiatedVersion | Returns the negotiated protocol version. |
SSLSecurityFlags | Flags that control certificate verification. |
SSLServerCACerts | A newline separated list of CA certificates to use during SSL server certificate validation. |
TLS12SignatureAlgorithms | Defines the allowed TLS 1.2 signature algorithms when SSLProvider is set to Internal. |
TLS12SupportedGroups | The supported groups for ECC. |
TLS13KeyShareGroups | The groups for which to pregenerate key shares. |
TLS13SignatureAlgorithms | The allowed certificate signature algorithms. |
TLS13SupportedGroups | The supported groups for (EC)DHE key exchange. |
accept_language Property
HTTP accept language header value sent from the cardholder's browser.
Syntax
def get_accept_language() -> str: ... def set_accept_language(value: str) -> None: ...
accept_language = property(get_accept_language, set_accept_language)
Default Value
""
Remarks
Value representing the browser language preference present in the HTTP header, as defined in IETF BCP 47.
This property accepts a comma separated list of language tags. For example: en,fr-FR
Valid for message_version 2.3.1 only.
account_type Property
Indicates the type of account.
Syntax
def get_account_type() -> str: ... def set_account_type(value: str) -> None: ...
account_type = property(get_account_type, set_account_type)
Default Value
""
Remarks
This is included in the Authentication Request Message (AReq) sent to the directory server. Required if the 3-D Secure Requestor is asking the cardholder which account type they are using before making the purchase. Required in some markets (for example, for merchants in Brazil). Otherwise, this is optional.
Valid values are as follows:
01 | Not applicable |
02 | Credit |
03 | Debit |
acquirer_bin Property
Acquiring institution identification code.
Syntax
def get_acquirer_bin() -> str: ... def set_acquirer_bin(value: str) -> None: ...
acquirer_bin = property(get_acquirer_bin, set_acquirer_bin)
Default Value
""
Remarks
This value correlates to the Acquirer BIN as defined by each payment system or directory server. This field is required to be set for payment authentication.
acquirer_country_code Property
Acquirer Country Code.
Syntax
def get_acquirer_country_code() -> str: ... def set_acquirer_country_code(value: str) -> None: ...
acquirer_country_code = property(get_acquirer_country_code, set_acquirer_country_code)
Default Value
""
Remarks
The code of the country where the acquiring institution is located (in accordance with ISO 3166).
This value should be formatted as a ISO 3166-1 numeric three-digit country code.
Valid for message_version 2.3.1 only.
acquirer_merchant_id Property
Acquirer-assigned merchant identifier.
Syntax
def get_acquirer_merchant_id() -> str: ... def set_acquirer_merchant_id(value: str) -> None: ...
acquirer_merchant_id = property(get_acquirer_merchant_id, set_acquirer_merchant_id)
Default Value
""
Remarks
This field contains the merchant identifier assigned by the acquirer. The merchant id is required to be set for payment authentication.
acs_protocol_info_count Property
The number of records in the ACSProtocolInfo arrays.
Syntax
def get_acs_protocol_info_count() -> int: ...
acs_protocol_info_count = property(get_acs_protocol_info_count, None)
Default Value
0
Remarks
This property controls the size of the following arrays:
- acs_protocol_info_indicator
- acs_protocol_info_protocol_version
- acs_protocol_info_supported_msg_ext
- acs_protocol_info_three_ds_method_url
This property is read-only.
acs_protocol_info_indicator Property
Additional information on the card range as supplied by the ACS.
Syntax
def get_acs_protocol_info_indicator(acs_protocol_info_index: int) -> str: ...
Default Value
""
Remarks
Additional information on the card range as supplied by the ACS. This field is a comma separated list of values returned from the server; possible values are:
01 | Authentication Available at ACS |
02 | Attempts Supported by ACS or DS |
03 | Decoupled Authentication Supported |
04 | Trust List Supported |
05 | Device Binding Supported |
06 | WebAuthn Authentication Supported |
07 | SPC Authentication Supported |
08 | Transaction Risk Analysis Exemption Supported |
09 | Trust List Exemption Supported |
10 | Low Value Exemption Supported |
11 | Secure Corporate Payments Exemption Supported |
12-79 | Reserved for EMVCo future use (values invalid until defined by EMVCo) |
80-99 | Reserved for DS use |
The acs_protocol_info_index parameter specifies the index of the item in the array. The size of the array is controlled by the acs_protocol_info_count property.
This property is read-only.
acs_protocol_info_protocol_version Property
The Protocol Version supported by the ACS for the card range.
Syntax
def get_acs_protocol_info_protocol_version(acs_protocol_info_index: int) -> str: ...
Default Value
""
Remarks
The Protocol Version supported by the ACS for the card range.
The acs_protocol_info_index parameter specifies the index of the item in the array. The size of the array is controlled by the acs_protocol_info_count property.
This property is read-only.
acs_protocol_info_supported_msg_ext Property
A list of message extensions supported by the ACS that contains the Assigned Extension Group Identifier and the Extension Version Number.
Syntax
def get_acs_protocol_info_supported_msg_ext(acs_protocol_info_index: int) -> str: ...
Default Value
""
Remarks
A list of message extensions supported by the ACS that contains the Assigned Extension Group Identifier and the Extension Version Number.
This field is a comma separate list of values returned from the server in the following format:
id,version;id2,version2;...
The acs_protocol_info_index parameter specifies the index of the item in the array. The size of the array is controlled by the acs_protocol_info_count property.
This property is read-only.
acs_protocol_info_three_ds_method_url Property
The ACS URL that will be used by the 3DS Method for a particular protocol version.
Syntax
def get_acs_protocol_info_three_ds_method_url(acs_protocol_info_index: int) -> str: ...
Default Value
""
Remarks
The ACS URL that will be used by the 3DS Method for a particular protocol version.
The acs_protocol_info_index parameter specifies the index of the item in the array. The size of the array is controlled by the acs_protocol_info_count property.
This property is read-only.
acsurl Property
URL of the ACS to be used for the challenge.
Syntax
def get_acsurl() -> str: ... def set_acsurl(value: str) -> None: ...
acsurl = property(get_acsurl, set_acsurl)
Default Value
""
Remarks
This field contains the fully qualified URL of the ACS to be used for the challenge. This will be populated after the call to send_auth_request method if the Authentication Response Message (ARes) indicates that a challenge is required.
authentication_eci Property
Value to be passed in the authorization message.
Syntax
def get_authentication_eci() -> str: ...
authentication_eci = property(get_authentication_eci, None)
Default Value
""
Remarks
This property is determined by the Access Control Server (ACS), and is filled after the call to send_auth_request (for a frictionless flow), or when the Results Request Message (RReq) is parsed using check_response (for a challenge flow).
This property contains the two digit Electronic Commerce Indicator (ECI) value, which is to be submitted in a credit card authorization message. This value indicates to the processor that the customer data in the authorization message has been authenticated. The data contained within this property is only valid if the transaction_status is "Y" or "A".
This property is read-only.
authentication_indicator Property
3DS Requestor Authentication Indicator.
Syntax
def get_authentication_indicator() -> str: ... def set_authentication_indicator(value: str) -> None: ...
authentication_indicator = property(get_authentication_indicator, set_authentication_indicator)
Default Value
"01"
Remarks
Indicates the type of Authentication request. This data element provides additional information to the ACS to determine the best approach for handing an authentication request. Included in the Authorization Request Message (ARes) sent by the send_auth_request method. Possible values are:
01 | Payment - default |
02 | Recurring |
03 | Installment |
04 | Add Card |
05 | Maintain Card |
06 | Verify Cardholder |
07 | Billing Agreement |
08 | Split Shipment |
09 | Delayed Shipment |
10 | Split Payment |
11-79 | Reserved for EMVCo future use (values invalid until defined by EMVCo) |
80-99 | Reserved for DS use |
authentication_value Property
Used to provide proof of authentication.
Syntax
def get_authentication_value() -> str: ...
authentication_value = property(get_authentication_value, None)
Default Value
""
Remarks
This property is determined by the Access Control Server (ACS), and is filled after the call to send_auth_request (for a frictionless flow), or when the Results Request Message (RReq) is parsed using check_response (for a challenge flow).
This property will be valid if the transaction_status is "Y" or "A". The value may be used to provide proof of authentication.
This property is read-only.
billing_address_city Property
The city of the address.
Syntax
def get_billing_address_city() -> str: ... def set_billing_address_city(value: str) -> None: ...
billing_address_city = property(get_billing_address_city, set_billing_address_city)
Default Value
""
Remarks
The city of the address. The maximum length is 50 characters.
billing_address_country Property
The country of the address.
Syntax
def get_billing_address_country() -> str: ... def set_billing_address_country(value: str) -> None: ...
billing_address_country = property(get_billing_address_country, set_billing_address_country)
Default Value
""
Remarks
The country of the address. The format is a 3 digit country code as defined in ISO 3166-1.
billing_address_line1 Property
The first line of the street address or equivalent local portion of the address.
Syntax
def get_billing_address_line1() -> str: ... def set_billing_address_line1(value: str) -> None: ...
billing_address_line1 = property(get_billing_address_line1, set_billing_address_line1)
Default Value
""
Remarks
The first line of the street address or equivalent local portion of the address. The maximum length is 50 characters.
billing_address_line2 Property
The second line of the street address or equivalent local portion of the address.
Syntax
def get_billing_address_line2() -> str: ... def set_billing_address_line2(value: str) -> None: ...
billing_address_line2 = property(get_billing_address_line2, set_billing_address_line2)
Default Value
""
Remarks
The second line of the street address or equivalent local portion of the address. The maximum length is 50 characters.
billing_address_line3 Property
The third line of the street address or equivalent local portion of the address.
Syntax
def get_billing_address_line3() -> str: ... def set_billing_address_line3(value: str) -> None: ...
billing_address_line3 = property(get_billing_address_line3, set_billing_address_line3)
Default Value
""
Remarks
The third line of the street address or equivalent local portion of the address. The maximum length is 50 characters.
billing_address_postal_code Property
The ZIP or other postal code of the address.
Syntax
def get_billing_address_postal_code() -> str: ... def set_billing_address_postal_code(value: str) -> None: ...
billing_address_postal_code = property(get_billing_address_postal_code, set_billing_address_postal_code)
Default Value
""
Remarks
The ZIP or other postal code of the address. The maximum length is 16 characters.
billing_address_state Property
The state or province of the address.
Syntax
def get_billing_address_state() -> str: ... def set_billing_address_state(value: str) -> None: ...
billing_address_state = property(get_billing_address_state, set_billing_address_state)
Default Value
""
Remarks
The state or province of the address. The maximum length is 3 characters and should be the country subdivision code defined in ISO 3166-2.
browser_accept_header Property
HTTP accept header sent from the cardholder's browser.
Syntax
def get_browser_accept_header() -> str: ... def set_browser_accept_header(value: str) -> None: ...
browser_accept_header = property(get_browser_accept_header, set_browser_accept_header)
Default Value
""
Remarks
This field contains the exact content of the HTTP accept header as sent to the merchant from the cardholder's user agent. This field is required only if the cardholder's user agent supplied a value.
browser_ip_address Property
IP address of the cardholder's browser.
Syntax
def get_browser_ip_address() -> str: ... def set_browser_ip_address(value: str) -> None: ...
browser_ip_address = property(get_browser_ip_address, set_browser_ip_address)
Default Value
""
Remarks
This field contains the IP address of the cardholder's browser as returned by the HTTP headers.
browser_java_enabled_val Property
Ability of the cardholder's browser to execute Java.
Syntax
def get_browser_java_enabled_val() -> int: ... def set_browser_java_enabled_val(value: int) -> None: ...
browser_java_enabled_val = property(get_browser_java_enabled_val, set_browser_java_enabled_val)
Default Value
0
Remarks
This field contains a value representing the ability of the cardholder's browser to execute Java.
Possible values are as follows:
jeNotPresent (0) | Not Present |
jeTrue (1) | True |
jeFalse (2) | False |
browser_java_script_enabled_val Property
Ability of the cardholder's browser to execute JavaScript.
Syntax
def get_browser_java_script_enabled_val() -> int: ... def set_browser_java_script_enabled_val(value: int) -> None: ...
browser_java_script_enabled_val = property(get_browser_java_script_enabled_val, set_browser_java_script_enabled_val)
Default Value
0
Remarks
This field contains a value representing the ability of the cardholder's browser to execute JavaScript.
Possible values are as follows:
bjeNotPresent (0) | Not Present |
bjeTrue (1) | True |
bjeFalse (2) | False |
browser_language Property
The cardholder's browser language.
Syntax
def get_browser_language() -> str: ... def set_browser_language(value: str) -> None: ...
browser_language = property(get_browser_language, set_browser_language)
Default Value
""
Remarks
This field contains the cardholder's browser language as defined in IETF BCP 47.
browser_screen_color_depth Property
The screen color depth of the cardholder's browser.
Syntax
def get_browser_screen_color_depth() -> str: ... def set_browser_screen_color_depth(value: str) -> None: ...
browser_screen_color_depth = property(get_browser_screen_color_depth, set_browser_screen_color_depth)
Default Value
""
Remarks
This field contains a value representing the bit depth of the color palette, in bits per pixel, for displaying images.
For message_version 2.1.0, this field is required. If browser_java_enabled_val is False, a value of 1 can be used. When using message_version of 2.2.0 or 2.3.1 and both browser_java_enabled_val and browser_java_script_enabled_val are False, no value is required.
browser_screen_height Property
The screen height of the cardholder's browser.
Syntax
def get_browser_screen_height() -> str: ... def set_browser_screen_height(value: str) -> None: ...
browser_screen_height = property(get_browser_screen_height, set_browser_screen_height)
Default Value
""
Remarks
This field contains the total height of the cardholder's screen in pixels.
For message_version 2.1.0, this field is required. If browser_java_enabled_val is False, a value of 0 can be used. When using message_version of 2.2.0 or 2.3.1 and both browser_java_enabled_val and browser_java_script_enabled_val are False, no value is required.
browser_screen_width Property
The screen width of the cardholder's browser.
Syntax
def get_browser_screen_width() -> str: ... def set_browser_screen_width(value: str) -> None: ...
browser_screen_width = property(get_browser_screen_width, set_browser_screen_width)
Default Value
""
Remarks
This field contains the total width of the cardholder's screen in pixels.
For message_version 2.1.0, this field is required. If browser_java_enabled_val is False, a value of 0 can be used. When using message_version of 2.2.0 or 2.3.1 and both browser_java_enabled_val and browser_java_script_enabled_val are False, no value is required.
browser_time_zone Property
The timezone offset of the cardholder's browser.
Syntax
def get_browser_time_zone() -> str: ... def set_browser_time_zone(value: str) -> None: ...
browser_time_zone = property(get_browser_time_zone, set_browser_time_zone)
Default Value
""
Remarks
This field contains the difference between UTC time and the cardholder's browser local time in minutes.
For message_version 2.1.0, this field is required. If browser_java_enabled_val is False, a value of 0 can be used. When using message_version of 2.2.0 or 2.3.1 and both browser_java_enabled_val and browser_java_script_enabled_val are False, no value is required.
browser_user_agent Property
The User-Agent provided by the cardholder's browser.
Syntax
def get_browser_user_agent() -> str: ... def set_browser_user_agent(value: str) -> None: ...
browser_user_agent = property(get_browser_user_agent, set_browser_user_agent)
Default Value
""
Remarks
This field contains the exact content of the HTTP User-Agent header.
card_exp_date Property
Expiration date of the PAN or Token.
Syntax
def get_card_exp_date() -> str: ... def set_card_exp_date(value: str) -> None: ...
card_exp_date = property(get_card_exp_date, set_card_exp_date)
Default Value
""
Remarks
This field contains the expiration date of the PAN or Token supplied in the card_number property. The format for this field is YYMM.
cardholder_email Property
The cardholder email address.
Syntax
def get_cardholder_email() -> str: ... def set_cardholder_email(value: str) -> None: ...
cardholder_email = property(get_cardholder_email, set_cardholder_email)
Default Value
""
Remarks
This field contains the cardholder email address to be sent to the directory server when calling send_auth_request.
cardholder_home_phone Property
The cardholder home phone number.
Syntax
def get_cardholder_home_phone() -> str: ... def set_cardholder_home_phone(value: str) -> None: ...
cardholder_home_phone = property(get_cardholder_home_phone, set_cardholder_home_phone)
Default Value
""
Remarks
This field contains the home phone number provided by the card holder.
Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)
The "-" is used to separate the "Country Code" and "Subscriber" sections. The values are then formatted according to the EMVCo specification (a JSON object) in the request like so:
"homePhone": { "cc": "1", "subscriber": "1234567899" }
cardholder_mobile_phone Property
The cardholder mobile phone number.
Syntax
def get_cardholder_mobile_phone() -> str: ... def set_cardholder_mobile_phone(value: str) -> None: ...
cardholder_mobile_phone = property(get_cardholder_mobile_phone, set_cardholder_mobile_phone)
Default Value
""
Remarks
This field contains the mobile phone number provided by the cardholder.
Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)
The "-" is used to separate the "Country Code" and "Subscriber" sections. The values are then formatted according to the EMVCo specification (a JSON object) in the request like so:
"homePhone": { "cc": "1", "subscriber": "1234567899" }
cardholder_name Property
Name of the cardholder.
Syntax
def get_cardholder_name() -> str: ... def set_cardholder_name(value: str) -> None: ...
cardholder_name = property(get_cardholder_name, set_cardholder_name)
Default Value
""
Remarks
This property contains the name of the cardholder. Limited to the alphanumeric characters listed in EMV Book 4, Annex B. Required to be set unless market or regional mandates restricts sending this information.
cardholder_work_phone Property
The cardholder work phone number.
Syntax
def get_cardholder_work_phone() -> str: ... def set_cardholder_work_phone(value: str) -> None: ...
cardholder_work_phone = property(get_cardholder_work_phone, set_cardholder_work_phone)
Default Value
""
Remarks
This field contains the work phone number provided by the cardholder.
Phone numbers must be specified in the following format: CountryCode-Subscriber (e.g. 1-1234567899)
The "-" is used to separate the "Country Code" and "Subscriber" sections. The values are then formatted according to the EMVCo specification (a JSON object) in the request like so:
"homePhone": { "cc": "1", "subscriber": "1234567899" }
card_number Property
Customer's account number that will be authenticated.
Syntax
def get_card_number() -> str: ... def set_card_number(value: str) -> None: ...
card_number = property(get_card_number, set_card_number)
Default Value
""
Remarks
This property contains the customer's credit card number (PAN) or token that will be used in the authorization request for payment transactions. This property is 13-19 characters long.
card_range_count Property
The number of records in the CardRange arrays.
Syntax
def get_card_range_count() -> int: ...
card_range_count = property(get_card_range_count, None)
Default Value
0
Remarks
This property controls the size of the following arrays:
- card_range_acs_end_protocol_version
- card_range_acs_information_indicator
- card_range_acs_start_protocol_version
- card_range_action
- card_range_ds_end_protocol_version
- card_range_ds_start_protocol_version
- card_range_end
- card_range_method_url
- card_range_start
This property is read-only.
card_range_acs_end_protocol_version Property
The most recent active protocol version that is supported by the ACS.
Syntax
def get_card_range_acs_end_protocol_version(card_range_index: int) -> str: ...
Default Value
""
Remarks
The most recent active protocol version that is supported by the ACS.
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
card_range_acs_information_indicator Property
Additional information on the card range as supplied by the ACS.
Syntax
def get_card_range_acs_information_indicator(card_range_index: int) -> str: ...
Default Value
"0"
Remarks
Additional information on the card range as supplied by the ACS. This property is a comma separate list of values returned from the server; possible values are:
- 01 - Authentication Available at ACS
- 02 - Attempts Supported by ACS or DS
- 03 - Decoupled Authentication Supported
- 04 - Whitelisting Supported
- 05 - Device Binding Supported (2.3.1 only)
- 06 - WebAuthn Authentication Supported (2.3.1 only)
- 07 - SPC Authentication Supported (2.3.1 only)
- 08 - Transaction Risk Analysis Exemption Supported (2.3.1 only)
- 09 - Trust List Exemption Supported (2.3.1 only)
- 10 - Low Value Exemption Supported (2.3.1 only)
- 11 - Secure Corporate Payments Exemption Supported (2.3.1 only)
- 80-99 - Reserved for DS Use
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
card_range_acs_start_protocol_version Property
The earliest (i.
Syntax
def get_card_range_acs_start_protocol_version(card_range_index: int) -> str: ...
Default Value
""
Remarks
The earliest (i.e. oldest) active protocol version that is supported by the ACS.
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
card_range_action Property
The action to be taken with the card range specified by the Start and End properties.
Syntax
def get_card_range_action(card_range_index: int) -> str: ...
Default Value
""
Remarks
The action to be taken with the card range specified by the card_range_start and card_range_end fields. Possible values are:
- A - Add the card range to the cache (default value)
- D - Delete the card range from the cache
- M - Modify the card range data
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
card_range_ds_end_protocol_version Property
The most recent active protocol version that is supported by the DS.
Syntax
def get_card_range_ds_end_protocol_version(card_range_index: int) -> str: ...
Default Value
""
Remarks
The most recent active protocol version that is supported by the DS.
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
card_range_ds_start_protocol_version Property
The earliest (i.
Syntax
def get_card_range_ds_start_protocol_version(card_range_index: int) -> str: ...
Default Value
""
Remarks
The earliest (i.e. oldest) active protocol version that is supported by the DS.
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
card_range_end Property
Last number in a range of credit card numbers returned by the Directory Server.
Syntax
def get_card_range_end(card_range_index: int) -> str: ...
Default Value
""
Remarks
Last number in a range of credit card numbers returned by the Directory Server.
This property contains the final card number in the current range. The first number in the current range is contained in card_range_start, and the action (add or delete) to take on this range is contained in card_range_action. Note that the card ranges must be processed in the order returned.
Card ranges returned by a Card Range Request are for credit cards that support 3-D Secure. If the customer's credit card number is not within one of these ranges, you cannot use 3-D Secure for that card. Examples of card numbers that may not be eligible for 3-D Secure are check cards, corporate cards, and gift cards.
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
card_range_method_url Property
The ACS URL that will be used by the 3DS method.
Syntax
def get_card_range_method_url(card_range_index: int) -> str: ...
Default Value
""
Remarks
The ACS URL that will be used by the 3DS method.
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
card_range_start Property
First number in a range of credit card numbers returned by the Directory Server.
Syntax
def get_card_range_start(card_range_index: int) -> str: ...
Default Value
""
Remarks
First number in a range of credit card numbers returned by the Directory Server.
This property contains the first card number in the current range. The final number in the current range is contained in card_range_end, and the action (add or delete) to take on this range is contained in card_range_action. Note that the card ranges must be processed in the order returned.
Card ranges returned by a Card Range Request are for credit cards that support 3-D Secure. If the customer's credit card number is not within one of these ranges, you cannot use 3-D Secure for that card. Examples of card numbers that may not be eligible for 3-D Secure are check cards, corporate cards, and gift cards.
The card_range_index parameter specifies the index of the item in the array. The size of the array is controlled by the card_range_count property.
This property is read-only.
challenge_window_size Property
Challenge window size.
Syntax
def get_challenge_window_size() -> int: ... def set_challenge_window_size(value: int) -> None: ...
challenge_window_size = property(get_challenge_window_size, set_challenge_window_size)
Default Value
1
Remarks
This field indicates the dimensions of the challenge window that has been displayed to the cardholder. The ACS shall reply with content that is formatted to appropriately render in this window to provide the best possible user experience.
Preconfigured sizes are width x height in pixels of the window displayed in the cardholder browser. Possible values are:
1 | 250 x 400 |
2 | 390 x 400 |
3 | 500 x 600 |
4 | 600 x 400 |
5 | Full screen |
This value is included in the Challenge Request Message (CReq) generated by the component when the get_challenge_request methods are called.
client_auth_request Property
The data received by the class to be sent in the authentication request.
Syntax
def get_client_auth_request() -> str: ... def set_client_auth_request(value: str) -> None: ...
client_auth_request = property(get_client_auth_request, set_client_auth_request)
Default Value
""
Remarks
The 3DS SDK should prepare data to be sent by the 3DS Server class. Set client_auth_request to the data received from the 3DS SDK before calling send_auth_request.
See the 3DS SDK documentation for details on preparing this data.
client_auth_response Property
The authentication response for an app-based flow.
Syntax
def get_client_auth_response() -> str: ...
client_auth_response = property(get_client_auth_response, None)
Default Value
""
Remarks
This property is populated after calling send_auth_request, and is only applicable for the app-based flow. If a challenge is required, this data should be sent back to the 3DS SDK over the secure channel.
See send_auth_request for more details about handling the response.
This property is read-only.
data_packet_out Property
Contains the data packet sent to the server.
Syntax
def get_data_packet_out() -> str: ...
data_packet_out = property(get_data_packet_out, None)
Default Value
""
Remarks
After calling either the request_card_ranges, or send_auth_request methods, this property will contain the entire data packet that was sent. Also, after calling the get_challenge_request or get_results_response method, this property will contain the constructed messages. The contents of this property should be logged for each transaction.
This property is read-only.
device_channel Property
Device channel.
Syntax
def get_device_channel() -> str: ... def set_device_channel(value: str) -> None: ...
device_channel = property(get_device_channel, set_device_channel)
Default Value
"02"
Remarks
This field indicates the type of channel interface being used to initiate the transaction.
Possible values include:
01 | App-based |
02 - default | Browser |
03 | 3DS Requestor Initiated (3RI) |
directory_server_url Property
The address of the Directory Server.
Syntax
def get_directory_server_url() -> str: ... def set_directory_server_url(value: str) -> None: ...
directory_server_url = property(get_directory_server_url, set_directory_server_url)
Default Value
""
Remarks
This is the URL to which the request_card_ranges and send_auth_request methods post.
ds_supported_protocols Property
Protocol Versions supported by the DS.
Syntax
def get_ds_supported_protocols() -> int: ... def set_ds_supported_protocols(value: int) -> None: ...
ds_supported_protocols = property(get_ds_supported_protocols, set_ds_supported_protocols)
Default Value
0
Remarks
The active protocol versions supported by the Directory Server. A bitwise OR of the following values:
2.1.0 | 0x02 |
2.2.0 | 0x04 |
2.3.1 | 0x08 |
dsurl_count Property
The number of records in the DSURL arrays.
Syntax
def get_dsurl_count() -> int: ...
dsurl_count = property(get_dsurl_count, None)
Default Value
0
Remarks
This property controls the size of the following arrays:
The array indices start at 0 and end at dsurl_count - 1.This property is read-only.
dsurl_country_code Property
The country for which the 3DS Server to DS URL can be used.
Syntax
def get_dsurl_country_code(dsurl_index: int) -> str: ...
Default Value
""
Remarks
The country for which the 3DS Server to DS URL can be used.
The dsurl_index parameter specifies the index of the item in the array. The size of the array is controlled by the dsurl_count property.
This property is read-only.
dsurl_three_ds_server_to_ds_url Property
URL that the 3DS Server uses to communicate with a DS for a particular card range.
Syntax
def get_dsurl_three_ds_server_to_ds_url(dsurl_index: int) -> str: ...
Default Value
""
Remarks
URL that the 3DS Server uses to communicate with a DS for a particular card range. If the DS Country Code is absent, the 3DS Server can use this URL for all card ranges.
The dsurl_index parameter specifies the index of the item in the array. The size of the array is controlled by the dsurl_count property.
This property is read-only.
error_packet Property
The error packet.
Syntax
def get_error_packet() -> str: ...
error_packet = property(get_error_packet, None)
Default Value
""
Remarks
If an error is encountered while parsing a received packet using the check_response method, this field will be populated with an error packet to be sent back to the server.
If the message being parsed is an error, this field will be populated with the received error packet itself.
This property is read-only.
extension_count Property
The number of records in the Extension arrays.
Syntax
def get_extension_count() -> int: ... def set_extension_count(value: int) -> None: ...
extension_count = property(get_extension_count, set_extension_count)
Default Value
0
Remarks
This property controls the size of the following arrays:
The array indices start at 0 and end at extension_count - 1.extension_critical Property
Whether the extension is critical.
Syntax
def get_extension_critical(extension_index: int) -> bool: ... def set_extension_critical(extension_index: int, value: bool) -> None: ...
Default Value
FALSE
Remarks
Whether the extension is critical.
This setting specifies whether the recipient must understand the contents of the extension to interpret the entire message.
The extension_index parameter specifies the index of the item in the array. The size of the array is controlled by the extension_count property.
extension_data Property
The extension data as JSON.
Syntax
def get_extension_data(extension_index: int) -> str: ... def set_extension_data(extension_index: int, value: str) -> None: ...
Default Value
""
Remarks
The extension data as JSON.
This setting specifies the JSON formatted extension data.
The extension_index parameter specifies the index of the item in the array. The size of the array is controlled by the extension_count property.
extension_id Property
The id of the specified extension.
Syntax
def get_extension_id(extension_index: int) -> str: ... def set_extension_id(extension_index: int, value: str) -> None: ...
Default Value
""
Remarks
The id of the specified extension.
This setting specifies a unique identifier for the extension.
The extension_index parameter specifies the index of the item in the array. The size of the array is controlled by the extension_count property.
extension_name Property
The extension name.
Syntax
def get_extension_name(extension_index: int) -> str: ... def set_extension_name(extension_index: int, value: str) -> None: ...
Default Value
""
Remarks
The extension name.
This setting specifies the name of the extension as defined by the extension owner.
The extension_index parameter specifies the index of the item in the array. The size of the array is controlled by the extension_count property.
merchant_category_code Property
Merchant category code.
Syntax
def get_merchant_category_code() -> str: ... def set_merchant_category_code(value: str) -> None: ...
merchant_category_code = property(get_merchant_category_code, set_merchant_category_code)
Default Value
""
Remarks
DS-specific code describing the Merchant's type of business, product, or service. Required to be set prior to calling send_auth_request.
merchant_country_code Property
Country code of the merchant.
Syntax
def get_merchant_country_code() -> str: ... def set_merchant_country_code(value: str) -> None: ...
merchant_country_code = property(get_merchant_country_code, set_merchant_country_code)
Default Value
""
Remarks
This field contains the country code of the merchant. This value correlates to the Merchant Country Code as defined by each Payment System or DS. Required to be set prior to calling send_auth_request.
merchant_name Property
Merchant name.
Syntax
def get_merchant_name() -> str: ... def set_merchant_name(value: str) -> None: ...
merchant_name = property(get_merchant_name, set_merchant_name)
Default Value
""
Remarks
The name of the merchant as assigned by the acquirer or payment system. Required to be set prior to calling send_auth_request.
message_category Property
The category of the message.
Syntax
def get_message_category() -> str: ... def set_message_category(value: str) -> None: ...
message_category = property(get_message_category, set_message_category)
Default Value
""
Remarks
This field identifies the category of the message (Payment Authentication or Non-Payment Authentication). This will be sent in the Authentication Request Message (AReq) sent by the component when send_auth_request is called, and in the Results Request Message (RReq) received from the directory server (populated after calling check_response.
Possible values include:
01 (default) | PA (Payment Authentication) |
02 | NPA (Non-Payment Authentication) |
message_version Property
Protocol version identifier.
Syntax
def get_message_version() -> str: ... def set_message_version(value: str) -> None: ...
message_version = property(get_message_version, set_message_version)
Default Value
"2.1.0"
Remarks
The protocol version number of the specification used by the system creating this message.
Possible values are:
2.1.0 (Default) | |
2.2.0 | |
2.3.1 |
method_notification_url Property
The URL to which the method notification will be posted.
Syntax
def get_method_notification_url() -> str: ... def set_method_notification_url(value: str) -> None: ...
method_notification_url = property(get_method_notification_url, set_method_notification_url)
Default Value
""
Remarks
This property specifies the URL to which the ACS will post when the method execution has completed. This must be set before calling get_method_data. See get_method_data for more details.
notification_url Property
The notification URL to which the challenge response is sent.
Syntax
def get_notification_url() -> str: ... def set_notification_url(value: str) -> None: ...
notification_url = property(get_notification_url, set_notification_url)
Default Value
""
Remarks
This property specifies the URL to which the final challenge response is POSTed in a browser-based flow. This must be set before calling send_auth_request.
After the challenge interaction is complete the ACS will post data to the URL specified in this property to notify the application that the challenge is complete. The data received at this URL can be processed by calling check_response. See get_challenge_request and check_response for more details.
operation_info_category Property
Indicates the category/type of information.
Syntax
def get_operation_info_category() -> str: ...
operation_info_category = property(get_operation_info_category, None)
Default Value
""
Remarks
Indicates the category/type of information.
01 | General |
02 | Operational alert |
03 | Public Key Certificate expiry |
04 | Letter of Approval/Attestation of Compliance expiry |
05 | Fraud |
06 | Other |
80-99 | Reserved for DS use |
This property is read-only.
operation_info_description Property
Describes the reason for the operational communication or the response to an action taken by the recipient.
Syntax
def get_operation_info_description() -> str: ...
operation_info_description = property(get_operation_info_description, None)
Default Value
""
Remarks
Describes the reason for the operational communication or the response to an action taken by the recipient.
This property is read-only.
operation_info_expiration_date Property
The date after which the relevance of the operational information expires.
Syntax
def get_operation_info_expiration_date() -> str: ...
operation_info_expiration_date = property(get_operation_info_expiration_date, None)
Default Value
""
Remarks
The date after which the relevance of the operational information expires.
This property is read-only.
operation_info_message_status Property
Indicates the status of the operational request message sequence from the source of the OReq.
Syntax
def get_operation_info_message_status() -> str: ... def set_operation_info_message_status(value: str) -> None: ...
operation_info_message_status = property(get_operation_info_message_status, set_operation_info_message_status)
Default Value
""
Remarks
Indicates the status of the operational request message sequence from the source of the OReq.
01 | Successfully received messages |
02 | Message sequence is broken |
03 | Requested action is not supported or not executed by the 3DS Server or ACS when OReq message was received |
80-99 | Reserved for DS use |
operation_info_prior_transaction_id Property
The transaction ID of the prior transaction to which the operational information refers.
Syntax
def get_operation_info_prior_transaction_id() -> str: ...
operation_info_prior_transaction_id = property(get_operation_info_prior_transaction_id, None)
Default Value
""
Remarks
The transaction ID of the prior transaction to which the operational information refers.
This property is read-only.
operation_info_prior_transaction_id_type Property
The type of transaction ID of the prior transaction to which the operational information refers.
Syntax
def get_operation_info_prior_transaction_id_type() -> int: ...
operation_info_prior_transaction_id_type = property(get_operation_info_prior_transaction_id_type, None)
Default Value
0
Remarks
The type of transaction ID of the prior transaction to which the operational information refers.
01 | 3DS Server |
02 | DS |
03 | ACS |
This property is read-only.
operation_info_sequence_id Property
Uniquely identifies a message sequence and will remain constant in the sequence of messages.
Syntax
def get_operation_info_sequence_id() -> str: ...
operation_info_sequence_id = property(get_operation_info_sequence_id, None)
Default Value
""
Remarks
Uniquely identifies a message sequence and will remain constant in the sequence of messages.
This property is read-only.
operation_info_sequence_number Property
The current message in the sequence.
Syntax
def get_operation_info_sequence_number() -> int: ... def set_operation_info_sequence_number(value: int) -> None: ...
operation_info_sequence_number = property(get_operation_info_sequence_number, set_operation_info_sequence_number)
Default Value
0
Remarks
The current message in the sequence. Set this before calling check_response when an OReq packet is received. The component will verify the sequence number of the received OReq to ensure it's not out of sequence.
operation_info_sequence_total Property
The total number of messages in the sequence and will remain constant in the sequence of messages.
Syntax
def get_operation_info_sequence_total() -> int: ...
operation_info_sequence_total = property(get_operation_info_sequence_total, None)
Default Value
0
Remarks
The total number of messages in the sequence and will remain constant in the sequence of messages.
This property is read-only.
operation_info_severity Property
Indicates the importance/severity level of the operational information.
Syntax
def get_operation_info_severity() -> str: ...
operation_info_severity = property(get_operation_info_severity, None)
Default Value
""
Remarks
Indicates the importance/severity level of the operational information.
01 | Critical |
02 | Major |
03 | Minor |
04 | Informational |
80-99 | Reserved for DS use |
This property is read-only.
proxy_auth_scheme Property
The type of authorization to perform when connecting to the proxy.
Syntax
def get_proxy_auth_scheme() -> int: ... def set_proxy_auth_scheme(value: int) -> None: ...
proxy_auth_scheme = property(get_proxy_auth_scheme, set_proxy_auth_scheme)
Default Value
0
Remarks
The type of authorization to perform when connecting to the proxy. This is used only when the proxy_user and proxy_password properties are set.
proxy_auth_scheme should be set to authNone (3) when no authentication is expected.
By default, proxy_auth_scheme is authBasic (0), and if the proxy_user and proxy_password properties are set, the class will attempt basic authentication.
If proxy_auth_scheme is set to authDigest (1), digest authentication will be attempted instead.
If proxy_auth_scheme is set to authProprietary (2), then the authorization token will not be generated by the class. Look at the configuration file for the class being used to find more information about manually setting this token.
If proxy_auth_scheme is set to authNtlm (4), NTLM authentication will be used.
For security reasons, setting this property will clear the values of proxy_user and proxy_password.
proxy_auto_detect Property
Whether to automatically detect and use proxy system settings, if available.
Syntax
def get_proxy_auto_detect() -> bool: ... def set_proxy_auto_detect(value: bool) -> None: ...
proxy_auto_detect = property(get_proxy_auto_detect, set_proxy_auto_detect)
Default Value
FALSE
Remarks
Whether to automatically detect and use proxy system settings, if available. The default value is False.
proxy_password Property
A password if authentication is to be used for the proxy.
Syntax
def get_proxy_password() -> str: ... def set_proxy_password(value: str) -> None: ...
proxy_password = property(get_proxy_password, set_proxy_password)
Default Value
""
Remarks
A password if authentication is to be used for the proxy.
If proxy_auth_scheme is set to Basic Authentication, the proxy_user and proxy_password properties are Base64 encoded and the proxy authentication token will be generated in the form Basic [encoded-user-password].
If proxy_auth_scheme is set to Digest Authentication, the proxy_user and proxy_password properties are used to respond to the Digest Authentication challenge from the server.
If proxy_auth_scheme is set to NTLM Authentication, the proxy_user and proxy_password properties are used to authenticate through NTLM negotiation.
proxy_port Property
The Transmission Control Protocol (TCP) port for the proxy Server (default 80).
Syntax
def get_proxy_port() -> int: ... def set_proxy_port(value: int) -> None: ...
proxy_port = property(get_proxy_port, set_proxy_port)
Default Value
80
Remarks
The Transmission Control Protocol (TCP) port for the proxy proxy_server (default 80). See the description of the proxy_server property for details.
proxy_server Property
If a proxy Server is given, then the HTTP request is sent to the proxy instead of the server otherwise specified.
Syntax
def get_proxy_server() -> str: ... def set_proxy_server(value: str) -> None: ...
proxy_server = property(get_proxy_server, set_proxy_server)
Default Value
""
Remarks
If a proxy proxy_server is given, then the HTTP request is sent to the proxy instead of the server otherwise specified.
If the proxy_server property is set to a domain name, a DNS request is initiated. Upon successful termination of the request, the proxy_server property is set to the corresponding address. If the search is not successful, an error is returned.
proxy_ssl Property
When to use a Secure Sockets Layer (SSL) for the connection to the proxy.
Syntax
def get_proxy_ssl() -> int: ... def set_proxy_ssl(value: int) -> None: ...
proxy_ssl = property(get_proxy_ssl, set_proxy_ssl)
Default Value
0
Remarks
When to use a Secure Sockets Layer (SSL) for the connection to the proxy. The applicable values are as follows:
psAutomatic (0) | Default setting. If the URL is an https URL, the class will use the psTunnel option. If the URL is an http URL, the class will use the psNever option. |
psAlways (1) | The connection is always SSL-enabled. |
psNever (2) | The connection is not SSL-enabled. |
psTunnel (3) | The connection is made through a tunneling (HTTP) proxy. |
proxy_user Property
A username if authentication is to be used for the proxy.
Syntax
def get_proxy_user() -> str: ... def set_proxy_user(value: str) -> None: ...
proxy_user = property(get_proxy_user, set_proxy_user)
Default Value
""
Remarks
A username if authentication is to be used for the proxy.
If proxy_auth_scheme is set to Basic Authentication, the proxy_user and proxy_password properties are Base64 encoded and the proxy authentication token will be generated in the form Basic [encoded-user-password].
If proxy_auth_scheme is set to Digest Authentication, the proxy_user and proxy_password properties are used to respond to the Digest Authentication challenge from the server.
If proxy_auth_scheme is set to NTLM Authentication, the proxy_user and proxy_password properties are used to authenticate through NTLM negotiation.
purchase_amount Property
Purchase amount to be authorized.
Syntax
def get_purchase_amount() -> str: ... def set_purchase_amount(value: str) -> None: ...
purchase_amount = property(get_purchase_amount, set_purchase_amount)
Default Value
""
Remarks
This field contains the purchase amount to be authorized. The transaction amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated purchase_exponent. This field may not contain a negative number.
purchase_currency Property
Identifies the type of currency used by the merchant.
Syntax
def get_purchase_currency() -> str: ... def set_purchase_currency(value: str) -> None: ...
purchase_currency = property(get_purchase_currency, set_purchase_currency)
Default Value
"840"
Remarks
This field contains the three digit number assigned by the signing member or processor to identify the currency in which purchase_currency is expressed. This property should contain the ISO-4217 numeric code. For example, the ISO code for US Dollars is "840".
purchase_date Property
The date of the transaction.
Syntax
def get_purchase_date() -> str: ... def set_purchase_date(value: str) -> None: ...
purchase_date = property(get_purchase_date, set_purchase_date)
Default Value
""
Remarks
This field contains the date and time of the purchase, expressed in UTC. The format of this field must be: YYYYMMDDHHMMSS
purchase_exponent Property
Minor units of currency.
Syntax
def get_purchase_exponent() -> str: ... def set_purchase_exponent(value: str) -> None: ...
purchase_exponent = property(get_purchase_exponent, set_purchase_exponent)
Default Value
"2"
Remarks
This field indicates the minor units, or number of decimal places, of the currency specified in the purchase_currency property. For instance, the Japanese Yen has a value of "0", the US Dollar a value of "2", and the Kuwati Dinar a value of "3".
range_count Property
The number of records in the Range arrays.
Syntax
def get_range_count() -> int: ...
range_count = property(get_range_count, None)
Default Value
0
Remarks
This property controls the size of the following arrays:
The array indices start at 0 and end at range_count - 1.This property is read-only.
range_end Property
The final card number in the current range.
Syntax
def get_range_end(range_index: int) -> str: ...
Default Value
""
Remarks
The final card number in the current range.
The range_index parameter specifies the index of the item in the array. The size of the array is controlled by the range_count property.
This property is read-only.
range_start Property
The first card number in the current range.
Syntax
def get_range_start(range_index: int) -> str: ...
Default Value
""
Remarks
The first card number in the current range.
The range_index parameter specifies the index of the item in the array. The size of the array is controlled by the range_count property.
This property is read-only.
recurring_exp_date Property
Recurring expiration date.
Syntax
def get_recurring_exp_date() -> str: ... def set_recurring_exp_date(value: str) -> None: ...
recurring_exp_date = property(get_recurring_exp_date, set_recurring_exp_date)
Default Value
""
Remarks
This field contains the date after which no further authorizations shall be performed. The format of this field must be: YYYYMMDD
Required when authentication_indicator is 02 or 03, or when ThreeRIIndicator is 01 or 02.
recurring_frequency Property
The number of days between recurring payments.
Syntax
def get_recurring_frequency() -> str: ... def set_recurring_frequency(value: str) -> None: ...
recurring_frequency = property(get_recurring_frequency, set_recurring_frequency)
Default Value
""
Remarks
This field indicates the minimum number of days between authorizations.
Required when authentication_indicator is 02 or 03, or when ThreeRIIndicator is 01 or 02.
requestor_id Property
Directory server assigned 3DS Requestor identifier.
Syntax
def get_requestor_id() -> str: ... def set_requestor_id(value: str) -> None: ...
requestor_id = property(get_requestor_id, set_requestor_id)
Default Value
""
Remarks
This field contains the 3DS Requestor identifier as assigned by the directory server. This is sent in the Authentication Request Message (AReq) sent by the component in the send_auth_request method.
requestor_name Property
Directory server assigned 3DS Requestor name.
Syntax
def get_requestor_name() -> str: ... def set_requestor_name(value: str) -> None: ...
requestor_name = property(get_requestor_name, set_requestor_name)
Default Value
""
Remarks
This field contains the 3DS Requestor name as assigned by the directory server. This is sent in the Authentication Request Message (AReq) sent by the component in the send_auth_request method.
requestor_url Property
3DS Requestor website or customer care site.
Syntax
def get_requestor_url() -> str: ... def set_requestor_url(value: str) -> None: ...
requestor_url = property(get_requestor_url, set_requestor_url)
Default Value
""
Remarks
This field contains the fully qualified URL of the 3DS Requestor website or customer care site. This is sent in the Authentication Request Message (AReq) sent by the component in the send_auth_request method.
results_status Property
The status of the Results Request.
Syntax
def get_results_status() -> int: ... def set_results_status(value: int) -> None: ...
results_status = property(get_results_status, set_results_status)
Default Value
0
Remarks
This field contains the status of the results request and is used when generating the Results Response Message (RRes) via the get_results_response method. This will indicate if the message was successfully received for further processing or provide more detail to the ACS on why the challenge could not be completed.
Possible values include:
01 | Results Request Received for further Processing. |
02 | Challenge Request not sent to ACS by 3DS Requestor (3DS Server or 3DS Requestor opted out of the challenge). |
03 | ARes challenge data not delivered to the 3DS Requestor due to technical error. |
04 | 3DS Server will process Decoupled Authentication in a subsequent authentication. |
Before calling get_results_response, the Server can use the value of the RequestorChallengeInd to determine whether or not a value of 02 is appropriate. It must use the necessary error handling logic when processing ARes messages to determine whether or not a value of 03 is appropriate.
If the transaction_status is D and a DecoupledRequestIndicator value of F or B was used, results_status should be set to 04 and a separate 3RI authentication should be initiated within 60 seconds.
results_url Property
3DS Server URL.
Syntax
def get_results_url() -> str: ... def set_results_url(value: str) -> None: ...
results_url = property(get_results_url, set_results_url)
Default Value
""
Remarks
Full qualified URL of the 3DS Server to which the directory server will send the Results Request Message (RReq) after the challenge has completed. This is sent to the directory server when calling the send_auth_request method.
sdk_type Property
Type of the 3DS SDK used for the app-based flow.
Syntax
def get_sdk_type() -> str: ... def set_sdk_type(value: str) -> None: ...
sdk_type = property(get_sdk_type, set_sdk_type)
Default Value
"01"
Remarks
Indicates the type of 3DS SDK. This provides additional information to the DS and ACS to determine the best approach for handling the transaction.
Valid values are:
01 | Default-SDK |
02 | Split-SDK |
When Split-SDK is selected (02), SplitSDKVariant will indicate the implementation charactistics of the Split-SDK client, and SplitSDKLimited can be used to indicate if the Split-SDK client has limited capabilities.
This property is valid for message_version 2.3.1 only.
serial_number Property
Serial number indicating the state of the current card range cache.
Syntax
def get_serial_number() -> str: ... def set_serial_number(value: str) -> None: ...
serial_number = property(get_serial_number, set_serial_number)
Default Value
""
Remarks
If this element is present when submitting a Preparation Request Message (PReq) with the request_card_ranges method, the directory server returns card ranges that have been updated since the time of the response which returned this serial number. If this element is not present, the directory server returns all card ranges. This field is updated with a new serial number after each call to request_card_ranges.
server_transaction_id Property
Server transaction identifier.
Syntax
def get_server_transaction_id() -> str: ... def set_server_transaction_id(value: str) -> None: ...
server_transaction_id = property(get_server_transaction_id, set_server_transaction_id)
Default Value
""
Remarks
Universally unique transaction identifier assigned by the 3DS Server to identify a single transaction. This value is generated by the class when get_method_data or send_auth_request is called.
shipping_address_city Property
The city of the address.
Syntax
def get_shipping_address_city() -> str: ... def set_shipping_address_city(value: str) -> None: ...
shipping_address_city = property(get_shipping_address_city, set_shipping_address_city)
Default Value
""
Remarks
The city of the address. The maximum length is 50 characters.
shipping_address_country Property
The country of the address.
Syntax
def get_shipping_address_country() -> str: ... def set_shipping_address_country(value: str) -> None: ...
shipping_address_country = property(get_shipping_address_country, set_shipping_address_country)
Default Value
""
Remarks
The country of the address. The format is a 3 digit country code as defined in ISO 3166-1.
shipping_address_line1 Property
The first line of the street address or equivalent local portion of the address.
Syntax
def get_shipping_address_line1() -> str: ... def set_shipping_address_line1(value: str) -> None: ...
shipping_address_line1 = property(get_shipping_address_line1, set_shipping_address_line1)
Default Value
""
Remarks
The first line of the street address or equivalent local portion of the address. The maximum length is 50 characters.
shipping_address_line2 Property
The second line of the street address or equivalent local portion of the address.
Syntax
def get_shipping_address_line2() -> str: ... def set_shipping_address_line2(value: str) -> None: ...
shipping_address_line2 = property(get_shipping_address_line2, set_shipping_address_line2)
Default Value
""
Remarks
The second line of the street address or equivalent local portion of the address. The maximum length is 50 characters.
shipping_address_line3 Property
The third line of the street address or equivalent local portion of the address.
Syntax
def get_shipping_address_line3() -> str: ... def set_shipping_address_line3(value: str) -> None: ...
shipping_address_line3 = property(get_shipping_address_line3, set_shipping_address_line3)
Default Value
""
Remarks
The third line of the street address or equivalent local portion of the address. The maximum length is 50 characters.
shipping_address_postal_code Property
The ZIP or other postal code of the address.
Syntax
def get_shipping_address_postal_code() -> str: ... def set_shipping_address_postal_code(value: str) -> None: ...
shipping_address_postal_code = property(get_shipping_address_postal_code, set_shipping_address_postal_code)
Default Value
""
Remarks
The ZIP or other postal code of the address. The maximum length is 16 characters.
shipping_address_state Property
The state or province of the address.
Syntax
def get_shipping_address_state() -> str: ... def set_shipping_address_state(value: str) -> None: ...
shipping_address_state = property(get_shipping_address_state, set_shipping_address_state)
Default Value
""
Remarks
The state or province of the address. The maximum length is 3 characters and should be the country subdivision code defined in ISO 3166-2.
ssl_accept_server_cert_effective_date Property
The date on which this certificate becomes valid.
Syntax
def get_ssl_accept_server_cert_effective_date() -> str: ...
ssl_accept_server_cert_effective_date = property(get_ssl_accept_server_cert_effective_date, None)
Default Value
""
Remarks
The date on which this certificate becomes valid. Before this date, it is not valid. The date is localized to the system's time zone. The following example illustrates the format of an encoded date:
23-Jan-2000 15:00:00.
This property is read-only.
ssl_accept_server_cert_expiration_date Property
The date on which the certificate expires.
Syntax
def get_ssl_accept_server_cert_expiration_date() -> str: ...
ssl_accept_server_cert_expiration_date = property(get_ssl_accept_server_cert_expiration_date, None)
Default Value
""
Remarks
The date on which the certificate expires. After this date, the certificate will no longer be valid. The date is localized to the system's time zone. The following example illustrates the format of an encoded date:
23-Jan-2001 15:00:00.
This property is read-only.
ssl_accept_server_cert_extended_key_usage Property
A comma-delimited list of extended key usage identifiers.
Syntax
def get_ssl_accept_server_cert_extended_key_usage() -> str: ...
ssl_accept_server_cert_extended_key_usage = property(get_ssl_accept_server_cert_extended_key_usage, None)
Default Value
""
Remarks
A comma-delimited list of extended key usage identifiers. These are the same as ASN.1 object identifiers (OIDs).
This property is read-only.
ssl_accept_server_cert_fingerprint Property
The hex-encoded, 16-byte MD5 fingerprint of the certificate.
Syntax
def get_ssl_accept_server_cert_fingerprint() -> str: ...
ssl_accept_server_cert_fingerprint = property(get_ssl_accept_server_cert_fingerprint, None)
Default Value
""
Remarks
The hex-encoded, 16-byte MD5 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: bc:2a:72:af:fe:58:17:43:7a:5f:ba:5a:7c:90:f7:02
This property is read-only.
ssl_accept_server_cert_fingerprint_sha1 Property
The hex-encoded, 20-byte SHA-1 fingerprint of the certificate.
Syntax
def get_ssl_accept_server_cert_fingerprint_sha1() -> str: ...
ssl_accept_server_cert_fingerprint_sha1 = property(get_ssl_accept_server_cert_fingerprint_sha1, None)
Default Value
""
Remarks
The hex-encoded, 20-byte SHA-1 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: 30:7b:fa:38:65:83:ff:da:b4:4e:07:3f:17:b8:a4:ed:80:be:ff:84
This property is read-only.
ssl_accept_server_cert_fingerprint_sha256 Property
The hex-encoded, 32-byte SHA-256 fingerprint of the certificate.
Syntax
def get_ssl_accept_server_cert_fingerprint_sha256() -> str: ...
ssl_accept_server_cert_fingerprint_sha256 = property(get_ssl_accept_server_cert_fingerprint_sha256, None)
Default Value
""
Remarks
The hex-encoded, 32-byte SHA-256 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: 6a:80:5c:33:a9:43:ea:b0:96:12:8a:64:96:30:ef:4a:8a:96:86:ce:f4:c7:be:10:24:8e:2b:60:9e:f3:59:53
This property is read-only.
ssl_accept_server_cert_issuer Property
The issuer of the certificate.
Syntax
def get_ssl_accept_server_cert_issuer() -> str: ...
ssl_accept_server_cert_issuer = property(get_ssl_accept_server_cert_issuer, None)
Default Value
""
Remarks
The issuer of the certificate. This property contains a string representation of the name of the issuing authority for the certificate.
This property is read-only.
ssl_accept_server_cert_private_key Property
The private key of the certificate (if available).
Syntax
def get_ssl_accept_server_cert_private_key() -> str: ...
ssl_accept_server_cert_private_key = property(get_ssl_accept_server_cert_private_key, None)
Default Value
""
Remarks
The private key of the certificate (if available). The key is provided as PEM/Base64-encoded data.
Note: The ssl_accept_server_cert_private_key may be available but not exportable. In this case, ssl_accept_server_cert_private_key returns an empty string.
This property is read-only.
ssl_accept_server_cert_private_key_available Property
Whether a PrivateKey is available for the selected certificate.
Syntax
def get_ssl_accept_server_cert_private_key_available() -> bool: ...
ssl_accept_server_cert_private_key_available = property(get_ssl_accept_server_cert_private_key_available, None)
Default Value
FALSE
Remarks
Whether a ssl_accept_server_cert_private_key is available for the selected certificate. If ssl_accept_server_cert_private_key_available is True, the certificate may be used for authentication purposes (e.g., server authentication).
This property is read-only.
ssl_accept_server_cert_private_key_container Property
The name of the PrivateKey container for the certificate (if available).
Syntax
def get_ssl_accept_server_cert_private_key_container() -> str: ...
ssl_accept_server_cert_private_key_container = property(get_ssl_accept_server_cert_private_key_container, None)
Default Value
""
Remarks
The name of the ssl_accept_server_cert_private_key container for the certificate (if available). This functionality is available only on Windows platforms.
This property is read-only.
ssl_accept_server_cert_public_key Property
The public key of the certificate.
Syntax
def get_ssl_accept_server_cert_public_key() -> str: ...
ssl_accept_server_cert_public_key = property(get_ssl_accept_server_cert_public_key, None)
Default Value
""
Remarks
The public key of the certificate. The key is provided as PEM/Base64-encoded data.
This property is read-only.
ssl_accept_server_cert_public_key_algorithm Property
The textual description of the certificate's public key algorithm.
Syntax
def get_ssl_accept_server_cert_public_key_algorithm() -> str: ...
ssl_accept_server_cert_public_key_algorithm = property(get_ssl_accept_server_cert_public_key_algorithm, None)
Default Value
""
Remarks
The textual description of the certificate's public key algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_DH") or an object identifier (OID) string representing the algorithm.
This property is read-only.
ssl_accept_server_cert_public_key_length Property
The length of the certificate's public key (in bits).
Syntax
def get_ssl_accept_server_cert_public_key_length() -> int: ...
ssl_accept_server_cert_public_key_length = property(get_ssl_accept_server_cert_public_key_length, None)
Default Value
0
Remarks
The length of the certificate's public key (in bits). Common values are 512, 1024, and 2048.
This property is read-only.
ssl_accept_server_cert_serial_number Property
The serial number of the certificate encoded as a string.
Syntax
def get_ssl_accept_server_cert_serial_number() -> str: ...
ssl_accept_server_cert_serial_number = property(get_ssl_accept_server_cert_serial_number, None)
Default Value
""
Remarks
The serial number of the certificate encoded as a string. The number is encoded as a series of hexadecimal digits, with each pair representing a byte of the serial number.
This property is read-only.
ssl_accept_server_cert_signature_algorithm Property
The text description of the certificate's signature algorithm.
Syntax
def get_ssl_accept_server_cert_signature_algorithm() -> str: ...
ssl_accept_server_cert_signature_algorithm = property(get_ssl_accept_server_cert_signature_algorithm, None)
Default Value
""
Remarks
The text description of the certificate's signature algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_MD5RSA") or an object identifier (OID) string representing the algorithm.
This property is read-only.
ssl_accept_server_cert_store Property
The name of the certificate store for the client certificate.
Syntax
def get_ssl_accept_server_cert_store() -> bytes: ... def set_ssl_accept_server_cert_store(value: bytes) -> None: ...
ssl_accept_server_cert_store = property(get_ssl_accept_server_cert_store, set_ssl_accept_server_cert_store)
Default Value
"MY"
Remarks
The name of the certificate store for the client certificate.
The ssl_accept_server_cert_store_type property denotes the type of the certificate store specified by ssl_accept_server_cert_store. If the store is password-protected, specify the password in ssl_accept_server_cert_store_password.
ssl_accept_server_cert_store is used in conjunction with the ssl_accept_server_cert_subject property to specify client certificates. If ssl_accept_server_cert_store has a value, and ssl_accept_server_cert_subject or ssl_accept_server_cert_encoded is set, a search for a certificate is initiated. Please see the ssl_accept_server_cert_subject property for details.
Designations of certificate stores are platform dependent.
The following designations are the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
When the certificate store type is cstPFXFile, this property must be set to the name of the file. When the type is cstPFXBlob, the property must be set to the binary contents of a PFX file (i.e., PKCS#12 certificate store).
ssl_accept_server_cert_store_password Property
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Syntax
def get_ssl_accept_server_cert_store_password() -> str: ... def set_ssl_accept_server_cert_store_password(value: str) -> None: ...
ssl_accept_server_cert_store_password = property(get_ssl_accept_server_cert_store_password, set_ssl_accept_server_cert_store_password)
Default Value
""
Remarks
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
ssl_accept_server_cert_store_type Property
The type of certificate store for this certificate.
Syntax
def get_ssl_accept_server_cert_store_type() -> int: ... def set_ssl_accept_server_cert_store_type(value: int) -> None: ...
ssl_accept_server_cert_store_type = property(get_ssl_accept_server_cert_store_type, set_ssl_accept_server_cert_store_type)
Default Value
0
Remarks
The type of certificate store for this certificate.
The class supports both public and private keys in a variety of formats. When the cstAuto value is used, the class will automatically determine the type. This property can take one of the following values:
0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user.
Note: This store type is not available in Java. |
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store.
Note: This store type is not available in Java. |
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS#12) file containing certificates. |
3 (cstPFXBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in PFX (PKCS#12) format. |
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates.
Note: This store type is only available in Java. |
5 (cstJKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in Java Key Store (JKS) format.
Note: This store type is only available in Java. |
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
7 (cstPEMKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a private key and an optional certificate. |
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
9 (cstPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a PEM- or DER-encoded public key certificate. |
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains an SSH-style public key. |
11 (cstP7BFile) | The certificate store is the name of a PKCS#7 file containing certificates. |
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS#7 format. |
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key. |
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key). |
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format. |
17 (cstXMLBlob) | The certificate store is a string that contains a certificate in XML format. |
18 (cstJWKFile) | The certificate store is the name of a file that contains a JWK (JSON Web Key). |
19 (cstJWKBlob) | The certificate store is a string that contains a JWK (JSON Web Key). |
21 (cstBCFKSFile) | The certificate store is the name of a file that contains a BCFKS (Bouncy Castle FIPS Key Store).
Note: This store type is only available in Java and .NET. |
22 (cstBCFKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in BCFKS (Bouncy Castle FIPS Key Store) format.
Note: This store type is only available in Java and .NET. |
23 (cstPKCS11) | The certificate is present on a physical security key accessible via a PKCS#11 interface.
To use a security key, the necessary data must first be collected using the CertMgr class. The list_store_certificates method may be called after setting cert_store_type to cstPKCS11, cert_store_password to the PIN, and cert_store to the full path of the PKCS#11 DLL. The certificate information returned in the on_cert_list event's CertEncoded parameter may be saved for later use. When using a certificate, pass the previously saved security key information as the ssl_accept_server_cert_store and set ssl_accept_server_cert_store_password to the PIN. Code Example. SSH Authentication with Security Key:
|
99 (cstAuto) | The store type is automatically detected from the input data. This setting may be used with both public and private keys and can detect any of the supported formats automatically. |
ssl_accept_server_cert_subject_alt_names Property
Comma-separated lists of alternative subject names for the certificate.
Syntax
def get_ssl_accept_server_cert_subject_alt_names() -> str: ...
ssl_accept_server_cert_subject_alt_names = property(get_ssl_accept_server_cert_subject_alt_names, None)
Default Value
""
Remarks
Comma-separated lists of alternative subject names for the certificate.
This property is read-only.
ssl_accept_server_cert_thumbprint_md5 Property
The MD5 hash of the certificate.
Syntax
def get_ssl_accept_server_cert_thumbprint_md5() -> str: ...
ssl_accept_server_cert_thumbprint_md5 = property(get_ssl_accept_server_cert_thumbprint_md5, None)
Default Value
""
Remarks
The MD5 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_accept_server_cert_thumbprint_sha1 Property
The SHA-1 hash of the certificate.
Syntax
def get_ssl_accept_server_cert_thumbprint_sha1() -> str: ...
ssl_accept_server_cert_thumbprint_sha1 = property(get_ssl_accept_server_cert_thumbprint_sha1, None)
Default Value
""
Remarks
The SHA-1 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_accept_server_cert_thumbprint_sha256 Property
The SHA-256 hash of the certificate.
Syntax
def get_ssl_accept_server_cert_thumbprint_sha256() -> str: ...
ssl_accept_server_cert_thumbprint_sha256 = property(get_ssl_accept_server_cert_thumbprint_sha256, None)
Default Value
""
Remarks
The SHA-256 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_accept_server_cert_usage Property
The text description of UsageFlags .
Syntax
def get_ssl_accept_server_cert_usage() -> str: ...
ssl_accept_server_cert_usage = property(get_ssl_accept_server_cert_usage, None)
Default Value
""
Remarks
The text description of ssl_accept_server_cert_usage_flags.
This value will be one or more of the following strings and will be separated by commas:
- Digital Signature
- Non-Repudiation
- Key Encipherment
- Data Encipherment
- Key Agreement
- Certificate Signing
- CRL Signing
- Encipher Only
If the provider is OpenSSL, the value is a comma-separated list of X.509 certificate extension names.
This property is read-only.
ssl_accept_server_cert_usage_flags Property
The flags that show intended use for the certificate.
Syntax
def get_ssl_accept_server_cert_usage_flags() -> int: ...
ssl_accept_server_cert_usage_flags = property(get_ssl_accept_server_cert_usage_flags, None)
Default Value
0
Remarks
The flags that show intended use for the certificate. The value of ssl_accept_server_cert_usage_flags is a combination of the following flags:
0x80 | Digital Signature |
0x40 | Non-Repudiation |
0x20 | Key Encipherment |
0x10 | Data Encipherment |
0x08 | Key Agreement |
0x04 | Certificate Signing |
0x02 | CRL Signing |
0x01 | Encipher Only |
Please see the ssl_accept_server_cert_usage property for a text representation of ssl_accept_server_cert_usage_flags.
This functionality currently is not available when the provider is OpenSSL.
This property is read-only.
ssl_accept_server_cert_version Property
The certificate's version number.
Syntax
def get_ssl_accept_server_cert_version() -> str: ...
ssl_accept_server_cert_version = property(get_ssl_accept_server_cert_version, None)
Default Value
""
Remarks
The certificate's version number. The possible values are the strings "V1", "V2", and "V3".
This property is read-only.
ssl_accept_server_cert_subject Property
The subject of the certificate used for client authentication.
Syntax
def get_ssl_accept_server_cert_subject() -> str: ... def set_ssl_accept_server_cert_subject(value: str) -> None: ...
ssl_accept_server_cert_subject = property(get_ssl_accept_server_cert_subject, set_ssl_accept_server_cert_subject)
Default Value
""
Remarks
The subject of the certificate used for client authentication.
This property must be set after all other certificate properties are set. When this property is set, a search is performed in the current certificate store to locate a certificate with a matching subject.
If a matching certificate is found, the property is set to the full subject of the matching certificate.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks a random certificate in the certificate store.
The certificate subject is a comma-separated list of distinguished name fields and values. For instance, "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common fields and their meanings are as follows:
Field | Meaning |
CN | Common Name. This is commonly a hostname like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma, it must be quoted.
ssl_accept_server_cert_encoded Property
The certificate (PEM/Base64 encoded).
Syntax
def get_ssl_accept_server_cert_encoded() -> bytes: ... def set_ssl_accept_server_cert_encoded(value: bytes) -> None: ...
ssl_accept_server_cert_encoded = property(get_ssl_accept_server_cert_encoded, set_ssl_accept_server_cert_encoded)
Default Value
""
Remarks
The certificate (PEM/Base64 encoded). This property is used to assign a specific certificate. The ssl_accept_server_cert_store and ssl_accept_server_cert_subject properties also may be used to specify a certificate.
When ssl_accept_server_cert_encoded is set, a search is initiated in the current ssl_accept_server_cert_store for the private key of the certificate. If the key is found, ssl_accept_server_cert_subject is updated to reflect the full subject of the selected certificate; otherwise, ssl_accept_server_cert_subject is set to an empty string.
ssl_cert_effective_date Property
The date on which this certificate becomes valid.
Syntax
def get_ssl_cert_effective_date() -> str: ...
ssl_cert_effective_date = property(get_ssl_cert_effective_date, None)
Default Value
""
Remarks
The date on which this certificate becomes valid. Before this date, it is not valid. The date is localized to the system's time zone. The following example illustrates the format of an encoded date:
23-Jan-2000 15:00:00.
This property is read-only.
ssl_cert_expiration_date Property
The date on which the certificate expires.
Syntax
def get_ssl_cert_expiration_date() -> str: ...
ssl_cert_expiration_date = property(get_ssl_cert_expiration_date, None)
Default Value
""
Remarks
The date on which the certificate expires. After this date, the certificate will no longer be valid. The date is localized to the system's time zone. The following example illustrates the format of an encoded date:
23-Jan-2001 15:00:00.
This property is read-only.
ssl_cert_extended_key_usage Property
A comma-delimited list of extended key usage identifiers.
Syntax
def get_ssl_cert_extended_key_usage() -> str: ...
ssl_cert_extended_key_usage = property(get_ssl_cert_extended_key_usage, None)
Default Value
""
Remarks
A comma-delimited list of extended key usage identifiers. These are the same as ASN.1 object identifiers (OIDs).
This property is read-only.
ssl_cert_fingerprint Property
The hex-encoded, 16-byte MD5 fingerprint of the certificate.
Syntax
def get_ssl_cert_fingerprint() -> str: ...
ssl_cert_fingerprint = property(get_ssl_cert_fingerprint, None)
Default Value
""
Remarks
The hex-encoded, 16-byte MD5 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: bc:2a:72:af:fe:58:17:43:7a:5f:ba:5a:7c:90:f7:02
This property is read-only.
ssl_cert_fingerprint_sha1 Property
The hex-encoded, 20-byte SHA-1 fingerprint of the certificate.
Syntax
def get_ssl_cert_fingerprint_sha1() -> str: ...
ssl_cert_fingerprint_sha1 = property(get_ssl_cert_fingerprint_sha1, None)
Default Value
""
Remarks
The hex-encoded, 20-byte SHA-1 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: 30:7b:fa:38:65:83:ff:da:b4:4e:07:3f:17:b8:a4:ed:80:be:ff:84
This property is read-only.
ssl_cert_fingerprint_sha256 Property
The hex-encoded, 32-byte SHA-256 fingerprint of the certificate.
Syntax
def get_ssl_cert_fingerprint_sha256() -> str: ...
ssl_cert_fingerprint_sha256 = property(get_ssl_cert_fingerprint_sha256, None)
Default Value
""
Remarks
The hex-encoded, 32-byte SHA-256 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: 6a:80:5c:33:a9:43:ea:b0:96:12:8a:64:96:30:ef:4a:8a:96:86:ce:f4:c7:be:10:24:8e:2b:60:9e:f3:59:53
This property is read-only.
ssl_cert_issuer Property
The issuer of the certificate.
Syntax
def get_ssl_cert_issuer() -> str: ...
ssl_cert_issuer = property(get_ssl_cert_issuer, None)
Default Value
""
Remarks
The issuer of the certificate. This property contains a string representation of the name of the issuing authority for the certificate.
This property is read-only.
ssl_cert_private_key Property
The private key of the certificate (if available).
Syntax
def get_ssl_cert_private_key() -> str: ...
ssl_cert_private_key = property(get_ssl_cert_private_key, None)
Default Value
""
Remarks
The private key of the certificate (if available). The key is provided as PEM/Base64-encoded data.
Note: The ssl_cert_private_key may be available but not exportable. In this case, ssl_cert_private_key returns an empty string.
This property is read-only.
ssl_cert_private_key_available Property
Whether a PrivateKey is available for the selected certificate.
Syntax
def get_ssl_cert_private_key_available() -> bool: ...
ssl_cert_private_key_available = property(get_ssl_cert_private_key_available, None)
Default Value
FALSE
Remarks
Whether a ssl_cert_private_key is available for the selected certificate. If ssl_cert_private_key_available is True, the certificate may be used for authentication purposes (e.g., server authentication).
This property is read-only.
ssl_cert_private_key_container Property
The name of the PrivateKey container for the certificate (if available).
Syntax
def get_ssl_cert_private_key_container() -> str: ...
ssl_cert_private_key_container = property(get_ssl_cert_private_key_container, None)
Default Value
""
Remarks
The name of the ssl_cert_private_key container for the certificate (if available). This functionality is available only on Windows platforms.
This property is read-only.
ssl_cert_public_key Property
The public key of the certificate.
Syntax
def get_ssl_cert_public_key() -> str: ...
ssl_cert_public_key = property(get_ssl_cert_public_key, None)
Default Value
""
Remarks
The public key of the certificate. The key is provided as PEM/Base64-encoded data.
This property is read-only.
ssl_cert_public_key_algorithm Property
The textual description of the certificate's public key algorithm.
Syntax
def get_ssl_cert_public_key_algorithm() -> str: ...
ssl_cert_public_key_algorithm = property(get_ssl_cert_public_key_algorithm, None)
Default Value
""
Remarks
The textual description of the certificate's public key algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_DH") or an object identifier (OID) string representing the algorithm.
This property is read-only.
ssl_cert_public_key_length Property
The length of the certificate's public key (in bits).
Syntax
def get_ssl_cert_public_key_length() -> int: ...
ssl_cert_public_key_length = property(get_ssl_cert_public_key_length, None)
Default Value
0
Remarks
The length of the certificate's public key (in bits). Common values are 512, 1024, and 2048.
This property is read-only.
ssl_cert_serial_number Property
The serial number of the certificate encoded as a string.
Syntax
def get_ssl_cert_serial_number() -> str: ...
ssl_cert_serial_number = property(get_ssl_cert_serial_number, None)
Default Value
""
Remarks
The serial number of the certificate encoded as a string. The number is encoded as a series of hexadecimal digits, with each pair representing a byte of the serial number.
This property is read-only.
ssl_cert_signature_algorithm Property
The text description of the certificate's signature algorithm.
Syntax
def get_ssl_cert_signature_algorithm() -> str: ...
ssl_cert_signature_algorithm = property(get_ssl_cert_signature_algorithm, None)
Default Value
""
Remarks
The text description of the certificate's signature algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_MD5RSA") or an object identifier (OID) string representing the algorithm.
This property is read-only.
ssl_cert_store Property
The name of the certificate store for the client certificate.
Syntax
def get_ssl_cert_store() -> bytes: ... def set_ssl_cert_store(value: bytes) -> None: ...
ssl_cert_store = property(get_ssl_cert_store, set_ssl_cert_store)
Default Value
"MY"
Remarks
The name of the certificate store for the client certificate.
The ssl_cert_store_type property denotes the type of the certificate store specified by ssl_cert_store. If the store is password-protected, specify the password in ssl_cert_store_password.
ssl_cert_store is used in conjunction with the ssl_cert_subject property to specify client certificates. If ssl_cert_store has a value, and ssl_cert_subject or ssl_cert_encoded is set, a search for a certificate is initiated. Please see the ssl_cert_subject property for details.
Designations of certificate stores are platform dependent.
The following designations are the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
When the certificate store type is cstPFXFile, this property must be set to the name of the file. When the type is cstPFXBlob, the property must be set to the binary contents of a PFX file (i.e., PKCS#12 certificate store).
ssl_cert_store_password Property
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Syntax
def get_ssl_cert_store_password() -> str: ... def set_ssl_cert_store_password(value: str) -> None: ...
ssl_cert_store_password = property(get_ssl_cert_store_password, set_ssl_cert_store_password)
Default Value
""
Remarks
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
ssl_cert_store_type Property
The type of certificate store for this certificate.
Syntax
def get_ssl_cert_store_type() -> int: ... def set_ssl_cert_store_type(value: int) -> None: ...
ssl_cert_store_type = property(get_ssl_cert_store_type, set_ssl_cert_store_type)
Default Value
0
Remarks
The type of certificate store for this certificate.
The class supports both public and private keys in a variety of formats. When the cstAuto value is used, the class will automatically determine the type. This property can take one of the following values:
0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user.
Note: This store type is not available in Java. |
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store.
Note: This store type is not available in Java. |
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS#12) file containing certificates. |
3 (cstPFXBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in PFX (PKCS#12) format. |
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates.
Note: This store type is only available in Java. |
5 (cstJKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in Java Key Store (JKS) format.
Note: This store type is only available in Java. |
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
7 (cstPEMKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a private key and an optional certificate. |
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
9 (cstPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a PEM- or DER-encoded public key certificate. |
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains an SSH-style public key. |
11 (cstP7BFile) | The certificate store is the name of a PKCS#7 file containing certificates. |
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS#7 format. |
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key. |
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key). |
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format. |
17 (cstXMLBlob) | The certificate store is a string that contains a certificate in XML format. |
18 (cstJWKFile) | The certificate store is the name of a file that contains a JWK (JSON Web Key). |
19 (cstJWKBlob) | The certificate store is a string that contains a JWK (JSON Web Key). |
21 (cstBCFKSFile) | The certificate store is the name of a file that contains a BCFKS (Bouncy Castle FIPS Key Store).
Note: This store type is only available in Java and .NET. |
22 (cstBCFKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in BCFKS (Bouncy Castle FIPS Key Store) format.
Note: This store type is only available in Java and .NET. |
23 (cstPKCS11) | The certificate is present on a physical security key accessible via a PKCS#11 interface.
To use a security key, the necessary data must first be collected using the CertMgr class. The list_store_certificates method may be called after setting cert_store_type to cstPKCS11, cert_store_password to the PIN, and cert_store to the full path of the PKCS#11 DLL. The certificate information returned in the on_cert_list event's CertEncoded parameter may be saved for later use. When using a certificate, pass the previously saved security key information as the ssl_cert_store and set ssl_cert_store_password to the PIN. Code Example. SSH Authentication with Security Key:
|
99 (cstAuto) | The store type is automatically detected from the input data. This setting may be used with both public and private keys and can detect any of the supported formats automatically. |
ssl_cert_subject_alt_names Property
Comma-separated lists of alternative subject names for the certificate.
Syntax
def get_ssl_cert_subject_alt_names() -> str: ...
ssl_cert_subject_alt_names = property(get_ssl_cert_subject_alt_names, None)
Default Value
""
Remarks
Comma-separated lists of alternative subject names for the certificate.
This property is read-only.
ssl_cert_thumbprint_md5 Property
The MD5 hash of the certificate.
Syntax
def get_ssl_cert_thumbprint_md5() -> str: ...
ssl_cert_thumbprint_md5 = property(get_ssl_cert_thumbprint_md5, None)
Default Value
""
Remarks
The MD5 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_cert_thumbprint_sha1 Property
The SHA-1 hash of the certificate.
Syntax
def get_ssl_cert_thumbprint_sha1() -> str: ...
ssl_cert_thumbprint_sha1 = property(get_ssl_cert_thumbprint_sha1, None)
Default Value
""
Remarks
The SHA-1 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_cert_thumbprint_sha256 Property
The SHA-256 hash of the certificate.
Syntax
def get_ssl_cert_thumbprint_sha256() -> str: ...
ssl_cert_thumbprint_sha256 = property(get_ssl_cert_thumbprint_sha256, None)
Default Value
""
Remarks
The SHA-256 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_cert_usage Property
The text description of UsageFlags .
Syntax
def get_ssl_cert_usage() -> str: ...
ssl_cert_usage = property(get_ssl_cert_usage, None)
Default Value
""
Remarks
The text description of ssl_cert_usage_flags.
This value will be one or more of the following strings and will be separated by commas:
- Digital Signature
- Non-Repudiation
- Key Encipherment
- Data Encipherment
- Key Agreement
- Certificate Signing
- CRL Signing
- Encipher Only
If the provider is OpenSSL, the value is a comma-separated list of X.509 certificate extension names.
This property is read-only.
ssl_cert_usage_flags Property
The flags that show intended use for the certificate.
Syntax
def get_ssl_cert_usage_flags() -> int: ...
ssl_cert_usage_flags = property(get_ssl_cert_usage_flags, None)
Default Value
0
Remarks
The flags that show intended use for the certificate. The value of ssl_cert_usage_flags is a combination of the following flags:
0x80 | Digital Signature |
0x40 | Non-Repudiation |
0x20 | Key Encipherment |
0x10 | Data Encipherment |
0x08 | Key Agreement |
0x04 | Certificate Signing |
0x02 | CRL Signing |
0x01 | Encipher Only |
Please see the ssl_cert_usage property for a text representation of ssl_cert_usage_flags.
This functionality currently is not available when the provider is OpenSSL.
This property is read-only.
ssl_cert_version Property
The certificate's version number.
Syntax
def get_ssl_cert_version() -> str: ...
ssl_cert_version = property(get_ssl_cert_version, None)
Default Value
""
Remarks
The certificate's version number. The possible values are the strings "V1", "V2", and "V3".
This property is read-only.
ssl_cert_subject Property
The subject of the certificate used for client authentication.
Syntax
def get_ssl_cert_subject() -> str: ... def set_ssl_cert_subject(value: str) -> None: ...
ssl_cert_subject = property(get_ssl_cert_subject, set_ssl_cert_subject)
Default Value
""
Remarks
The subject of the certificate used for client authentication.
This property must be set after all other certificate properties are set. When this property is set, a search is performed in the current certificate store to locate a certificate with a matching subject.
If a matching certificate is found, the property is set to the full subject of the matching certificate.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks a random certificate in the certificate store.
The certificate subject is a comma-separated list of distinguished name fields and values. For instance, "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common fields and their meanings are as follows:
Field | Meaning |
CN | Common Name. This is commonly a hostname like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma, it must be quoted.
ssl_cert_encoded Property
The certificate (PEM/Base64 encoded).
Syntax
def get_ssl_cert_encoded() -> bytes: ... def set_ssl_cert_encoded(value: bytes) -> None: ...
ssl_cert_encoded = property(get_ssl_cert_encoded, set_ssl_cert_encoded)
Default Value
""
Remarks
The certificate (PEM/Base64 encoded). This property is used to assign a specific certificate. The ssl_cert_store and ssl_cert_subject properties also may be used to specify a certificate.
When ssl_cert_encoded is set, a search is initiated in the current ssl_cert_store for the private key of the certificate. If the key is found, ssl_cert_subject is updated to reflect the full subject of the selected certificate; otherwise, ssl_cert_subject is set to an empty string.
ssl_server_cert_effective_date Property
The date on which this certificate becomes valid.
Syntax
def get_ssl_server_cert_effective_date() -> str: ...
ssl_server_cert_effective_date = property(get_ssl_server_cert_effective_date, None)
Default Value
""
Remarks
The date on which this certificate becomes valid. Before this date, it is not valid. The date is localized to the system's time zone. The following example illustrates the format of an encoded date:
23-Jan-2000 15:00:00.
This property is read-only.
ssl_server_cert_expiration_date Property
The date on which the certificate expires.
Syntax
def get_ssl_server_cert_expiration_date() -> str: ...
ssl_server_cert_expiration_date = property(get_ssl_server_cert_expiration_date, None)
Default Value
""
Remarks
The date on which the certificate expires. After this date, the certificate will no longer be valid. The date is localized to the system's time zone. The following example illustrates the format of an encoded date:
23-Jan-2001 15:00:00.
This property is read-only.
ssl_server_cert_extended_key_usage Property
A comma-delimited list of extended key usage identifiers.
Syntax
def get_ssl_server_cert_extended_key_usage() -> str: ...
ssl_server_cert_extended_key_usage = property(get_ssl_server_cert_extended_key_usage, None)
Default Value
""
Remarks
A comma-delimited list of extended key usage identifiers. These are the same as ASN.1 object identifiers (OIDs).
This property is read-only.
ssl_server_cert_fingerprint Property
The hex-encoded, 16-byte MD5 fingerprint of the certificate.
Syntax
def get_ssl_server_cert_fingerprint() -> str: ...
ssl_server_cert_fingerprint = property(get_ssl_server_cert_fingerprint, None)
Default Value
""
Remarks
The hex-encoded, 16-byte MD5 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: bc:2a:72:af:fe:58:17:43:7a:5f:ba:5a:7c:90:f7:02
This property is read-only.
ssl_server_cert_fingerprint_sha1 Property
The hex-encoded, 20-byte SHA-1 fingerprint of the certificate.
Syntax
def get_ssl_server_cert_fingerprint_sha1() -> str: ...
ssl_server_cert_fingerprint_sha1 = property(get_ssl_server_cert_fingerprint_sha1, None)
Default Value
""
Remarks
The hex-encoded, 20-byte SHA-1 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: 30:7b:fa:38:65:83:ff:da:b4:4e:07:3f:17:b8:a4:ed:80:be:ff:84
This property is read-only.
ssl_server_cert_fingerprint_sha256 Property
The hex-encoded, 32-byte SHA-256 fingerprint of the certificate.
Syntax
def get_ssl_server_cert_fingerprint_sha256() -> str: ...
ssl_server_cert_fingerprint_sha256 = property(get_ssl_server_cert_fingerprint_sha256, None)
Default Value
""
Remarks
The hex-encoded, 32-byte SHA-256 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.
The following example illustrates the format: 6a:80:5c:33:a9:43:ea:b0:96:12:8a:64:96:30:ef:4a:8a:96:86:ce:f4:c7:be:10:24:8e:2b:60:9e:f3:59:53
This property is read-only.
ssl_server_cert_issuer Property
The issuer of the certificate.
Syntax
def get_ssl_server_cert_issuer() -> str: ...
ssl_server_cert_issuer = property(get_ssl_server_cert_issuer, None)
Default Value
""
Remarks
The issuer of the certificate. This property contains a string representation of the name of the issuing authority for the certificate.
This property is read-only.
ssl_server_cert_private_key Property
The private key of the certificate (if available).
Syntax
def get_ssl_server_cert_private_key() -> str: ...
ssl_server_cert_private_key = property(get_ssl_server_cert_private_key, None)
Default Value
""
Remarks
The private key of the certificate (if available). The key is provided as PEM/Base64-encoded data.
Note: The ssl_server_cert_private_key may be available but not exportable. In this case, ssl_server_cert_private_key returns an empty string.
This property is read-only.
ssl_server_cert_private_key_available Property
Whether a PrivateKey is available for the selected certificate.
Syntax
def get_ssl_server_cert_private_key_available() -> bool: ...
ssl_server_cert_private_key_available = property(get_ssl_server_cert_private_key_available, None)
Default Value
FALSE
Remarks
Whether a ssl_server_cert_private_key is available for the selected certificate. If ssl_server_cert_private_key_available is True, the certificate may be used for authentication purposes (e.g., server authentication).
This property is read-only.
ssl_server_cert_private_key_container Property
The name of the PrivateKey container for the certificate (if available).
Syntax
def get_ssl_server_cert_private_key_container() -> str: ...
ssl_server_cert_private_key_container = property(get_ssl_server_cert_private_key_container, None)
Default Value
""
Remarks
The name of the ssl_server_cert_private_key container for the certificate (if available). This functionality is available only on Windows platforms.
This property is read-only.
ssl_server_cert_public_key Property
The public key of the certificate.
Syntax
def get_ssl_server_cert_public_key() -> str: ...
ssl_server_cert_public_key = property(get_ssl_server_cert_public_key, None)
Default Value
""
Remarks
The public key of the certificate. The key is provided as PEM/Base64-encoded data.
This property is read-only.
ssl_server_cert_public_key_algorithm Property
The textual description of the certificate's public key algorithm.
Syntax
def get_ssl_server_cert_public_key_algorithm() -> str: ...
ssl_server_cert_public_key_algorithm = property(get_ssl_server_cert_public_key_algorithm, None)
Default Value
""
Remarks
The textual description of the certificate's public key algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_DH") or an object identifier (OID) string representing the algorithm.
This property is read-only.
ssl_server_cert_public_key_length Property
The length of the certificate's public key (in bits).
Syntax
def get_ssl_server_cert_public_key_length() -> int: ...
ssl_server_cert_public_key_length = property(get_ssl_server_cert_public_key_length, None)
Default Value
0
Remarks
The length of the certificate's public key (in bits). Common values are 512, 1024, and 2048.
This property is read-only.
ssl_server_cert_serial_number Property
The serial number of the certificate encoded as a string.
Syntax
def get_ssl_server_cert_serial_number() -> str: ...
ssl_server_cert_serial_number = property(get_ssl_server_cert_serial_number, None)
Default Value
""
Remarks
The serial number of the certificate encoded as a string. The number is encoded as a series of hexadecimal digits, with each pair representing a byte of the serial number.
This property is read-only.
ssl_server_cert_signature_algorithm Property
The text description of the certificate's signature algorithm.
Syntax
def get_ssl_server_cert_signature_algorithm() -> str: ...
ssl_server_cert_signature_algorithm = property(get_ssl_server_cert_signature_algorithm, None)
Default Value
""
Remarks
The text description of the certificate's signature algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_MD5RSA") or an object identifier (OID) string representing the algorithm.
This property is read-only.
ssl_server_cert_store Property
The name of the certificate store for the client certificate.
Syntax
def get_ssl_server_cert_store() -> bytes: ...
ssl_server_cert_store = property(get_ssl_server_cert_store, None)
Default Value
"MY"
Remarks
The name of the certificate store for the client certificate.
The ssl_server_cert_store_type property denotes the type of the certificate store specified by ssl_server_cert_store. If the store is password-protected, specify the password in ssl_server_cert_store_password.
ssl_server_cert_store is used in conjunction with the ssl_server_cert_subject property to specify client certificates. If ssl_server_cert_store has a value, and ssl_server_cert_subject or ssl_server_cert_encoded is set, a search for a certificate is initiated. Please see the ssl_server_cert_subject property for details.
Designations of certificate stores are platform dependent.
The following designations are the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
When the certificate store type is cstPFXFile, this property must be set to the name of the file. When the type is cstPFXBlob, the property must be set to the binary contents of a PFX file (i.e., PKCS#12 certificate store).
This property is read-only.
ssl_server_cert_store_password Property
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Syntax
def get_ssl_server_cert_store_password() -> str: ...
ssl_server_cert_store_password = property(get_ssl_server_cert_store_password, None)
Default Value
""
Remarks
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
This property is read-only.
ssl_server_cert_store_type Property
The type of certificate store for this certificate.
Syntax
def get_ssl_server_cert_store_type() -> int: ...
ssl_server_cert_store_type = property(get_ssl_server_cert_store_type, None)
Default Value
0
Remarks
The type of certificate store for this certificate.
The class supports both public and private keys in a variety of formats. When the cstAuto value is used, the class will automatically determine the type. This property can take one of the following values:
0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user.
Note: This store type is not available in Java. |
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store.
Note: This store type is not available in Java. |
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS#12) file containing certificates. |
3 (cstPFXBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in PFX (PKCS#12) format. |
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates.
Note: This store type is only available in Java. |
5 (cstJKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in Java Key Store (JKS) format.
Note: This store type is only available in Java. |
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
7 (cstPEMKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a private key and an optional certificate. |
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
9 (cstPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a PEM- or DER-encoded public key certificate. |
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains an SSH-style public key. |
11 (cstP7BFile) | The certificate store is the name of a PKCS#7 file containing certificates. |
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS#7 format. |
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key. |
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key). |
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format. |
17 (cstXMLBlob) | The certificate store is a string that contains a certificate in XML format. |
18 (cstJWKFile) | The certificate store is the name of a file that contains a JWK (JSON Web Key). |
19 (cstJWKBlob) | The certificate store is a string that contains a JWK (JSON Web Key). |
21 (cstBCFKSFile) | The certificate store is the name of a file that contains a BCFKS (Bouncy Castle FIPS Key Store).
Note: This store type is only available in Java and .NET. |
22 (cstBCFKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in BCFKS (Bouncy Castle FIPS Key Store) format.
Note: This store type is only available in Java and .NET. |
23 (cstPKCS11) | The certificate is present on a physical security key accessible via a PKCS#11 interface.
To use a security key, the necessary data must first be collected using the CertMgr class. The list_store_certificates method may be called after setting cert_store_type to cstPKCS11, cert_store_password to the PIN, and cert_store to the full path of the PKCS#11 DLL. The certificate information returned in the on_cert_list event's CertEncoded parameter may be saved for later use. When using a certificate, pass the previously saved security key information as the ssl_server_cert_store and set ssl_server_cert_store_password to the PIN. Code Example. SSH Authentication with Security Key:
|
99 (cstAuto) | The store type is automatically detected from the input data. This setting may be used with both public and private keys and can detect any of the supported formats automatically. |
This property is read-only.
ssl_server_cert_subject_alt_names Property
Comma-separated lists of alternative subject names for the certificate.
Syntax
def get_ssl_server_cert_subject_alt_names() -> str: ...
ssl_server_cert_subject_alt_names = property(get_ssl_server_cert_subject_alt_names, None)
Default Value
""
Remarks
Comma-separated lists of alternative subject names for the certificate.
This property is read-only.
ssl_server_cert_thumbprint_md5 Property
The MD5 hash of the certificate.
Syntax
def get_ssl_server_cert_thumbprint_md5() -> str: ...
ssl_server_cert_thumbprint_md5 = property(get_ssl_server_cert_thumbprint_md5, None)
Default Value
""
Remarks
The MD5 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_server_cert_thumbprint_sha1 Property
The SHA-1 hash of the certificate.
Syntax
def get_ssl_server_cert_thumbprint_sha1() -> str: ...
ssl_server_cert_thumbprint_sha1 = property(get_ssl_server_cert_thumbprint_sha1, None)
Default Value
""
Remarks
The SHA-1 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_server_cert_thumbprint_sha256 Property
The SHA-256 hash of the certificate.
Syntax
def get_ssl_server_cert_thumbprint_sha256() -> str: ...
ssl_server_cert_thumbprint_sha256 = property(get_ssl_server_cert_thumbprint_sha256, None)
Default Value
""
Remarks
The SHA-256 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.
This property is read-only.
ssl_server_cert_usage Property
The text description of UsageFlags .
Syntax
def get_ssl_server_cert_usage() -> str: ...
ssl_server_cert_usage = property(get_ssl_server_cert_usage, None)
Default Value
""
Remarks
The text description of ssl_server_cert_usage_flags.
This value will be one or more of the following strings and will be separated by commas:
- Digital Signature
- Non-Repudiation
- Key Encipherment
- Data Encipherment
- Key Agreement
- Certificate Signing
- CRL Signing
- Encipher Only
If the provider is OpenSSL, the value is a comma-separated list of X.509 certificate extension names.
This property is read-only.
ssl_server_cert_usage_flags Property
The flags that show intended use for the certificate.
Syntax
def get_ssl_server_cert_usage_flags() -> int: ...
ssl_server_cert_usage_flags = property(get_ssl_server_cert_usage_flags, None)
Default Value
0
Remarks
The flags that show intended use for the certificate. The value of ssl_server_cert_usage_flags is a combination of the following flags:
0x80 | Digital Signature |
0x40 | Non-Repudiation |
0x20 | Key Encipherment |
0x10 | Data Encipherment |
0x08 | Key Agreement |
0x04 | Certificate Signing |
0x02 | CRL Signing |
0x01 | Encipher Only |
Please see the ssl_server_cert_usage property for a text representation of ssl_server_cert_usage_flags.
This functionality currently is not available when the provider is OpenSSL.
This property is read-only.
ssl_server_cert_version Property
The certificate's version number.
Syntax
def get_ssl_server_cert_version() -> str: ...
ssl_server_cert_version = property(get_ssl_server_cert_version, None)
Default Value
""
Remarks
The certificate's version number. The possible values are the strings "V1", "V2", and "V3".
This property is read-only.
ssl_server_cert_subject Property
The subject of the certificate used for client authentication.
Syntax
def get_ssl_server_cert_subject() -> str: ...
ssl_server_cert_subject = property(get_ssl_server_cert_subject, None)
Default Value
""
Remarks
The subject of the certificate used for client authentication.
This property must be set after all other certificate properties are set. When this property is set, a search is performed in the current certificate store to locate a certificate with a matching subject.
If a matching certificate is found, the property is set to the full subject of the matching certificate.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks a random certificate in the certificate store.
The certificate subject is a comma-separated list of distinguished name fields and values. For instance, "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common fields and their meanings are as follows:
Field | Meaning |
CN | Common Name. This is commonly a hostname like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma, it must be quoted.
This property is read-only.
ssl_server_cert_encoded Property
The certificate (PEM/Base64 encoded).
Syntax
def get_ssl_server_cert_encoded() -> bytes: ...
ssl_server_cert_encoded = property(get_ssl_server_cert_encoded, None)
Default Value
""
Remarks
The certificate (PEM/Base64 encoded). This property is used to assign a specific certificate. The ssl_server_cert_store and ssl_server_cert_subject properties also may be used to specify a certificate.
When ssl_server_cert_encoded is set, a search is initiated in the current ssl_server_cert_store for the private key of the certificate. If the key is found, ssl_server_cert_subject is updated to reflect the full subject of the selected certificate; otherwise, ssl_server_cert_subject is set to an empty string.
This property is read-only.
timeout Property
A timeout for the class.
Syntax
def get_timeout() -> int: ... def set_timeout(value: int) -> None: ...
timeout = property(get_timeout, set_timeout)
Default Value
30
Remarks
If the timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.
If timeout is set to a positive value, the class will wait for the operation to complete before returning control.
The class will use do_events to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not freeze and remains responsive.
If timeout expires, and the operation is not yet complete, the class fails with an error.
Note: By default, all timeouts are inactivity timeouts, that is, the timeout period is extended by timeout seconds when any amount of data is successfully sent or received.
The default value for the timeout property is 30 seconds.
transaction_status Property
The transaction status from the last parsed message (ARes, RReq, or CRes).
Syntax
def get_transaction_status() -> str: ...
transaction_status = property(get_transaction_status, None)
Default Value
""
Remarks
Indicates whether a transaction qualifies as an authenticated transaction or account verification. Possible values are:
Y | Authentication/account verification successful. |
N | Not authenticated/account not verified; transaction denied. |
U | Authentication/account verification could not be performed; technical or other problem as indicated in ARes or RReq. |
A | Attempts processing performed; not authenticated/verified, but a proof of attempted authentication/verification is provided. |
C | Challenge required; additional authentication is required using the CReq/CRes. |
R | Authentication/account verification rejected; issuer is rejecting authentication/verification and request that authorization not be attempted. |
D | Challenge required; decoupled authentication confirmed. |
I | Informational only; 3DS Requestor challenge preference acknowledged. |
Note: The CRes message can contain only a value of Y or N. Values of D and I are only applicable for 3DS version 2.2.0.
This property is read-only.
add_extension Method
Adds an extension to the collection.
Syntax
def add_extension(id: str, name: str, critical: bool, data: str) -> None: ...
Remarks
Data necessary to support requirements not otherwise defined in the 3-D Secure message are carried in Message Extensions. add_extension adds a new extension to the extensions collection.
Note: The maximum number of extensions is 10.
add_request_field Method
Adds a field to the data in the request.
Syntax
def add_request_field(name: str, value: str, value_type: int) -> None: ...
Remarks
This method can be used to extend the requests constructed by the class. When this method is called, the component will add the specified field to the end of the request.
check_response Method
Parses the specified message.
Syntax
def check_response(response: str) -> None: ...
Remarks
check_response parses a variety of messages that are sent to the Server as part of the authentication process.
The following messages can be parsed using this method:
- The threeDSMethodData form variables received at the method_notification_url
- The Results Request (RReq) message received at the results_url
- The cres form variables received at the notification_url
- The Operation Request Message (OReq) sent from a DS.
When calling the method, pass the message to be parsed as the Response parameter. The properties which are populated after calling this method vary depending on the type of message being parsed. See below for additional information.
Method Data from method_notification_url
After calling get_method_data, a request is made to the card_range_method_url. After this, the ACS will make a POST to method_notification_url to inform the requestor of completion. Retrieve the threeDSMethodData form variable value that was POSTed and pass it to this method. After calling this method, the following properties are populated:
The server_transaction_id may be used to match the response with the request.Results Request message from results_url
When a challenge is completed for both app-based and browser-based flows, a POST is made to the results_url with a Results Request message.
Prior to checking this RReq message, the ServerTransactionId can be extracted using the ExtractRReqServerTransactionId configuration setting. This value can then be used to look up details on the transaction that were saved prior to starting the challenge process, including the messageVersion which must be set via the message_version property prior to passing the RReq message to the check_response method.
Pass the body of the HTTP request received at results_url to this method. This contains information about the results, and asks for a Results Response to be sent back containing the results_status.
After calling this method, the following properties are populated:
- authentication_eci
- transaction_status
- TransactionStatusReason
- ChallengeCancellationIndicator
- AuthenticationType
- authentication_value
To respond to the POST, set results_status to the appropriate value and call get_results_response to build a response message to be sent back to the directory server. Use the value from get_results_response in the application as the body of the HTTP response. Set the Content-Type header to application/JSON; charset=utf-8
If transaction_status is D and TransactionStatusReason is 29 or 30, this indicates that decoupled authentication should now be performed. When building the Results Response, a results_status value of 04 should be used. Then, within 60 seconds, a new 3RI authentication must be started with the following field requirements:
- ThreeRIIndicator set to 19, indicating Decoupled Authentication Fallback
- DecoupledRequestIndicator set to Y
- AuthenticationInformation set with threeDSReqPriorRef set to the ACS Transaction ID and threeDSReqPriorAuthMethod set to 02 (Cardholder challenge occurred by ACS).
Final Challenge Response from notification_url
In a browser-based flow, the challenge takes place directly between the cardholder and the ACS in a separate iframe or window. The ACS will POST the final challenge response to the notification_url after the challenge is complete. Retrieve the cres form variable value from the POST data and pass it to check_response. After calling this method the following properties are populated:
In addition to the cres variable, a threeDSSessionData variable will be present if SessionData was set before calling get_challenge_request. The threeDSSessionData value POSTed to notification_url may be passed to EncodedSessionData. Query SessionData to get the decoded session data.
Operation Request Message (OReq)
OReq messages are used to communicate operational information from a DS to the 3DS Server. This message is not part of the 3-D Secure authentication flow.
When an OReq message is received, check_response should be called to validate the message. There may be more than one OReq message sent in a sequence, and check_response should be called for each. The current instance of the Server object can be cached for the duration of the OReq sequence until the final OReq is received. The Operation.SequenceNumber should also be set prior to calling check_response. The component will verify the sequence number of the received OReq to ensure it's not out of sequence.
After calling this method, details are made available in operation.
If any OReq data element fails validation, Operation.MessageStatus will be set to "02". If the OReq is valid, Operation.MessageStatus will be empty.
If the OReq is valid, determine if the final OReq has been received (Operation.SequenceNumber equals Operation.SequenceTotal). If these values match, the final OReq in the sequence has been received, and get_operation_response can be used to generate the ORes message.
For valid OReq messages that are not the final OReq in the sequence, the response should be HTTP Status 200 (OK) with an empty HTTP body.
config Method
Sets or retrieves a configuration setting.
Syntax
def config(configuration_string: str) -> str: ...
Remarks
config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.
These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the config method.
To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).
To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.
get_challenge_request Method
Builds the Challenge Request (CReq) for browser-based flow.
Syntax
def get_challenge_request() -> str: ...
Remarks
The get_challenge_request method is used to build the Challenge Request (CReq) which will be sent in a form post to the acsurl property via the cardholder browser.
An iframe should be created in the cardholder's browser, which will be used to send the challenge request and allow the cardholder and ACS to interact directly.
The size of the challenge window (iframe) may be any of the sizes listed in challenge_window_size. Before calling this method set challenge_window_size to the appropriate value to let the ACS know the size of the window on the cardholder's browser.
Calling this method will return a string which should be placed in a creq form variable.
The SessionData setting may also be set with any data that may be helpful to continue processing the transaction after the final challenge response is received at the notification_url. To prepare the session data for submission, query EncodedSessionData. The encoded string may then be placed in the threeDSSessionData form variable.
Note: The maximum length of the threeDSSessionData form variable, after being encoded, is 1024 bytes.
Example Form
Response Handling
Once the challenge has been completed by the cardholder, the directory server will post a Results Request (RReq) to the results_url specified when calling send_auth_request. See check_response and get_results_response for more details.
The ACS will also post the Challenge Response to the notification_url specified when calling send_auth_request. This post contains data which may be parsed to verify the challenge results. See check_response for more details.
get_method_data Method
Prepares method data to be sent to the ACS before the authentication request is sent.
Syntax
def get_method_data() -> str: ...
Remarks
The get_method_data method prepares data to be transmitted to the ACS via the cardholder's browser.
When a transaction begins, the card range cache should be queried to find details about the card range to which the card number belongs. If a card_range_method_url is defined for the card range, this method should be used to prepare data to be sent via the cardholder's browser to the card_range_method_url.
If the card_range_method_url is not set for the specified card range, set MethodCompletionIndicator to U before calling send_auth_request.
The following properties are applicable when calling this method:
- method_notification_url (required)
This method returns a string which contains encoded data to be sent to the ACS. This includes server_transaction_id and method_notification_url. After calling this method, the returned string can be transmitted to the ACS via the cardholder's browser.
As per the EMVCo specification, create a hidden iframe in the browser and send a form with the field name threeDSMethodData containing the return value from this method and post the form to the card_range_method_url.
The ACS will record information about the customer's environment and then POST back to the method_notification_url. The page at this URL should expect a form variable with the name threeDSMethodData which will contain the original server_transaction_id value in order to match the response with the request. The form variable value will be base64url encoded and may be passed directly to the check_response method. The class will decode and parse the received value and populate server_transaction_id with the value from the received data.
If the response from the ACS is not received within 10 seconds, set MethodCompletionIndicator to N before calling send_auth_request.
get_operation_response Method
Builds and returns the Operation Response Message (ORes) to be sent back to the Directory Server.
Syntax
def get_operation_response() -> str: ...
Remarks
This method builds the Operation Response Message (ORes) to be sent back to the Directory Server in an HTTP reply to the final Operation Request (OReq) message. It returns a JSON object containing the fields required for the ORes.
When an OReq message is received, check_response should be called to validate the message. There may be more than one OReq message sent in a sequence, and check_response should be called for each. While several OReq messages may be received in a sequence (totalling Operation.SequenceTotal), the ORes message is only expected to be generated using get_operation_response after the final OReq. For valid intermediate OReq messages the response should be HTTP Status 200 (OK) with an empty HTTP body.
After passing the final received OReq message to the check_response method, all the properties required to be set before building the ORes will have been populated except for Operation.MessageStatus, which indicates whether or not the message was successfully received for further processing, or provides more detail to the DS on why the requested action could not be completed.
Possible values include:
01 | Successfully received messages. |
02 | Message sequence is broken. |
03 | Requested action is not supported or not executed by the 3DS Server or ACS when OReq message was received. |
04 | Reserved for DS use |
If any OReq data element fails validation from check_response, Operation.MessageStatus will be set to "02". The error_packet can be queried and should be returned to the DS.
For valid OReq messages, Operation.MessageStatus will be empty. Next, determine if the final OReq has been received (Operation.SequenceNumber equals Operation.SequenceTotal). If these values match, the final OReq in the sequence has been received, and get_operation_response can be used to generate the ORes message.
Once Operation.MessageStatus has been set, get_operation_response can be called and will return a string containing the reply to be sent in the response. In the HTTP server, use the string returned from this method as the body of the reply and set the Content-Type header to application/JSON; charset=utf-8
get_results_response Method
Builds and returns the Results Response Message (RRes) to be sent back to the directory server.
Syntax
def get_results_response() -> str: ...
Remarks
This method builds the Results Response Message (RRes) to be sent back to the directory server in the HTTP reply to the Results Request (RReq). It returns a JSON object containing the fields required for the RRes.
After passing the received RReq message to the check_response method, all the properties required to be set before building the RRes will have been populated except for results_status, which indicates whether or not the message was successfully received for further processing, or provides more detail to the ACS on why the challenge could not be completed.
Possible values include:
01 | Results Request Received for further Processing. |
02 | Challenge Request not sent to ACS by 3DS Requestor (3DS Server or 3DS Requestor opted out of the challenge). |
03 | ARes challenge data not delivered to the 3DS Requestor due to technical error. |
The Server can use the value of the RequestorChallengeInd to determine whether or not a value of 02 is appropriate. It must use the necessary error handling logic when processing ARes messages to determine whether or not a value of 03 is appropriate.
Once results_status has been set, get_results_response can be called and will return a string containing the reply to be sent in the response. In the HTTP server, use the string returned from this method as the body of the reply and set the Content-Type header to application/JSON; charset=utf-8
interrupt Method
Interrupts the current action.
Syntax
def interrupt() -> None: ...
Remarks
This method interrupts any processing that the class is currently executing.
request_card_ranges Method
Requests card ranges from the directory server.
Syntax
def request_card_ranges() -> None: ...
Remarks
request_card_ranges requests card ranges and additional information from the directory server.
When a transaction is initiated, the first step that should be taken is to find information about the card range to which the card number belongs. This includes the protocol version(s) supported by the ACS and DS, and if one exists, any corresponding Method URL (used in the browser flow).
Results of this method should be cached in order to quickly look up information when processing transactions. It is recommended to call this method once every 24 hours at a minimum, and once per hour as a maximum to refresh the cache. The class will not cache the returned values; it is up to the user to cache these values in an appropriate location.
The first time this method is called, serial_number will be empty, indicating that all results should be returned. This is an offset the server will use to return only new updates to the card ranges (if any) since the last request. The serial_number will be populated after this method returns, and this value should be saved to be used in subsequent calls.
When a response is received, the card ranges will be made available via the component events and properties.
When message_version is set to 2.3.1, the on_card_range_data event will fire for each card range data object received, and the ranges and acs_protocol_infos properties will be populated to be accessed within the event handler. Optionally, the DS may return a list of URLs that the 3DS Server can use for communication with the DS. If present, these will be available via both the on_dsurl event and the dsur_ls property.
When message_version is set to 2.2.0 or 2.1.0, the on_card_range event will fire for each card range that is returned, and the results will also be held in the card_ranges property.
The following properties are applicable when calling this method:
- directory_server_url (required)
- serial_number
- server_transaction_id
- ServerOperatorId
- EnableDownloadCardRangeDataFile (2.3.1 only)
The following properties are populated after calling this method:
- card_ranges
- DSStartProtocolVersion
- DSEndProtocolVersion
- serial_number
- DSTransactionId
- ResendRequestCardRanges
When using message_version 2.2.0 or 2.3.1, the returned ranges may include ACS Information Indicators. These are used to indicate additional functionality supported by the ACS for the card range(s). For 2.2.0, a ACSInformationIndicator field is exposed in both card_ranges collection and on_card_range event. In version 2.3.1, this information is availalbe in the acs_protocol_infos collection via the Indicator field. Possible values are:
- 01 - Authentication Available at ACS
- 02 - Attempts Supported by ACS or DS
- 03 - Decoupled Authentication Supported
- 04 - Whitelisting Supported
- 05 - Device Binding Supported (2.3.1 only)
- 06 - WebAuthn Authentication Supported (2.3.1 only)
- 07 - SPC Authentication Supported (2.3.1 only)
- 08 - Transaction Risk Analysis Exemption Supported (2.3.1 only)
- 09 - Trust List Exemption Supported (2.3.1 only)
- 10 - Low Value Exemption Supported (2.3.1 only)
- 11 - Secure Corporate Payments Exemption Supported (2.3.1 only)
- 80-99 - Reserved for DS Use
If an error is identified with the card range data received from the directory server when calling the request_card_ranges method, the ResendRequestCardRanges configuration setting will be true, indicating that the request should be resent. When resending, if serial_number was specified for the initial request, it should be set to an empty string before calling request_card_ranges again. Otherwise, the request can be sent without the serial number again, but the server may respond with an error due to multiple requests within an hour.
Note that retrieving card ranges can consume a lot of memory, especially when retrieving the initial set of ranges. The StoreCardRangeData and UseJsonDOM configuration settings can be set to help minimize the amount of memory used. A CardRangeTempPath setting can also be used to specify a temporary path to which the PRes packet will be temporarily written prior to parsing.
When using message_version 2.3.1, if UseJsonDOM is false, the card ranges will need to be cached and processed after the request_card_ranges method returns. The card ranges would then need to be processed in the order indicated by the CardRangeRecordsReadOrder configuration setting. A check will also need to be made for overlap of ranges. If issue(s) are found, the ReportCardRangeError configuration setting should be used to report the error to the directory server.
reset Method
Clears all properties to their default values.
Syntax
def reset() -> None: ...
Remarks
This method clears all properties to their default values.
reset_transaction_info Method
Resets transaction specific information.
Syntax
def reset_transaction_info() -> None: ...
Remarks
This method must be called between transactions when using the same class instance.
Each transaction that is attempted uses transaction specific values that should not be re-used in subsequent transactions. Call this method to make sure that any transaction specific information is cleared between transactions.
This method resets only the transaction specific information without resetting any other values which have been configured. This allows re-use of the same component instance.
In a Browser-Based flow the following are reset:
- Internal ephemeral encryption keys
- Values added by add_request_field
- account_type
- acsurl
- AppIP
- AppURLIndicator
- authentication_eci
- authentication_value
- billing_address
- browser_accept_header
- browser_ip_address
- browser_java_enabled_val
- browser_java_script_enabled_val
- browser_language
- browser_screen_color_depth
- browser_screen_height
- browser_time_zone
- browser_user_agent
- BrowserUserDeviceId
- BrowserUserId
- card_exp_date
- cardholder_email
- cardholder_home_phone
- cardholder_mobile_phone
- cardholder_name
- cardholder_work_phone
- card_number
- client_auth_request
- client_auth_response
- data_packet_out
- error_packet
- operation
- purchase_amount
- purchase_date
- recurring_exp_date
- recurring_frequency
- results_status
- server_transaction_id
- shipping_address
- transaction_status
- AccountAgeIndicator
- AccountChangeDate
- AccountChangeIndicator
- AccountDate
- AccountDayTransactions
- AccountId
- AccountPasswordChangeDate
- AccountPasswordChangeIndicator
- AccountProvisioningAttempts
- AccountPurchaseCount
- AccountYearTransactions
- ACSChallengeMandatedIndicator
- ACSReferenceNumber
- ACSTransactionId
- AddressMatch
- AuthenticationType
- CardholderInformation
- ChallengeCancellationIndicator
- DecoupledRequestIndicator
- DeliveryEmailAddress
- DeliveryTimeframe
- DSReferenceNumber
- DSTransactionId
- EncodedSessionData
- IncomingRawExtensions
- OutgoingRawExtensions
- extensions
- IncomingExtensionCount
- IncomingExtensionId
- IncomingExtensionName
- IncomingExtensionCritical
- IncomingExtensionData
- GiftCardAmount
- GiftCardCount
- GiftCardCurrency
- InstalmentPaymentData
- InteractionCounter
- MethodCompletionIndicator
- PaymentAccountAge
- PaymentAccountAge
- PaymentAccountAgeIndicator
- PaymentAccountAgeIndicator
- PreOrderDate
- PreOrderPurchaseIndicator
- AuthenticationInformation
- ReorderItemsIndicator
- ReqAuthCount
- ReqAuthData[Index]
- ReqAuthMethod[Index]
- ReqAuthTimestamp[Index]
- SessionData
- ShipAddressUsageDate
- ShipAddressUsageIndicator
- ShipIndicator
- ShipNameIndicator
- SuspiciousAccountActivity
- ThreeRIIndicator
- TransactionStatusReason
- TransactionType
- WhitelistStatus
- WhitelistStatusSource
- EMVPaymentTokenSource
send_auth_request Method
Sends the authentication request to the directory server.
Syntax
def send_auth_request() -> None: ...
Remarks
send_auth_request begins the 3-D Secure transaction flow by sending an authentication request to the directory_server_url.
After calling this method, check transaction_status to determine if the cardholder is authenticated (frictionless flow) or further cardholder interaction is required to complete the authentication (challenge flow).
Prior to calling send_auth_request, data must to be collected to facilitate fraud checks by the ACS. The following properties are applicable for both app-based and browser-based flows:
- acquirer_bin (required)
- acquirer_merchant_id (required)
- cardholder_name (required)
- card_number (required)
- directory_server_url (required)
- merchant_category_code (required)
- merchant_country_code (required)
- merchant_name (required)
- message_version (required)
- purchase_amount (required)
- purchase_date (required)
- requestor_id (required)
- requestor_name (required)
- requestor_url (required)
- results_url (required)
- account_type
- authentication_indicator
- BillingAddress*
- cardholder_email
- cardholder_home_phone
- cardholder_mobile_phone
- cardholder_work_phone
- DecoupledMaxTimeout
- DecoupledRequestIndicator
- device_channel
- message_category
- purchase_currency
- purchase_exponent
- ServerOperatorId
- server_transaction_id
- ShippingAddress*
- ThreeRIIndicator
App-Based Flow
In the app-based flow, device specific information is prepared by the 3DS SDK on the customer's device. This is transmitted to the 3DS Server class via a secure channel, the specifics of which are outside the scope of the classs. Set client_auth_request to this data prepared by the 3DS SDK.
Browser-Based Flow
Before calling this method, first check the cached card-range data to determine if a card_range_method_url has been set by the ACS. Card range data may be retrieved by calling request_card_ranges.
If no card_range_method_url is present for the given card, set MethodCompletionIndicator to U.
If a card_range_method_url has been specified by the ACS for the card number, the URL must be loaded in the cardholder's browser to allow the ACS to collect additional browser information for risk-based decision making. See the get_method_data for further details.
Once the method URL invocation is complete, the authentication request may be sent. If the method URL invocation failed, set MethodCompletionIndicator to N before calling send_auth_request.
The following additional properties are applicable in browser-based flow:
- notification_url (required)
- browser_accept_header (required)
- browser_language (required)
- browser_screen_height (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- browser_screen_width (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- browser_time_zone (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- browser_user_agent (required)
- browser_ip_address (conditional)
- browser_java_enabled_val (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- browser_java_script_enabled_val (not valid in 2.1.0, required in 2.2.0 and 2.3.1)
- browser_screen_color_depth (required in 2.1.0, required in 2.2.0 and 2.3.1 if BrowserJavaScriptEnabled is true)
- accept_language (2.3.1 only)
- acquirer_country_code (2.3.1 only)
Response Handling
After calling this method the transaction_status property holds the result. Possible values are:
Transaction Status | Description |
Y | Authenticated successfully |
C | Cardholder challenge required |
N | Not authenticated |
A | Not authenticated, but a proof of authentication attempt was generated in authentication_value |
U | Not authenticated due to technical or other issue |
R | Not authenticated because the issuer is rejecting authentication |
D | Challenge required; decoupled authentication confirmed |
I | Informational only; 3DS Requestor challenge preference acknowledged |
S | Challenge using SPC |
If the transaction is authenticated (Y or A), no further steps are required. The flow is considered frictionless and the 3-D Secure processing is complete. If processing a payment, the authentication_value and authentication_eci values can be included as proof of 3-D Secure authentication.
If the transaction requires a cardholder challenge (C, D or S), further steps are required.
If the transaction is not authenticated, TransactionStatusReason may contain details about the reason.
The following properties are applicable after calling this method:
- authentication_eci
- authentication_value
- transaction_status
- TransactionStatusReason
- CardholderInformation
- acsurl (if challenge required)
- ACSChallengeMandatedIndicator (if challenge required)
- AuthenticationType (if challenge required)
- DecoupledConfirmationIndicator
Response Handling - App-Based Flow
After calling this method, client_auth_response is populated with data to be transmitted back to the 3DS SDK. If a challenge is required, the client_auth_response data is used by the 3DS SDK to start when initiating the challenge process.
The 3DS Server is responsible for indicating to the 3DS SDK the results of the send_auth_request process, and whether or not a challenge is required. Exactly how this is done is outside the scope of the classs themselves. The response to the 3DS SDK over the secure channel should include information on what to do next.
Note: The transaction_status is also populated in the 3DS Server class and may be inspected prior to transmitting client_auth_response back to the 3DS SDK.
Response Handling - Browser-Based Flow
If transaction_status is C, then additional steps are required to complete the authentication. The get_challenge_request method should be called next to obtain data to be sent to the acsurl in an authentication window in the customer's browser. Once authentication is complete, the ACS will post the results to the results_url value that was specified when calling send_auth_request.
See the get_challenge_request method for more details.
If transaction_status is D, then decoupled authentication has been accepted by the ACS. DecoupledConfirmationIndicator will have a value of Y as well. Authentication will happen outside of the 3-D Secure flow and, when complete, the ACS will post the results to the results_url that was specified when calling send_auth_request.
The DecoupledTimeRemaining value, which is calculated based on the DecoupledMaxTimeout value sent in the initial authentication request, can be checked to see the amount of time remaining before decoupled authentication must be completed. If the ACS does not post the results before this value runs out, it can be assumed that decoupled authentication was not successful.
SPC-Based Authentication
SPC (Secure Payment Confirmation) provides a method to perform a challenge using preestablished FIDO credentials when using a Browser. The SPC authentication can be initiated by the 3DS Requestor via an extra AReq/ARes message pair or by the ACS via a standard Browser Challenge Flow.
For an SPC authentication to execute correctly, the following prerequisites apply:
- The ACS has an enrolled FIDO authenticator on the device for this Cardholder.
- The 3DS Requestor and/or the ACS have detected that the Cardholder Browser supports the related SPC APIs (allow="payment *; publickey-credentialsget *"). For the ACS, this information can be obtained via the Browser User Agent data element or via data obtained via the 3DS Method.
SPC-based authentication can be enabled with the following additions:
Prior to sending the initial authentication request packet (AReq) using the send_auth_request method, the ThreeDSRequestorSpcSupport configuration setting should be set to True to indicate that SPC is supported by the 3DS Requestor.
If SPC is accepted by the ACS, the resulting transaction_status should be S. The response will also contain a list of enrolled FIDO (WebAuthn) credentials associated with the cardholder, and SPC transaction data. This data is available in the following configuration settings:
- WebAuthnCredentialListCount
- WebAuthnCredentialListWebAuthnCredential
- WebAuthnCredentialListRelyingPartyId
- SPCTransactionAdditionalData
- SPCTransactionChallenge
- SPCTransactionChallengeInfoText
- SPCTransactionCurrency
- SPCTransactionDisplayName
- SPCTransactionIcon
- SPCTransactionIssuerImage
- SPCTransactionIssuerImageDark
- SPCTransactionIssuerImageMonochrome
- SPCTransactionPayeeName
- SPCTransactionPayeeOrigin
- SPCTransactionPSImage
- SPCTransactionPSImageDark
- SPCTransactionPSImageMonochrome
- SPCTransactionTimeout
- SPCTransactionValue
This information is relayed to the 3DS Requestor implementation, and the 3DS Requestor invokes the SPC authentication (SPC API) against the WebAuthn Credential list. The cardholder authenticates using the FIDO authenticator on their device, and the 3DS Requestor retrieves the Assertion Data from the SPC API call.
The 3DS Server is then configured to includes this FIDO Assertion Data is then included in a new authentication request by setting the ReqAuthData[Index] and a ReqAuthMethod[Index] of 09. If the AuthenticationInformation value was saved earlier, it can be set via the same configuration setting. If the 3DS Requestor encounters an error during SPC API invokation, this can be indicated using the SPCIncompletionIndicator.
The send_auth_request method should then be called again to transmit this data to the ACS (by way of the DS) in a second AReq.
When send_auth_request returns, the 3DS Server proceed the same as the regular browser-based flow when the ARes is returned.
When SPC authentication is to be performed, the authenticaton must be completed within 9 minutes. The component will automatically start an internal timer that can be checked using the CheckSPCTimeout configuration setting. This will return the number of seconds left for SPC authentication to complete. If the time has expired before receiving the Assertion Data from the 3DS Requestor, checking this configuration setting will cause the component to automatically send the second AReq message with an SPCIncompletionIndicator value of 03, indicating that SPC authentication timed out.
Note that SPC-based authentication is only available when a message_version of 2.3.1 is used.
on_card_range Event
Fired when the response to a Preparation Request Message (PReq) is received.
Syntax
class ServerCardRangeEventParams(object): @property def range_start() -> str: ... @property def range_end() -> str: ... @property def range_action() -> str: ... @property def acs_start_protocol_version() -> str: ... @property def acs_end_protocol_version() -> str: ... @property def ds_start_protocol_version() -> str: ... @property def ds_end_protocol_version() -> str: ... @property def three_ds_method_url() -> str: ... @property def acs_information_indicator() -> str: ... @property def valid() -> bool: ... @valid.setter def valid(value) -> None: ... # In class Server: @property def on_card_range() -> Callable[[ServerCardRangeEventParams], None]: ... @on_card_range.setter def on_card_range(event_hook: Callable[[ServerCardRangeEventParams], None]) -> None: ...
Remarks
The on_card_range event fires for each range of card numbers to be added or removed from the cache. The RangeAction parameter indicates whether the range specified by the RangeStart and RangeEnd arguments is to be added or deleted from the current cache.
RangeStart | 13-19 digit account number from the Directory indicating the first number in a range of account numbers to be added or deleted from the current cache. |
RangeEnd | 13-19 digit account number from the Directory indicating the last number in a range of account numbers to be added or deleted from the current cache. This End number must be the same length as the Start number. |
RangeAction | Indicates the action to be taken with the card range specified by the RangeStart and RangeEnd parameters.
Possible values are:
|
ACSStartProtocolVersion | The earliest (i.e. oldest) active protocol version that is supported by the ACS. |
ACSEndProtocolVersion | The most recent active protocol version that is supported by the ACS URL. |
DSStartProtocolVersion | The earliest (i.e. oldest) active protocol version that is supported by the DS. |
DSEndProtocolVersion | The most recent active protocol version that is supported by the DS. |
ThreeDSMethodURL | The fully qualified ACS URL that will be used by the 3DS method. |
ACSInformationIndicator | Additional information on the card range as supplied by the ACS. This field is a comma separate list of values returned from the server; possible values are:
|
Valid | Whether or not the card range data is valid. If an issue is found with the card range data, this can be set to false to cause a 203 error to be returned to the directory server. |
Note that the card ranges must be processed in the order returned.
These card ranges are also returned outside this event in the card_range_start, card_range_end, card_range_action, card_range_acs_start_protocol_version, card_range_acs_end_protocol_version, and card_range_method_url properties.
on_card_range_data Event
Fired when the response to a Preparation Request Message (PReq) is received. This event is used for card range data returned when version 2.3.1 of the protocol is used.
Syntax
class ServerCardRangeDataEventParams(object): @property def range_action() -> str: ... @property def issuer_country_code() -> str: ... @property def ds_protocol_versions() -> int: ... @property def status() -> int: ... @status.setter def status(value) -> None: ... # In class Server: @property def on_card_range_data() -> Callable[[ServerCardRangeDataEventParams], None]: ... @on_card_range_data.setter def on_card_range_data(event_hook: Callable[[ServerCardRangeDataEventParams], None]) -> None: ...
Remarks
When card ranges are requested using using message_version 2.3.1, the on_card_range_data event will fire for each card range data object received in the Preparation Response Message (PRes) returned from the directory server.
This data indicates the most recent protocol versions supported by the ACS and, optionally, the DS that hosts that range. If configured, the ACS URL for the 3DS Method will be included as well, along with the 3DS features supported by the ACS, such as Trust List or Decoupled Authentication.
The RangeAction parameter indicates whether the ranges defined in the ranges property are to be added, deleted, or modified in the current cache.
RangeAction | Indicates the action to be taken with the card range specified by the RangeStart and RangeEnd parameters.
Possible values are:
| ||||||||
IssuerCountryCode | The Issuer country for the ranges. An ISO 3166-1 numeric three-digit country code. | ||||||||
DSProtocolVersions | The active protocol versions supported by the Directory Server.
A bitwise OR of the following values:
| ||||||||
Status | If an issue is found with the card range, it can be reported by setting the Status parameter. Possible values are:
|
on_data_packet_in Event
Fired when receiving a data packet from the server.
Syntax
class ServerDataPacketInEventParams(object): @property def data_packet() -> bytes: ... # In class Server: @property def on_data_packet_in() -> Callable[[ServerDataPacketInEventParams], None]: ... @on_data_packet_in.setter def on_data_packet_in(event_hook: Callable[[ServerDataPacketInEventParams], None]) -> None: ...
Remarks
This event fires when a packet is received. The entire data packet (including all framing and error detection characters) is contained in the DataPacket parameter. This parameter may be inspected for advanced troubleshooting, or to extract additional response properties beyond the scope of this component.
on_data_packet_out Event
Fired when sending a data packet to the server.
Syntax
class ServerDataPacketOutEventParams(object): @property def data_packet() -> bytes: ... # In class Server: @property def on_data_packet_out() -> Callable[[ServerDataPacketOutEventParams], None]: ... @on_data_packet_out.setter def on_data_packet_out(event_hook: Callable[[ServerDataPacketOutEventParams], None]) -> None: ...
Remarks
This event fires right before each data packet is sent. The entire data packet (including all framing and error detection characters) is contained in the DataPacket parameter. This parameter may be inspected for advanced troubleshooting, or may be modified to support additional features beyond the scope of this component.
on_dsurl Event
Fired for each DS URL present in the Preparation Response Message (PRes).
Syntax
class ServerDSURLEventParams(object): @property def three_ds_server_to_ds_url() -> str: ... @property def ds_country_code() -> str: ... # In class Server: @property def on_dsurl() -> Callable[[ServerDSURLEventParams], None]: ... @on_dsurl.setter def on_dsurl(event_hook: Callable[[ServerDSURLEventParams], None]) -> None: ...
Remarks
The on_dsurl event fires for each DS URL returned from the directory server when requesting card ranges via the request_card_ranges method.
Each DSURL object contains a ThreeDSServerToDsUrl and, optionally, a CountryCode. For a given card range, if the Issuer Country Code matches the DS CountryCode, the 3DS Server uses this ThreeDSServerToDsUrl to communicate with the DS. If there is no match, the 3DS Server uses the default 3DS Server to DS URL.
on_error Event
Information about errors during data delivery.
Syntax
class ServerErrorEventParams(object): @property def error_code() -> int: ... @property def description() -> str: ... # In class Server: @property def on_error() -> Callable[[ServerErrorEventParams], None]: ... @on_error.setter def on_error(event_hook: Callable[[ServerErrorEventParams], None]) -> None: ...
Remarks
The on_error event is fired in case of exceptional conditions during message processing.
ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Codes section.
on_log Event
Fires once for each log message.
Syntax
class ServerLogEventParams(object): @property def log_level() -> int: ... @property def message() -> str: ... @property def log_type() -> str: ... # In class Server: @property def on_log() -> Callable[[ServerLogEventParams], None]: ... @on_log.setter def on_log(event_hook: Callable[[ServerLogEventParams], None]) -> None: ...
Remarks
Logging in the component is handled through the on_log event. This will fire anytime a message is built or a response is parsed, including error messages.
When the on_log event is fired, the message in question is made available via the Message event parameter. Properties such as EphemeralKey and DeviceParams are also available when they are gathered by the Client. The other event arguments are LogType and LogLevel:
The LogType parameter indicates the type of the log entry. Possible values are:
- "Info"
- "RequestHeaders"
- "ResponseHeaders"
- "RequestBody"
- "ResponseBody"
- "ProxyRequest"
- "ProxyResponse"
- "FirewallRequest"
- "FirewallResponse"
- "AReq"
- "ARes"
- "CReq"
- "CRes"
- "RReq"
- "RRes"
- "PReq"
- "PRes"
- "Erro"
- "EphemeralKey"
- "DeviceParams"
It is recommended to output all messages raised in this event to a file for record keeping purposes, or for later debugging issues that may have come up.
The Server and Client components also have on_data_packet_in and on_data_packet_out events that fire anytime a data packet is received or sent, respectively. The entire data packet is then accessible in the DataPacket event parameter. For encrypted packets, this would contain the full encrypted data. This parameter may be inspected for advanced troubleshooting.
on_message_extension Event
Fired when a Message Extension is present in a message being parsed.
Syntax
class ServerMessageExtensionEventParams(object): @property def name() -> str: ... @property def id() -> str: ... @property def data() -> str: ... @property def critical() -> bool: ... @property def recognized() -> bool: ... @recognized.setter def recognized(value) -> None: ... # In class Server: @property def on_message_extension() -> Callable[[ServerMessageExtensionEventParams], None]: ... @on_message_extension.setter def on_message_extension(event_hook: Callable[[ServerMessageExtensionEventParams], None]) -> None: ...
Remarks
Enables the parsing of Message Extension data by firing when extensions have been included in a ARes, CRes, RReq or PRes message that is being parsed. Message Extensions carry additional data not defined in the 3DS Protocol. This event fires once for each such extension. Event arguments correspond to the four elements comprising the extension, as well as an indication of whether or not the extension is recognized:
Name | 'name' element - extension name |
Id | 'id' element - assigned extension group identifier |
Data | 'data' element - message extension data |
Critical | 'criticalityIndicator' element - criticality indicator |
Recognized | set by component to indicate whether or not the extension is recognized |
If a 3-D Secure application receives a message containing a critical extension that it does not recognize, it must treat it as invalid and return Error Code = 202. This event will fire before the exception is thrown.
on_ssl_server_authentication Event
Fired after the server presents its certificate to the client.
Syntax
class ServerSSLServerAuthenticationEventParams(object): @property def cert_encoded() -> bytes: ... @property def cert_subject() -> str: ... @property def cert_issuer() -> str: ... @property def status() -> str: ... @property def accept() -> bool: ... @accept.setter def accept(value) -> None: ... # In class Server: @property def on_ssl_server_authentication() -> Callable[[ServerSSLServerAuthenticationEventParams], None]: ... @on_ssl_server_authentication.setter def on_ssl_server_authentication(event_hook: Callable[[ServerSSLServerAuthenticationEventParams], None]) -> None: ...
Remarks
During this event, the client can decide whether or not to continue with the connection process. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether or not to continue.
When Accept is False, Status shows why the verification failed (otherwise, Status contains the string OK). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.
on_ssl_status Event
Fired when secure connection progress messages are available.
Syntax
class ServerSSLStatusEventParams(object): @property def message() -> str: ... # In class Server: @property def on_ssl_status() -> Callable[[ServerSSLStatusEventParams], None]: ... @on_ssl_status.setter def on_ssl_status(event_hook: Callable[[ServerSSLStatusEventParams], None]) -> None: ...
Remarks
The event is fired for informational and logging purposes only. This event tracks the progress of the connection.
Server Config Settings
The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the config method.Server Config Settings
Possible values are:
01 | No account (guest check-out) |
02 | Created during this transaction |
03 | Less than 30 days |
04 | 30-60 days |
05 | More than 60 days |
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include.
The complete list of elements (all available as config settings) comprising Cardholder Account Information is:
- AccountAgeIndicator
- AccountChangeDate
- AccountChangeIndicator
- AccountDate
- AccountPasswordChangeDate
- AccountPasswordChangeIndicator
- AccountRequestorID
- AccountPurchaseCount
- AccountProvisioningAttempts
- AccountDayTransactions
- AccountYearTransactions
- PaymentAccountAge
- PaymentAccountAgeIndicator
- ShipAddressUsageDate
- ShipAddressUsageIndicator
- ShipNameIndicator
- SuspiciousAccountActivity
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
Possible values are:
01 | Changed during this transaction |
02 | Less than 30 days |
03 | 30-60 days |
04 | More than 60 days |
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
Possible values are:
01 | No change |
02 | Changed during this transaction |
03 | Less than 30 days |
04 | 30-60 days |
05 | More than 60 days |
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
This identifier is coded as the SHA-256 + Base64URL of the account identifier for the 3DS Requestor and is provided as a string.
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
01 | Portrait |
02 | Landscape |
03 | Voice |
04 | Other |
Possible values are:
01 | Native UI |
02 | HTML UI |
Possible values are:
01 | Text |
02 | Single Select |
03 | Multi Select |
04 | OOB |
05 | HTML Other (valid only for HTML UI) |
06 | HTML OOB (valid only for 2.3.1) |
07 | Information (valid only for 2.3.1) |
This setting is only applicable to the app-based flow and is informational. It does not need to be queried or set in most cases.
Y | Shipping address matches billing address. |
N | Shipping address does not match billing address. |
Y | 3DS Requestor App URL is supported by the OOB Authentication App |
N | 3DS Requestor App URL is NOT supported by the OOB Authentication App |
threeDSReqPriorAuthDsTransId | The prior DS Transaction ID (2.3.1 only) |
threeDSReqPriorAuthData | Data that documents and supports a specific authentication process |
threeDSReqPriorAuthMethod | Mechanism used by the Cardholder to previously authenticate to the 3DS Requestor |
threeDSReqPriorAuthTimestamp | Data and time converted into UTC of the prior Cardholder authentication |
threeDSReqPriorRef | Additional information |
01 | Static Passcode |
02 | SMS OTP |
03 | Key fob or EMV card reader OTP |
04 | App OTP |
05 | OTP Other |
06 | KBA |
07 | OOB Biometrics |
08 | OOB Login |
09 | OOB Other |
10 | Other |
11 | Push Confirmation |
12 | Decoupled |
13 | WebAuthn |
14 | SPC |
15 | Behavioral biometrics |
16 | Electronic ID |
17-79 | Reserved for future EMVCo use |
80-99 | Reserved for DS use |
Possible values include:
01 | Static |
02 | Dynamic |
03 | OOB |
04 | Decoupled |
01 | General |
02 | Certificate expiry |
03 | Fraud alert |
04 | Operational alert |
05 | Transactional data |
06 | Other |
07-79 | Reserved for EMVCo future use |
80-99 | Reserved for DS use |
1 | 3DS SDK |
2 | 3DS Server |
4 | DS |
8 | ACS |
01 | Critical |
02 | Major |
03 | Minor |
04 | Informational |
01 | 3DS Server |
02 | DS |
03 | ACS |
01 | Direct order/FIFO (First In First Out) |
02 | Reverse order/LIFO (Last In First Out) |
This config may not be available (empty value) in the on_card_range_data. This config will always be empty when UseJsonDOM is true.
Y | Validated |
N | Failed validation |
U | Status unknown, unavailable, or does not apply |
01 | DS |
02 | ACS |
03-79 | Reserved for EMVCo future use |
80-99 | Reserved for DS use |
Possible values are:
01 | Cardholder selected "Cancel" by interaction with the cancellation button in the UI |
02 | 3DS Requestor canceled Authentication |
03 | Transaction Abandoned |
04 | Transaction Timed out at ACS - other timeouts |
05 | Transaction Timed out at ACS - First CReq not received by ACS |
06 | Transaction Error |
07 | Unknown |
08 | Transaction Timed Out at 3DS SDK |
09 | Error message in response to the CRes message sent by the ACS |
10 | Error in response to the CRes message received by the ACS |
11-79 | Reserved for future EMV/Co use (values invalid until defined by EMVCo) |
80-99 | Reserved for future DS use |
When an error is encountered during the CReq/CRes process, a copy of the error message (Erro) may be included in the RReq sent to the server. This is required when the ChallengeCancellationIndicator is 09 or 10. The following configuration settings will be populated with data from this error message:
- ChallengeErrorReportingACSTransID
- ChallengeErrorReportingDSTransID
- ChallengeErrorReportingErrorCode
- ChallengeErrorReportingErrorComponent
- ChallengeErrorReportingErrorDescription
- ChallengeErrorReportingErrorDetail
- ChallengeErrorReportingErrorMessageType
- ChallengeErrorReportingMessageType
- ChallengeErrorReportingMessageVersion
- ChallengeErrorReportingSDKTransID
- ChallengeErrorReportingThreeDSServerTransID
If the time has expired before receiving the Assertion Data from the 3DS Requestor, checking this configuration setting will cause the component to automatically send the second AReq message with an SPC Incompletion Indicator value of 03, indicating that SPC authentication timed out.
Possible values are:
Y | Confirms decoupled authentication will be utilized. |
N | Decoupled authentication will not be utilized. |
Note that if the 3DS Requestor decoupled request indicator = N, a value of Y cannot be returned. If the transaction_status is D, a value of N is not valid.
Possible values are:
Y | Decoupled authentication is supported and preferred if challenge is necessary. |
N | Do not use decoupled authentication. |
F | Decoupled Authentication is supported and is to be used only as a fallback challenge method if a challenge is necessary (transaction_status = D in RReq). |
B | Decoupled Authentication is supported and can be used as a primary or fallback challenge method if a challenge is necessary (transaction_status = D in either ARes or RReq). |
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. The data elements making up the Indicator will be formatted into a JSON object prior to being placed into the Device Merchant Risk Indicator field of the message. The Indicator is the Merchant's assessment of the level of fraud risk for the specific authentication for both the cardholder and the authentication being conducted.
The complete list of elements (all available as config settings) comprising the Merchant Risk Indicator is:
- DeliveryEmailAddress
- DeliveryTimeframe
- GiftCardAmount
- GiftCardCount
- GiftCardCurrency
- PreOrderDate
- PreOrderPurchaseIndicator
- ReorderItemsIndicator
- ShipIndicator
Possible values are:
01 | Electronic Delivery |
02 | Same day shipping |
03 | Overnight shipping |
04 | Two-day or more shipping |
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. See the DeliveryEmailAddress configuration setting for the complete list of elements (all available as config settings) comprising the Merchant Risk Indicator.
For bound devices (value = 11-14), this convest the type of binding that was performed.
01 | Device is not bound by Cardholder |
02 | Not eligible as determined by issuer |
03 | Pending confirmation by Cardholder |
04 | Cardholder rejected |
05 | Device Binding Status unknown, unavailable, or does not apply |
06-10 | Reserved for EMVCo future use |
11 | Device is bound by Cardholder (device is bound using hardware/SIM internal to the consumer device. For instance, keys stored in a secure element on the device) |
12 | Device is bound by Cardholder (device is bound using hardware external to the consumers device. For example, an external FIDO authenticator) |
13 | Device is bound by Cardholder (device is bound using data that includes dynamically generated data and could include a unique device ID) |
14 | Device is bound by Cardholder (device is bound using static device data that has been obtained from the consumer's device) |
15 | Device is bound by Cardholder (other method) |
16-79 | Reserved for EMVCo future use |
80-99 | Reserved for DS use |
01 | 3DS Server |
02 | DS |
03 | ACS |
04-79 | Reserved for EMVCo future use |
80-99 | Reserverd for DS use |
This setting is read-only. For outgoing requests, a value of 01 will always be used when DeviceBindingStatus is set.
Possible values are:
01 | Native |
02 | HTML |
03 | Both |
One of the elements comprising the Device Rendering Options which define the SDK UI types that the device supports (along with DeviceRenderingInterface). These Options are required in AReq messages.
01 | Text |
02 | Single Select |
04 | Multi Select |
08 | OOB |
16 | HTML Other |
32 | HTML OOB |
64 | Information |
Note that currently all SDKs need to support all UI types. In the future, however, this may change (for example, smart watches may support a UI Type not yet defined). In light of this, all UI types are enabled by default (127).
Valid values are:
01 | 3DS Server |
02 | DS |
This is required to be set if EMVPaymentTokenIndicator is true.
If the DS supports this functinoality, the response packet (PRes) will include a URL from which the card range data maybe downloaded. The component will automatically download the data from this location and process the card ranges.
Available when message_version is 2.3.1 only.
When the ACS POSTs the final challenge response to the notification_url this setting may be set to the threeDSSessionData form variable value, and SessionData setting may then be queried to return the decoded session data.
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. See the DeliveryEmailAddress configuration setting for the complete list of elements (all available as config settings) comprising the Merchant Risk Indicator.
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. See the DeliveryEmailAddress configuration setting for the complete list of elements (all available as config settings) comprising the Merchant Risk Indicator.
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. See the DeliveryEmailAddress configuration setting for the complete list of elements (all available as config settings) comprising the Merchant Risk Indicator.
0 (None) | No events are logged. |
1 (Info - default) | Informational events are logged. |
2 (Verbose) | Detailed data is logged. |
3 (Debug) | Debug data is logged. |
Note: data_packet_out will always contain the raw unmasked value regardless of this setting. This setting only applies to the on_log event.
The default value is True.
Possible values include:
AReq | Authentication Request Message |
ARes | Authentication Response Message |
CReq | Challenge Request Message |
CRes | Challenge Response Message |
PReq | Preparation Request Message |
PRes | Preparation Response Message |
RReq | Results Request Message |
RRes | Results Response Message |
Erro | Error Message |
This setting is read-only.
Y (default) | Successfully completed. |
N | Did not successfully complete. |
U | Unavailable. 3DS Method URL was not present in the PRes message data for the card range associated with the Cardholder Account Number. |
Note: When sending extension data it is generally recommended to use extensions instead of this setting.
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
Possible values are:
01 | No account (guest check-out) |
02 | Created during this transaction |
03 | Less than 30 days |
04 | 30-60 days |
05 | More than 60 days |
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. See the DeliveryEmailAddress configuration setting for the complete list of elements (all available as config settings) comprising the Merchant Risk Indicator.
Possible values are:
01 | Merchandise available |
02 | Future availability |
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. See the DeliveryEmailAddress configuration setting for the complete list of elements (all available as config settings) comprising the Merchant Risk Indicator.
Possible values are:
2.1.0 (Default) | |
2.2.0 | |
2.3.1 |
01 | Fixed Purchase Amount |
02 | Variable Purchase Amount |
03-79 | Reserved for EMVCo future use |
80-99 | Reserved for DS use |
01 | Fixed Frequency |
02 | Variable or Unknown Frequency |
03-79 | Reserved for EMVCo future use |
80-99 | Reserved for DS use |
Possible values are:
01 | First time ordered |
02 | Reordered |
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. See the DeliveryEmailAddress configuration setting for the complete list of elements (all available as config settings) comprising the Merchant Risk Indicator.
When message_version is 2.3.1, a reason can be provided. Possible values are:
1 | Overlap in the card ranges provided by the DS in the PRes message. |
2 | Action is not possible for the card range. |
Part of the 3DS Requestor Authentication Information which contains optional information about how the cardholder authenticated during login to their 3DS Requestor account.
This is an indexed configuration setting, set using an index between 0 and ReqAuthCount - 1.
Part of the 3DS Requestor Authentication Information which contains optional information about how the cardholder authenticated during login to their 3DS Requestor account.
Possible values are:
01 | No 3DS Requestor authentication occurred (i.e. cardholder "logged in" as guest) |
02 | Login to the cardholder account at the 3DS Requestor system using 3DS Requestor's own credentials |
03 | Login to the cardholder account at the 3DS Requestor system using federated ID |
04 | Login to the cardholder account at the 3DS Requestor system using issuer credentials |
05 | Login to the cardholder account at the 3DS Requestor system using third-party authentication |
06 | Login to the cardholder account at the 3DS Requestor system using FIDO Authenticator |
07 | Login to the cardholder account at the 3DS Requestor system using FIDO Authenticator (FIDO Assertion or Attestation data signed) |
08 | SRC Assurance Data |
09 | SPC Authentication |
10 | Electronic ID Authentication Data |
11-79 | Reserved for EMVCo future use (values invalid until defined by EMVCo) |
80-99 | Reserved for future DS use |
This is an indexed configuration setting, set using an index between 0 and ReqAuthCount - 1.
Part of the 3DS Requestor Authentication Information which contains optional information about how the cardholder authenticated during login to their 3DS Requestor account.
This is an indexed configuration setting, set using an index between 0 and ReqAuthCount - 1.
Possible values are:
01 | No preference |
02 | No challenge requested |
03 | Challenge requested: 3DS Requestor Preference |
04 | Challenge requested: Mandate |
05 | No challenge requested (transactional risk analysis is already performed). Valid for message_version 2.2.0 and 2.3.1 only |
06 | No challenge requested (data share only). Valid for message_version 2.2.0 and 2.3.1 only |
07 | No challenge requested (strong consumer authentication is already performed). Valid for message_version 2.2.0 and 2.3.1 only |
08 | No challenge requested (utilize Trust List exemption if no challenge required). Valid for message_version 2.2.0 and 2.3.1 only |
09 | Challenge requested (Trust List prompt requested if challenge required). Valid for message_version 2.2.0 and 2.3.1 only |
10 | No challenge requested (utilize low value exemption). Valid for message_version 2.3.1 only |
11 | No challenge requested (Secure corporate payment exemption). Valid for message_version 2.3.1 only |
12 | Challenge requested (Device Binding prompt requested if challegnge required). Valid for message_version 2.3.1 only |
13 | Challenge requested (Issuer requested). Valid for message_version 2.3.1 only |
14 | Challenge requested (Merchant initiated transactions). Valid for message_version 2.3.1 only |
15-79 | Reserved for EMVCo future use (values invalid until defined by EMVCo) |
80-99 | Reserved for DS use |
If not provided, the ACS action would be identical to 01 (no preference).
01 | Static Passcode |
02 | SMS OTP |
03 | Key fob or EMV card reader OTP |
04 | App OTP |
05 | OTP Other |
06 | KBA |
07 | OOB Biometrics |
08 | OOB Login |
09 | OOB Other |
10 | Other |
11 | Push Notification |
sellerName | Name of the Seller |
sellerId | Merchant-assigned Seller identifier |
sellerBusinessName | Business Name of the Seller |
sellerAccDate | Date converted into UTC that the Seller started using the Merchant's services. |
sellerAddrLine1 | First line of the business or contact street address of the Seller |
seerAddrLine2 | Second line of the business or contact street address of the Seller |
sellerAddrLine3 | Third line of the business or contact street address of the Seller |
sellerAddrCity | Business or contact city of the Seller |
sellerAddrState | Business or contact state or province of the Seller |
sellerAddrPostCode | Business or contact ZIP or other postal code of the seller |
sellerAddrCountry | Business or contact country of the Seller |
sellerEmail | Business or contact email address of the Seller |
sellerPhone | Business or contact phone number of the Seller |
When the ACS POSTs the final challenge response to the notification_url the EncodedSessionData may be set to the threeDSSessionData form variable value, and this setting may then be queried to return the decoded session data.
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
Possible values are:
01 | This transaction |
02 | Less than 30 days |
03 | 30-60 days |
04 | More than 60 days |
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
Possible values are:
01 | Ship to cardholder's billing address |
02 | Ship to another verified address on file with merchant |
03 | Ship to address that is different than the cardholder's billing address |
04 | "Ship to Store" / Pick-up at local store (Store address shall be populated in shipping address fields) |
05 | Digital goods (includes online services, electronic gift cards and redemption codes) |
06 | Travel and Event tickets, not shipped |
07 | Other (for example, Gaming, digital services not shipped, emedia subscriptions, etc.) |
08 | Pick-up and go delivery |
09 | Locker delivery (or other automated pick-up) |
An element of the Merchant Risk Indicator applicable in AReq messages, which is optional but strongly recommended to include. See the DeliveryEmailAddress configuration setting for the complete list of elements (all available as config settings) comprising the Merchant Risk Indicator.
Possible values are:
01 | Account Name identical to shipping Name |
02 | Account Name different than shipping Name |
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
01 | SPC did not run or did not successfully complete |
02 | Cardholder cancelled the SPC authentication |
03 | SPC timed out |
04-99 | Reserved for EMVCo future use |
01 | Native Client |
02 | Browser |
03 | Shell |
The default value is True.
Possible values are:
01 | No suspicious activity has been observed |
02 | Suspicious activity has been observed |
An element of the Cardholder Account Information provided by the 3DS Requestor in AReq messages, which is optional but strongly recommended to include. See the AccountAgeIndicator configuration setting for the complete list of elements (all available as config settings) comprising Cardholder Account Information.
Possible values are:
01 | Recurring transaction |
02 | Installment transaction |
03 | Add card |
04 | Maintain card information |
05 | Account verification |
06 | Split shipment |
07 | Top-up |
08 | Mail Order |
09 | Telephone Order |
10 | Trust List status check |
11 | Other payment |
12 | Billing Agreement |
13 | Device Binding status check |
14 | Card Security Code status check |
15 | Delayed shipment |
16 | Split payment |
17 | FIDO credential deletion |
18 | FIDO credential registration |
19 | Decoupled authentication fallback |
20-79 | Reserved for EMVCo future use |
80-99 | Reserved for DS use |
05 | Transaction Risk Analysis exemption |
08 | Trust List exemption |
10 | Low Value exemption |
11 | Secure Corporate Payments exemption |
79 | No exemption applied |
01-04, 06, 07, 09, and 12-78 | Reserved for EMVCo future use |
80-99 | Reserved for DS use |
Multiple values can be or-ed together to support multiple types. Possible values are:
1 | Cryptocurrency transaction |
2 | NFT transaction |
Possible values are:
01 | Card authentication failed |
02 | Unknown device |
03 | Unsupported device |
04 | Exceeds authentication frequency limit |
05 | Expired card |
06 | Invalid card number |
07 | Invalid transaction |
08 | No Card record |
09 | Security failure |
10 | Stolen card |
11 | Suspected fraud |
12 | Transaction not permitted to cardholder |
13 | Cardholder not enrolled in service |
14 | Transaction timed out at the ACS |
15 | Low confidence |
16 | Medium confidence |
17 | High confidence |
18 | Very high confidence |
19 | Exceeds ACS maximum challenges |
20 | Non-Payment transaction non supported |
21 | 3RI transaction not supported |
22 | ACS technical issue |
23 | Decoupled Authentication required by ACS but not requested by 3DS Requestor |
24 | 3DS Requestor Decoupled Max Expiry Time exceeded |
25 | Decoupled Authentication was provided insufficient time to authenticate cardholder. ACS will not make attempt |
26 | Authentication attempted but not performed by the cardholder |
27 | Preferred Authentication Method not supported |
28 | Validation of content security policy failed |
29 | Authentication attempted but not completed by the Cardholder. Fall back to Decoupled Authentication |
30 | Authentication completed successfully but additional authentication of the Cardholder required. Reinitiate as Decoupled Authentication |
31-79 | Reserved for future EMVCo use (values invalid until defined by EMVCo) |
80-99 | Reserved for DS use |
Possible values (derived from ISO Standard) are:
01 | Goods/ Service Purchase |
03 | Check Acceptance |
10 | Account Funding |
11 | Quasi-Cash Transaction |
28 | Prepaid Activation and Load |
Y | 3DS Requestor is trust listed by cardholder |
N | 3DS Requestor is not trust listed by cardholder |
E | Not eligible as determined by issuer |
P | Pending confirmation by cardholder |
R | Cardholder rejected |
U | Trust list status unknown, unavailable, or does not apply |
This may be set prior to calling the send_auth_request method. In this case, only values of Y or N are valid. This may also be set when the Authentication Response message or Results Request messages are received, and will be set to the values received from the Directory Server.
01 | 3DS Server |
02 | DS |
03 | ACS |
04-79 | Reserved for EMVCo future use |
08-99 | Reserved for DS use |
The default value is True. Note that when False, the XPath settings will not be available.
Y | 3DS Requestor is whitelisted by cardholder |
N | 3DS Requestor is not whitelisted by cardholder |
E | Not eligible as determined by issuer |
P | Pending confirmation by cardholder |
R | Cardholder rejected |
U | Whitelist status unknown, unavailable, or does not apply |
This may be set prior to calling the send_auth_request method. In this case, only values of Y or N are valid. This may also be set when the Authentication Response message or Results Request messages are received, and will be set to the values received from the Directory Server.
01 | 3DS Server |
02 | DS |
03 | ACS |
04-79 | Reserved for EMVCo future use |
08-99 | Reserved for DS use |
The current element is specified through the XPath configuration setting. This configuration setting is read-only.
The current element is specified through the XPath configuration setting. This configuration setting is read-only.
The current element is specified through the XPath configuration setting. This configuration setting is read-only.
The current element is specified through the XPath configuration setting. This configuration setting is read-only.
The current element is specified through the XPath configuration setting. This configuration setting is read-only.
When XPath is set to a valid path, XElement points to the name of the element, with XText, XParent, XSubTree, XChildCount, XChildName[i], and XChildXText[i] providing other properties of the element.
XPath syntax is available for both XML and JSON documents. An XPath is a series of one or more element accessors separated by the / character, for example, /A/B/C/D. An XPath can be absolute (i.e., it starts with /), or it can be relative to the current XPath location.
The following are possible values for an element accessor, which operates relative to the current location specified by the XPath accessors, which proceed it in the overall XPath string:
Accessor | Description |
name | The first element with a particular name. Can be *. |
[i] | The i-th element. |
name[i] | The i-th element with a particular name. |
[last()] | The last element. |
[last()-i] | The element i before the last element. |
name[@attrname="attrvalue"] | The first element with a particular name that contains the specified attribute-value pair.
Supports single and double quotes. (XML Only) |
. | The current element. |
.. | The parent element. |
For example, assume the following XML and JSON responses.
XML:
<firstlevel> <one>value</one> <two> <item>first</item> <item>second</item> </two> <three>value three</three> </firstlevel>
JSON:
{ "firstlevel": { "one": "value", "two": ["first", "second"], "three": "value three" } }
The following are examples of valid XPaths for these responses:
Description | XML XPath | JSON XPath |
Document root | / | /json |
Specific element | /firstlevel/one | /json/firstlevel/one |
i-th child | /firstlevel/two/item[2] | /json/firstlevel/two/[2] |
This list is not exhaustive, but it provides a general idea of the possibilities.
The current element is specified through the XPath configuration setting. This configuration setting is read-only.
The current element is specified in the XPath configuration setting. This configuration setting is read-only.
SSL Config Settings
When enabled, SSL packet logs are output using the on_ssl_status event, which will fire each time an SSL packet is sent or received.
Enabling this configuration setting has no effect if ssl_provider is set to Platform.
The path set by this property should point to a directory containing CA certificates in PEM format. The files each contain one CA certificate. The files are looked up by the CA subject name hash value, which must hence be available. If more than one CA certificate with the same name hash value exist, the extension must be different (e.g., 9d66eef0.0, 9d66eef0.1). OpenSSL recommends the use of the c_rehash utility to create the necessary links. Please refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.
The file set by this property should contain a list of CA certificates in PEM format. The file can contain several CA certificates identified by the following sequences:
-----BEGIN CERTIFICATE-----
... (CA certificate in base64 encoding) ...
-----END CERTIFICATE-----
Before, between, and after the certificate text is allowed, which can be used, for example, for descriptions of the certificates. Refer to the OpenSSL man page SSL_CTX_load_verify_locations(3) for details.
The format of this string is described in the OpenSSL man page ciphers(1) section "CIPHER LIST FORMAT". Please refer to it for details. The default string "DEFAULT" is determined at compile time and is normally equivalent to "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH".
By default, OpenSSL uses the device file "/dev/urandom" to seed the PRNG, and setting OpenSSLPrngSeedData is not required. If set, the string specified is used to seed the PRNG.
If set to True, the class will reuse the context if and only if the following criteria are met:
- The target host name is the same.
- The system cache entry has not expired (default timeout is 10 hours).
- The application process that calls the function is the same.
- The logon session is the same.
- The instance of the class is the same.
The value is formatted as a list of paths separated by semicolons. The class will check for the existence of each file in the order specified. When a file is found, the CA certificates within the file will be loaded and used to determine the validity of server or client certificates.
The default value is as follows:
/etc/ssl/ca-bundle.pem;/etc/pki/tls/certs/ca-bundle.crt;/etc/ssl/certs/ca-certificates.crt;/etc/pki/tls/cacert.pem
-----BEGIN CERTIFICATE----- MIIEKzCCAxOgAwIBAgIRANTET4LIkxdH6P+CFIiHvTowDQYJKoZIhvcNAQELBQAw ... Intermediate Cert ... eWHV5OW1K53o/atv59sOiW5K3crjFhsBOd5Q+cJJnU+SWinPKtANXMht+EDvYY2w F0I1XhM+pKj7FjDr+XNj -----END CERTIFICATE----- \r \n -----BEGIN CERTIFICATE----- MIIEFjCCAv6gAwIBAgIQetu1SMxpnENAnnOz1P+PtTANBgkqhkiG9w0BAQUFADBp ... Root Cert ... d8q23djXZbVYiIfE9ebr4g3152BlVCHZ2GyPdjhIuLeH21VbT/dyEHHA -----END CERTIFICATE-----
When set to 0 (default), the CRL check will not be performed by the class. When set to 1, it will attempt to perform the CRL check, but it will continue without an error if the server's certificate does not support CRL. When set to 2, it will perform the CRL check and will throw an error if CRL is not supported.
This configuration setting is supported only in the Java, C#, and C++ editions. In the C++ edition, it is supported only on Windows operating systems.
When set to 0 (default), the class will not perform an OCSP check. When set to 1, it will attempt to perform the OCSP check, but it will continue without an error if the server's certificate does not support OCSP. When set to 2, it will perform the OCSP check and will throw an error if OCSP is not supported.
This configuration setting is supported only in the Java, C#, and C++ editions. In the C++ edition, it is supported only on Windows operating systems.
Note: This configuration setting contains the minimum cipher strength requested from the security library. The actual cipher strength used for the connection is shown by the on_ssl_status event.
Use this configuration setting with caution. Requesting a lower cipher strength than necessary could potentially cause serious security vulnerabilities in your application.
When the provider is OpenSSL, SSLCipherStrength is currently not supported. This functionality is instead made available through the OpenSSLCipherList configuration setting.
The value of this configuration setting is a newline-separated (CR/LF) list of certificates. For instance:
-----BEGIN CERTIFICATE----- MIIEKzCCAxOgAwIBAgIRANTET4LIkxdH6P+CFIiHvTowDQYJKoZIhvcNAQELBQAw ... Intermediate Cert ... eWHV5OW1K53o/atv59sOiW5K3crjFhsBOd5Q+cJJnU+SWinPKtANXMht+EDvYY2w F0I1XhM+pKj7FjDr+XNj -----END CERTIFICATE----- \r \n -----BEGIN CERTIFICATE----- MIIEFjCCAv6gAwIBAgIQetu1SMxpnENAnnOz1P+PtTANBgkqhkiG9w0BAQUFADBp ... Root Cert ... d8q23djXZbVYiIfE9ebr4g3152BlVCHZ2GyPdjhIuLeH21VbT/dyEHHA -----END CERTIFICATE-----
By default, the enabled cipher suites will include all available ciphers ("*").
The special value "*" means that the class will pick all of the supported cipher suites. If SSLEnabledCipherSuites is set to any other value, only the specified cipher suites will be considered.
Multiple cipher suites are separated by semicolons.
Example values when ssl_provider is set to Platform include the following:
obj.config("SSLEnabledCipherSuites=*");
obj.config("SSLEnabledCipherSuites=CALG_AES_256");
obj.config("SSLEnabledCipherSuites=CALG_AES_256;CALG_3DES");
Possible values when ssl_provider is set to Platform include the following:
- CALG_3DES
- CALG_3DES_112
- CALG_AES
- CALG_AES_128
- CALG_AES_192
- CALG_AES_256
- CALG_AGREEDKEY_ANY
- CALG_CYLINK_MEK
- CALG_DES
- CALG_DESX
- CALG_DH_EPHEM
- CALG_DH_SF
- CALG_DSS_SIGN
- CALG_ECDH
- CALG_ECDH_EPHEM
- CALG_ECDSA
- CALG_ECMQV
- CALG_HASH_REPLACE_OWF
- CALG_HUGHES_MD5
- CALG_HMAC
- CALG_KEA_KEYX
- CALG_MAC
- CALG_MD2
- CALG_MD4
- CALG_MD5
- CALG_NO_SIGN
- CALG_OID_INFO_CNG_ONLY
- CALG_OID_INFO_PARAMETERS
- CALG_PCT1_MASTER
- CALG_RC2
- CALG_RC4
- CALG_RC5
- CALG_RSA_KEYX
- CALG_RSA_SIGN
- CALG_SCHANNEL_ENC_KEY
- CALG_SCHANNEL_MAC_KEY
- CALG_SCHANNEL_MASTER_HASH
- CALG_SEAL
- CALG_SHA
- CALG_SHA1
- CALG_SHA_256
- CALG_SHA_384
- CALG_SHA_512
- CALG_SKIPJACK
- CALG_SSL2_MASTER
- CALG_SSL3_MASTER
- CALG_SSL3_SHAMD5
- CALG_TEK
- CALG_TLS1_MASTER
- CALG_TLS1PRF
obj.config("SSLEnabledCipherSuites=*");
obj.config("SSLEnabledCipherSuites=TLS_DHE_DSS_WITH_AES_128_CBC_SHA");
obj.config("SSLEnabledCipherSuites=TLS_DHE_DSS_WITH_AES_128_CBC_SHA;TLS_ECDH_RSA_WITH_AES_128_CBC_SHA");
Possible values when ssl_provider is set to Internal include the following:
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_RSA_WITH_AES_256_GCM_SHA384
- TLS_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
- TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
- TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
- TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
- TLS_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_RSA_WITH_DES_CBC_SHA
- TLS_DHE_RSA_WITH_DES_CBC_SHA
- TLS_DHE_DSS_WITH_DES_CBC_SHA
- TLS_RSA_WITH_RC4_128_MD5
- TLS_RSA_WITH_RC4_128_SHA
When TLS 1.3 is negotiated (see SSLEnabledProtocols), only the following cipher suites are supported:
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256
SSLEnabledCipherSuites is used together with SSLCipherStrength.
Not all supported protocols are enabled by default. The default value is 4032 for client components, and 3072 for server components. To specify a combination of enabled protocol versions set this config to the binary OR of one or more of the following values:
TLS1.3 | 12288 (Hex 3000) |
TLS1.2 | 3072 (Hex C00) (Default - Client and Server) |
TLS1.1 | 768 (Hex 300) (Default - Client) |
TLS1 | 192 (Hex C0) (Default - Client) |
SSL3 | 48 (Hex 30) |
SSL2 | 12 (Hex 0C) |
Note that only TLS 1.2 is enabled for server components that accept incoming connections. This adheres to industry standards to ensure a secure connection. Client components enable TLS 1.0, TLS 1.1, and TLS 1.2 by default and will negotiate the highest mutually supported version when connecting to a server, which should be TLS 1.2 in most cases.
SSLEnabledProtocols: Transport Layer Security (TLS) 1.3 Notes:
By default when TLS 1.3 is enabled, the class will use the internal TLS implementation when the ssl_provider is set to Automatic for all editions.
In editions that are designed to run on Windows, ssl_provider can be set to Platform to use the platform implementation instead of the internal implementation. When configured in this manner, please note that the platform provider is supported only on Windows 11/Windows Server 2022 and up. The default internal provider is available on all platforms and is not restricted to any specific OS version.
If set to 1 (Platform provider), please be aware of the following notes:
- The platform provider is available only on Windows 11/Windows Server 2022 and up.
- SSLEnabledCipherSuites and other similar SSL configuration settings are not supported.
- If SSLEnabledProtocols includes both TLS 1.3 and TLS 1.2, these restrictions are still applicable even if TLS 1.2 is negotiated. Enabling TLS 1.3 with the platform provider changes the implementation used for all TLS versions.
SSLEnabledProtocols: SSL2 and SSL3 Notes:
SSL 2.0 and 3.0 are not supported by the class when the ssl_provider is set to internal. To use SSL 2.0 or SSL 3.0, the platform security API must have the protocols enabled and ssl_provider needs to be set to platform.
This configuration setting is applicable only when ssl_provider is set to Internal.
If set to True, all certificates returned by the server will be present in the Encoded parameter of the on_ssl_server_authentication event. This includes the leaf certificate, any intermediate certificate, and the root certificate.
When set, the class will save the session secrets in the same format as the SSLKEYLOGFILE environment variable functionality used by most major browsers and tools, such as Chrome, Firefox, and cURL. This file can then be used in tools such as Wireshark to decrypt TLS traffic for debugging purposes. When writing to this file, the class will only append, it will not overwrite previous values.
Note: This configuration setting is applicable only when ssl_provider is set to Internal.
Note: For server components (e.g., TCPServer), this is a per-connection configuration setting accessed by passing the ConnectionId. For example:
server.Config("SSLNegotiatedCipher[connId]");
Note: For server components (e.g., TCPServer), this is a per-connection configuration setting accessed by passing the ConnectionId. For example:
server.Config("SSLNegotiatedCipherStrength[connId]");
Note: For server components (e.g., TCPServer), this is a per-connection configuration setting accessed by passing the ConnectionId. For example:
server.Config("SSLNegotiatedCipherSuite[connId]");
Note: For server components (e.g., TCPServer), this is a per-connection configuration setting accessed by passing the ConnectionId. For example:
server.Config("SSLNegotiatedKeyExchange[connId]");
Note: For server components (e.g., TCPServer), this is a per-connection configuration setting accessed by passing the ConnectionId. For example:
server.Config("SSLNegotiatedKeyExchangeStrength[connId]");
Note: For server components (e.g., TCPServer), this is a per-connection configuration setting accessed by passing the ConnectionId. For example:
server.Config("SSLNegotiatedVersion[connId]");
0x00000001 | Ignore time validity status of certificate. |
0x00000002 | Ignore time validity status of CTL. |
0x00000004 | Ignore non-nested certificate times. |
0x00000010 | Allow unknown certificate authority. |
0x00000020 | Ignore wrong certificate usage. |
0x00000100 | Ignore unknown certificate revocation status. |
0x00000200 | Ignore unknown CTL signer revocation status. |
0x00000400 | Ignore unknown certificate authority revocation status. |
0x00000800 | Ignore unknown root revocation status. |
0x00008000 | Allow test root certificate. |
0x00004000 | Trust test root certificate. |
0x80000000 | Ignore non-matching CN (certificate CN non-matching server name). |
This functionality is currently not available when the provider is OpenSSL.
The value of this configuration setting is a newline-separated (CR/LF) list of certificates. For instance:
-----BEGIN CERTIFICATE----- MIIEKzCCAxOgAwIBAgIRANTET4LIkxdH6P+CFIiHvTowDQYJKoZIhvcNAQELBQAw ... Intermediate Cert... eWHV5OW1K53o/atv59sOiW5K3crjFhsBOd5Q+cJJnU+SWinPKtANXMht+EDvYY2w F0I1XhM+pKj7FjDr+XNj -----END CERTIFICATE----- \r \n -----BEGIN CERTIFICATE----- MIIEFjCCAv6gAwIBAgIQetu1SMxpnENAnnOz1P+PtTANBgkqhkiG9w0BAQUFADBp ... Root Cert... d8q23djXZbVYiIfE9ebr4g3152BlVCHZ2GyPdjhIuLeH21VbT/dyEHHA -----END CERTIFICATE-----
When specified the class will verify that the server certificate signature algorithm is among the values specified in this configuration setting. If the server certificate signature algorithm is unsupported, the class fails with an error.
The format of this value is a comma-separated list of hash-signature combinations. For instance:
component.SSLProvider = TCPClientSSLProviders.sslpInternal;
component.Config("SSLEnabledProtocols=3072"); //TLS 1.2
component.Config("TLS12SignatureAlgorithms=sha256-rsa,sha256-dsa,sha1-rsa,sha1-dsa");
The default value for this configuration setting is sha512-ecdsa,sha512-rsa,sha512-dsa,sha384-ecdsa,sha384-rsa,sha384-dsa,sha256-ecdsa,sha256-rsa,sha256-dsa,sha224-ecdsa,sha224-rsa,sha224-dsa,sha1-ecdsa,sha1-rsa,sha1-dsa.
To not restrict the server's certificate signature algorithm, specify an empty string as the value for this configuration setting, which will cause the signature_algorithms TLS 1.2 extension to not be sent.
The default value is ecdhe_secp256r1,ecdhe_secp384r1,ecdhe_secp521r1.
When using TLS 1.2 and ssl_provider is set to Internal, the values refer to the supported groups for ECC. The following values are supported:
- "ecdhe_secp256r1" (default)
- "ecdhe_secp384r1" (default)
- "ecdhe_secp521r1" (default)
The default value is set to balance common supported groups and the computational resources required to generate key shares. As a result, only some groups are included by default in this configuration setting.
Note: All supported groups can always be used during the handshake even if not listed here, but if a group is used that is not present in this list, it will incur an additional roundtrip and time to generate the key share for that group.
In most cases, this configuration setting does not need to be modified. This should be modified only if there is a specific reason to do so.
The default value is ecdhe_x25519,ecdhe_secp256r1,ecdhe_secp384r1,ffdhe_2048,ffdhe_3072
The values are ordered from most preferred to least preferred. The following values are supported:
- "ecdhe_x25519" (default)
- "ecdhe_x448"
- "ecdhe_secp256r1" (default)
- "ecdhe_secp384r1" (default)
- "ecdhe_secp521r1"
- "ffdhe_2048" (default)
- "ffdhe_3072" (default)
- "ffdhe_4096"
- "ffdhe_6144"
- "ffdhe_8192"
- "ed25519" (default)
- "ed448" (default)
- "ecdsa_secp256r1_sha256" (default)
- "ecdsa_secp384r1_sha384" (default)
- "ecdsa_secp521r1_sha512" (default)
- "rsa_pkcs1_sha256" (default)
- "rsa_pkcs1_sha384" (default)
- "rsa_pkcs1_sha512" (default)
- "rsa_pss_sha256" (default)
- "rsa_pss_sha384" (default)
- "rsa_pss_sha512" (default)
The default value is ecdhe_x25519,ecdhe_x448,ecdhe_secp256r1,ecdhe_secp384r1,ecdhe_secp521r1,ffdhe_2048,ffdhe_3072,ffdhe_4096,ffdhe_6144,ffdhe_8192
The values are ordered from most preferred to least preferred. The following values are supported:
- "ecdhe_x25519" (default)
- "ecdhe_x448" (default)
- "ecdhe_secp256r1" (default)
- "ecdhe_secp384r1" (default)
- "ecdhe_secp521r1" (default)
- "ffdhe_2048" (default)
- "ffdhe_3072" (default)
- "ffdhe_4096" (default)
- "ffdhe_6144" (default)
- "ffdhe_8192" (default)
Server Errors
Server Errors
601 | Could not create ephemeral key. |
602 | Invalid certificate. |
603 | Invalid operation. |
604 | Invalid ClientAuth data. |
605 | The errorCode element in Erro message is invalid. |
606 | Invalid index. |
1101 | Protocol error. Received invalid message. |
1102 | Protocol error. Invalid message version. |
1201 | Protocol error. Missing data element. |
1202 | Protocol error. Unrecognized critical extension. |
1301 | Protocol error. Unrecognized transaction Id. |
1302 | Decryption failed. |
HTTP Errors
118 | Firewall error. The error description contains the detailed message. |
143 | Busy executing current method. |
151 | HTTP protocol error. The error message has the server response. |
152 | No server specified in url. |
153 | Specified url_scheme is invalid. |
155 | Range operation is not supported by server. |
156 | Invalid cookie index (out of range). |
301 | Interrupted. |
302 | Cannot open attached_file. |
The class may also return one of the following error codes, which are inherited from other classes.
TCPClient Errors
100 | You cannot change the remote_port at this time. A connection is in progress. |
101 | You cannot change the remote_host (Server) at this time. A connection is in progress. |
102 | The remote_host address is invalid (0.0.0.0). |
104 | Already connected. If you want to reconnect, close the current connection first. |
106 | You cannot change the local_port at this time. A connection is in progress. |
107 | You cannot change the local_host at this time. A connection is in progress. |
112 | You cannot change MaxLineLength at this time. A connection is in progress. |
116 | remote_port cannot be zero. Please specify a valid service port number. |
117 | You cannot change the UseConnection option while the class is active. |
135 | Operation would block. |
201 | Timeout. |
211 | Action impossible in control's present state. |
212 | Action impossible while not connected. |
213 | Action impossible while listening. |
301 | Timeout. |
302 | Could not open file. |
434 | Unable to convert string to selected CodePage. |
1105 | Already connecting. If you want to reconnect, close the current connection first. |
1117 | You need to connect first. |
1119 | You cannot change the LocalHost at this time. A connection is in progress. |
1120 | Connection dropped by remote host. |
SSL Errors
270 | Cannot load specified security library. |
271 | Cannot open certificate store. |
272 | Cannot find specified certificate. |
273 | Cannot acquire security credentials. |
274 | Cannot find certificate chain. |
275 | Cannot verify certificate chain. |
276 | Error during handshake. |
280 | Error verifying certificate. |
281 | Could not find client certificate. |
282 | Could not find server certificate. |
283 | Error encrypting data. |
284 | Error decrypting data. |
TCP/IP Errors
10004 | [10004] Interrupted system call. |
10009 | [10009] Bad file number. |
10013 | [10013] Access denied. |
10014 | [10014] Bad address. |
10022 | [10022] Invalid argument. |
10024 | [10024] Too many open files. |
10035 | [10035] Operation would block. |
10036 | [10036] Operation now in progress. |
10037 | [10037] Operation already in progress. |
10038 | [10038] Socket operation on nonsocket. |
10039 | [10039] Destination address required. |
10040 | [10040] Message is too long. |
10041 | [10041] Protocol wrong type for socket. |
10042 | [10042] Bad protocol option. |
10043 | [10043] Protocol is not supported. |
10044 | [10044] Socket type is not supported. |
10045 | [10045] Operation is not supported on socket. |
10046 | [10046] Protocol family is not supported. |
10047 | [10047] Address family is not supported by protocol family. |
10048 | [10048] Address already in use. |
10049 | [10049] Cannot assign requested address. |
10050 | [10050] Network is down. |
10051 | [10051] Network is unreachable. |
10052 | [10052] Net dropped connection or reset. |
10053 | [10053] Software caused connection abort. |
10054 | [10054] Connection reset by peer. |
10055 | [10055] No buffer space available. |
10056 | [10056] Socket is already connected. |
10057 | [10057] Socket is not connected. |
10058 | [10058] Cannot send after socket shutdown. |
10059 | [10059] Too many references, cannot splice. |
10060 | [10060] Connection timed out. |
10061 | [10061] Connection refused. |
10062 | [10062] Too many levels of symbolic links. |
10063 | [10063] File name is too long. |
10064 | [10064] Host is down. |
10065 | [10065] No route to host. |
10066 | [10066] Directory is not empty |
10067 | [10067] Too many processes. |
10068 | [10068] Too many users. |
10069 | [10069] Disc Quota Exceeded. |
10070 | [10070] Stale NFS file handle. |
10071 | [10071] Too many levels of remote in path. |
10091 | [10091] Network subsystem is unavailable. |
10092 | [10092] WINSOCK DLL Version out of range. |
10093 | [10093] Winsock is not loaded yet. |
11001 | [11001] Host not found. |
11002 | [11002] Nonauthoritative 'Host not found' (try again or check DNS setup). |
11003 | [11003] Nonrecoverable errors: FORMERR, REFUSED, NOTIMP. |
11004 | [11004] Valid name, no data record (check DNS setup). |