Chilkat v9.5.0.71 Release Notes

The v9.5.0.70 release notes are available here: Chilkat v9.5.0.70 Release Notes

v9.5.0.71 Release Notes:

  • 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
  • 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
  • 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.

Chilkat v9.5.0.70 Release Notes

The v9.5.0.69 release notes are available here: Chilkat v9.5.0.69 Release Notes

v9.5.0.70 Release Notes:

  • 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).

Chilkat v9.5.0.69 Release Notes

The v9.5.0.68 release notes are available here: Chilkat v9.5.0.68 Release Notes

v9.5.0.69 Release Notes:

  • XML Digital Signatures Chilkat introduces two new classes for creating and verifying XML Digital Signatures: XmlDSig (for verification) and XmlDSigGen for generating XML signatures. More examples will be available soon.
  • S/MIME The ability to get the digest and encryption algorithms encountered when verifying signatures and decrypting S/MIME. See S/MIME Get Algorithms for a C# example. (The same example is available in all the other programming languages at
  • Rest Added the Rest.ClearAuth method.
  • StringBuilder Fixed a bug in the LastNLines method.
  • General Fixed issues having to do with the XFS Linux filesystem. (Most Linux boxes do not use XFS, and thus the problems were not often encountered.)
  • CkDateTime The DiffSeconds method returned 0 when it should’ve returned a negative number. See DiffSeconds
  • SFTP In rare cases, when aborting a high-speed download, the LastErrorText would become filled with a repeated message “Socket recv aborted by application.”. This was fixed.
  • Crypt2 The GenerateUuid method should now correctly generate a v4 UUID (as opposed to a completely random UUID).
  • SFTP Added a workaround for a glitch in the “SSH-2.0-Connect:Enterprise_UNIX_2.4.04 Build 00” SSH server.
  • Http Added the LastStatusText property.
  • PureBasic Fixed errors in the generated .pb wrappers. For example, in CkJsonObject.pb, the following syntax error occurred when building: “[COMPILER] Line 54: A variable can’t be named the same as a keyword: data.”
  • Socket Added the SendWakeOnLan method.
  • Certificates Chilkat now fully supports certificates that use the RSASSA-PSS signature algorithm.
  • Socket Fixed the BuildHttpGetRequest method.
  • Ssh Fixed: calling the method QuickShell() generates an Access Violation when the LAN connection has been severed.
  • SFTP Fixed (rare) problem such that on some downloads, an unexpected message is received from the server after the download is completed and when closing the handle.
  • IMAP Fixed a rare internal IMAP message parsing error in FetchSingleHeader.
  • ZipEntry Added the IsAesEncrypted and EncryptionKeyLen properties.
  • AWS/S3/Http Fixed problems with pre-signing URLs having to do with 8bit non-us-ascii chars in the filename, or “.” chars in the bucket name.
  • AuthAws Fixed: The CanonicalizedResourceV2 property implementation took the whole string and encoded the entire subresource part by escaping reserved (as defined in rfc2396) characters, but the ‘?’ and ‘&’ characters should not have been escaped.
  • Mime When a message contained 8bit message/rfc822 parts, the GetMime method did not properly emit the MIME. This was fixed.
  • AWS/S3 Fixed: In certain situations, the Content-MD5 header was added twice, which caused the AWS Signature format v2 to fail.
  • Rest The AddMwsSignature method did not compute the signature properly when a query param value contained a “/” char. This was fixed.
  • Ftp2 Fixed a PBSZ issue that occurred for some FTP servers.
  • MailMan Fixed some HTTP proxy issues.
  • Certificates Fixed an issue with automatically locating pre-installed Windows certificates (for encryption) when
    the email address stored within the certificate used uppercase letters.
  • Socket Added the BindAndListenPortRange method.
  • OAuth2 Added the ListenPortRangeEnd property.
  • Ftp2 Fixed the GetCreateDtByName for the following situation. If the value of the ListPattern property changes, then the internal cache of remote file information needed to be automatically cleared so that GetCreateDtByName would not return null and would instead fetch the information from the server.
  • Http Added the PTextSb and PBinaryBd methods.
  • FileAccess Fixed: The GetLastModified method did not work for directories.
  • Zip Fixed the ZipAppendOneFileOrDir method for the case when a UNC path is passed.
  • Imap Fixed the GetMailAttachFilename method for cases where Q/B encoding was used in an IMAP response.

Chilkat v9.5.0.68 Release Notes

The v9.5.0.67 release notes are available here:  Chilkat v9.5.0.67 Release Notes

v9.5.0.68 Release Notes:

Version is virtually the same as, 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.

Chilkat v9.5.0.67 Release Notes

The v9.5.0.66 release notes are available here:  Chilkat v9.5.0.66 Release Notes

v9.5.0.67 Release Notes:

  • 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.

Chilkat v9.5.0.66 Release Notes

The v9.5.0.65 release notes are available here:  Chilkat v9.5.0.65 Release Notes

v9.5.0.66 Release Notes:

  • 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.

v9.5.0.65 Release Notes

  • 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
    CkJsonObject json;
    std::cout << json.emit() << "\r\n";

Now correctly produces:

  "cc_emails": [
  • Turned on TCP_NODELAY socket option for HTTP.  See
  • 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”.    To avoid the macro definition, Chilkat does the following:
#if defined(QT_VERSION)
#pragma push_macro("emit")
#undef emit
const char *emit(void);
#pragma pop_macro("emit")
const char *emit(void);
  • Added the “eda” encoding for UN/EDIFACT Syntax Level A.  See Also see:
  • 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/+5554555920@faxsrv.intra
  • 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.



v9.5.0.64 Release Notes

Starting now, Chilkat is going to log the changes, fixes, and new features for the next release as the work is completed.  Pre-release  builds can be requested for most programming languages and operating systems.  Many builds are quick and easy to provide: .NET, ActiveX, C++, Java, Perl, Python, PHP, and others.  Some however, are time-consuming and a request for one of the following builds may take as many as several days: WinRT, Node.js, Mono, Xojo, PureBasic, and .NET Core.    Send email to if a pre-release build is desired.

(Chilkat is currently working on implementing Xero API examples, and many of the new features are related to making life easier to implement these examples.  The new features are general and apply to any programming task. )

v9.5.0.64 Updates

  • 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]”.



v9.5.0.63 Release Notes

Version 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: )
  • Made the Http.RequireSslCertVerify method more flexible in handling out-of-order certs from a web server.  See

v9.5.0.62 Release Notes

  • 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.

    Version adds the following initial set of Sb/Bd methods:





  • 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.