Chilkat v9.5.0.80 Release Notes

The previous version release notes: Chilkat v9.5.0.79 Release Notes

Chilkat v9.5.0.80 Release Notes

    • 9-Aug-2019 Apple WatchOS: Added the static library for the arm64_32 architecture. 
    • 9-Aug-2019 iOS: Added an “iPad Apps for Mac” build.   This is a new set of Chilkat iOS libs built with Xcode 11.0 beta 5, on macOS Catalina (version 10.15 beta). This download contains the iOS libs for the usual architectures (armv7s, armv7, i386, and x86_64) but also contains a static lib build with UIKit for Mac. It is located in the lib/ipad_for_mac subdirectory. 
    • 10-Aug-2019  CertStore:  Added the OpenSmartcard method.   This is a Windows-only method that provides access to the certificates on the smart card currently inserted into the reader.   (Can also be used with a USB token.)
    • 18-Aug-2019 FileAccess:  The FileType method would never return the value 3 (for Symbolic Link) on non-Windows systems.  Instead it would follow the link and return the file type of the target.  This was fixed.
    • 20-Aug-2019 OAuth2: Added the NonceLength property.  If a nonce is included (as determined by the IncludeNonce property), the default NonceLength is 4 bytes (8 hex chars).  This property allows for an application to set the length of the nonce in bytes (for example 10 bytes = 20 hex chars).
    • 20-Aug-2019 Rsa: Added the PssSaltLen property.  The default value is -1, which is to use the hash algorithm length for the RSA PSS salt length. This property was added to satisify a customer system that required the PSS salt length to specifically be 20 bytes.
    • 22-Aug-2019: Xml: The DecodeEntities method assumed that all hex entities were 2 byte hex values.  It now handle 4 byte hex values such as ö and €
    • 22-Aug-2019: FileAccess: Added the FileSizeStr method to return the size of a file as a decimal string.
    • 22-Aug-2019: FileAccess: Added the ReadNextFragment method to provide a technique for processing huge files, especially intended for huge XML files.  (See the example linked from the reference documentation.)
    • 28-Aug-2019: TrustedRoots: Added the RejectSelfSignedCerts property to automatically reject TLS server certificates that are self-signed.
    • 28-Aug-2019: XmlDSigGen: Added “SigningTimeAdjust” to the list of Behaviors.
    •  29-Aug-2019: Email:  Fixed automatic Q/B decoding for email address header fields.  Normally, a TO or CC email header may be Q/B encoded such that the friendly-name part is encoded but not the address part.  For example:  “=?utf-8?B?TWF0dA==?= <support@chilkatsoft.com>”.   This was already handled correctly.  However, if the entire name+address string, including the quotes around the name part are Q/B encoded, such as like this  “=?utf-8?B?Ik1hdHQiIDxzdXBwb3J0QGNoaWxrYXRzb2Z0LmNvbT4=?=”, then Chilkat returned the entire string as the email address, without decoding.  The GetTo, GetToName, GetToAddr, GetCC, GetCcName, and GetCcAddr methods will now return automatically decoded strings for this case.
    • 3-Sep-2019: JsonArray:  Strings within arrays were not properly escaped when emitting. 
      Note: This only applies to strings in an array, and only to strings explicitly added to the array by the methods JsonArray.AddStringAt or JsonArray.SetStringAt.
      For example, if in C++ we did this:
          CkJsonObject json;
          json.AddStringAt (-1, "string", "C:\\MyPath\\MyFile.txt");
          CkJsonArray* jarr = json.AppendArray ("array");
          jarr->AddStringAt (-1, "C:\\MyPath\\MyFile.txt");
      
          delete jarr;
      
          json.put_EmitCompact(false);
          printf("%s\n",json.emit());
      
      the output would be this:
      {
        "string": "C:\\MyPath\\MyFile.txt",
        "array": [
          "C:\MyPath\MyFile.txt"   <--- The backslashes were not escaped.  This was fixed.
        ]
      }
      
    • 8-Sep-2019: Xojo: Fixed the .so shared library for the ARM build (Raspberry Pi) to fix linking problems.
    • 10-Sep-2019: Http: Fixed problem with duplicated response content getting logged to the session log file (created via the http.SessionLogFilename property).
    • 21-Sep-2019: Rest: Improved auto-reconnect behavior for various methods and situations.
    • 23-Sep-2019: Gzip: Fixed: Setting the Comment property caused the .gz to be created incorrectly.  
    • 23-Sep-2019: BinData: Added the AppendPadded method.
    • 27-Sep-2019: Xml: The RemoveChild method did not remove the element if the last item in the tagPath is an array reference.  See https://stackoverflow.com/questions/58129782/chilkat-xml-lib-removechild-method/58139276
    • 3-Oct-2019: Http: (Fixed) The PText method returned non-null (i.e. returned an HttpResponse object) when a failure occurred such that no response was ever received, and therefore the responseObject’s status code would be 0.  The correct behavior is to return NULL.
    • 3-Oct-2019: FileAccess: Added the LockFileOnOpen property (applies only to applications running on the Windows operating system.)
    • 7-Oct-2019: FileAccess: Added the Truncate method (to truncate the currently open file at the current file position).
    • 8-Oct-2019: StringBuilder: Added the Obfuscate and Unobfuscate methods. 
    • 21-Oct-2019: Ftp2: Fixed the SetSslCertRequirement method.  It was not working as indicated in the reference documentation.
    • 22-Oct-2019: .NET Core: Fixed:  For Chilkat objects created as a return value from a method call, the event callbacks did not get called.

Delphi DLL AbortCheck Callbacks

The Chilkat Delphi DLL (non-ActiveX) supports callbacks starting in version 9.5.0.82, to be released in Feb 2020. Pre-release Beta builds are available upon request. Also see: Delphi DLL PercentDone Callbacks Delphi DLL ProgressInfo Callbacks Delphi DLL TaskCompleted Callbacks 1) First define a function exactly as shown here. Make sure to …

Delphi DLL PercentDone Callbacks

The Chilkat Delphi DLL (non-ActiveX) supports callbacks starting in version 9.5.0.82, to be released in Feb 2020.   Pre-release Beta builds are available upon request. Also see: Delphi DLL AbortCheck Callbacks Delphi DLL ProgressInfo Callbacks Delphi DLL TaskCompleted Callbacks 1) First define a function exactly as shown here.  Make sure to …

Chilkat PHP Extension on MacOSX Catalina with SIP (System Integrity Protection)

Mac OS X 10.11 El Capitan and later protects system files and processes with a new feature named System Integrity Protection. SIP is a kernel-level feature that limits what the “root” account can do.   It will prevent you from copying the Chilkat PHP shared lib (.so) to the PHP extensions …

Working with Huge (Extremely Large) JSON Files

Question: I am using the following calls in Visual FoxPro with Chilkat_9_5_0.JsonObject (9.5.0.80) and the resulting JSON is writing only {} oChilkatJson=Createobject(‘Chilkat_9_5_0.JsonObject’) oChilkatJson.LoadFile(“pathToLargeJSONFile”) oChilkatJson.EmitCompact=1 =STRTOFILE(oChilkatJson.Emit(),pathToOutputFile) Original Size of JSON: 259 MB (271,982,395 bytes) New JSON outputs as: {} I could use the https://www.example-code.com/foxpro/create_complex_json.asp​ to read and write each JSON property/object to memory and perform the …

Generated Code for XAdES Signing Certificates

Question: I am user of your component and I have problem with signing XML files. I got (invalid) ds:Signature with same not replaced text “TO BE GENERATED BY CHILKAT” in tree node (SigningCertificate|xades:Cert[1] and SigningCertificate|xades:Cert[2]) The SigningCertificate|xades:Cert[0] is valid. … CkXml object1; object1.put_Tag(“xades:QualifyingProperties”); object1.AddAttribute(“xmlns:xades”,”http://uri.etsi.org/01903/v1.3.2#”); object1.AddAttribute(“xmlns:xades141″,”http://uri.etsi.org/01903/v1.4.1#”); object1.AddAttribute(“Target”,”#xmldsig-0d264d45-0a6a-4431-8e74-35463a71756c”); object1.UpdateAttrAt(“xades:SignedProperties”,true,”Id”,”xmldsig-0d264d45-0a6a-4431-8e74-35463a71756c-signedprops”); object1.UpdateChildContent(“xades:SignedProperties|xades:SignedSignatureProperties|xades:SigningTime”,”TO BE GENERATED …

Generating Code to Create XMP XML

The Chilkat Xmp class provides the abililty to insert/update/remove/extract XMP metadata from JPEG and TIFF image files.  In addition, the XMP API provides helper methods to make it easier to construct XML according to XMP specifications.  These methods are usually sufficient, but may lack flexibility to create more complex XMP …