What's new in Chilkat Python Encryption Library 9.5.0.98

Apr 3, 2024
  • General: Removed all internal usage of the R250 random number generation algorithm and replaced with the more cryptographically secure Fortuna algorithm.
  • DNS: Fixed various DNS problems having to do with VPNs or other uncommon situations.
  • Ftp2: Fixed situation where CreateRemoteDir is called, but the remote directory already exists. In this case, CreateRemoteDir will now return success.
  • DKIM: Fixed a DKIM verification problem which occurs if the same header field is listed more than once in the list of “h” fields.
  • XmlDSig: Fixed problem such that an empty xades:UnsignedSignatureProperties tag could get emitted in the signed XML.
  • XmlDSig: Fixed a rare ebXml signature verification problem (complicated and difficult to explain).
  • Email: Chilkat will now automatically use the quoted-printable Content-Transfer-Encoding (if the application hasn’t explicitly set a Content-Transfer-Encoding) for HTML bodies that have line lengths > 2000 chars, which caused problems with some mail servers.
  • SSH: Restored the UncommonOption keyword “ForceUserAuthRsaSha1” for the rare cases where an SSH server supports rsa-sha2-256, rsa-sha2-512, but still requires SHA1 for the userauth algorithm.
  • OAuth2: Added the “ExchangeCodeForTokenUsingJson” UncommonOption keyword to allow apps to specify that a JSON POST should be used instead of the typical application/x-www-form-urlencoded request that finishes the OAuth2 authorization flow. Also added the “RefreshTokenUsingJson” to force the OAuth2 refresh to use a JSON POST if needed.
  • CertChain (on Windows): Fixed: The CertChain.IsRootTrusted method did not also consult the Windows TrustedRoots registry certificate store, and thus caused IsRootTrusted to return false when it should’ve returned true.
  • SSH: Fixed a rare problem that can occur when the SSH client and server negotiate to the ssh-dss host key algorithm, which caused the connection to fail.
  • Zip: Fixed a problem with the QuickAppend method, which only occurred on non-Windows systems.
  • MacOS C++: Fixed problems having to do with applications using various versions of XCode, Qt, and MacOS. This had to do with the “___darwin_check_fd_set_overflow” symbol.
  • TLS 1.3: Fixed a TLS 1.3 session resumption issue (where session resumption wasn’t achieved when it could’ve been).
  • HTTP: Now handles cookies with “Partitioned” keys.
  • Cert: Fixed a Y2038 problem having to do with certificate that have an expiration date later than year 2038.
  • CertChain: Fixed the CertChain.X509PKIPathv1 method. It was returning the base64 ASN.1 with the certs listed in the order that is the reverse as specified by the standard.
  • TLS: Added the “brainpool_supported_group” UncommonOption to cause Chilkat to add brainpoolP256r1 to the “supported groups” extension.
  • Stream: : Fixed reliability and memory issues having to do with very large streams.
  • Stream: : Because of the fixes above, and the extensive work involved, the SetSourceStream, SetSinkStream, and RunStream methods are deprecated and temporarily stubbed out to do nothing. These functions only have to do with chaining streams, and are likely unused by the vast majority of Chilkat users. If you were using one of these methods, contact [email protected] and we’ll suggest a workaround.
  • CodeSign: Fixed a problem where the signature did not include the necessary authenticated attributes.

New in Chilkat Python Encryption Library 9.5.0.97 (Feb 29, 2024)

  • SSH/SFTP/SshTunnel: Mitigated vulnerability to the Terrapin attack. See Chilkat v9.5.0.97 Mitigates Terrapin Attack Vulnerability
  • CodeSign: Added the Chilkat.CodeSign class. This provides the ability (on Windows) to Authenticode sign DLLs and EXEs. It also provides the ability to validate Authenticode signed EXEs and DLLs, and to remove a signature.
  • PDF: Added the AddEmbeddedFiles method. This provides the ability to attach files to a PDF.
  • PDF: Fixed problems with auto-sizing the visual box containing the text and/or image for digital signatures.
  • ECDSA: Added the Ecc.AsnFormat property.
  • Java: Added downloads for JDK 17 and JDK 21. At the time of this writing, not all builds for JDK 17 and JDK 21 will be posted. Missing downloads will appear shortly..
  • MacOS: Eliminated i386 libs from downloads.
  • MacOS C/C++: Consolidated to a single universal library download supporting both arm64 and x86_64 (rather than have separate downloads for each architecture).
  • MacOS Objective_C: Consolidated to a single universal library download supporting both arm64 and x86_64 (rather than have separate downloads for each architecture).
  • DNS: Chilkat now automatically includes C:WindowsSystem32driversetcHosts as a source for IP address resolution.
  • PKCS11: Added the SigContextPin property, for those smart cards that require an additional context-specific login within the context of signing.
  • OAuth2: Added the AddRefreshQueryParam method. It can be called one or more times to add additional query params to the HTTP request sent in the RefreshAccessToken method. This method was added to support the “token_content_type” param required by Romania’s ANAF, which stands for Agenția Națională de Administrare Fiscală (National Agency for Fiscal Administration), enables you to electronically send and receive electronic invoices through their e-Invoicing platform.
  • FTP2: The RenameRemoteFile method will no longer invalidate the cached directory contents. Instead, it will also update the local cached directory information with the new filename. (If the cache was invalidated, then a subsequent operation would cause, behind the scenes, a re-fetch of the directory listing.)
  • FTP2: Added a safety in DeleteMatching. If an empty string is passed for the pattern, then it would match all files and all files would get deleted. Chilkat will now fail the call if the matching pattern is the empty string, and the LastErrorText will contain the message: ” Your application passed in an empty string, which would’ve caused all files to be deleted. If you wish to delete all files, explicitly pass “*” instead. “
  • MailMan: The SMTP username/password will now be sent using the utf-8 byte representation instead of ANSI. This makes no difference for logins and passwords that are entirely us-ascii. It only matters if non-us-ascii chars are present. In the very distant past, mail servers would want the ANSI single-byte-per-char encoding for non-us-ascii, but for many years now, more mail servers expect utf-8 for non-us-ascii. The old ANSI behavior can be achieved by adding the keyword “SmtpLoginAnsi” to the MailMan.UncommonOptions property.
  • Ftp2: Fixed problem where an FTP server responds to a download with a multi-line intermediate reply containing “150-There’ll be a delay while we scan for viruses.” and also “150-8.0 kbytes to download”. The size indicated in the intermediate reply is not the full size of the file, and it caused Chilkat to mistakenly infer the wrong expected download size.
  • Socket: Dual-stack support is now enabled when the PreferIpv6 property is set to True (in the context of listening/accepting connections). This allows the socket to accept both IPv6 and IPv4 connections, whereas previously, if PreferIpv6 was True, only IPv6 connections were accepted.
  • Http: If the HTTP verb is “OPTIONS”, then Chilkat will now allow for the path to be “*”. Previously, Chilkat force the path in the HTTP start line to begin with a “/”. Also, when the HTTP verb is OPTIONS, no “Content-Length” header will be included in the request.
  • Cache: Chilkat was mistakenly trying to use backslash chars for directory separators on non-Windows systems. This has been fixed.
  • Sharepoint: Fixed Http.SharePointOnlineAuth to correctly use HTTP proxies when Http proxy properties are set.
  • Hashtable: Added the Count property.
  • HtmlToText: Added the ToTextSb method.
  • HtmlToXml: Added the SetHtmlSb method.

New in Chilkat Python Encryption Library 9.5.0.96 (Nov 6, 2023)

  • DNS: Created a new Dns class for managing DNS nameservers to be used by Chilkat, and for doing DNS queries. It is a singleton class that allows an application to select
  • the DNS nameservers used throughout Chilkat. The term “singleton” means that all Chilkat DNS object instances work with a single copy of internal DNS settings that are application wide. This allows for applications to use reliable and high-speed public DNS servers such as Cloudfare, Google, and others. It also allows for DNS over TLS (DoT), and the option to require all DNS queries to use TLS. Also provides for a uniform way to do DNS queries over many DNS record types.
  • PKCS11: Significantly expanded PKCS11 functionality. See the following bullet points.
  • Remote Signing Services: Added functionality to utilize remote signing services, such as AWS KMS, Azure Key Vault, and Aruba Remote Signing Service (ARSS). This allows all signing functionality in Chilkat, such as PDF, XAdES, CAdES, etc. to use a remote signing service. The design allows for the easy expansion to support additional signing services as needed.
  • PrivateKey: Added the UploadToCloud method to make it easy to upload a private key to various cloud services. The design allows for the easy expansion to support other cloud services. (Let us know if you have suggestions.)
  • Cert: Added the SetCloudSigner method to link a certificate with a cloud service for any type of signing, such as PDF, XML Digital Signatures, CAdES (i.e. p7m/p7,), etc. For PAdES, XAdES, CAdES, etc., the certificate is still needed locally. This is because the certificate related information that goes into the PDF Signature, XML Signature, etc. is constructed by Chilkat, and it is only the RSA or ECDSA signing of a hash, deep within the internals of Chilkat, where the REST API call is made to the cloud signing service. Thus, your private key can exist only in the cloud.
  • Cert: Added the UploadToCloud method to make it easy to upload a certificate to various cloud services. Examples are included for Azure Key Vault and Amazon KMS. The design allows for the easy expansion to support other cloud services. (Let us know if you have suggestions.)
  • Cert: Added the LinkPkcs11 method to allow for a certificate to be linked to a private key located on an HSM (smartcard or token). This is needed for cases where the private key is on the HSM, but not the certificate. One use case for using this function is with AWS CloudHSM, where the PKCS11 driver, cloudhsm_pkcs11.dll on Windows, or libcloudhsm_pkcs11.so on Linux, could be used to link your certificate with the private key stored in the cloud on Amazon’s CloudHSM. Note: In this case, the communication with AWS CloudHSM happens within the PKCS11 driver and thus Chilkat does not directly communicate with AWS CloudHSM (as opposed to AWS KMS, which is key storage in the cloud where Chilkat communicates directly via the AWS KMS API). Note: The difference between AWS CloudHSM and AWS KMS is that one is literally a hardware token in the cloud, and the other is your private keys in the cloud, but not in hardware. AWS CloudHSM (hardware in the cloud) can be very expensive.
  • SshKey: Added the UsePkcs11 method to allow for SSH public key authentication to use an HSM (smartcard or token) for the private key signing operation. This allows for the Ssh, SFtp, and SshTunnel classes, or anywhere SSH is used in Chilkat, to be able to use a private key located on an HSM and accessed via PKCS11 (because the private key for authentication is passed in an SshKey object, and if the SshKey is using a PKCS11 session, then it will be used for signing).
  • PKCS11: Added the FindAllKeys method, which returns JSON with information for all keys of a particular type: private, public, secret, or otp.
  • PKCS11: Added the GenSecretKey method, to provide the ability to generate a symmetric encryption key, such as AES, on the HSM.
  • PKCS11: Added the GenRsaKey method, to provide the ability to generate an RSA key on the HSM.
  • PKCS11: Added the GenEcKey method, to provide the ability to generate an ECDSA key on the HSM.
  • PKCS11: Added the CreatePkcs11Object method, to provide a generalized method for creating an object on the HSM. This is a way to import non-sensitive material such as a session-only AES key-wrapping key, or a public key.
  • PKCS11: Added the QuickSession method, to make it shorter and simpler in code to establish a PKCS11 session.
  • PKCS11: Added the ImportPrivateKey method, to make it easy to import an RSA or EC private key on to the HSM. (It can be tricky though, because much depends on the capabilities of the HSM, the details of the template, and the security restrictions of the HSM.)
  • PKCS11: Added the DestroyObject method, to make it possible to remove objects from the HSM.
  • PKCS11: Added the FindObject method to provide a generalized way to find an object on the HSM.
  • PKCS11: Added the ImportSshKey method. This is the same as ImportPrivateKey, but accepts a Chilkat SshKey object instead of a Chilkat PrivateKey object. (An SshKey *is* a private key, but for some foolish reason in the past, Chilkat decided to create a separate class for SSH keys.)
  • PKCS11: Added the ExportPublicKey method to make it easy to export a public key from the HSM directly into a Chilkat PublicKey object. Note: There is no method to export a private key. It’s because private keys are meant to stay on the HSM. They are either generated on the HSM, or imported onto the HSM, but once on the HSM, a *private* key just stays there. It’s one of the main reasons for having an HSM — you cannot export the private key, and the signing happens on the HSM.
  • CkDateTime: Added the SetFromNtpServer method to load the current date/time from an NTP server.
  • Crypt2: Added the AesKeyWrapWithPadding and AesKeyUnwrapWithPadding methods. These methods implement the AES Key Wrap with Padding Algorithm (RFC 5649) for wrapping and unwrapping
  • JsonArray: Added methods for unsigned integers: UIntAt, AddUIntAt, and SetUIntAt
  • JsonObject: Added methods for unsigned integers: UpdateUInt and UIntOf
  • JsonObject: Added the StringOfEquals method, to make it more convenient to check of a JSON value equals a particular value.
  • PDF: Added the HasCertificationSig property to make it easy to see if a PDF’s signature is a certification signature.
  • StringBuilder: Added the AppendRandom method to make it more convenient to add random data to a string.
  • Zip: Added the MaxUncompressSize property. An application can set this property to prevent unzipping any files larger than a max size uncompressed.
  • Zip: Added the GetMaxUncompressedSize method. After opening a .zip, the application can call this method to return the size of the file contained within the Zip that has the largest uncompressed size.
  • Cert: Added the GetExtensionBd method to return binary extension data by OID.
  • StringArray: Improved performance.
  • SSH/SFTP: Fixed possible RSA public key authentication problem for the Azure SSH server.
  • XML: The NewChild/NewChild2 methods would convert hex entities incorrectly. For example, if the content passed in is “Bührmann”, the the content in the XML would become “Bührmann”. This is now fixed. When re-emitting the XML or saving, the content remains “ü”.
  • XmlDSigGen: Added the “NoTimestampBias” keyword to emit signing times without the timezone bias. For example, “2023-08-06T15:36:29”. This is needed for certain picky Turkish government validators.
  • Cert: Added the GetExtensionBd method to provide a way to get binary certificate extension data.
  • Xml: Fixed the bmethod. The “skipTags” argument was getting ignored.
  • PDF: Added the read-only HasCertificationSig property to determine if a PDF already has a certification signature.
  • PDF: Added encryption and permissions information to the Pdf.LastJsonData for the call to Pdf.LoadFile and Pdf.LoadBd. See https://www.example-code.com/csharp/pdf_get_encryption_and_permissions.asp.
  • Smartcards: Added support for the Watchdata PROXkey USB token. Chilkat should automatically recognize the USB token
  • and use the PKCS11 driver at C:WindowsSystem32SignatureP11.dll. (This is also supported on Linux, assuming the shared lib is at /usr/lib/WatchData/ProxKey/lib/libwdpkcs_SignatureP11.so)
  • CSV: Added the keywords “QuotedCells” and “QuotedColumnNames” to force double-quoted cells and column names when emitting CSV to a file or string buffer.
  • PDF: Greatly improved the appearance of non-English text in visible PDF signatures.
  • JsonObject: Added the UIntOf and UpdateUInt methods
  • JsonArray: Added the UIntAt, SetUIntAt, and AddUIntAt methods.
  • HTTP: Fixed the PFile method. The body of the request was 0 bytes if the gzip argument was true. Fixed to correctly send the gzipped file as the body of the HTTP request.
  • Email: If the file path passed to AddFileAttachment or AddRelatedFile contained both forward and backward slashes, then the filename part of the path, which is what appears in the “filename” attribute within the MIME sub-header, could include part of the file path. This was fixed.

New in Chilkat Python Encryption Library 9.5.0.95 (Aug 7, 2023)

  • PDF: Greatly improved the appearance of non-English text in visible PDF signatures.
  • SFTP: The HostKeyFingerprint property will now correctly return the ssh-ed25519 fingerprint, such as “ssh-ed25519 256 da:7b:ce:4f:d7:56:5e:11:a1:a0:fc:74:dd:4d:50:da”, for cases when an Ed25519 host key is used in the connection.
  • Mime: Mime bodies having the content types application/vnd.openxmlformats-officedocument.wordprocessingml.document did not get decoded correctly.
  • SshTunnel: Added the ClientIdentifier property.
  • XmlDSigGen: The “AttributeSortingBug” Behavior was getting ignored. This caused signed XML documents to be rejected by some Polish government services where it is necessary to reproduce a bug in XML canonicalization in order for signed documents to be accepted.
  • MailMan: The default value for the OpaqueSigning property has been changed to false. This is because emails that are signed opaquely, where the signed content is contained within the PKCS7 signature w/ a Content-Type of application/pkcs7-mime are often mistaken by servers or recipients as encrypted. When OpaqueSigning is false, Chilkat creates a detached signature with the multipart/signed Content-Type.
  • Http: Added the AwsSessionToken property.
  • PDF: Added the ability to extract embedded files from a PDF. Two new methods were added: GetEmbeddedFileInfo and GetEmbeddedFileBd
  • Email: Fixed a rare problem where an email should’ve been decoded as iso-8859-7, but was thought to be utf-8 (and incorrectly decoded as utf-8) because the string “utf-8” found in the email.
  • Smartcards: Chilkat now works with the Turkish snartcard from TUBITAK UEKAE.
  • Smartcards: Chilkat now works correctly with the CryptoCertum 3.6 Cryptographic Card
  • Smartcards/Tokens: Chilkat now works more seamlessly with the ePass2003 token.
  • CkString: Added operator==, operator!=, and operator+= to the C++ CkString class.
  • Cert: Fixed the Cert.VerifySignature method to successfully validate Ed25519 certificates.
  • SSH/SFTP: Fixed rare connection problem with certain SSH servers.
  • .NET Core: Removed the i386 architecture from the .dylib because the Apple App store would refuse to publish because “Unsupported Architectures. Your executable contained the following disallowed architectures: ‘[i386 …”
  • Ftp2: Fixed a problem with the GetFile method w/ an MVS FTP server running on z/OS where the error was “550 command MDTM is not available for…”
  • PKCS11: Now able to support the PKCS11 shared lib (libkeyfactorpkcs11.so) provided by “RedTrust”, a KeyFactor Company, where the PKCS11 shared lib actually communicates with the redtrust.com (or keyfactor.com) server to do the signing on the server.
  • JWT: Added support for JWT’s using Ed25519.
  • Crypt2/PKS7 Signatures: If an application included a {“signingCertificateV2”: 0} in the SigningAttributes property, with the desired intent to NOT include the SigningCertificateV2 authenticated attribute, Chilkat was not doing as directed and the SigningCertificateV2 attribute was still getting added to the PKCS7 signature. This is now fixed.
  • Ruby: Ruby programs using Chilkat would emit the following warning: “warning: undefining the allocator of T_DATA class swig_runtime_data”. This is fixed. The warning is no longer emitted.
  • Http: Added the SetAuthTokenSb method. This is the same as setting the AuthToken property. The reason for adding is to allow for a potentially large string to be passed in a Chilkat StringBuilder object instead of a literal string — because some older programming environments (Microsoft Navision) have limits on the length of strings.
  • Ftp2: Fixed a problem such that if the ListPattern property was set to a wildcarded pattern, then Chilkat could get the wrong remote file size. This would cause downloads to either fail or not download the full file.
  • MailMan: Fixed problem where SMTP sending of email (in rare cases) was slow.
  • Crypt2: Added support for the “AES-CMAC” MAC algorithm. The Crypt2.MacAlgorithm property can now be set to “AES-CMAC” to generate MACs using the algorithm.
  • Http: The PFile method was fixed. The last argument, “gzip”, which can be true/false, indicates whether the HTTP request body should be sent gzipped or not. Chilkat was not paying attention to the argument and was always sending non-gzipped. This is fixed.
  • Http: The DownloadAppend method is fixed. It was overwriting rather than appending as it should have.
  • XmlDSigGen: Chilkat is working better with several Brazilian government servers. (Such that the XML digital signatures produced by Chilkat are accepted by the Brazillian government servers. The difficulty was in getting the settings just right.)
  • Hash Algorithm: Added support for SHA224 in all places where a hash algorithm might be specified.
  • Http: Added the ability to send HTTP signed requests to cybersource.com. See the UncommonOptions = “DecodeHmacKeyBytes” at https://www.example-code.com/csharp/cybersource_process_payment.asp
  • Crypt2/CAdES: Determined that crypt.UncommonOptions = “NoCmsAlgorithmProtection” is required to send P7M/P7S files to https://vol.postecert.poste.it/verificatore/it with successful validation.
  • XmlCertVault/TrustedRoots: Fixed problems where a certificate authority can have multiple certificates with exactly the same DN (disinguished name), but different key types (RSA vs ECDSA). Chilkat always assumed that a DN should be unique. (Silly Chilkat!) Now we also take into account the key type.
  • PFD/XmlDSigGen/Crypt2: Fixed OCSP requests for ECDSA certificates. This problem also caused PDF signatures using ECDSA cerificates to not be LTV-enabled.
  • SSH/SFTP: Fixed uncommon public-key authentication problems where the client and server are not agreeing on the choice of userauth key algorithm if RSA is used and the server supports the rsa-sha2-256 and rsa-sha2-512 host key algorithms.
  • Http: Fixed the SetSslCertRequirement method which did not work property (in some cases) if trying to match the “SAN” with a wildcarded domain.

New in Chilkat Python Encryption Library 9.5.0.94 (Apr 17, 2023)

  • FTP2: Fixed problems with some FileZilla FTP servers requiring TLS 1.3 session resumption for the data connections.
  • SFTP: Fixed problem where Chilkat may not have honored the max_packet_size limit imposed by some servers for SFTP uploads.
  • PDF: Fixed problems when signing PDF’s for ICP Brasil (https://verificador.iti.br/) The ICP Brasil validator is quite particular about the internal details of PKCS7 signed attributes, and everything must be done in a specific way to be acceptable.
  • SSH/SFTP: Fixed login/authentication problems encountered w/ some SSH servers when password + private key authentication is required (AuthenticatePwPk).
  • PDF: Fixed visual positioning problems when the PDF is landscape instead of portrait.
  • REST: Fixed some issues having to do with using Chilkat REST for Amazon SP API.
  • PDF: Fixed an issue where certain signed PDF’s were categorized by Chilkat has having an invalid internal signature hash. (This was a rare condition.)
  • PFX: Fixed a rare problem such that loading certain .pfx/.p12 files would take an extremely long time.
  • Zip: Fixed a problem when trying to include non-us-ascii chars in the Zip file comment.
  • SSH/SFTP: The internal name for [email protected] was changed by newer servers to curve25519-sha256. Chilkat is now modified to automatically work with both old or new servers.
  • CreateCS: Fixed a problem with the CreateFileStore method, where an application would create a file-based certificate store, add certificates, and then save, but the resulting file would be 0 bytes in length.
  • CkDateTime: Added ULID functions to generate ULID’s in various ways.
  • Email: Fixed problems with Emoji chars when they are used in the email subject or other parts of the email, but only when used in Java because Java requires modified-utf8 for passing strings in/out of methods. However, we don’t want modified-utf8 w/ surrogate pairs to be used in the MIME content of an email (when the email uses the utf-8 charset).
  • Added PHP 8.2 builds.
  • CkStringArray: Fixed: The SplitAndAppend method would incorrectly handle empty strings, such as “1,2,,4”, which should result in “1”, “2”, “”, “4”.
  • OCSP: Chilkat improved OCSP requests (used in various parts of the Chilkat API) to satisfy some servers that are more picky about certain parts of the OCSP protocol which should be optional.
  • Xojo: Added Windows ARM64 and Linux ARM64 architectures.
  • Ruby: Added support for Ruby 3.2 on Windows.
  • PDF: Added the SignPdfPb method to provide the ability to sign a PDF but keep it in memory.
  • XmlDSigGen: Fixed some problems relating to creating signed XML invoices for SII Chile.
  • FTP2: Updated Chilkat to support some FTP servers that don’t support LIST patterns. (i.e. setting the Ftp2.ListPattern property to a value such as “*.txt” always resulted in 0 files in the directory listing).
  • XmlDSigGen: Added intelligence for XmlDSigGen to automatically detect when signing for SRI – SISTEMA DE COMPROBANTES ELECTRONICOS (Ecuador) to produce output in the needed format.
  • Socket: Added the NumBytesAvailable property.
  • OAuth2: Added the following properties: StateParam, ListenPortSelected.
  • HttpRequest: The default Charset was not utf-8 as it should have been. (The default was ANSI.) Chilkat made the fix to restore the default to utf-8 as documented.
  • OAuth1: Fixed issues when using OAuth1 with NetSuite.
  • Email: Fixed problems in handling erroneously nested MIME structures (where Chilkat detects very badly MIME nesting having to do with multipart/mixed, multipart/related, and multipart/alternative and Chilkat automatically normalizes according to best practices).
  • SMTP: Fixed issue where an email address contains non-us-ascii chars in the name part of the email address. For example kænnæ[email protected]

New in Chilkat Python Encryption Library 9.5.0.93 (Nov 30, 2022)

  • PDF: Fixed more issues with LTV signatures, where sometimes Acrobat DC did not consider the signed PDF Long Term Validation enabled.
  • PDF: Added the AddVerificationInfo method. This is performs the same function as in Adobe Acrobat when right-clicking on a signature and selecting “Add Verification Information”.
  • MailMan: Fixed office365.com TLS connection problems.
  • Chilkat .NET Core NuGet package now built for .NET 6 or higher.
  • Added Chilkat .NET Core 3.1 NuGet package at https://www.nuget.org/packages/ChilkatDnCore31 for apps still using .NET Core 3.1 or higher.
  • PureBasic on MacOS M1 – Some problems fixed, but still remains unusable on this MacOS architecture. Will fix remaining problems ASAP.
  • Zip: Fixed: Updating and entry’s comment did not work correctly. This is when a .zip is opened, the entry within the .zip is found, the comment updated, and zip re-saved.
  • PDF: Fixed Brasil ICP signature problems to make the signed PDF pass the verifier at https://verificador.iti.gov.br/verifier-2.10/
  • Note: The signed PDF produced by Chilkat was technically valid, but did not have the optional features and/or did not do things in the specific way desired by Brasil ICP.
  • PDF: Fixed signing to produce signed PDF’s conforming to the needs of EU requirements and validated at https://ec.europa.eu/digital-building-blocks/DSS/webapp-demo/validation
  • Note: The signed PDF produced by Chilkat was technically valid, but did not have the optional features and/or did not do things in the specific way desired by EU validator.
  • Also important: A signed PDF produced for the EU validator’s needs would likely not satisfy the Brasil ICP’s needs, and vice-versa.
  • If the signed PDF does not satisfy your government’s validator, contact Chilkat and we can determine what is needed by comparing a signed PDF that satisfies a particular validator vs one produced by Chilkat. Also, it may be that (in your particular case) Chilkat still does not produce signed PDF’s that satisfy the above validators. This means that Chilkat did not auto-recognize the need to produce the signed PDF in that way, and the solution is to set special JSON config options, or contact Chilkat so we can add your case for auto-recognition.
  • Ftp2: Fixed MGetFiles with wildcard input for certain FTP servers that don’t allow for the LIST command with wildcards.
  • MinGW: Added builds for the latest MinGW versions: 9 and 10. Removed older builds that are most likely never used. (If the build you need was removed, you can contact Chilkat and we can re-establish it.)
  • Go Lang: Added the corresponding MinGW-w64 version 9 and 10 native “C” libs for Go.
  • Ssh: Programs that called ssh.QuickCommand many times in a loop would accumulate memory. The memory would be deallocated if the Chilkat SSH object was destructed, so it wasn’t technically a leak. This was fixed so that memory consumption does not accumulate.
  • PDF: Fixed problems loading certain rarely encountered PDF’s using internal compression with non-standard settings.
  • StringBuilder: Added the AppendUuid method for convenience.
  • Python 3.11: Now supported.
  • CkCache: Fixed a problem with the CkCache.UpdateExpirationDt method.
  • Twitter: Fixed OAuth1 authentication problems.
  • SFTP: Fixed problems with “Window size is running low” when communicating with old SSH-2.0-CoreFTP-0.3.2 servers.
  • CSV: Found that for CSV’s using utf-8, the utf-8 BOM (byte order mark) must be present for Microsoft Excel to recognize the utf-8 encoding. Added an uncommon option to tell Chilkat to emit the BOM:
  • csv.put_UncommonOptions("EMIT_BOM");
  • CkDateTime: The GetAsIso8601 method did not return the ISO-8601 formatted date/time correctly for dates before the UNIX epoch (before Jan 1, 1970)
  • Ftp2: When using implicit TLS connections (i.e. port 990), if the same object instance is used for multiple connections, then for the 2nd and subsequent connections, Chilkat failed to send the “PROT P” command and the server refuses the connection. This is fixed.

New in Chilkat Python Encryption Library 9.5.0.92 (Oct 11, 2022)

  • PDF: Fixed some issues with LTV signatures, where Acrobat DC did not consider the signed PDF Long Term Validation enabled.
  • XMLDsig: Added the ability to produce and validate ZATCA compatible XML signatures.
  • Http: Added the ReceivedCertReq boolean property. It is set to true (non-zero) if the server sent a CertificateRequest TLS handshake message in the last TLS handshake.
  • Ftp2: Automatically clears the internal cached directory listing when disconnecting or connecting. Previously, it might’ve been needed to call the ClearDirCache function.
  • Ftp2: Fixed: AutoXcrc would sometimes mistakenly indicate a CRC mismatch when no mismatch actually existed. Also, XCRC will not be attempted by Chilkat if the FTP server’s FEAT command indicates it is not supported.
  • Zip: – Fixed: When zipping files on Windows, the file archive attribute was not maintained w/ the file entry created within the zip.
  • XmlDSig: Problems with creating XML Signatures for TicketBAI and FacturaE in Spain are fixed.
  • Ssh/SFtp: Added the GetHostKeyFP method to both Ssh and SFtp.
  • Rest: Fixed occasional problems with TLS connections to graph.microsoft.com.
  • MailMan: Added the Pop3StlsIfPossible property to allow for optional explicit TLS connections with a POP3 server, but only if the POP3 server supports it.
  • SFtp: Updated the SetOwnerAndGroup method to correctly handle decimal string owner/group values for SFTP v3 servers.
  • XmlDSig: Problems with creating XML Signatures for EBICS are fixed. (EBICS is a German money transfer standard – Electronic Banking Internet
  • Communication Standard)
  • Pdf: Added the ability to specify an ICP Brasil policy profile to automatically set all needed policyId values correctly.
  • OAuth2: Automatically add “prompt=login” to the URL returned by StartAuth for Microsoft endpoints. This is to prevent browser caching.
  • C++: Added a C++ build for CLion. See Chilkat for CLion C/C++.
  • Stream: Fixed: In some cases, the Stream.StringCharset property was not correctly used when reading text files via Chilkat.Stream.
  • Pdf: Fixed some cases where adding a 2nd or 3rd signature to a PDF caused the original signatures to become invalid when viewed in Acrobat DC.
  • Pdf: Added the GetMetadata function to be able to extract the Metadata from a PDF.
  • Jwe: Fixed problem (failure) when a secp521r1 is used for the CEK (content encryption key).

New in Chilkat Python Encryption Library 9.5.0.91 (Jul 14, 2022)

  • Smart Card: Improved automatic recognition and handling for various smart cards.
  • Chilkat.Charset: Fixed behavior when ErrorAction property is set to value 1 to replace non-convertable chars with a pre-specified char.
  • SFtp: Fixed: SyncTreeUpload did not pay attention to the SyncMustMatchDir property.
  • Ssh: Fixed: The ChannelReadAndPoll method incorrectly returned the number of bytes available to be “picked up” (from previous reads) instead of the value -2 if the method call timed out before receiving additional data.
  • Ssh/SshTunnel/SFtp – Fixed the HostKeyFingerprint property for cases where the SSH server’s host key is ED25519.
  • Ftp2: Fixed data connection session reuse error when the server is a FileZilla Server v1.3.
  • OAuth1: Fixed OAUTH1 problems with the mastercard.com REST API.
  • MailMan: Changed the default for MailMan.OpaqueSigning to True. This is because opaque signing (as opposed to adding a detached signature) is much less likely to be problematic. This is a case where technically backward compatibility is broken (i.e. an application that never explicitly sets MailMan.OpaqueSigning would now send enveloped signature signed emails instead of detached signatures) but we feel it is very unlikely to cause a problem, and it is very likely to avoid problems.
  • CSR: Added the GetSans method to get the list of SANS (Subject Alternative Names) contained in a CSR.
  • CSR: Added the GetExtensionRequest and SetExensionRequest methods. See the online reference documentation and linked examples.
  • ScMinidriver: Fixed the GetCspContainerMap method. It mistakenly returned the IssuerCN twice instead of the SubjectCN and IssuerCN.
  • StringBuilder: Added the GetHash method to make it easy to get a hash of the string in a particular byte encoding (such as utf-8, utf-16, etc.)
  • BinData: Added the GetHash and WriteAppendFile methods.
  • Email: Fixed a crash bug (rare) when loading particular encrypted emails (LoadEml method).
  • MailMan: Fixed a crash bug (rare) when sending emails with certain characteristics and also with an empty body.
  • Crypt2: Added AES-XTS mode and also new methods to support it: XtsSetDataUnitNumber, XtsSetEncodedTweakKey, XtsSetEncodedTweakValue
  • Chilkat2 Python: Fixed the undefined symbol: _Z11PyWrap_TaskP7ClsTask error.
  • StringBuilder: Added the RemoveAccents method.
  • XmlDSigGen: No longer automatically adds the Id attribute to the Signature element. This caused problems with certain servers that verify XML signatures, such as SII en Chile. (Technically it should NOT cause any problems — the problems are really a deficiency on the validation side. The presence of an Id attribute in the Signature element should NOT cause a failure.)
  • Pdf: Added the SigAllocateSize property.
  • IMAP: Technically, UIDs are unsigned integers. The Chilkat API was using signed integers for function arguments and return values where UIDs were concerned. This was typically never a problem because in practice, UIDs were never so large that the most significant bit of a 32-bit number was sent. Until now. Customers encountered servers where the UIDs would return as negative numbers in Chilkat making it difficult to use. Chilkat therefore changed the data type to “unsigned integer”. In certain programming languages, if you get compile warnings or errors, it can be fixed by changing the data type to an unsigned integer.

New in Chilkat Python Encryption Library 9.5.0.90 (Apr 3, 2022)

  • XmlDSigGen: Added the AddObjectRef2 and AddSameDocRef2 methods to allow for a more precise specification of the transforms to be applied when signing.
  • XmlDSigGen: Added the ability to include an EncapsulatedTimeStamp when signing. The SetTsa method was added to provide the URL for the timestamping authority.
  • XmlDSig: Added the ability to add an EncapsulatedTimeStamp to an already signed XML document. Two new methods were added to help: HasEncapsulatedTimeStamp and AddEncapsulatedTimeStamp.
  • SSH/SFTP: Added support for new algorithms:
  • Key Exchange: diffie-hellman-group14-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512
  • Host Key: rsa-sha2-256, rsa-sha2-512
  • Mac: [email protected], [email protected], [email protected]
  • SFTP: Updated to make Chilkat work better with certain problematic (older) servers.
  • Crypt2: Fixed TOTP issues with certain Base32 keys.
  • PDF: Fixed non-English issues with “reason” for signing.
  • S3: Fixed problems when “:” chars are used in bucket names.
  • Smart Card: Improved automatic recognition and handling for various smart cards.

New in Chilkat Python Encryption Library 9.5.0.89 (Sep 25, 2021)

  • Http: Integrated Amazon Pay authentication into the Chilkat HTTP API to eliminate the need for the application developer to directly implement the computations for canonical request and signature.
  • Http: Integrated Duo Security Multi-Factor Authentication (MFA) into the Chilkat HTTP API to eliminate the need for the application developer to directly implement the computations for canonicalization and HMAC-SHA1 signature.
  • Csv: When the Delimiter property is updated, the old delimiter will be replaced with the new delimiter in all rows of the CSV. The provides the ability to convert a CSV to use a different delimiter, such as converting from comma to semicolon.

New in Chilkat Python Encryption Library 9.5.0.88 (Sep 19, 2021)

  • Chilkat v9.5.0.88 Release Notes:
  • Smart Card/ USB Token support: Greatly improved internals for automatically recognizing and handling smart cards and USB tokens from many different vendors.
  • Smart Card – PKCS11 and Cert.LoadFromSmartcard now works on Linux and MacOSX systems. Also should work for Alpine Linux.
  • Cert.LoadFromSmartcard — Vastly improved to automatically recognize smart cards and do what is appropriate internally (PKCS11, ScMinidriver, or Microsoft CNG/CryptoAPI).
  • PKCS11: Adding the PKCS11 class to bring smart card and USB token functionality to non-Windows systems, and to support smart cards that are problematic when accessed via Microsoft’s CNG and Legacy CSP.
  • 21-June-2021 SFTP: Added the ability to authenticate with keyboard authentication in the same way as for SSH. The StartKeyboardAuth and ContinueKeyboardAuth methods are added, and the UserAuthBanner property is added.
  • 8-June-2021 Crypt2: Added the option to calculate “CRC-8” for the CrcBytes and CrcFile methods.
  • 8-June-2021 SSH/SFTP: Added support for the “ecdsa-sha2-nistp521” and “ecdsa-sha2-nistp384” host key algorithms.

New in Chilkat Python Encryption Library 9.5.0.87 (Mar 8, 2021)

  • 1-Mar-2021 Http: When automatically following redirects, Chilkat was mistakenly removing the Authorization header for all redirects. The fix is to only remove the Authorization header when the redirect is to another domain.

New in Chilkat Python Encryption Library 9.5.0.86 (Feb 14, 2021)

  • Pdf:
  • Immediately after releasing v9.5.0.85, it was discovered that many PDF’s had the following error when viewed in Acrobat DC after signing: “”The signature byte range is invalid””. It was deemed important enough to fix and release v9.5.0.86. Therefore, this version is the same as v9.5.0.85 with this additional fix.

New in Chilkat Python Encryption Library 9.5.0.85 (Oct 26, 2020)

  • Added the ExtendedKeyUsage property.

New in Chilkat Python Encryption Library 9.5.0.84 (Oct 23, 2020)

  • 17-Jul-2020 CSR: Added the AddSan method to allow for 1 or more Subject Alternative Names to be added to the CSR that is generated.
  • 25-Aug-2020 Tar: Added the ClearDirRootsAndFiles method.
  • 10-Sep-2020 Email: Fixed some email address parsing problems — for very rare issues (basically crazy situations that should realistically never occur, but fools exist such that foolproof software is required..)
  • 17-Sep-2020 Xojo: Fixed “bus error” crash for Linux ARM build (having to do with TLS using GCM mode).
  • 26-Sep-2020 TLS: TLS 1.3 is enabled by default. In the TLS protocol, the client tells the server which versions of TLS it supports and the server then chooses the TLS version to be used. Chilkat now automatically includes TLS 1.3 in the list of supported TLS protocol versions. If the server chooses TLS 1.3, then TLS 1.3 is used.
  • Much fewer miscellaneous API additions were added in this release because most time and effort was devoted to the development of major new functionality (PDF).

New in Chilkat Python Encryption Library 9.5.0.83 (Aug 15, 2020)

  • 25-Mar-2020 SHA3: Added the SHA3 hash algorithms: sha3-224, sha3-256, sha3-384, sha3-512. The SHA3 hash algorithms may generally be used in any property or method of any Chilkat class where a hash algorithm is specified.
  • 25-Mar-2020 MailMan: Added OAuth2 authentication capability (“AUTH XOAUTH2”) for POP3 servers such as pop.gmail.com that support the XOAUTH2 authentication mechanism.
  • 26-Mar-2020 Csv: Added the SortByColumnIndex method.
  • 31-Mar-2020 AuthAzureStorage: Fixed authentication problems for the Table service.
  • 2-April-2020 chilkat2-python: The LastMethodSuccess property is not getting set correctly. Also, methods that return objects are returning NULL when failing, but should return None.
  • 5-April-2020 SshKey: Added the KeyType property.
  • 5-April-2020 SshKey: Added the GenerateEd25519Key and GenerateEcdsaKey methods.
  • 8-April-2020 PrivateKey: Added the LoadEd25519 method to load an ed25519 private key from two 32-byte hex strings.
  • 8-April-2020: PublicKey: Added the LoadEd25519 method to load an ed25519 public key from a 32-byte hex string.
  • 15-April-2020: Stream: Added the SinkFileAppend property (boolean) to control whether the SinkFile is opened for append or truncate/rewrite. The default value is false for truncate/rewrite.
  • 28-April-2020: Smartcard: Improved internal functionality relating to SmartCards, Storage Providers, etc. This is for Cert.LoadFromSmartcard, CertStore.OpenSmartcard, etc.
  • 28-April-2020: ECDSA Certificates: Improved support for ECDSA certs.
  • 28-April-2020: Ed25519: Improved support for Ed25519 private keys.
  • 28-April-2020: EdDSA: Added an EdDSA class for Ed25519 signatures and key generation.
  • 28-April-2020: Upload: Added the ResponseBodyStr property.
  • 4-May-2020: Cert: Added the LoadByThumbprint method. (Windows-only method to search Windows certificate stores for the certificate having a given SHA1 or MD5 hash/thumbprint.)
  • 5-May-2020: Http: The QuickPutStr method will now automatically include the “Content-Length: 0” header.
  • 11-May-2020: Pfx: Added the following properties and method: AlgorithmId, Pbes2CryptAlg, Pbes2HmacAlg, LastJsonData, UncommonOptions
  • 11-May-2020: Rest: Fixed crash bug in Rest.ReadResponseHeader (a rare situation)
  • 14-May-2020: Crypt2: Added two new methods: AddSigningCert, ClearSigningCerts. This is to make it possible to create CMS signatures with multiple signers.
  • 16-May-2020: Spider: Fixed a bug where not all Unspidered URLs were collected.
  • 17-May-2020: Cert: Deprecated/removed the LinkPrivateKey method. The LinkPrivateKey method should not be needed. If your application uses it, contact Chilkat for help about how to modify your code. It’s likely you can simply remove the call altogether.
  • 30-May-2020: Http: Added the ProxyDirectTls property to support Direct TLS Connection to an HTTP Proxy (such as for a squid cache proxy server).
  • 5-June-2020: Cert: Fixed the “Cert's public key does not match the private key.” error that could sometimes occur in the cert.LoadPfxFile method.
  • 18-June-2020: SFtp: (Fixed) The ReadFileBytes64 method, if reading past the end of the file, did not cause the Eof(handle) function to subsequently return True.
  • 19-June-2020: LastStringResult: For the ActiveX builds, the following properties needed to be added to BinData and StringBuilder: LastStringResult, LastStringResultLen, LastBinaryResult.

New in Chilkat Python Encryption Library 9.5.0.82 (Dec 18, 2019)

  • Pfx: Added the ability to decode PFX files that are AES256-SHA256 Encrypted

New in Chilkat Python Encryption Library 9.5.0.79 (Aug 9, 2019)

  • 21-May-2019 HttpResponse: (fixed) The FullMime property did not return the full MIME of the HTTP response. Instead, it returned the BodyStr.
  • 27-May-2019: SFtp, Ssh: Added the LastJsonData method. This provides the ability to get additional information for some method calls. For example, after calling Connect the LastJsonData will list the algorithms used to establish the SSH connection. Also, authentication failure reason information is available for each of the Authenticate* methods.
  • 27-May-2019: Mailman: Fixed duplicate response lines from appearing in the Pop3SessionLog.
  • 27-May-2019: Mailman: Updated the Pop3SendRawCommand method to properly retrieve multiline responses such as CAPA or UIDL.
  • 30-May-2019: Rest: Fixed: ReadRespBodyStream immediately failed if the download was larger than 4GB.
  • 5-June-2019: Http: Fixed: In some cases, ParseOcspReply returned JSON where information was missing/incorrect.
  • 7-June-2019: XmlDSigGen: Fixed: References to elements that are empty (have no children) caused a “Did not find same-document Reference Id” error when signing.
  • 10-June-2019: Ftp2: Fixed an AS/400 directory listing parse problem.
  • 12-June-2019: Encoding: Added ascii85 encoding/decoding to the list of supported binary encoding algorithms. “ascii85” can be used anywhere in the Chilkat API where an encoding such as “base64”, “hex”, “base58”, etc. is used.
  • 19-June-2019: Http: Did not automatically follow 308 redirects when the Http.FollowRedirects property is set to True.
  • 20-June-2019: XmlDSig: Fixed multiple signature verification problem with certain SAML signed messages (involving saml2p:ArtifactResponse).
  • 20-June-2019: Xml: Fixed: The UnzipTree method did not remove the base64 compressed content from the XML element after unzipping.
  • 20-June-2019: General: Added support for the GSM 03.38 character set. See https://www.clockworksms.com/blog/the-gsm-character-set/#extended-gsm-characters-for-sms for information about GSM / SMS.
  • 24-June-2019: Crypt2: Fixed crash bug in VerifyP7M (only happens under certain uncommon circumstances).
  • 25-June-2019: FileAccess: Added the ReadBlockBd method.
  • 27-June-2019: XmlDSigGen: Added the “AttributeSortingBug” Behavior to allow an application to duplicate a bug found in other software implementations.
  • 1-July-2019: SFtpDir: Added the Sort method.
  • 3-July-2019: Ftp2: The GetLastAccess* methods were removed (except for the ActiveX which would break existing applications). There are typically 3 types of file date/time values: original creation time, last-access time, and last-modified time. FTP server *never* return last-access times. Therefore, it is pointless to include methods for getting the last-access time because they will be equal to the last-modified date/time. If an application was using a GetLastAccess* method, it can instead use the corresponding GetLastModified* method, because GetLastAccess was returning the same value.

New in Chilkat Python Encryption Library 9.5.0.78 (May 22, 2019)

  • The appendHexData method would terminate with an unnecessary LF if the passed in data was a multiple of 16.
  • Fixed a problem parsing IMAP server responses when fetching emails with AutoDownloadAttachments=false where the email is empty without attachments.
  • Fixed a problem reading the PEM output (Encrypted Private Key) produced by this OpenSSL command: pkcs12 -in sample.p12 -passin pass:test123 –passout pass:test1234 -out sampleKey.pem
  • For classes that have a ConnectFailReason property: Added the value 125 — TLS Pin Set Mismatch.
  • Fixed internal problem mainly involving emoji chars. The actual problem had to do with internal utf-8 to utf-16 conversion when surrogate pairs are present (and emoji chars are the typical chars where surrogate pairs occur). This problem could’ve presented in various ways across various classes: DirTree, Zip, FileAccess, etc.
  • Fixed a problem having to do with exclusive canonicalization w/ namespace emission. The problem occurred infrequently enough to be unnoticed for quite some time.
  • Fixed problems having to do with uploads where SPACE chars are in the directory or filename.
  • Fixed issue with SyncTreeUpload. Modes 1-5 would operate as mode 0 and upload all files.
  • If connecting with auto-reconnect turned on, the FullRequestMultipart did not auto-restore the connection if the request was non-chunked.
  • CkStringBuilder: Fixed the ContainsWord method for case-insensitive matches where Danish (or other non-English but Western European accented chars) are used.
  • Ftp2: Added the UncommonOptions property.
  • TCP/TLS in general: Made internal changes to hopefully get rid of “WSAECONNABORTED An established connection was aborted by the software in your host machine.” errors when sending large amounts of data on a socket. (Such as for Amazon Glacier uploads.) This change only applies for builds on the Windows operating system. Other operating systems don’t seem to have this error.
  • Fixed FromOpenSshPrivateKey for loading non-encrypted and encrypted RSA private keys.
  • An attempt to set the CryptAlgorithm property to an invalid (unrecognized) value will effectively be a no-op (will not change the value of CryptAlgorithm).
  • Added the following properties: IncludeNonce, ResponseMode, and ResponseType.
  • Ssh: Added the GetAuthMethods method to query an SSH server for the list of authentication methods it supports.
  • The GetQuotaRoot method returned extra double-quotes around the keyword “STORAGE”. For example: {“QUOTAROOT”:{“mailbox”:”INBOX”,”root”:”Mailbox”},”QUOTA”:{“root”:”Mailbox”,”resource”:””STORAGE””,”used”:17326,”max”:256000}}
  • Added the RcvBytesPerSec and SendBytesPerSec properties. Also added the ResetPerf method.
  • FileAccess: The FileExists method returned true for network paths that don’t exist. (The FileExists3 method, which is recommended over FileExists because it returns three possible values: exist, not-exist, and unable-to-check, would return unable-to-check, but now returns not-exist.)
  • Added the ConvertInlineImages method.
  • Added the ability to create and verify CAdES-T signatures.
  • Added StartKeyboardAuth and ContinueKeyboardAuth (identical to the same methods in Ssh).

New in Chilkat Python Encryption Library 9.5.0.77 (Feb 13, 2019)

  • Email: The NumRelatedItems property was 1 too large in some cases.
  • Bz2: PercentDone callbacks were not working.
  • MailMan: If the connection is idle for 1 minute or more, the next email sent will automatically use a fresh connection. (When a method to send email is called, such as SendEmail, the connection is kept open for the possibility that another call to SendEmail can use the same open connection. Quite often, the server disconnects from an idle connection and the next call to SendEmail fails. This new behavior eliminates this possibility (for the most part). Applications can always explicitly close the SMTP connection by calling CloseSmtpConnection.)
  • Objective-C on MacOSX, iOS, watchOS, and tvOS: Non-english directories were not created properly (specifically Japanese chars were the test case, but the problem certainly existed for all non-English chars). This caused methods such as Unzip to not work correctly.
  • Xml: Added the following methods and properties: GetChildAttrValue, TagUnpEquals, TagNsEquals, TagUnprefixed, and TagNsPrefix.
  • StringBuilder: Added the following methods: GetBefore, RemoveBefore, GetAfterFinal, RemoveAfterFinal, and ReplaceFirst.
  • Rest: Added the DebugMode property and the GetLastDebugRequest method. This allows for an application to get the exact request sent in the last call to a FullRequest* or SendReq* method.
  • Scp: If an upload succeeds, but the only failure is in setting the remote file time, then the method will return success rather than failure.
  • Email: CreateReply did not automatically drop attachments in the reply email that is returned.
  • Http: For methods that return an HttpResponse object, if the response status code was >= 400, the response body (if it exists) was not contained in the responseObject.BodyStr property. Now it is.
  • SFtp: The SFtp.SyncedFiles property contains a list of files (one per line) uploaded or downloaded in the last call to SyncTreeUpload or SyncTreeDownload. For SyncTreeDownload, this list can also include local directories that were created. Starting in v9.5.0.77, the local directory entries will end with “/” to signify a directory.
  • BinData: Added the following methods: AppendByte, AppendInt2, AppendInt4.
  • Imap: The HasCapability method returned an incorrect answer if the capability in question was the last one listed in the IMAP server’s capability response and a CRLF followed. For example, querying for “QUOTA” — if the capability string ends with “QUOTArn”, such as “* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS …. SPECIAL-USE QUOTArn”, then HasCapability would return False/0.
  • Ftp2: In certain circumstances, when re-connecting using the same Ftp2 object instance, Chilkat would try to use SSL/TLS for the data connection for a case where it should not. This is fixed.
  • Xml: Fixed: LoadXml with autoTrim=false would introduce an extra leading SPACE character in the content. For example: <a>{SPACE}123</a> would become <a>{SPACE}{SPACE}123</a> (where {SPACE} represents a single SPACE char). This would only happen to nodes with a leading SPACE char in the content. For example, <a>123</a> would be unaffected.
  • Xml: Added the RemoveStyleSheet method.
  • OAuth2: Added the SetRefreshHeader method.
  • Socket: Added the SendWakeOnLan2 method to send a WakeOnLan (WOL) with a SecureOn password.
  • Crypt2, MailMan, Mime: Potential crash bug fixed for C/C++ builds. LastJsonData did not return a copy of the internal CkJsonObject, but rather returned the actual instance. Thus deleting the returned CkJsonObject would result in a double-delete of the same object.
  • XmlDSigGen: Added the “IssuerSerialHex” and “IssuerSerialHexLower” behaviors (to the Behaviors property) to emit hex issuer serial numbers instead of decimal in the SignedProperties.SignedSignatureProperties.SigningCertificate.
  • Also, when signing content for “e-dokumenty.mf.gov.pl”, Chilkat will automatically recognize that IssuerSerialHex is required and will do it automatically.
  • Rest: The ClearAuth method did not clear the login/password set by the SetAuthBasic method. This is now fixed.
  • XmlDSigGen, XmlDSig: Fixed a bug in XML canonicalization. This problem occurred when the default namespace is defined at the root node, and exclusive canonicalization (EXCL_C14N) is used, and a fragment is canonicalized where no usage of the default namespace exists and non-qualified attribute names were used. (It is a situation that is not common and therefore was not noticed for quite some time.)
  • Http: Fixed the AddMwsSignature method. The “/” char in params did not get URL encoded to “%2F” as they should be.
  • (5-Feb-2019) Crypt2: Added the following methods: EncodeInt and Hotp. EncodeInt writes an integer value to N bytes (big-endian or little-endian) and returns the bytes as an encoded string, such as hex, base64, etc. Hotp implements the HMAC-Based One-Time Password Algorithm described in RFC 4226.
  • (5-Feb-2019) Crypt2: Added the Totp method, which implements the TOTP Time-Based One-Time Password Algorithm specified in RFC 6238. This is the algorithm used by Google Authenticator.
  • (5-Feb-2019) JavaKeyStore: Added the LoadBd method.
  • (6-Feb-2019) Scp: The DownloadFile, DownloadString, and DownloadBinary methods did not succeed if the remote filename contained a SPACE char.
  • (6-Feb-2019) Scp: Added the DownloadBd and UploadBd methods.
  • (6-Feb-2019) Rsa: Added the following methods: OpenSslSignBd, OpenSslVerifyBd, SignBd, VerifyBd.
  • (7-Feb-2019) SFtp: Fixed a problem in InitializedSftp for some servers. The InitializeSftp method would timeout and fail. It was caused when a server sent unanticipated “extended data”, which was incorrectly processed as a response to a different message.
  • (10-Feb-2019) FileAccess: Added the following methods: FileType, SymlinkCreate, and SymlinkTarget.
  • (12-Feb-2019) Pem: Added the NumCrls property. The PEM class is now capable of handling CRLs, such as sections starting with “BEGIN X509 CRL”. The “crl” itemType can be passed to GetEncodedItem to get the Nth CRL in the PEM.
  • (12-Feb-2019) Asn: Added LoadBd and WriteBd methods.
  • (12-Feb-2019) CkDateTime.SetFromTimestamp: Added the ability to also parse date/time strings formatted as “YYMMDDhhmmssZ”, such as “181221132225Z”.
  • (12-Feb-2019) Socket: Fixed AcceptNextConnection, which did not abort when a separate thread sets the AbortCurrent property.

New in Chilkat Python Encryption Library 9.5.0.75 (Aug 28, 2018)

  • Not Finished Yet The release notes listed here are in progress and not yet completed..
  • XmlDSigGen Added the KeyInfoId property.
  • encoding Added the “hexlower” encoding. “hexlower” may be used instead of “hex” to get the hexadecimal encoding using lowercase a-f (“hex” produces uppercase A-F).
  • JsonObject Added the InsertNewArray and InsertNewObject methods.
  • PFX/P12 Fixed a problem with not properly recognizing OID 1.2.840.113549.1.1.10 in some circumstances.
  • Email Fixed a problem with the SetSigningCert and SetSigningCert2 methods.

New in Chilkat Python Encryption Library 9.5.0.73 (May 28, 2018)

  • Email The SetHtmlBody method, in certain circumstances, would incorrectly set the top-level MIME header to text/html for multipart messages. This was fixed.
  • HTTP Non us-ascii chars in the URL path are now always URL encoded using the utf-8 encoding.
  • OAuth2 Added the UseBasicAuth and AppCallbackUrl properties.
  • MailMan Added methods SendMimeBd and FetchMimeBd.
  • Bounce Fixed a few situations where bounce type 11 (Suspected Bounce) was returned, but should have been 6 (Auto-Reply). In general, minor improvements to Bounce categorization are added as customers report issues, and each new Chilkat version can be assumed to have minor Bounce categorization refinements.
  • Tar Fixed crash (access violation) in the Untar method. This was caused by a corrupt tar file where the internal header contained garbage bytes.
  • Objective-C/CkoJsonObject In iPhoneOS11.2.sdk/usr/include/complex.h, we find the following macro: “#define I _Complex_I”. This caused a compile error because the CkoJsonObject class has a property named “I”. Chilkat updated CkoJsonObject.h to “#undef I” to avoid the conflict.
  • Electron Added builds for Electron 1.8. However the package naming triggered some npm spam detectors (false positives of course), and Chilkat is working to get it resolved. Chilkat will produce builds for Electron 2.0 in the near future.
  • CkByteData Added a SecureClear bool property (get_SecureClear, put_SecureClear). If set to true, then whenever the internal data is deallocated, the memory is first overwritten with 0 bytes.
  • MIME Binary MIME with null bytes in some bodies became corrupted because 0 bytes were replaced with SPACE chars. This is fixed.
  • Signed/Encrypted Email Fixed: The “micalg” attribute incorrectly remained in the Content-Type header field for the encrypted MIME part when the email is also signed.
  • REST Fixed: Stream sources used for uploading were not properly closed after the upload finished.
  • C++ Builder/CkAuthAzureStorage Fixed: The x-ms-date header did not automatically get the correct current date/time for HTTP requests. This only happened for C++ Builder and Delphi builds of Chilkat.
  • Email Added flexibility in parsing non-compliant RFC822 date strings, where the month name and month day number are not in the correct order as specified by RFC822.
  • MIME parsing (general) Added more internal flexibility for handling mixtures of CRLF and bare-LF line endings.
  • XmlDSigGen Now capable of using non-exportable private keys on Windows, such as for A3 certificates where the private key is on a hardware token.
  • SSH Fixed a rarely encountered “handshake” problem.
  • HTTP Changed the default Content-Type for the PostJson method to be “application/json”. The original default value, “application/jsonrequest” was the initial “standard” years ago, but seems to never be used nowadays. If an “application/jsonrequest” is needed (and I doubt it will ever be needed), then PostJson2 may be called to explicitly specify the Content-Type.
  • HTTP The default value of the S3Ssl property is now true.
  • Zip Fixed rare problems involved with rewriting zip archives, when the “move from temp zip to target” fails.
  • Email Fixed certain automatic MIME structuring issues w.r.t. multipart/alternative and multipart/related.
  • Compression Added the DeflateLevel property to the Compression class.
  • CkString The removeDelimited method was missing for Ruby, Java, Perl, Python, Tcl, and PHP.
  • SFTP Fixed: The SyncTreeDownload method was not firing the DownloadRate callback.
  • PrivateKey Fixed: The GetPkcs8Pem method (for ECC keys) was returning PKCS1 but should’ve been returning PKCS8.
  • HTTP Added the SharePointOnlineAuth method.
  • HTTP Fixed problems with the S3_GenerateUrl and S3_GenerateUrlV4 methods.
  • SSH Fixed: After doing a ReadDir, the SFtpFile.IsDirectory property was not correct for some types of SSH servers.
  • Zip Added the PwdProtCharset property.
  • SOCKS5 Fixed problems with IPv6 addresses when using SOCKS5 proxies.
  • Compression Added the CompressSb and DecompressSb methods.
  • JSON Added the methods DtOf and DateOf to both JsonObject and JsonArray.
  • HTTP Fixed problems with non-us-ascii chars in URLs for downloads.
  • StringBuilder Added the ReplaceAfterFinal method.
  • HTTP Fixed: The LastHeader property was empty after the PostUrlEncoded method.
  • SSH Fixed slowness for SSH commands the emit a large amount of output.
  • HTTP Fixed rare server certificate verification problem when the server provides out-of-order certificates in the TLS handshake.
  • FTP2 Fixed: The IdleTimeoutMs property was not being honored for DNS problems.
  • StringBuilder Added the WriteFileIfModified method.
  • PureBasic Fixed a compile error in the CkHttp.pb file.
  • SSH/SFTP/SshTunnel Fixed a host key signature verification failure for certain situations.
  • SSH/SFTP/SshTunnel Added the UncommonOptions property, which will be a place to specify future unforeseen workarounds that may be required for particular SSH servers (old or new).
  • Rest/Socket Fixed a problem when a non-standard HTTP port (not 80 nor 443) is used in for the original Socket connection in conjunction with the Rest.UseConnection method.
  • RSA Added the SetX509Cert method to make it easy to use the private key of certificate. Also allows for A3 certificates where the private key is non-exportable (on a Windows system) such as on a hardware token.
  • XmlDSigGen Added the “X509Data+KeyValue” option for the KeyInfoType property.
  • JsonArray Added the FindString and FindObject methods.
  • Zip Fixed reliability issues in the UnzipToStream method.
  • XmlDSigGen Fixed: The X509SerialNumber in the X509IssuerSerial needed to be in decimal, not hex.
  • S/MIME Fixed an extremely rare issue where a digital signature verification failed but should’ve been successful.
  • JsonObject Fixed the “Unable to lock my JSON object.” error that would be returned if SetStringOf was called on an empty JsonObject.

New in Chilkat Python Encryption Library 9.5.0.71 (Feb 13, 2018)

  • FileAccess Added the GetFileTime method to get the last-modified, created, or last-access file date/time.
  • Email Automatically fixes FROM email addresses to prevent email spoofing as described at https://www.mailsploit.com/index
  • FileAcccess If FileSize() returns -1 (failed), then the LastMethodSuccess property was not properly set. (The LastMethodSuccess is a property common to Chilkat classes that is automatically set when any method that returns an integer, string, or object is called.)
  • WebSocket Fixed so that if corrupt data is received (i.e. bytes that do not conform to the WebSocket framing protocol), then the connection is closed as per the WebSocket standard.
  • OAEP Added the OapeMgfHash property to the Email, Crypt2, Mime, and Rsa classes.
  • XmlDSigGen Added support for XML canonicalization WithComments algorithms.
  • StreamConnector/Crypt2 Fixed Crypt2.DecryptStream for cases in .NET when a StreamConnector is used.
  • AuthAws Fixed AWS authentication for Amazon SES.
  • Jwe Fixed problem with RSA-OAEP-256. Also added support for RSA-OAEP-384 and RSA-OAEP-512
  • Rest Added the ConnectTimeoutMs property.
  • MailMan Added the LogMailReceivedFilename property to log a POP3 conversation to a file in real-time.
  • PHP Added thread-safe builds for PHP 7.2 (as opposed to only supporting NTS builds).
  • SFTP Added the XferByteCount property to allow for applications to access the current upload or download transfer byte count for ongoing asynchronous transfers.
  • SSH/SFTP Added the ServerIdentifier property.
  • Csv Added property EnableQuotes such if set to False/0, causes the parser to not treat double-quotes chars as special.
  • C++ Builder Added a build for C++ Builder 10, which includes a build for the 32-bit clang library.
  • Jwe Fixed to internally restrict IV’s to 96 bits as standards dictate.
  • Node.js Added builds for Node.js 9.*.*
  • Dkim Added methods that use BinData. Deprecated methods that use byte arrays or CkByteData.
  • StringBuilder Added methods for punycode.
  • Ruby Added builds for Ruby 2.5.*
  • OpenSSL Decrypt Added feature to be able to decrypt files encrypted using an openssl command such as “openssl enc -e -aes-256-cbc -in hamlet.xml -out hamlet.enc -pass file:./secret.txt”. See https://www.example-code.com/csharp/openssl_enc_decrypt.asp
  • CkHashtable Fixed crash bug in the AddFromXmlSb method.
  • Email Added a method named ApplyFixups. (Read more about it in the online reference documentation.)
  • SshKey Added support for the EC key format used by openssl. (No coding changes required, Chilkat automatically recognizes the key format when loading/parsing.)
  • FileAccess Fixed issues with TreeDelete: (1) It returned false when it actually succeeded, and (2) it failed to delete read-only files.
  • SecureString Added the SecureString class to help keep passwords encrypted in memory.
  • Crypt2 Added the DecryptSecureENC and EncryptSecureENC methods.
  • Imap Added the LoginSecure method.
  • MailMan Added the SetPassword method (to set the password using a SecureString rather than just setting the Password property).
  • Ssh, SFtp, SshTunnel Added AuthenticateSecPw and AuthenticateSecPwPk methods.
  • Http Added the SetPassword method so that a password may be set via a SecureString.
  • Rest Added the SetAuthBasicSecure method.
  • SFtp Added the following methods: SymLink,HardLink, ReadLink, and FSync.

New in Chilkat Python Encryption Library 9.5.0.70 (Jan 15, 2018)

  • WebSocket Added the WebSocket class.
  • FTP2 The LargeFileMeasures property now applies to uploads. (It originally applied only to FTP downloads.)
  • FTP2 For synchronization uploads, such as for the SyncRemoteTree method, the AutoGetSizeForProgress property now applies. The local directory tree is only scanned to determine the total upload size, which is required for percent-done progress monitoring, if the AutoGetSizeForProgress property is true. There have been cases where the local directory tree is so large, that it takes a long time to recursively scan and the FTP server returns the following error when the uploads finally begin: [421 No-transfer-time exceeded. Closing control connection.]
  • Zip Fixed the ability to create zips using any of PPMD, LZMA, and Bzip2 compression.
  • Crypt2 Added the LastJsonData method.
  • Rest Fixed ServerSentEvent problems with Firebase
  • Zip Fixed the AppendString2 method to not include the utf-8 preamble when the charset argument is “utf-8”.
  • ZipEntry Fixed the ReplaceString and AppendString methods. The charset argument for these method was getting ignored.
  • PKCS7 Digital Signatures (This could apply to Crypt2 or Mime.) In very rare cases, the internal ASN.1 for a part of the PKCS7 signature used something called a “t61” string. Chilkat now handles it correctly.
  • XmlDSigGen Added the IncNamespacePrefix and IncNamespaceUri properties.
  • XmlDSigGen Added a special behavior for the prefixList argument of the AddSameDocRef method. The keyword “_EMPTY_” may be passed to force the generation of an InclusiveNamespaces element with an empty PrefixList under the Transform element. See the online reference documentation for details.
  • XmlDSigGen Added the Behaviors property to account for special needs. See the online reference documentation for details.
  • PreferIpv6 Added internal re-try functionality to cope with various situations for IPv4-only and IPv6-only networks.
  • Tar Fixed bug in AddFile2. See Tar AddFile2 Bug Fix
  • OAuth1 Added the Realm property.
  • IMAP If the date/time string passed to the AppendMimeWithDateStr method used “UTC”, such as in “18-Oct-2017 09:08:21 UTC”, then Chilkat would pass a date/time string without the UTC. This caused the IMAP server (or at least one particular IMAP server) to use it’s local date/time. The IMAP RFC specifies that the timezone part of the date/time string should be in the format +/- 4DIGIT, such as “+0800”. Chilkat now automatically converts the “UTC” (or GMT) to “+0000”.
  • PureBasic The string “data” is a keyword in PureBasic. There has been trouble with the fact that some argument names in the provided .pb files, such as CkJsonObject.pb, contain function arguments named “data”. These have been renamed to “argData” to avoid PureBasic compile errors.
  • Rest Added the AddPathParam and ClearAllPathParams methods.
  • Mac OS X Fixed problem with the AbortCurrent property for CkoFtp2 and other classes.
  • HTTP Fixed problem with using the caching feature (FetchFromCache, UpdateCache, AddCacheRoot, NumCacheLevels, etc.). If the http.AllowGzip property was set to true, and a Gzip response was cached, then a subsequent cache-hit would not return the ungzipped response (as would a normal non-cache-hit response).

New in Chilkat Python Encryption Library 9.5.0.68 (May 29, 2017)

  • Version 9.5.0.68 is virtually the same as 9.5.0.67, but with one important bug fix in the JsonOjbect.UpdateString method that warranted a new release. Some additional methods were added to JsonObject and Http to help in handling potentially large amounts of data.
  • JsonObject.UpdateString — The passed-in string was not being JSON escaped like it was for JsonObject.AppendString. This would cause problems for non-usascii chars, or certain special chars that need to be escaped, such as double-quotes, LF’s, CR’s, etc.
  • JsonObject: Added the following methods: StringOfSb, BytesOf, UpdateSb, and UpdateBd. The need for these methods became apparent when writing examples for Microsoft Graph / Outlook. The purpose of the methods is to access a potentially large amount of data within JSON without needing to pass the data back/forth in arguments or return values. Passing StringBuilder or BinData object references is far more efficient than passing the actual data.
  • Http: Added the PostJson3 method. This is the same as PostJson2, except rather than passing the JSON as a string (which could be a potentially large string), we simply pass the JsonObject reference.

New in Chilkat Python Encryption Library 9.5.0.67 (May 29, 2017)

  • HTTP: Fixed a problem when auto-following redirects from HTTP to HTTPS. If the cached connection existed for long enough, and the server closed the connection at some previous point, then the redirect would fail.
  • SFtp: Added the FileExists method.
  • HTTP: Fixed redirects requiring an authentication header. Chilkat automatically removes the Authorization header when automatically following a redirect. This caused problems for redirects within the same domain where the Authorization is needed. Chilkat now removes the Authorization header if the redirect is to a different domain, but keeps it if the redirect is within the same domain.
  • Spider: Fixed the AddMustMatchPattern method.
  • BinData: Added the GetString method.
  • Mime: Added the GetBodyBd method.
  • Email: Added the GetAttachmentBd and GetAlternativeBodyBd methods.
  • Gzip: Added the CompressBd and UncompressBd methods.
  • Email, Crypt2, Mime: Added the OaepPadding and OaepHash properties.
  • Tar: Fixed a problem caused when a file to be added to the .tar is exactly 4294967295 bytes in size (which made the file size look like -1 when the 4-byte integer is interpreted as a signed integer).
  • JsonObject: Added new methods: EmitWithSubs, Predefine, LoadPredefined.
  • Http: Added the AuthToken property.
  • Http: Added the SetUrlVar and ClearUrlVars methods.
  • HtmlToXml: Better handles HTML with unclosed tags in certain situations.
  • Http: For keepalive connections, fixed the internal auto-recovery (in certain situations) if the connection is discovered broken upon sending the request. For example, if a request/response occurs and the connection is keep-alive, then time passes, the HTTP server closes the connection, and the client (your app) sends the next request. Chilkat will discover the connection is non-existent and will automatically re-connect.
  • SFtp: Fixed the ReadFileBytes method for the case where one tries to read more bytes than what exists in the remote file.
  • Ssh: Added the StripColorCodes property.
  • Added the “base64_mime” to the list of possible encodings. This is the same as “base64”, but causes the base64 to be emitted in lines just like it would be found in MIME or in a PEM.
  • Crypt2: Added the following BinData/StringBuilder methods: VerifySbENC, VerifyBdENC, SignSbENC, SignBdENC, OpaqueVerifyBd, OpaqueSignBd, EncryptSb, EncryptBd, DecryptSb, DecryptBd.
  • Added RSASSA-PSS and RSAES-OAEP capabilities for signed and encrypted email. This was spurred by customer needs to satisfy new requirements in Germany that apparently go into effect on 1-June-2017 regarding email signatures and encryption.
  • Apple tvOS: Added a build for tvOS.
  • ZipEntry: Added methods UnzipToStream, UnzipToBd, and UnzipToSb.
  • Stream: Added methods ReadBd, ReadSb, WriteBd, WriteSb
  • NTLM Proxy Authorizations: Fixed some HTTP NTLM proxy authorization issues, especially when TLS is involved.
  • Ftp2: Added the GetFileToStream method
  • CkDateTime: Added the ExpiresWithin and OlderThan methods.
  • OAuth2: Added the Resource property.
  • JsonObject: Added the AppendStringArray property.
  • MailMan: Added the StartTLSifPossible property.
  • PublicKey: Added the KeySize property.
  • VC++ 7.1: Added a build for VC++ 7.1.
  • Tar: Fixed the “Invalid octal string for file size” error.
  • JsonObject: Added the FindObjectWithMember method.
  • Certificates: Chilkat now fully supports ECC certificates in all ways.

New in Chilkat Python Encryption Library 9.5.0.66 (May 29, 2017)

  • Added the Jwe and Jws classes for JSON Web Encryption and JSON Web Signatures.
  • The CkDateTime.SetFromOleDate method was not working correctly. It has been fixed, and the fix will appear in the next version to be released after v9.5.0.65.
  • The CkDateTime.GetAsIso8601 interpreted the “bLocal” argument as the opposite. This has also been fixed and the fix will appear in the next version to be released after v9.5.0.65.
  • MHT — Images with embedded data, where the IMG SRC tag looks like this: “<img src=”data:image/jpeg;base64,/9j/4AAQ …”> were getting dropped. This is fixed.
  • Added the Http.S3_GenerateUrlV4 method to generate pre-signed AWS URLs using the Authenticate V4 signing method.
  • Added Compression.CompressBd and DecompressBd methods to compress/decompress the data contained in a BinData object.
  • Added PublicKey.GetJwk and PrivateKey.GetJwk to get public/private keys in JSON Web Key format.
  • Added Crypt2.AesKeyWrap and Crypt2.AesKeyUnwrap methods.
  • Added SFtp.SendIgnore method.
  • Fixed exporting ECC private keys from PFX to other formats.
  • Added the Zip.OpenBd and Zip.WriteBd methods to open from a BinData object, and to write to a BinData object.
  • Fixed issue with contents of Ftp2.LastReply property when an intermediate response is the cause of failure.
  • Improved performance for SFTP, FTP, and HTTP data transfers.
  • Added the Email.NumDigests property, and the Email.GetDigest method.
  • Fixed AWS Signature V4 issues for some cases when query params are used with S3.
  • Fixed the FileAccess.GetFilenameWithoutExtension method.
  • Fixed the Ftp2.Ccc method.
  • Fixed the Email.GetDeliveryStatusInfo method for certain cases where the body of information contained multiple blank lines.
  • Improved Xojo download so that Mac OS Carbon is supported.
  • Fixed MailMan.VerifySmtpLogin so that it returns true if the SMTP server requires no authentication.
  • Fixed Email.AddFileAttachment2 for the case when an attachment is the text/plain Content-Type.
  • Added automatic HTTP TLS session re-use (if possible) for HTTP connections.
  • Fixed various property getters/setters so they do not block (hang) when an async method is in progress.
  • Added support for chacha20 ciphers in TLS and SSH.

New in Chilkat Python Encryption Library 9.5.0.65 (Jan 2, 2017)

  • SshTunnel – Significantly improved the background tunnel management threads.
  • JsonArray.TypeAt – Discovered that this method erroneously always returns the value 4. This is fixed.
  • JsonObject – Added new methods: UpdateNumber, UpdateNull
  • Bug Fix: .NET Async Methods that pass in Byte Arrays There was a memory leak specific to async .NET methods that pass in byte arrays. See Byte Array Memory Not Freed for .NET Async Methods
  • Socket: Added new methods: SendBd, SendSb, ReceiveBd, ReceiveBdN, and ReceiveSb. These are for sending/receiving directly from/to BinData and StringBuilder objects.
  • JsonObject: Added new methods: UpdateNull and UpdateNumber.
  • StringBuilder: Added AppendLine method.
  • FTP2: Fixed: The following FTP2 methods returned the current date/time instead of NULL for failure: GetLastAccessDtByName, GetLastModDtByName, GetCreateDtByName, GetLastAccessDt, GetLastModDt, GetCreateDt. The methods now correctly return NULL (i.e. 0, null, Nothing, etc.)
  • MailMan: Fixed the GetHeaders method. The fromIndex and toIndex arguments are inclusive. For example, if getting headers for emails 1 to 10, then 11 emails should be returned (assuming the mailbox has at least 11 emails). The fix had to do with the case when the fromIndex = 0. If fetching emails 0 to 2, then only 2 emails were returned. This is now fixed. Fetching 0 to 2 should return 3 emails.
  • Crypt2 (PBES2) — When setting the CryptAlgorithm = “PBES2”, Chilkat was doing PBES1 encryption. This problem started sometime after v9.5.0.45. This is now fixed.
  • Added the CkDateTime.DiffSeconds to get the difference in seconds between two CkDateTime objects.
  • Fixed auto-create issue in JsonObject.UpdateString, UpdateInt, etc. for array paths that end in a primitive. For example the following C++ code
  • Turned on TCP_NODELAY socket option for HTTP. See http://www.chilkatforum.com/questions/11570/http-is-slow
  • Updated C++ headers to avoid QT’s “emit” macro. QT defines the word “emit” as a macro, and Chilkat’s JsonObject and JsonArray classes both have an “emit” function. QT’s macro definition causes compile failures for any C++ source that uses any variable, function, etc. named “emit”.
  • Added the “eda” encoding for UN/EDIFACT Syntax Level A. See https://www.example-code.com/csharp/edifact_eda_syntax_level_A_encoding.asp. Also see: http://cknotes.com/chilkat-binary-encoding-list/
  • Added new methods to CkDateTime: AddSeconds, GetAsUnixTimeStr, GetAsIso8601.
  • Added the AuthAzureSAS class. (For Shared Access Signature authorization)
  • Added the Rest.SetAuthAzureSas method. (For Shared Access Signature authorization)
  • Fixed Rest.AddQueryParams (note that this is the plural: AddQueryParams method, not AddQueryParam). If values in the param string were URL encoded, the AddQueryParams did not properly URL decode each value. This would result in query params being doubly URL encoded when the actual request was sent.
  • Added Crypt.BcryptWorkFactor, BCryptHash, and BCryptVerify to support BCrypt password hashing and verification.
  • Fixed an Android issue w/ IMAP ProgressInfo callbacks. The problem only occurred when a ProgressInfo callback happened for Login where the username includes a non-usascii char, such as one with an umlaut.
  • Socket.TlsRenegotiate — fixed a problem that occurred under certain conditions when the SslAllowedCiphers property is set to restrict TLS cipher suite choices.
  • Ftp2 – Fixed problem with “Unix Cway” servers where 0-byte files were getting downloaded (instead of the full file). This was caused because the FTP server inaccurately reports that the file is “0 bytes” in the intermediate reply to the RETR command. Chilkat now ignores what this particular server says.
  • (Email) Fixed: An incoming email’s header specifies the sender as this:From: "FAXG3/+5554555920"@faxsrv.intraThe email is loaded into a CkEmail object using the C++ edition of Chilkat.Problem is, the CkEmail.get_FromAddress() method returns @faxsrv.intra as the email address instead of FAXG3/[email protected]
  • ActiveX LastStringResultLen property incorrectly returned the size of the string in bytes (utf-16) rather than in number of characters. This is fixed to return the number of characters. (Note: this is a property that only exists in ActiveX classes, and is only useful for certain programming languages such as SQL Server to help programs determine if temp tables are required..)
  • SSH – Added the following methods: QuickShell, QuickCommand, QuickCmdSend, and QuickCmdCheck. These methods help simplify executing remote commands running shell sessions.

New in Chilkat Python Encryption Library 9.5.0.64 (Jan 2, 2017)

  • Modified the ActiveX DLLs to automatically do per-user ActiveX registration if administrative privileges are not available. This will allow non-administrators to register the ActiveX. However, when per-user registration happens, other user accounts on the same Windows computer will not find the ActiveX registered. Therefore, to properly register the ActiveX for ASP, a Windows Service, or for a SQL Server database, the ActiveX would still need to be registered with admin privileges.
  • .NET ToString Method: Chilkat avoids naming any of its methods “ToString”, because all .NET objects by default have a ToString method. Chilkat v9.5.0.64 now automatically implements ToString for all classes in the Chilkat .NET API (although it won’t be publicly documented). (This does not yet apply to the Mono, .NET Core, or WinRT Chilkat API.) The ToString method maps to the already-existing Chilkat method that makes most sense. (For example, Chilkat.Xml.ToString returns the same as Chilkat.Xml.GetXml.) For objects where it makes no sense to have a ToString method, then ToString returns an empty string.
  • Added a number of methods and properties to the Chilkat.Xml API. These new methods are related to the “path” and I,J,K techniques that were found to be so handy w/ the Chilkat JSON API. (These new methods will be heavily used in the Xero examples, because Xero requests and responses are in XML, and these new features greatly simplify the coding.) The new methods/properties are:
  • EmitCompact (property)
  • I, J, K (properties)
  • UpdateAt
  • UpdateAttrAt
  • NumChildrenAt
  • The following methods are updated to accept either a tag or “tag path”:
  • NewChild2
  • NewChildInt2
  • GetChildContent
  • GetChildIntValue
  • GetChildBoolValue
  • many other methods are updated. These methods will be noted in the reference documentation. The 1st argument will be named “tagPath”, and a note in the documentation will indicate that the 1st arg can be either a tag or tagPath, and that support for tag paths began in v9.5.0.64
  • The Xml.ChilkatPath method was updated to allow for “[i]”, “[j]”, and “[k]” to be used in path strings. When used, each is substituted with the current value of the I, J, and K properties.
  • Added the Http.QuickGetSb method.
  • Added the Imap.MoveMessages method (to move email messages from one mailbox to another on the same IMAP server in the same session). Requires the IMAP server to support the MOVE extension. (Most IMAP servers support the MOVE extension.)
  • Fixed: The Task.Cancel method was not working in the ActiveX.
  • Fixed: The Global.FinalizeThreadPool method will now cancel any asynchronous methods that are still running and causes all async background threads to exit. There are certain problems that can happen if the main thread of a program exits while background threads remain running:
  • If the program is a VBScript, then I’ve found that AVG Anti-Virus will alert the user of a General Behavioral Threat. Making sure that all async method calls have finished, and that all thread pool threads have exited, should prevent this problem.
  • If running a VB6 program from the IDE, the IDE will hang on program exit until all threads have exited.
  • It is likely that existing the main UI thread while background threads remain will cause problems in many other programming environments.
  • Modified: The Global.FinalizeThreadPool method returns the software to the pristine initial state — where no background threads are running, and the thread pool thread is not yet started. Previously, after FinalizeThreadPool was called, it was not possible to continue using asynchronous Chilkat methods (without restarting the application). Now the FinalizeThreadPool method returns the application to the initial pristine state. A subsequent asynchronous method call will cause the thread pool thread to automatically restart, and everything proceeds as usual. (This is needed for cases where the ActiveX is used in debugging sessions within an IDE, because the ActiveX DLL is not loaded/unloaded between each debug run.)
  • OAuth1 — Added the SetRsaKey method and now supports “RSA-SHA1” and “RSA-SHA2”.
  • Rest — Added the ClearAllParts method. This is needed if a new REST request is to be sent just after sending a multipart request.
  • FileAccess — Added methods: FileReadBd, FileWriteBd, GetFileName, GetDirectoryName, GetExtension, GetFileNameWithoutExtension
  • JsonArray — Added the Load and LoadSb methods. Added the EmitCompact and EmitCrlf properties. A JsonArray object can now be created by an application and loaded directly with a JSON array string, such as “[ 1, 2, 3, 4]”.

New in Chilkat Python Encryption Library 9.5.0.63 (Jan 2, 2017)

  • Version 9.5.0.63 is a new version that almost immediately follows v9.5.0.62. It will only be released for a few programming languages (ActiveX, .NET, Delphi, and Excel). Chilkat will provide this release in other programming languages / operating system upon request.
  • The reason for releasing is that Chilkat wishes to create Quickbooks REST API examples, and it was discovered that the Quickbooks server-side is unable to consume HTTP requests that use MIME header folding. Therefore, Chilkat added an AllowHeaderFolding property to both the Http and Rest classes.
  • There were a few other very minor fixes / additions:
  • Added the Email.AddAttachmentBd method.
  • Added the Http.DownloadBd and http.DownloadSb methods. (See the previous release notes for information about “Bd” and “Sb” methdos: http://cknotes.com/v9-5-0-62-release-notes/ )
  • Made the Http.RequireSslCertVerify method more flexible in handling out-of-order certs from a web server. See http://www.chilkatforum.com/questions/11402/certificate-order-issue-enhancement

New in Chilkat Python Encryption Library 9.5.0.62 (Jan 2, 2017)

  • Added StringTable class. The StringTable class differs from the StringArray class in that it’s intended to hold a table of strings that is mostly read-only. The internal storage of all the strings is in a single contiguous block of memory for efficient (minimized) memory storage.
  • Expanded the BinData class by adding new methods and making it available in all programming languages.
  • Expanded the StringBuilder class by adding many more methods.
  • Note: BinData and StringBuilder are consistently the same across all programming languages, whereas CkString and CkByteData are not. CkString and CkByteData will continue to be used in future versions, are still an integral part of Chilkat, and are NOT deprecated.
  • Note: One use of BinData and StringBuilder is in use of new methods ending in “Sb” and “Bd”. These methods are for returning or passing text or binary data, especially large amounts of text or data. For example, imagine one Chilkat method is used to retrieve a large amount of data, and then that data is passed to another Chilkat method. A large waste of time and memory is consumed in returning the string (or binary bytes) to the programming language, and then immediately passing it back to Chilkat. If it is .NET, then the data must be marshaled from unmanaged to managed, and then, to pass back to Chilkat it is marshaled from managed to unmanaged. The same applies when using the ActiveX (with BSTR’s and Variants). By retrieving results directly into a BinData or StringBuilder, and then passing the data by passing the object, the data stays on the native side. For example, the new Rest.ReadRespSb method reads the REST response directly in to a StringBuilder. If it is JSON, this can be loaded directly into a JsonObject via the JsonObject.LoadSb. In the future, new “Sb” and “Bd” methods will be added in places where large amounts of data are likely to be encountered. This will create pathways allowing data to stay native as much as possible.
  • SshTunnel – Now automatically keeps the SSH connection alive during idle times by sending IGNORE messages every 20 seconds (when idle).
  • The 32-bit .NET VS2015 build now uses the /LARGEADDRESSAWARE linker option. (See /LARGEADDRESSAWARE)
  • Minor CSV fix where the last line in a CSV file was inadvertently being trimmed of whitespace on both ends.
  • Added the Global.UnlockStatus property to allow applications to programmatically know if the UnlockBundle (or UnlockComponent) method call succeeded because of the 30-day trial or a recognized/purchased unlock code.
  • Rest – allows Basic authentication for non-secure connections to localhost. Normally, Chilkat disallows the Basic authentication method if the connection is not TLS. There is one exception now, and that is for connections to localhost.
  • Version 9.5.0.62 adds the following initial set of Sb/Bd methods:
  • JsonObject.LoadSb
  • JsonObject.EmitSb
  • Xml.LoadSb
  • Xml.GetXmlSb
  • Email.GetMimeBd
  • Email.GetMimeSb
  • Email.SetFromMimeSb
  • Email.SetFromMimeBd
  • Mime.LoadMimeSb
  • Mime.LoadMimeBd
  • Mime.GetMimeSb
  • Mime.GetMimeBd
  • MailMan.RenderToMimeBd
  • MailMan.RenderToMimeSb
  • Rest.FullRequestSb
  • Rest.ReadRespSb
  • Rest.SendReqSb
  • Rest.SetMultipartBodySb
  • Rest.AddQueryParam
  • Rest.ReadRespBd
  • Rest.SendReqBd
  • Rest.SetMultipartBodyBd
  • Imap.FetchAttachmentSb
  • Imap.FetchAttachmentBd
  • Imap.AppendMimeWithFlagsSb
  • SFtp.UploadSb
  • SFtp.DownloadSb
  • SFtp.UploadBd
  • SFtp.DownloadBd
  • Ftp2.GetFileSb
  • Ftp2.GetFileBd
  • Ftp2.PutFileSb
  • Ftp2.PutFileBd

New in Chilkat Python Encryption Library 9.5.0.61 (Oct 19, 2016)

  • REST: The FullRequestFormUrlEncoded method did not work correctly with AWS authentication. This was fixed. (Note: This fix is required for using Amazon SES to send email.)
  • TLS on Big Endian Machines: Fixed TLS connection issue with some cipher suites on Big Endian machines. There was a particular internal piece of code that did not properly account for the endianness of the machine and assume little endian (which is by far the most common byte ordering).
  • FTP2: The “m”, “d”, and “y” XML attributes in the XML result returned by GetXmlDirListing were mixed up. (For example: full=”20160929-100512″ m=”2016″ d=”9″ y=”29″ hh=”10″ mm=”5″ ss=”12″) This was fixed.
  • SFTP: The ReadFileBytes method could hang for duration of IdleTimeoutMs if file size was smaller than number of bytes requested. This was fixed.
  • SshTunnel: Added the IsSshConnected method.
  • SshTunnel: Added internal functionality to periodically send IGNORE messages to the SSH server to keep the connection alive when the clients are inactive.
  • BinData: The BinData object was previously specific to the ActiveX. It is now available across all programming languages. The BinData object duplicates some of the functionality of CkByteData, but CkByteData is specific to some programming languages.

New in Chilkat Python Encryption Library 9.5.0.60 (Oct 19, 2016)

  • ActiveX, .NET: Fixed problems with the LastMethodSuccess property. Version 9.5.0.60 is a patch for .NET and ActiveX only for this one issue. The Mono builds, .NET Core, and .NET UWP (Windows Runtime) did not have any problem with LastMethodSuccess, and therefore remain at v9.5.0.59. Other languages (C++, Java, Perl, Python, etc.) are also unaffected and therefore remain at v9.5.0.59

New in Chilkat Python Encryption Library 9.5.0.59 (Oct 19, 2016)

  • OAuth2: Added the OAuth2 class.
  • FTP2: Fixed SyncRemoteTree/SyncRemoteTree2 progress monitoring callbacks.
  • Crypt2: Fixed the GenerateUuid to respect RFC 4122. The GenerateUuid method generates the version 4 variant, which is composed of entirely random data except for the few bits that signify version 4.
  • Compression: Fixed the CompressFile method for large files. See Fixed CompressFile
  • MHT: Fixed: MS-Word html files with in file paths needed to be replaced with SPACE chars.
  • Cert/SMIME/PKCS7: Fixed: When a cert doesn’t have the Issuer CN, the encrypted message could not be decrypted using Chilkat library, even though the cert does have subject key id.
  • REST: Dropbox workaround: DropBox is not Q/B decoding header fields as it should do (if it were
  • behaving according to standards). Two modifications were made: (1) Disable Q/B encoding for header fields when Dropbox is the endpoint. (2) Added a new REST property named AllowHeaderQB to enable/disable Q/B encoding for header fields. It is enabled by default.
  • SSH: Fixed: ChannelReceiveUntilMatch did not work for some cases with wildcard (*) match patterns.
  • Android/Java: Fixed the emoji utf-8 problem. The use of emoji’s caused issues with the underlying JNI implementation because Java uses modified-utf8, which is only different because it must use surrogate pairs for chars that encode to longer than 3 bytes. Chilkat will now (internally) emit the correct modified utf-8 using surrogate pairs to keep the JNI fat and happy (given that this problem was discovered w/ the pizza slice emoji for a major pizza chain).
  • HTTP/TrustedRoots: Fixed: When verifying the web server certificate for a TLS connection, the Windows registry-based root CA cert stores were not being searched when TrustSystemCaRoots was true.
  • Now Chilkat will correctly search for the root cert, and if found, will trust the root cert.
  • PEM: Added the “AddItem” method. See the very bottom of this example: AddItem
  • MHT: Enhancement: MHT will not try to embed images when the data is already embedded, such as:
  • img style=”display:block;margin:0 auto 5px;text-align:center;” src=”data:image/png;base64,iVBORw0KGg…
  • HTTP: Fixed auto-follow of HTTP redirects when the redirect URL is a Protocol-relative_URL (i.e. URLs beginning with “//”)
  • Zip: Added the AppendDataEncoded method.
  • Python/FreeBSD: Fixed the installer for Python on FreeBSD.
  • Email: Fixed Q/B decoding issue for address related headers. The SPACE char between the friendly name and the email address was dropped when Q/B decoding.
  • JSON: Fixed a parse problem that occurred when a Unicode char was the very last char in a JSON value string. For example if the value string ended with “\u6e2c”, then this final char was dropped in the string returned by various methods.
  • TLS 1.2: Fixed: The server would close the TLS connection during initial handshake (after receiving the ClientHello) if it picked the cipher suite TLS_ECDHE_ECDSA in TLS 1.2. The reason is that Chilkat did not include the ECDSA/SHA1 signature hash algorithm as a candidate for the Server Key Exchange. (Note: This was not a security issue — it was just a case where the TLS handshake would fail if the server picked a particular cipher suite, only in TLS 1.2, and expected to use a paricular Server Key Exchange signature hash algorithm.)
  • SSH: Added the hmac-sha1-96 algorithm to what is supported in the internal SSH connection protocol.
  • Email: Eliminated problems arising from X.400 email addresses where there is no “@” character.
  • HTTP: Fixed the ReceiveRate callback (so that it’s actually called) for the WinRT and Unicode C++ builds.
  • Unicode C++: Event callbacks were broken starting in v9.5.0.58 for the Unicode C++ builds. (They were working in v9.5.0.57, broken in .58, and now fixed in .59)
  • IMAP: A particular kind of email on a particular IMAP server would cause a hang (or timeout) when downloading the email for the case where AutoDownloadAttachments is disabled.
  • SFTP: Worked around problems with the Devart SSH server.
  • Email: Fixed email structure problems for certain situations when SetHtmlBody was called.
  • HTTP/S3: Fixed a problem caused when filenames contain SPACE chars.
  • Email: The ComputeGlobalKey method was deprecated and should not be used. The inputs to the MD5 hash algorithm were not properly canonicalized, and therefore the computed key could change from version to version (based on fixes, improvements, etc. in the MIME processing).
  • Email: Added the ComputeGlobalKey2 method, which is properly canonicalized to avoid the issues of the original ComputeGlobalKey implementation.
  • XMP: Fixed: TIFF files with EXIF IFD’s were not correctly re-written.
  • Email/MIME: Fixed problems where the values in address related header fields were not returned Q/B decoded. (For example, the value returned by the GetHeaderField method should be Q/B decoded.)
  • SSH: Fixed a performance problem w/ the ChannelPoll method for very small timeouts.
  • Zip: Fixed a problem w/ encrypted zips for Unicode C++ (CkZipW) on Mac OS X. The issue has to do with the fact that wchar_t is 4 bytes per char (on Mac OS X) as opposed to 2 bytes per char.
  • Email: Fixed GetSignedByCert so that it will still return the certificate even if the signature validation fails.
  • FTPS: Fixed a PBSZ/”PROT P” problem with the Global eXchange Services Secure FTP brand of FTP server.
  • JSON: Fixed a JSON parsing problem having to do with escaped chars.
  • MHT: Fixed a problem with “link” tags where attributes such as “media” were getting dropped.

New in Chilkat Python Encryption Library 9.5.0.58 (Oct 19, 2016)

  • Rest: Added the Rest class
  • Jwt: Added the Jwt class
  • AuthAws: Added the AuthAws class
  • AuthGoogle: Added the AuthGoogle class
  • AuthAzureAD: Added the AuthAzureAD class
  • AuthAzureStorage: Added the AuthAzureStorage class
  • ServerSentEvent: Added the ServerSentEvent class
  • CertStore: Fixed a memory leak in the LoadPemFile method
  • Charset: Fixed problems in the VerifyData method having to do with us-ascii and utf-8
  • C++: Now includes utf16_t classes. Except for certain classes such as CkString and CkByteData, there are three options for each C++ class
  • the multibyte class, the wchar_t class, and the utf16_t class. For example, CkSFtp, CkSFtpW, and CkSFtpU
  • FTP2: (FIXED) The SyncRemoteTree/SyncRemoteTree2 progress monitoring (event callbacks) were not working
  • FTP2: Added the LargeFileUpload method
  • IMAP: Added new methods: HasCapability, GetQuotaRoot, GetQuota, and SetQuota
  • LastErrorText: The Windows logged-on username is no longer automatically logged at the top of every LastErrorText
  • This was originally done to help w/ support issues so tht Chilkat might notice if the program runs in the context of a Service or IIS, which could be a clue to the cause of certain problems.)
  • SSL/TLS: Internal client-side and server-side renegotiate problems were fixed
  • FTP2: Backslash chars in paths sent to the server are automatically converted to forward-slashes
  • PrivateKey/PublicKey: Deprecated many methods and added new methods. Originally these classes were for RSA keys, but have since become
  • a classes that can contain either RSA, DSA, or ECC keys. Methods with “RSA” in the name were deprecated. Also, methods with confusing names were deprecated and replaced with methods having better names
  • SFTP: Fixed problems with certain SSH/SFTP servers where certain downloads would hang
  • TLS: Added support for the SHA512 server key exchange hash algorithm. (See http://www.chilkatforum.com/questions/10395/sslallowedciphers-options)
  • StringBuilder: Added a StringBuilder class, which is more helpful in some older programming languages as opposed to others
  • Email: Fixed problems with comma characters found in email addresses that are Q/B encoded
  • JsonObject: Crash bug fixed in the StringOf method
  • Email: (FIXED) Comma characters embedded in an email address friendly name, such as “Doug, Smith ” would interfere with the parsing of the email address
  • SFTP: Added the SyncDirectives property
  • LoadTaskResult: (FIXED) The ActiveX LoadTaskResult methods always returned 0, regardless of success/failure
  • MHT: (FIXED) Chilkat hangs with specific HTML on calling mht.GetEML. The problem had to do with infinite recursion: The CSS that is downloaded itself contained an import for the same CSS (or indirectly contained an import for a CSS that then contained an import for a CSS that was previously downloaded, causing a loop)
  • Crypt2: The value of the KeyLength property should always be in agreement with the number of bytes of key material provided by the application
  • The SetEncodedKey method correctly has the side-effect of also setting the KeyLength property. However, setting the SecretKey property directly did not also have this desired side-effect
  • This was fixed. If the SecretKey property is set with 16 bytes of data (128 bits) then the KeyLength property is automatically updated to 128
  • PHP: Added Windows builds for PHP as FastCGI with IIS using the Non-Thread Safe (NTS) versions of PHP. See https://www.chilkatsoft.com/php.asp
  • Tar: Fixed a crash bug in the VerifyTar method (for corrupt/garbage input files)
  • CkDateTime: added the GetAsTimestamp and SetFromTimestamp methods
  • Email: Fixed issues having to do with structuring an email with multipart/related, multipart/alternative, etc
  • Ftp2: Regarding the ForceIpAddress property: By default, Chilkat will NOT try to bind the data socket to the IP address specified by the ForceIpAddress property
  • You may use a special “bind-” prefix in the ForceIpAddress property to cause the data socket to be bound to the ForceIpAddress property. For example, put_ForceIpAddress(“bind-80.130.210.228”)
  • There was an undocumented feature where you can set the ForceIpAddress property equal to the keyword “control”. In this case, the IP address of the control connection is used
  • Also, Chilkat will now recognize the error message “I won’t open a connection to…”, and will automatically retry using the IP address from the message
  • Csv: (FIXED) Csv.WriteFile2 did not work with utf-16
  • CkString (C++): Added getUtf16 and setStringUtf16 methods
  • IMAP/MailMan: (FIXED) The new format of the IMAP-only unlock code unloced IMAP, but not the MailMan object
  • AbortCurrent: Added the AbortCurrent property to classes that can have event callbacks
  • HTTP: Fixed a problem involving HTTP redirect responses in combination with HTTP proxies where both SSL/TLS and non-SSL/TLS URLs are involved
  • IMAP: Added the capability to handle DIGEST-MD5 authentication for IMAP
  • HTTP: Fixed problems handling 407 responses. Also fixed behavior when receiving a response with a “proxy-connection:close” header
  • SshKey: (FIXED) SshKey.FromPuttyPrivateKey() failed if comment contained umlauts
  • JsonObject: (FIXED) Calling json.AddObjectAt on an empty JSON document failed
  • FTP2: Reverted the Microsoft FTP workaround added to v9.5.0.56
  • Socket: The non-SSL/TLS HTTP proxy functionality was fixed
  • SCP: The DownloadFile method did not close the channel

New in Chilkat Python Encryption Library 9.5.0.56 (Oct 19, 2016)

  • Stream: Added a Stream class to be utilized more heavily in the future.
  • StreamConnector: Added the StreamConnector class for .NET to allow for System.IO.Stream’s to be used with Chilkat.Stream. See http://www.example-code.com/csharp/stream_connector_cs.asp
  • Crypt2: Added the EncryptStream and DecryptStream methods.
  • Compression: Added the CompressStream and DecompressStream methods.
  • JSON: Added the JsonObject and JsonArray classes.
  • Zip: Memory leak fixed.
  • Ruby: Added Ruby 2.3 builds.
  • PrivateKey: Fixed: The LoadPvkFile method was not working.
  • SshTunnel: Fixed: Large downloads are now working.
  • Socket: Crash bug fixed. Calling SendString when a socket was already disconnected would cause a crash in some circumstances.
  • SMTP/MailMan: The SmtpSessionLog is changed to no longer log the 1st 2500 chars of the MIME BODY, but to instead just log the size (number of bytes) of the MIME BODY.
  • Email: Very rare crash bug fixed.
  • HtmlToXml: Now avoids using CDATA when HTML entities are encountered. Instead, HTML entity expressed in decimal (or hex) notation, such as ’ are automatically decoded to the char that it represents.
  • PureBasic: A method that returns a string will return an empty string instead of a 0/NULL. Make sure to use the LastMethodSuccess property to check to see if a string method succeeded or failed.
  • Ftp2: The IsConnected and NumFilesAndDirs properties should be avoided. They were already deprecated prior to this version release, but this is another recommendation to avoid these properties. Instead use the CheckConnection and GetDirCount methods.
  • C API: Added callback function pointers to the “C” API.
  • Imap: Fixed: AppendMail. When a nonexistent mailbox was provided, the method would hang until the ReadTimeout expired. Now it returns immediately.
  • Email: Fixed: If only the FromName property was set (and not the FromAddress property, nor the “From” property, then the FromName was getting lost when generating the MIME, such as by calling GetMime. This was because technically the email address is still incomplete/invalid.
  • MailMan: Added the following methods: Pop3Connect, Pop3Authenticate, and ConnectFailReason. The connect + authenticate has traditionally been a single method call (or something that automatically occurs with the 1st method making a request). The Pop3Connect and Pop3Authenticate methods make it possible for an application to do each step separately, which helps for reporting errors more specificallly.
  • SSH/SFTP: Added the EnableCompression property. An old server was discovered that did not correctly handle compression. Chilkat automatically disables compression when the problematic servers are encountered, but if undiscovered old servers have the same problem, this property can be set to work around the problem.
  • Email: Fixed: Emails that have address of the format “CN=abc/O=abc” are not altered in any way. An email address can have any form (not just the standard name@address form).
  • Http: Added the ConnectFailReason property.
  • SshTunnel: Fixed: Problems where the data flow in a tunnel became stuck.
  • Email: Workaround for uuencoded email bodies where the uuencoding starts with a “begin …” line.
  • Encoding: Added the “base64url” encoding to the list of supported encodings. See http://cknotes.com/chilkat-binary-encoding-list/
  • HttpRequest: Fixed: The AddParam method stripped bare CR’s from the value. This does not happen anymore.
  • GitHub: The SMTPQ source code is released to GitHub, along with other example projects, distributions, etc.
  • SFTP: Fixed: The ReadDirMustMatch and ReadDirMustNotMatch properties did not work correctly.
  • Crypt2, Mime, Email: The default value of the Pkcs7CryptAlg was changed from “RC2” to “AES”.
  • POP3: Added internal workarounds for older POP3 servers that do not support the UIDL command. (It is extremely rare to find a POP3 server that does not support UIDL.)
  • SMTPQ/MailMan: The Windows-only SMTPQ related methods were fixed. The SMTPQ methods were working correctly in v9.5.0.54 and earlier, but a problem was inadvertently introduced in v9.5.0.55.
  • Unicode C++: Fixed: The LastMethodSuccess property was not getting set.
  • Mime: Fixed: Removed “email address cleaning” from CkMime. The MIME header was run through email-specific processing logic to clean/ensure well formatted email addresses. This should not have been done for the general-purpose MIME API.
  • Email: Fixed a SetHtmlBody problem.
  • HttpRequest: Added the StreamChunkFromFile method.

New in Chilkat Python Encryption Library 9.5.0.55 (Oct 19, 2016)

  • Crypt2: Added the chacha20 and Poly1305 Message Authentication Code.
  • Crypt2: Added AES GCM encryption.
  • Zip: Fixed a problem with OpenZipAsync where the 1st call would succeed, but subsequent calls would fail.
  • Email: Email.SaveXml did not save BCC recipients.
  • Crypt2 (blowfish): When Chilkat originally implemented blowfish (more than 10 years ago), there was a problem having to do with byte-ordering. The solution was to name the fixed blowfish as “blowfish2”. When the CryptAlgorithm is set to “blowfish2”, Chilkat produces results that match published test vectors, and this has been the case for 10 years. The original “blowfish” was kept in place to avoid breaking existing applications. Version 9.5.0.55 removes the original “blowfish”. Applications using the original “blowfish” (i.e. not “blowfish2”) should stay at v9.5.0.54, or better yet, update to use “blowfish2”.
  • OmaDrm: The OmaDrm class was removed. Nobody ever used it and it just took up space.
  • Encryption: All existing Chilkat Crypt2 symmetric block encryption algorithms: aes, blowfish2, twofish, chacha20, 3des, rc2, and des now support both OFB and CFB cipher modes. To use OFB or CFB modes, simply set the Crypt2.CipherMode property equal to “ofb” or “cfb”.
  • Ftp2/Socket: The following fix applies to the WinRT/Universal Windows Platform only: A bug having to do with accepting socket connections was fixed. This fixes Active-mode FTP2 data transfers because in Active mode, the client-side accepts the data connection from the server.
  • Email: Fixed: When a new email is created, if an attachment is first added prior to calling SetHtmlBody, the resultant email did not have the correct MIME structure.
  • SslAllowedCiphers: All Chilkat classes that can do SSL/TLS communications have an SslAllowedCiphers property. This property was enhanced to allow for individual cipher suites to be listed. An application can now explictly list the cipher suites it will accept.
  • HttpResponse: Fixed: The HttpResponse.LoadTaskResult always returned false/0, even when successful.
  • Cert: Fixed: When loading a certificate from a PFX/.p12, the issuer CN (common name) for some certs was not getting set.
  • SFTP: The ResumeUploadFileByName method was improved. When the remote file does not already exist, then Chilkat will open with writeOnly/createTruncate instead of readWrite/openOrCreate. This avoids problems with some servers. (On most servers, the original behavior posed no problem.)
  • SSL/TLS: Enhancement: If the keyword “secureRenegotiate” is included in SslAllowedCiphers, then
  • renegotiating the TLS security parameters MUST be done securely (as per RFC 5746).
  • Http: Added two new properties: KeepResponseBody and LastResponseBody. For any HTTP method that does not return an HttpResponse object, then if KeepResponseBody is true, and if the response is text (not a binary response such as JPG data..), then the response body is saved to LastResponseBody.
  • HTTP/S3: The S3_UploadBytes method was improved to fix issues relating to large uploads over TLS.
  • PRNG: The RandomPassword method was fixed. See http://www.chilkatforum.com/questions/9233/prngs-randompassword-randomly-fails-to-include-required-characters
  • IMAP: The ListSubscribed method was fixed. See http://www.chilkatforum.com/questions/9434/why-listmailboxes-and-listsubscribed-returns-all-folders
  • Encoding: A new Chilkat encoding named “fingerprint” was added. The “fingerprint” encoding is lowercase hex with each byte separated by a colon character. See Chilkat Binary Encodings
  • TLS Pinning: Added TLS pinning functionality. TLS pinning is available for any Chilkat class that communicates via TLS, such as for Socket, Http, Ftp2, MailMan, Imap, etc. All of these classes now have a TlsPinSet property.
  • Cert: Added the Cert.SpkiFingerprint property to help implement TLS pinning.
  • Http: Fixed low-probability Proxy-Authorization: Basic error that could occur when non-usascii chars are used in the password.
  • HttpRequest: Added the HttpRequest.StreamChunkFromFile method.
  • Emoji Chars: Fixed problem handling emoji chars. Note: Emoji chars can only be represented by ucs4 (4 bytes per char). Some programming language environments, such as ActiveX, are limited to ucs2 (2 bytes per char) and therefore cannot support ucs4 chars passed back-and-forth between the app and the ActiveX.

New in Chilkat Python Encryption Library 9.5.0.54 (Nov 13, 2015)

  • Email: Fixed: Setting the Email.From property *after* setting the Email.BounceAddress property would have the side-effect of overwriting the BounceAddress property.
  • SFTP: Fixed rarely encountered flow problems with a particular SSH server.
  • Zip: Fixed: Error in rewriting a ZIP64 zip (larger then 4GB or having more than 65536 files). There was an error when a large zip was opened, potentially modified, and rewritten.
  • Mono: Mono DLL on Windows fixed to use stdcall calling convention instead of cdecl.
  • PureBasic: Fixed the Windows 32-bit problem (which had to do with stdcall vs. cdecl calling conventions.
  • Mono: Added instructions for using Mono in Visual Studio here: Using Mono in Visual Studio
  • IMAP: Fixed minor problems in parsing BODYSTRUCTUREs from certain IMAP servers for certain emails.
  • HTTP: The SynchronousRequest method was sending “Content-Length: 0” header with GET requests. This should be harmless, but some servers did not react so kindly. The Content-Length header is now suppressed for GET requests sent via SynchronousRequest. (Note: SynchronousRequest is not typically used for GET requests..)

New in Chilkat Python Encryption Library 9.5.0.53 (Nov 13, 2015)

  • TAR: WriteTar mistakenly returned true if output file could not be opened/created.
  • XMP: Fixed: XMP issue reading some TIF images with IPTC metadata.
  • FTP2: Fixed problem described here: FTP hangs when already received close-notify when server shuts down.
  • ActiveX: The LastStringResultLen property is added to each Chilkat class. This is helpful for certain programming languages such as DataFlex or SQL Server where the size of the string returned may need to be known before using it.
  • Each Chilkat ActiveX object has its own LastStringResult and LastStringResultLen properties. The KeepStringResult is a property of Chilkat.Global only. (It may be confusing that Chilkat.Global also has a LastStringResult property — but this is just like any other object..). Therefore, your code would set Global.KeepStringResult once at the beginning of your code.
  • Let’s say you have an HttpResult object, and you want the BodyQP. You would access the BodyQP, but ignore the string returned.
  • Then examine the HttpResult.LastStringResultLen, adjust your max string length (in DataFlex) if necessary, and then get the cached string from HttpResult.LastStringResult.
  • Zip: The WriteExe method was fixed for cases where a contained file is extremely large.
  • TLS: A fix was made for some sitatuions where a server immediately wishes to renegotiate after connecting.
  • SSH: The SSH Rekey handling for certain host key algorithms was fixed.
  • StringArray: Fixed: GetStringLen returned the size in bytes of the utf-8 representation instead of returning the length in characters.
  • FTP2: Will auto-retry using the opposite of the PassiveUseHostAddr property setting in certain situations.

New in Chilkat Python Encryption Library 9.5.0.52 (Oct 3, 2015)

  • Java (including Android): Added event callback capabilities for progress monitoring.
  • Async: Added asynchronous functionality for all qualifying methods across all programming languages, operating systems, and architectures. Each Chilkat method that can potentially be time-consuming or involve network communications, now has a corresponding asynchronous version of the method with the name ending in “Async”.
  • Ecc: Added a new Ecc class for elliptical curve cryptography.
  • Prng: Added a new class for secure random number generation using the Fortuna algorithm.
  • Task, TaskChain: These new classes are part of the async functionality.
  • Socket: Fixed: The session log did not included data received from the ReceiveUntilMatch method.
  • Email: Fixed: The Email.GetTo method returned Q/B encoded (if 8bit) instead of automatically decoding (as was the behavior in prior versions).
  • FTP2: Added the DataProtection property.
  • All: Added the LastMethodSuccess property.
  • Certs:Fixed: The root certs explicitly trusted via the TrustedRoots class were not being used by the VerifyCert method.
  • FTP2: Fixed the Quote method.
  • MailMan: Fixed: When the EMail.From is updated, the next email sent did not use it in the MAIL FROM.
  • SQL Server/ActiveX/Global: Added the KeepStringResult and LastStringResult properties to the Global object for ActiveX. This allows for an ActiveX running in the SQL Server environment to access large string return values via temp tables.
  • Xml: The AccumulateTagContent now allows an app to pass “*” or empty string to accumulate the text for any tag. This is one way to implement the innerText HTML function.
  • MailMan: Fixed the VerifySmtpLogin method.
  • Global: Added the Chilkat.Global.DefaultNtlmVersion property. The default NTLM protocol version is 2. It may optionally be set to 1. This determines the version of the NTLM protocol used by SMTP, HTTP, IMAP, POP3, and HTTP proxies whenever NTLM authentication is used.
  • Ssh/SFtp: Added the AuthFailReason property.
  • Zip: Fixed the AppendFiles method for non-Windows implementations.
  • Socket: Fixed and improved the ConnectFailReason/AcceptFailReason properties.
  • CkString: Added punycode encoding/decoding methods.
  • IMAP: Fixed rare BODYSTRUCTURE parsing issues w/ particular emails from inbox.com.
  • CkStringArray: Added the ReplaceAt method.

New in Chilkat Python Encryption Library 9.5.0.51 (Aug 6, 2015)

  • Scp: Added the Scp class (CkScp, Chilkat.Scp, CkoScp, etc.) for SSH Secure Copy. The Scp class is included as part of the SSH/SFTP license.
  • Hashtable: Added the Hashtable class (CkHashtable, Chilkat.Hashtable, CkoHashtable, etc.) This is a freeware supporting/utility class. Chilkat understands that more complete Hashtable implementations may be available in specific programming language environments. However, there are some environments with no good Hashtable functionality. In addition, having a Hashtable class allows for Chilkat to use it as input args and return values for future methods.
  • Http: Added the G_SvcOauthAccessToken2 method (which happens to have an argument of type Hashtable).
  • SFtp: mode 3 of the SyncRemoteDownload and SyncRemoteUpload methods was fixed.
  • HTTP proxy: Applies to any Chilkat class with HTTP proxy capabilities: Fixed issues related to using HTTP proxes for non-HTTP protocols where SSL/TLS is not used.
  • SSL/TLS: 128-bit ARC4 is re-enabled by default. Too many sites required it and disabling the algorithm caused too many failures resulting in support issues. The SslAllowedCiphers property can be used to disallow 128-bit ARC4 if needed.
  • FTP2: The control/command connection is maintained (if possible) when an upload or download is aborted. Previously, a file transfer aborted by an application event callback caused the command connection to also be aborted.
  • CSV: Fixed problems relating to empty cells, such as when setting the 1st column in a new row to an empty string.
  • Socket: The Connect method’s maxWaitMs argument was being ignored and the method would always wait a max of 30 seconds. This was fixed.
  • SFtp/Ftp2: Added the SyncedFiles property to allow applications to get a list of files that were transferred during the last directory synchronization method call.
  • TCP related: Fixed a case internally where creating a socket resulted in this error: SocketError: WSAEPROTOTYPE The specified protocol is the wrong type for this socket.
  • Ftp2: Fixed the AsyncAbort method.

New in Chilkat Python Encryption Library 9.5.0.50 (Aug 6, 2015)

  • VC++ 2015: Chilkat C++ libs are now available for the Release Candidate (RC) of Visual Studio 2015.
  • CkSettings/CkDateTime: CkSettings and CkDateTime were not visible in Linux, Mac OS X, and other non-Windows C++ libs (but only in the shared lib).
  • SFTP: Fixed certain problems relating to the download of large files for some types of SSH servers.
  • Python: Ensures that the Python global interpreter lock (GIL) is released and re-aquired so that other program threads are not stopped.
  • FTP: Problem fixed relating to some FTP servers in establishing the data connection w/ SSL/TLS.
  • MailMan: The MxLookup methods were missing from non-Windows Perl, Java, Python, Ruby, and PHP.
  • Pem: Added the GetEncodedItem method and the NumCsrs property.
  • FTP2: Added AllowMlsd, GetPermType, GetPermissions, GetOwner, and GetGroup.
  • Socket: Fixed server-side accepting of SSL/TLS connections.

New in Chilkat Python Encryption Library 9.5.0.49 (Aug 6, 2015)

  • Encoding: Added Base58 encoding as an additional choice for all places where an encoding (such as “base64″, “hex”, etc.) can be selected.
  • Crypt2: Beware of using the GenEncodedSecretKey method — just after v9.5.0.49 was released, it was discovered that this property ignored the encoding (such as “base64″ or “hex”) of the 2nd arg and instead followed the encoding as specified by the Crypt2.EncodingMode property. Applications can work around the problem by setting the EncodingMode property prior to calling this method.
  • Perl v5.20: Fixed the “undefined symbol: PL_stack_sp” error.
  • Email: The From property returned the name part undecoded if Q/B encoding was present.
  • RSA: Fixed the LittleEndian property behavior for encryption/decryption.
  • Http: Fixed the FinalRedirectUrl property.
  • Url: Added the Chilkat.Url class.
  • Global: Added the Chilkat.Global class.
  • TLS: Added the TlsVersion and TlsCipherSuite properties to Socket, HTTP, Ftp2, MailMan, Imap.
  • Email, MHT: UnpackUseRelPaths was ignored for Email.UnpackHtml and Mht.UnpackHtml.
  • It was always unpacked to relative paths. (The Email.AspUnpack methods, however, must always have relative paths in the URLs within the HTML.)
  • FTP2: FTP resume/restart percent-done progress monitoring fixed.
  • PrivateKey: Added the Pkcs8EncryptAlg property.
  • FTP2: Fixed GetFile percent-done progress monitoring when restarting a download: did not start at, for example, 20%, and then progress to 100..
  • RSA: Now supports 8192 bits.
  • BandwidthThrottle: Added the BandwidthThrottleUp/Down properties to HTTP, SFTP, Socket, and Upload .
  • Upload: The BeginUpload and AbortUpload methods were missing in the Mono, PureBasic, “C” and other API’s.
  • PercentDone: Added PercentDoneScale property to FTP2, Http, Tar, Zip, SFtp, MailMan, Imap, Upload.
  • MailMan: Added the SmtpPipelining property.
  • Cert: Added the LoadPem method.
  • Socket: Added the ReceiveFailReason and SendFailReason properties.
  • RSA: The XML representation of the keys will now omit leading 0 byte if it exists. (Each part of the private key is a very large unsigned integer. When the most significant bit is 1, Chilkat previously prepended a 0 byte to make it non-negative. In hex representation, this would be obvious to see. However, in Base64 representation, an extra null byte at the beginning changes the Base64 string completely, and therefore looks different than the same key encoded without the leading 0 byte. To clarify: suppose you have the number 15. This could be represented as a single byte 0x0F. It could also be represented by 0x000F. Any number of leading zero bytes does not change the number.)
  • Zip: Fixed problem where backslashes in paths were not automatically getting converted to forward slashes.
  • HTTP: Fixed problem where client cert (set via the SetSslClientCert methodd) was not getting sent.
  • IMAP: The Imap.AuthMethod may now be set to “NONE”. This was needed in one case where the authentication was implicit with the client-side SSL/TLS cert. If set to “NONE”, then the Login method call may be omitted.
  • TLS(internal): SHA384/RSA added to TLS 1.2 signature algorithms extension. One particular server required it (but didn’t actually choose the algorithm in the handshake).
  • FTP2: Now uses MLSD in cases where it previously used LIST (when possible and when supported by the FTP server).
  • (MLSD can only be used when ListPattern is empty or “*”, or “*.*” because only the LIST command accepts an argument.)
  • FTP2: The GetFile returned false when it should’ve returned true (in some cases).
  • IMAP: Fixed the AppendMail method: If the email date was in the 1st 10 days of the month, then the InternalDate format was using 1 char for the day (in the IMAP command) instead of 2 chars, which caused some types of servers to respond with an error.
  • EmailBundle: Fixed GetXml/SaveXml methods.
  • MHT: If a cache root is added, MHT will save a part to the file cache.
  • Socket: Added the KeepAlive property.
  • HttpRequest: Fixed RemoveParam method crash bug.
  • FTP2: UploadRate/DownloadRate events stopped at 4GB.
  • CertStore: Added the OpenWindowsStore method.
  • Http Proxy: Non-SSL/TLS HTTP proxy connections were trying to use CONNECT.
  • Http: Added the StreamResponseBodyPath property.
  • HttpRequest: Added the Boundary property. Allows an explicit boundary string to be specified for multipart/form-data requests (uploads).
  • HttpResponse: Fixed the cookie related properties and methods.
  • SFTP: Fixed mode 99 for the SyncDownloadTree method.
  • SFTP: Fixed the SyncDownloadTree method regarding certain decisions about whether to download newer files.
  • EmailBundle: Fixed the GetXml and SaveXml methods.
  • FTP2: Parsing for VxWorks / Wind River directory listings fixed.
  • Email: Fixed the ApUnpack and AspUnpackk2 methods.
  • DNS: Added DnsCaching capabilities in the new Chilkat.Global / CkGlobal class.
  • MailMan: Added the AutoUnwrapSecurity property.
  • Cert: Added the Cert.GetExtensionsAsXml method.
  • Asn: Added the new Asn class to provide an ASN.1 API.
  • Pem: Added the new Pem class.
  • MHT: Fixed: MHT was adding double-quotes to certain Content-Location URLs causing a mismatch between the URL in the HTML and the URL in the MIME sub-header.
  • SMTP: The internal automatic retry from EHLO to HELO did not work. If the SMTP server did not support EHLO, then EHLO was mistakenly tried a 2nd time instead of HELO.
  • MailMan: Added the ClientIpAddress property.

New in Chilkat Python Encryption Library 9.5.0.48 (Aug 6, 2015)

  • SSL/TLS: Added the SslAllowedCiphers property to allow for a comma-separated list o allowed ciphers, in order of preference, to be specified. This property is added to FTP2, MailMan, Imap, Socket, and Http. See the online reference documentation and SSL/TLS ciphers and the FREAK attack for more information.
  • SSL/TLS: Chilkat will by-default disallow all possible usage of RSA keys that are less than 1024 bits. To allow for 512 bits or above, add “rsa512″ to the list of algorithms in the SslAllowedCiphers list. To allow only 2048 bits or above, add “rsa2048″ to the list of algorithms. (Adding “rsa1024″ chooses the same as the default.)
  • SMTP: Improved performance through the automatic (internal) use of pipelining.
  • SMTP: Added the MailMan.SmtpConnect and MailMan.SmtpAuthenticate methods so that connecting and authenticating can proceed in two distinct steps instead of a single step. This in combination with the SmtpFailReason property can help applications react more appropriately to errors.
  • SMTP: Added the MailMan.SmtpFailReason property. (See online reference documentation.)
  • SMTP: The AddMultipleCC method added each email address twice. This was a bug introduced in v9.5.0.47 and fixed in this version (9.5.0.48).
  • SMTP: The MailMan.AutoSmtpRset defaults to false now.
  • SMTP: When using OAuth2 authentication, if the MailMan.SmtpPassword property was unset, then MailMan thought no authentication was necessary. The SmtpPassword property may now be left empty when OAuth2 is used.
  • Email: The GetAttachedMessageFilename and GetAttachedMessageAttr methods always returned info for index 0, regardless of the index passed in by the app.
  • Email: The LoadEml method will automatically ignore the leading “From …” line that might exist if the file was an email saved in Mbox format.
  • Email: Email.AddStringAttachment2 can specify a charset prepened with “bom-” or “no-bom-” to include or exclude the BOM for charsets such utf-8 or ucs-2 / utf-16.
  • Email: Fixed problem when setting the FileDistList equal to the empty string (which should simply clear the property, but instead cause an error in the call to SendEmail).
  • MIME: Issues relating to MIME header continuation lines when saving to/from XML format were fixed.
  • MIME/PKCS7: The Mime.EncryptN method now sets the smime-type sub-header field. For example:
  • Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name=smime.p7m
  • MIME/Email: Bare CR’s or LF’s in quoted-printable/Base64 email bodies (non-encoded) auto-converted to CRLF (for compliance to RFC 2822). This does NOT change the actual content of the email bodies.
  • MIME/Email: (Internal MIME parsing fix.) When an email is received that uses star-encoding, if a single char was multi-byte and the bytes were split across two lines, then Chilkat did not decode properly.
  • Socket: Clarified in the reference documentation that if the maxWaitMs argument equals 0, then it is a poll (as opposed to “wait forever”).
  • RSA: Added the OaepHash property so that any hash algorithm can be used with OAEP padding (such as SHA256).
  • : A MLSD directory listing problem specific to some types of FTP servers was fixed.
  • FTP: The SetRemoteFileDt and SetRemoteFileTime methods will automatically use the MFMT command if the FTP server indicates support for it upon connection.
  • Cert: Fixed problem with Cert.VerifySignature when the cert is obtained by the Socket.GetSslServerCert method. The intermedate certs in the chain of authentication, received during the SSL/TLS handshake, were not (internally and automatically) made available to the Cert object returned by GetSslServerCert, and thus they were not accessible when trying to verify the cert signature.
  • SSH: Added the WaitForChannelMessage method. (See online reference documentation.)
  • HTML-to-Text: Fixed a crash bug.
  • Zip: For files skipped because of access-denied or file-not-found, the FileZipped event fired when it should not have. This was fixed, and in addition a ProgressInfo event was added for each occurance, using the names “fileAccessDenied” and “fileNotFound”. (Each Progress info event has two params: a name and value where the name identifies the event, and the value contains information specific to the event.)
  • Zip: AppendFilesEx w/ ArchiveOnly=true omitted directory entries, which was unnoticed when the directory contained files because the files still get added and unzip software automatically re-creates directories when unzipping as needed. However, this is noticed for empty directories because the empty directory entries were not added to the .zip.
  • CSV: When writing CSV’s, the inner LF, CRLF, etc. of a row will now remain unmodified. The Crlf property controls the line-endings for each entire row, but should have no effect (and cause no changes) of LF / CRLF usage within any given cell.

New in Chilkat Python Encryption Library 9.5.0.47 (Aug 6, 2015)

  • FTP2: The MLSD extension was not used in some cases where the FTP server actually supported it.
  • Certificates: When finding the issuer (internally), Chilkat will always first check for an authority key identifier, and if found will search for the cert with the matching subject key identifier. Otherwise it will locate the issuer by distinguished name.
  • TLS: Fixed the “Unsupported server key exchange hash algorithm” error that could arise when TLS 1.2 was used. (This was somewhat rare.)
  • FTP2: Fixed: The SyncMustMatch and SyncMustNotMatch properties were not obeyed in the SyncLocalTree method.
  • HTTP/S3: Addedd the S3_DeleteMultipleObjects method.
  • MailMan: When sending signed + encrypted emails, Chilkat was always using opaque signing for the inner signature. Now MailMan will follow MailMan.OpaqueSigning property. If OpaqueSigning is false, the inner signature will be a detached signature, otherwise it will be signed-data (opaque).
  • FTP2: SyncLocalTree (and other directory synchronization methods where files are downloaded) will now continue past any access-denied errors.
  • Crypt2: The Charset property can now also be “hex” or “base64″ , which allows for binary (non-text) encoded data to be passed to any method where the input data is a string. Rather than converting to an actual charset (such as utf-8, iso-8859-1), the binary data is decoded, and the decoded bytes are passed to the underlying encryptor, hashing, signing, etc.
  • ActiveX: The ZipCrc object was missing from the ActiveX build.
  • TLS: Fixed the “Unexpected ServerKeyExchange message” error.
  • HTTP: Fixed: When Chilkat automatically re-sends the HTTP request because of a 407 proxy auth, the response body returned to the app was that of the 407 auth failure instead of the final successful request.
  • FTP2: Added the AutoOptsUtf8 property.
  • SSH: Added the SendReqCharset property.
  • Perl/Mac OS X: Fixed the “can’t map unslidable segment” dynamic loading issue.
  • HTTP: The WasRedirect and FinalRedirectUrl properties were not working correctly.
  • PublicKey: Added the LoadBase64 method.
  • IMAP: Imap.SeparatorChar property type is now a string instead of char.
  • MailMan: SendQ2 will now accept a full output file path (meaning path + filename). If only an output directory is indicated, then Chilkat will generate the output filename.
  • Objective-C: Headers now use properties instead of getter/setter methods. This is to more cleanly support the Swift programming language. This should have no effect on existing Objective-C programs.
  • Android: Added libs for: arm64-v8a, x86_64, and mips64
  • FTP2: Async uploads mistakenly returned AsyncSuccess = true when aborted or failed.
  • MHT: Added the UnpackDirect property.
  • HTTP: Any HEAD request that resulted in a 302 redirect caused an infinite loop. Chilkat is fixed to never follow redirects for HEAD requests.
  • TLS 1.2: Fixed a problem w/ TLS 1.2 such that when using client-side certificates (two-way SSL/TLS), the connection handshake failed. (In other words, it was not possible to establish the TLS connection.)
  • XML: Fixed problem with the NewChildBefore method. The problem was that indices 0 and 1 were treated the same. All higher indices were treated as idx-1.

New in Chilkat Python Encryption Library 9.5.0.46 (Aug 6, 2015)

  • Window Store: The Chilkat Runtime Component for Windows Store (for both Windows and Windows Phone) is available starting with this version. All Chilkat methods that perform network communications or long-running operations (such as Zip compression) are async methods.
  • .NET: The .NET 4.5 assembly will be available in two forms: One build with VS2012, and one built with VS2013. The Chilkat .NET assembly build with VS2012 can be used with VS2013. The reason for providing both had to do with VC++ runtime lib requirements and making it easier to deploy applications using ClickOnce installs.
  • Xamarin: Undefined symbol link errors have been fixed.
  • TLS/SSL: Chilkat will choose TLS 1.2 for default TLS protocol version, assuming the server supports it. The SslProtocol property, which is common to all classes that communicate via TLS, has been updated to allow for more control over what TLS protcol is used.
  • CodeBlocks: Chilkat will begin offering C/C++ libs for CodeBlocks on Windows, Linux, and Mac OS X. It will become available soon after the initial 9.5.0.46 release.
  • Events: Ensured that a final DownloadRate event callback happens at the end of an operation to provide a final rate and byte count.
  • Windows Phone RTC: Fixed a mult-thread async problem.
  • Windows Mobile: Support has been restored for the older Windows Mobile 5.0, and for Pocket PC 2003. Chilkat does not support Windows Mobile 6.0 or 7.0. Also, Chilkat does not support the old .NET Compact Framework.
  • SFTP, SSH, IMAP: Added the CheckConnection method, which returns true if the underlying TCP socket is connected to the server.
  • Crypt2: Added the GetDecryptCert method.
  • Cert: Fixed the LoadFromBase64 method. When a cert was loaded via LoadFromBase64, the ability to get the issuer certificate or the certificate chain was broken.
  • Email: The AddRelatedFile2 and other AddRelated* methods had a minor fix to suppress the unintentional creation of an empty plain-text body in the MIME in some circumstances (which is usually harmless).
  • FileAccess: Added the FileExists3 method to provide a tri-state file existence check: Returns -1 if unable to check (such as for permissions reasons), 0 if the file does not exist, and 1 if it exists.
  • FTP2: Fixed problem having to do with parsing directory listings (in one particular format) for cases where filenames contain SPACE characters.
  • IMAP: Added the GetMailboxStatus method.
  • IMAP: Fixed minor issue with AppendMimeWithDate, which was only a problem some IMAP servers.
  • IMAP: Fixed a problem in the SetFlags method that occurred when an emtpy message set is passed in. In such a case, the SetFlags method will do nothing and return true.
  • HTTP: The percent done event will track the sending of the HTTP request (i.e. the upload) rather than the receiving of the HTTP request. The choice of whether percent-done tracks the request or response is automatic and is determined by the size of the request.
  • HTTP: Fixed a charset issue for XML responses where no charset is specified in the Content-Type of the response header.
  • HTTP: Added the PText and PBinary methods.
  • HTTP/S3: Fixed a problem where some S3 calls left the component in a state where the subsequent S3 call would fail with an authorization failure.
  • HTTP/S3: Fixed some issues relating to signed URL formats.
  • HTTP/S3: Fixed the CreateBucket and DeleteBucket methods.
  • Socket: Fixed DnsLookup to pay attention to the timeout argument.
  • SSH: Added the UserAuthBanner property.
  • SSH: Added the StartKeyboardAuth and ContinueKeyboardAuth methods to allow for explicit keyboard authenication.
  • Tar: Added the AddFile method to allow explicit files to be added to a TAR archive. AddFile may be called once per file to be added.
  • Tar: Added the MustMatch, MustNotMatch, and MatchCaseSensitive properties to provide better control over what is included when creating a TAR archive, or what is extracted.
  • Tar: Added the following properties: SuppressOutput, CaptureXmlListing, XmlListing.

New in Chilkat Python Encryption Library 9.5.0.45 (Aug 6, 2015)

  • Fixes a problem in the NuGet .NET distribution. Otherwise, there are no changes from version 9.5.0.44.
  • For Windows Java, Perl, and Python downloads, the Windows-only specific functionality was missing in v9.5.0.44. This is fixed in v9.5.0.45.
  • For the ActiveX, the internal Version resource (which shows the version when the DLL is right-clicked in Windows Explorer) was not updated. This is fixed in v9.5.0.45.
  • In summary, there are no v9.5.0.45 changes except for fixing publishing mishaps.

New in Chilkat Python Encryption Library 9.5.0.44 (Aug 6, 2015)

  • New freeware class: Chilkat.Log / CkLog / CkoLog. This provides some logging capabilities similar to what is found in Chilkat’s LastErrorText property.
  • New bundle-only commercial class: JavaKeyStore. See the (soon-to-appear) online reference and examples. See http://www.cknotes.com/chilkat-licensing-changes/. Existing customers that have purchased a Bundle license within the last year, or who are currently under support for a Bundle license will receive a free unlock code upon email request.
  • Internal Change: FTP SSL/TLS data connections will automatically try to re-use the SSL/TLS session of the control channel.
  • New: Chilkat.Email (CkEmail) methods: GetNumPartsOfType, GetNthTextPartOfType, SetBinaryBody, GetNthBinaryPartOfType
  • HTML-to-XML: Fixed issue with lowercase attribute names that only occurred in multi-thread situations.
  • Change: If the TrustedRoots is explicitly empty, then no roots are implicitly trusted.
  • Fixed: Heap corruption bug which occurred when a socket read is aborted by an event callback (not always, but only in certain circumstances).
  • Change: The Socket API’s Close method now returns a boolean instead of void, and always returns true.
  • Important FTP2: The IsConnected and NumFilesAndDirs properties are deprecated. Applications should instead call the new CheckConnection and GetDirCount methods. The reason is that accessing a property should NOT trigger any sort of communications that can fail or take lengthy amounts of time.
  • New: Added the EmitBom property to Chilkat.Xml (CkXml)
  • New: Added the ExtractExe method to Chilkat.Zip (CkZip)
  • Change: The default value of the HTTP RedirectVerb property changed to “GET”.
  • Change: In the CSV API, the exact line-endings, such as CRLF or bare-LF, are now preserved within each cell. However, the line-endings used at end of each entire row are still controlled by the Crlf property.
  • FTP2 GetSizeByName and filename case sensitivity issue: The case-sensitivity depends on how the file information is retrieved. If the FTP server supports the SIZE command, then Chilkat will use it to retrieve the file size info (as opposed to downloading the entire directory listing over a separate data connection). In this scenario, the FTP server is likely be case-sensitive w.r.t. the filename passed in the SIZE command. If, however, the FTP server does not support the SIZE command, then Chilkat must obtain the directory information by fetching a directory listing. Chilkat will use a case-insensitive match on the filename. If two files have identical names except for case (which can happen on server-side filesystems that are case-sensitive, such as w/ Linux), then Chilkat will choose the exact match first over the inexact match. A program can avoid the internal usage of the SIZE command by fetching the directory listing first (via the GetDirCount method) and then calling GetSizeByName. In this case, the cached directory contents will be used and the matching will be case-insensitive.
  • Internal Change: Improved behavior for FTP Active-mode (non-passive) data connections. (1) Prevent hanging for full timeout when the server sends an immediate reply on the control connection (indicating failure).
  • (2) Potentially can do an internal automatic retry for Active mode data connections for some failure cases.
  • Python: The ucs4 versions for Chilkat modules for Python 3.2 and above will appear on the public download web page (at chilkatsoft.com) starting with v9.5.0.44
  • Fixed: The HTTP Digest-MD5 authentication did not work correctly when the algorithm indicated in the server’s response was “MD5-sess”.
  • Internal Update: Server Name Indication Extension added for all SSL/TLS connections. This is an internal enhancement/update only. There is no external property or method specific to it.
  • New: Added the SSH ChannelRelease method. Old channels will accumulate in memory, even after being closed because a program may still need to retrieve data from an already-closed channel. The ChannelRelease method allows for a program to specifically release the internal memory for a channel. It is not required to call ChannelRelease. When the SSH object itself is deleted/disposed/garbage collected, etc., then all internal memory (including for all internal channels) is automatically deleted. The only reason to call ChannelRelease is if an exceptionally large number of channels is opened/used/closed within the same Chilkat SSH object instance. The ChannelRelease method provides a means to prevent the accumulation of memory usage for this case.
  • Change: HTTP Basic authentication is implicitly allowed if the connection is SSL/TLS. If the connection is unencrypted, then an application must explicitly allow Basic Authentication by setting the BasicAuth property = true. (The HTTP Basic Authentication method/scheme sends the username/password in the HTTP request in plain text (unencrypted). This is OK if the HTTP communications itself is over a secure SSL/TLS channel, but is generally NOT OK if the connection is unencrypted.)
  • Internal Change: The HTTP S3_UploadFile method now streams data directly from the file rather than having to load it all in memory at once.
  • New: New self-extracting EXE config params are available. These have to do with the information that would be seen in Windows Explorer for the .exe file: CompanyName, FileDescription, InternalName, LegalCopyright, OriginalFilename, and ProductName. Each can be set via the zip.SetExeConfigParam method. For example: zip.SetExeConfigParam(“CompanyName”,”Acme Software, Inc.”);
  • New: Added the Imap.LastResponseCode property.
  • New: Added the CertChain.ReachesRoot property.
  • New: Added PFX methods: AddPrivateKey, ToFile, ToBinary, ToEncoded.
  • New: Added the TrustedRoots.AddJavaKeyStore method.
  • New: Added the Ftp2.AutoSetUseEpsv method.
  • New: Added support for OAuth2 authentication for SMTP and IMAP. The MailMan.OAuth2AccessToken property is new. An OAuth2 access token may be passed in place of the password for the call to Imap.Login. Also added “XOAUTH2″ as a valid choice for the Imap.AuthMethod property.
  • Fix: The 1st argument to email.AddRelatedData is the pathInHtml argument. The MIME related item’s Content-Location header was being set to only the filename part of the path, and not the entire path.
  • New: Added the Csv.EscapeBackslash property.

New in Chilkat Python Encryption Library 9.5.0.43 (Aug 6, 2015)

  • Fixed crash bug in MailMan relating to sending PKCS7 encrypted email.
  • Fixed bug in the PrivateKey.SavePkcs8EncryptedFile method.
  • Fixed a HMAC SHA384 bug.
  • Minor MHT change: Methods that produce MHT (as opposed to EML) will omit the Date header field from the MIME that is produced.

New in Chilkat Python Encryption Library 9.5.0.42 (Aug 6, 2015)

  • Fixes ActiveX problems that began in v9.5.0.40. Namely, the problem where the VB6 IDE crashes on program exit is now fixed.

New in Chilkat Python Encryption Library 9.4.0 (Dec 20, 2012)

  • (backward compatibility) Removed the deprecated CkCrypt and CkFtp C++ classes. (CkCrypt2 and CkFtp2 have been the primary C++ classes for encryption and FTP for many years.)
  • (backward compatibility) Removed the deprecated Chilkat.Crypt and Chilkat.Ftp .NET classes. (The primary Chilkat .NET classes for encryption and FTP have been Chilkat.Crypt2 and Chilkat.Ftp2 for many years.)
  • (backward compatibility) Removed the “Blacklist” class wherever it may have been present. This class has been deprecated for many years, and the online documentation for it was removed many years ago.
  • (backward compatibility, C++ API) All C++ method arguments that were pointers to objects have now become references to objects. For example, if a method argument was “CkCert *”, it is now “CkCert &”. This cause a compilation error, but the coding fix is very simple (just dereference the pointer that is passed). There are two exceptions. One is for CkXml::Search* methods where the 1st argument may be NULL, and therefore the pointer argument (CkXml *) was maintained. The second is for event callback objects (see below).
  • (backward compatibility, C++ Zip) The standard way of setting an progress monitoring callback object is via the put_EventCallbackObject method. This applies to all Chilkat C++ classes. The event callback object can be set by passing a pointer to the event callback object, or passing a NULL to suppress event callbacks. Previous to v9.4.0, the CkZip class had two versions of many methods: one where the last argument was a “CkZipProgress *”, and the other where it did not exist. The methods having the last argument of “CkZipProgress *” have been dropped. The event callback must be strictly set via the put_EventCallbackObject method.
  • (backward compatibility, C++ Zip) The CkZipEntry::InflateToString and CkZipEntry::InflateToString2 methods are replaced with a single UnzipToString method: bool CkZipEntry::UnzipToString(int lineEndingBehavior, const char *srcCharset, CkString &outStr);The line ending behavior can have one of three values: 0 = leave line endings unchanged, 1 = convert all line endings to bare LF’s, 2 = convert all line endings to CRLF’s. The source charset is required to tell the method how to interpret the bytes of the text data. For example, it could be “ansi” or “utf-8″, or “windows-1252″, etc.
  • (backward-compatibility, HTTP) Changed the default value of the HttpRequest.Charset property from utf-8 to ANSI.
  • (ALL) If “?” char is in the file path, then it’s automatically replaced with an underscore when
  • saving / opening files on the Windows OS. (The ‘?’ character is not allowed to be in a filename or path on the Windows OS).
  • (Crypt, HTTP, etc.) Default URL encoding is now according to RFC 3986.
  • (backward compatibility, C++) The CkCSP C++ class name changed to CkCsp. The difference is in the case-sensitivity. (CkCsp is a seldom-used Windows-only class.)