April 27th, 2012· All:
· Added a free supporting CkDateTime object for date/time functionality. The use of SYSTEMTIME will become deprecated in favor of methods that instead return a CkDateTime object. More information about this will be added to www.example-code.com, as well as the reference documentation.
· (Compression):
· Added the “zlib” compression algorithm to the Chilkat.Compression / CkCompression class. This is the same as “deflate”, but includes the zlib header.
(Certificate):
·
The Rfc822Name string property will return all subject alternative names (if more than one exists) in comma-separated list.
(Crypt):
·
Added “Q”, “B”, “url_oauth”, “url_rfc1738″, “url_rfc2396″, “url_rfc3986″ to the list of available encoding/decoding algorithms (i.e. the Chilkat.Crypt2.EncodingMode property).
(CkString):
·
Extended CkString so that the AppendEncoded and GetDecoded methods recognize and use any of the encoding algorithms available in the Chilkat.Crypt2.EncodingMode property.
· (HTTP):
· Fixed SynchronousRequest method so that it correctly sets the FinalRedirectUrl and WasRedirected properties when auto-following redirects.
· (HTTP ActiveX):
· A memory leak in the SynchronousRequest method was fixed. The memory leak only occurred in the ActiveX build.
(FTP2):
·
Fixed minor problem relating to bandwidth throttling (only occurred in some cases).
(SSH):
·
The handling of SSH/SFTP re-key events fixed for F-Secure SSH servers (and possibly other types of SSH servers). A typical behavior of some servers is to send a re-key message after 1GB has been transferred between client and server.
(Email):
·
Fixed a problem such that when the UnpackUseRelPaths was set to false (0) and the unpack directory contains space character, the generated HTML file was incorrect.
· (Email ActiveX):
· Fixed problem where the CreateMdn/CreateDsn methods in ActiveX always returned NULL.
· (HTTP):
· Regarding the S3_ListBucketObjects method: The bucket name may now be qualified with URL-encoded params. For example, to list
the objects in a bucket named “ChilkatABC” with max-keys = 2000 and marker = “xyz”, do this:
xmlStr = http.S3_ListBucketObjects("ChilkatABC?max-keys=2000&marker=xyz")
· The S3_ListBucketObjects method recognized all params listed in the AWS documentation for listing objects in a bucket: delimiter, marker, max-keys, and prefix. See Amazon’s AWS online documentation for more information.
· (Zip):
· Fixed the QuickAppend method. The problem only occurred in non-Windows implementations.
· (XMP):
· Added the GetProperty method:
Xml *Xmp::GetProperty(Xml *xml, String *propName)
This was added to provide the ability to handle “Property Qualifiers”. (see http://www.aiim.org/documents/standards/xmpspecification.pdf )
Property Qualifiers
Any individual property value may have other properties attached to it; these attached
properties are called property qualifiers. They are in effect “properties of properties”; they can
provide additional information about the property value. For example, a digital resource
representing a musical production might have one or more authors, specified using the
dc:creator property, which is an array (see the figure below). Each array value might have a
property qualifier called role, which could take a value of “composer” or “lyricist” or
possibly other values.
To handle the situation, a new method named GetProperty was added. It returns the Xml node for the property. The Chilkat XML API can then be used to get the attributes.
· (HTTP):
· The ProxyPartialUrl property is deprecated. It is no longer needed and has no effect.
· (HTTP):
Fixed a problem with using HTTPS via an HTTP proxy.
· (Socket):
· Added the following new property and method. These are for when an SSL/TLS connection is accepted, and your application wishes to examine the client-side certificates. To say it another way, your application is behaving as the SSL/TLS server, and it is accepting a connection from an SSL/TLS client and wishes to examine the client-side certs.
New property: int NumReceivedClientCerts
New method:
· Chilkat.Cert *GetReceivedClientCert(int index)
· (Socket):
· Added AES 256 and AES 128 to the server-side list of supported encryption algorithms. The default encryption algorithm chosen by the server (if supported by the client) is now AES 256. (The client-side of the SSL/TLS implementation already supported AES 128 and AES 256, and AES 256 is already the 1st choice of encryption algorithm to be chosen if supported by the server.) The Chilkat SSL/TLS implementation will by-default automatically choose the most secure encryption method available that is also implemented by the connecting peer.
· (Mime):
Fixed a memory leak in MIME ActiveX’s AppendPart method.
· (FTP2):
Added ProxyMethod #9 for certain types of FTP proxies that behave as follows: If interactively connecting, the proxy server prompts for user-input in this order: ProxyLogin, ProxyPassword, FtpLogin, and finally FtpPassword.
· (HTTP, Socket):
· Asynchronous HTTP and Socket functionality was added to the IOS / MACOSX libs.
· (HTTP):
· Fixed a problem such that if an Amazon S3 upload was followed by a download on same connection, then the download failed.
(Zip):
·
Fixed a problem with the QuickAppend method. If the zip to be appended existed but was 0 bytes (empty) then it did not work.
(Ftp2):
·
Added two new methods: ConnectOnly and LoginAfterConnectOnly.
The existing “Connect” method both establishes the connection AND authenticates.
This was most certainly a poor design decision early-on (about 10 years ago). The first problem with it is this: When it fails it’s impossible to tell why it failed. Was it unable to connect, or did it connect and then fail the authentication? This was fixed by providing the ConnectFailReason property to provide the exact reason for failure. However, one problem remained. A client would not be able to connect via SSL/TLS, examine the servers certificate, and then only authenticate if the cert is valid.
The ConnectOnly will establish the connection and do nothing else. This allows your application to fetch the server’s SSL cert via the GetSslServerCert method. If the cert is verified to be OK, then then LoginAfterConnectOnly may be called to authenticate. The combination of calling ConnectOnly followed by LoginAfterConnectOnly is equivalent to calling the Connect method.
· (CkString):
Added three new integer properties to the ActiveX: NumChars, SizeUtf8, and SizeAnsi. SizeUtf8 is the size in bytes of the string when encoded in utf-8. SizeAnsi is the size in bytes when encoded in the ANSI charset of the local computer.
January 26th, 2012· (Crypt2, MIME, MailMan) Now supports the ability to create CAdES-BES and CAdES-EPES digital signatures. See CAdES for more information.
· (IMAP) Added the ability to download emails without attachments, and to download attachments separately. See Download email without attachments and downloading attachments separately for more information.
· (MACOSX, IOS) Eliminated the SIGPIPE exception that can occur when a socket write is attempted after the previously connected peer disconnects.
· (Email) No longer includes the “This is a multi-part message in MIME format.” line in multipart/mixed messages. Note: The presence of this line is very common and transparent (i.e. it is not visibly seen when viewing an email in an email client such as Outlook or Thunderbird).
· (IMAP) The “ckx-imap-internaldate” header field is now added to emails downloaded from IMAP servers. This allows for subsequent calls to AppendMail to restore the same internal date when uploading the email to a new IMAP server or to another mailbox on the same IMAP server.
· (IMAP) Exception in CRAM-MD5 authentication fixed.
· (Email) Modified the automatic generation of the Message-ID header field so that it never tries to fetch the hostname via DNS. The simple instantiation of an email object should never do anything that would implicitly require network communications.
· (Compression) PPMD is not yet available in 64-bit non-Windows apps. Any attempt to use it in CkCompression (CkoCompression) will result in a false return status indicating failure. Use Deflate, Bzip2, or Lzo instead.
· (Ftp2, HTTP, Socket) Asynchronous functionality is now enabled for all non-Windows operating systems. See Cocoa Asynchronous Methods and Event Callbacks for more information.
· (Self-Extracting EXE) The self-extracing EXE’s now correctly maintain last-modification dates/times.
· (Charset) Fixed Charset.HtmlEntityDecode to handle non-ANSI HTML.
· (C++ on Linux, MacOSX, IOS, Android) May need to link with the system libraries “-lresolv” and “-lpthread”.
· DKIM and SSH Tunneling now supported across all operating systems/programming languages, with the exception that DKIM is not yet available on Android.
· (Atom on ActiveX) Fixed ChilkatAtom.GetEntry method.
· (XML) Added Xml.GetChildWithAttr method.
· (FTP2) Added HTTP proxy support to FTP2 (forces Passive mode if an HTTP proxy is used).
· (Bounce) Added BounceType 15 (for abuse/fraud feedback reports).
· (Zip) Fixed Zip date/time issues for years after 2037.
· (XML) Fixed memory leaks in RemoveChildByIndex and RemoveChildWithContent methods.
· (Upload) Fixed the PercentUploaded property — a divide-by-zero exception occurred if first access happened while the total is still 0.
· (SSH / SFTP) Added the ForceCipher property to allow the encryption algorithm to be explicitly chosen.
· (MacOSX C++) Mac C++ libs have changed to these new names:
libDyn/libchilkat.dylib
libStatic/libchilkat.a
libDyn/libchilkat_i386.dylib
libStatic/libchilkat_i386.a
libDyn/libchilkat_x86_64.dylib
libStatic/libchilkat_x86_64.a
The dynamic libs now use “@executable_path”, so the .dylib (if used) can be placed in the same directory as your EXE.
· (CSV) Csv.LoadFromString always returned false even when successful. This is now fixed.
· (RSA) Somewhat rare OAEP padding related decrypt issue fixed. (The problem was on the decrypt side, not on the encrypt side.)
· XML) Added the CopyRef method.
· (Crypt2) Added new methods for signature date/times: GetSignatureSigningTime and HasSignatureSigningTime.
· (RSA) Fixed PSS padding issue for signatures using PSS padding.
· (MailMan/C++) CkMailMan::SetProgressCallback is deprecated. Use put_EventCallbackObject instead.
· (Zip/C++) CkZip methods with “CkZipProgress *” as final argument are deprecated. Use put_EventCallbackObject in combination with the methods that do NOT include the “CkZipProgress *” argument.
· (FTP2) Internally, the “EPRT” command (instead of “PORT”) is automatically used if the TCP connection is IPv6.
· (XML ) The GetXml method now includes the XML declaration when getting the XML of the document root, otherwise it does not. The extra blank line between the XML declaration and the root node is now removed.
· (HTTP) Added the DownloadHash method, which allows a file to be downloaded such that the downloaded bytes are discarded and a hash of the bytes is returned.
· (PHP) This error is fixed:undefined symbol: zend_error_noreturn in Unknown on line 0This error does not occur in PHP 5.3.8 or later. The error is a bug in PHP and is described here:
http://stackoverflow.com/questions/2556113/swig-generated-code-fails-to-run-on-php-5-3-2-undefined-symbol-zend-error-noret
· (MacOSX) Objective-C libs compiled with -fobjc-gc so that both GC and retain/release logic is present.
· (HTML-to-Text) Added the SuppressLinks property to suppress the inclusion of URLs found in links. To maintain backward compatibility, false/0 is default property value.
· (HTML-to-Text) Added the DecodeHtmlEntities property so that HTML entities can be automatically decoded. To maintain backward compatibility, false/0 is default property value.
· (Compression) The Charset property had an undefined default value. It now defaults to “utf-8″.
· (Email) The AddRelateData and AddRelatedData2 methods were missing for Java, Perl, Python, Ruby, and PHP. These methods have been added.
· (HTTP) DownloadAppend and ResumeDownload methods fixed for Gzipped HTTP responses.
· (HTTP) The PostJson method was added to make JSON POST’s easy.
· (MailMan) Added the AutoSmtpRset property. The default value is True, making it backward compatible so that the behavior is unchanged w/ previous versions. When True, the “RSET” SMTP command is sent at the beginning of each email on an already-open connection (meaning it is not the 1st email sent on a connection). This is done to ensure that the state of the connection is valid, clean, and ready for a new email. A case was found where one SMTP server delayed by approx. 5 seconds in responding to the RSET command. The AutoSmtpRset property provides a way to control whether the RSET command is automatically sent.
· (SshTunnel) Added the ClearTunnelErrors method (to clear TunnelErrors read-only property).
· (Zip) Added the SkippedForUnzip event , which is called if a file is not unzipped because it is not newer (for UnzipNewer method), or if a file is not unzipped because it would overwrite an existing file (when OverwriteExisting = false).
· (HTTP) Added the HttpResponse.SaveBodyBinary and SaveBodyText methods. Makes it possible to save large responses directly to a file.
· (MIME) Added the UseXPkcs7 boolean property. The default value is True to make it backward compatible. This controls whether “x-pkcs7-signature” or “pkcs7-signature” is used for the Content-Type for PKCS7 signatures. It also controls whether “x-pkcs7-mime” or “pkcs7-mime” is used for the Content-Type in PKCS7 encryption. If UseXPkcs7 is True, then “x-pkcs-*” is used.
· (ActiveX) Versioning for all ActiveX DLL’s will now match the overall version (v9.3.0).
If a new version of an individual DLL is released prior to the release of the next full-set version, it will be a sub-version, such as v9.3.0.1
· (ActiveX Email) The ChilkatMail_v8.dll ActiveX changed name to ChilkatMail2.dll The “2″ reflects that the ActiveX object names, which have not changed, are ChilkatMailMan2, ChilkatEmail2, ChilkatEmailBundle2. (This makes it consistent with other ActiveX DLLs/objects such as ChilkatZip2.dll, ChilkatCrypt2.dll, ChilkatFtp2.dll, etc.)
August 17th, 2011· (SFTP) Performance improvements for file downloads.
· (MailMan ) Added the IsSmtpConnected boolean property.
· (Socket, Java build only) Fixed problem with BindAndListen.
· (FTP2) Added GetSizeByName64 and GetSize64 methods for C++ and .NET builds.
· (Email object) Fixed AspUnpack2 method.
· (HTTP) Fixed so that HTTP will neither save nor send expired cookies.
· (HTTP) Fixed so that HTTP will not send cookies marked as “secure” on non-SSL/TLS connections.
· (SFTP) The “.” and “..” directories will no longer be included in results returned by the ReadDir method.
· (SSL in all classes/objects) Fixed client-side certificate problem when SSL v3.0 is used (client-side certs w/ TLS 1.0 were working OK).
· (PFX in all methods that read a PFX file) Fixed problem when PFX password is 32 characters or more (which is rare).
· (PEM in all methods that read a PEM file) OpenSSH key file format (PEM) fixed for the case where the file uses bare-LF line-endings as opposed to CRLF line endings.
· (SshKey) Fixed FromRfc4716PublicKey, which could not load RSA keys because it was trying to verify them as DSA keys.
· (HTML-to-Text) “ ” is now handled correctly.
· (C++ / CkString / Linux-build) Fixed CkString::toLowerCase problem in Linux.
· (HTTP) Cookie file format changed to properly keep attributes with individual cookies. When updating to v9.2.1, and cached cookie files should be deleted so that the new version may create new cookie files correctly.
· (SFTP / MAC OS X / iOS only) Fixed methods that return NSDate objects. The bug was that the NSDate object returned was off by a number of hours based on the timezone of the computer.
July 6th, 2011· (Email Object) The AspUnpack and AspUnpack2 methods were fixed to prevent the creation of duplicate HTML files.
· (Zip) On Linux systems only, the AppendFiles method failed in a rare specific circumstance.
· (TAR) Fixed Base256 internal decoding problem to support TAR archives larger than 8GB.
· (Email, MIME, Crypt2) Internal PKCS7 signed-data issue fixed for cases where the signed data contained no authenticated attributes. (”authenticated attributes” are internal to the PKCS7 format and not something an application developer using Chilkat would ever encounter.)
· (Upload) Added two methods for clearing state: ClearParams and ClearFileReferences.
· (Cert, CertStore) Added the AvoidWindowsPkAccess boolean property (for Windows only) to prevent the Chilkat internals from trying to access the cerficate’s associated private key when loading the cert from a registry-based certificate store. (This is useful in cases where the private key is installed with security settings such that any access triggers the Windows operating system to popup a dialog box to allow/disallow the access.)
· (HTTP) Added the RedirectVerb property. If a redirect is automatically followed, the RedirectVerb (such as GET, POST, PUT, etc.) will be used in the HTTP redirection.
· (MailMan) Added the UseApop property to support APOP authentication for POP3.
· (FTP2) Added the PreferNlst boolean property. If True, the NLST command is used instead of LIST when fetching a directory listing. This can help in *very rare* cases where the FTP server returns truncated filenames. The drawback to using NLST is that it won’t return size or date/time info (but it should return the full filename).
· (Crypt2) PBES1 encryption by definition only supports 56-bit DES or 64-bit RC2. (see the PBES1 specification at http://www.rsa.com/rsalabs/node.asp?id=2127) If the CryptAlgorithm property is set to “PBES1″, then the KeyLength property is ignored and 64 bits is used by default. Also, if the Pbes1Algorithm (which specifies the underlying encryption algorithm) is not DES or RC2, then RC2 is assumed.
· (TAR) Fixed the untar functionality when UntarMatchPattern for compressed formats (.tgz, .tar.bz2, etc.) .
· (Multiple Classes) Added the DebugLogFilePath property. If a situation arises where a call to a Chilkat method hangs, then this property may be set to the path of a log file that is created for debugging purposes. If a hang occurs, the log file may be examined and sent to Chilkat support.
· (HTTP) Added the ExtractMetaRefreshUrl method for extracting a META-refresh URL from HTML.
· (IMAP) Added the UidValidity property.
· (All classes that specify encoding by name, such as “base64″) Added the “modBase64″ encoding. Modified Base64 for URLs replaces the ‘+’ and ‘/’ characters of standard Base64 with ‘-’ and ‘_’ respectively. This results is a URL-friendly output (i.e. something that can be used within a URL without needing to be URL encoded).
· (XML) Removed the HttpGet and HttpPost methods. These methods were removed to reduce the size of applications that only need XML functionality.
· (Multiple Classes) Fixed the SetTcpNoDelay method in all classes that involve TCP/IP sockets, such as IMAP, FTP2, HTTP, etc.
May 31st, 2011· FileAccess: Changed “int” arguments to “unsigned int”.
· bool FileOpen(String *filename, unsigned int accessMode,
· unsigned int shareMode, unsigned int createDisp, unsigned int attr);
· RSA: If the result of a signature was a binary value such that the leading byte(s) were 0, then these NULL bytes were not included in the encoded output (such as for Base64, Hex, etc.). This was fixed. The encoded output will always represent a number of bytes equal to the key length (such as 2048 bits). (This was not a bug in the signature itself, only a “bad feature” of the encoded representation of the signature.)
· SSL/TLS through SSH Tunnel now works for all classes/objects where it is used.
· HTTP: Accept,Accept-Charset,Accept-Language,Referer,Accept-Encoding headers automatically added for PostXml, PutText, BinaryRequest, XmlRpcPut, XmlRpc just like for QuickGet…
· HTTP: Added BgPercentDone, AllowGzip and UseUploadPut properties.
· Email: Fixed signed+encrypted emails so that Outlook does not display a warning about “unable to display the signer’s email address”.
· Socket: Server-side SSL/TLS issue fixed with server certs.
· Crypt/Email/Imap/Mime: Crypto-PRO GOST CSP supported.
· MailMan: Error in MailMan.FetchMultiple (POP3) fixed.
· All Components: IPv6 is now supported.