I’m a bit tardy on this announcement since the release has been available for almost 10 days now but things are pretty busy here. 

On March 15th, we posted an alpha version of the 4.2 release.  The features that are available in this early look are security improvements, FTP Support, a PWM Object, and a number of fixes to the issues that you have reported in the issue tracker on the CodePlex project.  What does an Alpha release mean?  The full set of features that we hope to have for the final 4.2 release are not all in this release.  There are several things that we are still working on and there are a few projects in the community that we are hoping will come in before we go to Beta.  We wanted to get the fixes and features out in case you want to play around with them and if there is a critical issue that you want to address in the 4.1 release, you can pull the fix out of 4.2 and integrate it back.   We suggest that you do no use this release for production devices.  We will be releasing Beta and RTM versions over the next few months (see the schedule posted on the documentation page.

The cryptographic support is based on an extensible PKCS #11 implementation and, as of today, it supports the following crypto primitives: AES, 3DES, EC-DH, ECDSA, DSA, RSA, HMAC (MD5, SHA1, SHA256, SHA384, SHA512, RIPEMD160), Random Number Generation, and X509 certificates.   The PKCS11 implementation enables management of any number of cryptographic tokens with different sets of functionality including object storage (keys, certificates, etc.).  There are currently three cryptographic tokens available in the porting kit: the OpenSSL crypto library primitives, the deprecated crypto.lib and an emulator only implementation.   With this design, a new cryptographic token (hardware or software implementation) can either replace the OpenSSL implementation or simply add to the list of primitives already supported.

The support at the managed object model level is a subset implementation of the standard .NET Framework Crypto Service Provider (CSP) object model contained in the System.Security.dll assembly.  However, in order to reduce the memory footprint, the hash and keyed hash algorithms do not have separate classes as they do in the desktop version.  Instead, the HashAlgorith and KeyedHashAlgorithm classes are initialized with the specified hash algorithm type.  In addition to the standard System.Security.Cryptography object model, we also expose PKCS11 classes which allow the cryptographic model to be extended to match additions to the native PCKS11 implementation.  In fact, the CSP object model sits directly on top of the PKCS11 managed object model.

This new work will fully replace the old Cryptographic API.

Please continue to report any issues with this or other versions through the issue tracker on the Codeplex project

Details of what is included:

109         Support standard cryptography types and methods from System.Security.Cryptography

77           Support System.Threading.Thread.ManagedThreadId

128         Standard Class to Support PWM Ports

309         Support FieldOffset Attribute

Issue and Features From the community database

66           HAL Queues indexers go out of bounds

79           DrawingContext.DrawRectangle asserts for opacity out of range

87           BlockStorageStream::Erase decrements after changing blocks

88          System.Collections.Hashtable.Count increases even when using existing key

90           WSDAPI may reject MF´s request

91           DPWS April2005 discovery with WCF 4.0 does not work

97           Socket.Set/GetSocketOptions does nto work for Big endian Processors

98           Update help files for Renesas platforms

150         setenv.cmd scripts does not work correctly for paths with spaces

313         HttpListenerRequest stops on socket exception after a while

324         Sam7x_ek TinyCLR gcc builds fail

335         ARM Crypto lib - RSA Encrypt/Decrypt fails for certain input lengths

352         Include ExtensionAttribute in CorLib

408         Add delay between HAL_Uninitialize and HAL_Initialize

454         Reading SerialPort.Baudrade always yields 9600

480         StreamReader.Readline() bug

510         NETMF House cleaning

624         TimeService Driver Issue

633         NativeSample bug in USART test

641         Socket debugging with LWIP not working

642         Wrong call handling after nonexistent constructor

647         Dpws: DpwsDiscoverClient.Probe defaults to looking for zero probe matches

650         Mark String as IComparable (it already implements the interface)

651         NativeEventDispatcher Cleaning Up Crashes When There Are Events

657         Debug methods erroneously listed in documentation, do not exist in .NET MF Debug class.

672         Remove MC9328XL specific data from enc28J60_config_stubs.cpp

694         Issue with mem.c in lwip

Issue and Features not listed on the community database

ToString() for all numeric types now supports hexadecimal formatting  e.g. (3).ToString(“X04”);

Metadataprocessor – Added back support for legacy interop code generation.

Base64 encoding added to mscorlib - Convert.[From|To]Base64String  (moved from HTTP assembly)

Char.ToUpper/ToLower added