Hi,

from the docs of 5.3:

Common Crypto

MonoTouch will now use the iOS CommonCrypto libraries to provide some of
the functionality exposed by its APIs. This replaces our managed
implementations with the native versions. It is now used for for digest
(hash) and symmetric ciphers, leveraging the hardware acceleration for
SHA-1 and AES under the right circumstances.


I'm using code like the one below for hashing and encryption. How can I
take advantage of HW crypto? Or will it automatically become faster?

/// <summary>

/// Calculates the SHA256 hash value of the data <c>b</c>.

/// </summary>

/// <detail declaration="public static"/>

/// <param name="b" type="byte[]">The data of which the hash value is
calculated.</param>

/// <returns type="byte[]">The SHA256 hash value of <c>b</c>.</returns>

public static byte[] CalculateHash ( byte[] b )

{

SHA256Managed oSha = new SHA256Managed ();

byte[] aHash = oSha.ComputeHash ( b );

 return aHash;

}

 /// <summary>

/// Computes SHA256 hash from a string

/// </summary>

/// <param name="sData"></param>

/// <returns></returns>

public static string ComputeSHA256HashUnicode ( string sData )

{

byte[] aData, aHash;


 UnicodeEncoding oEncoding = new UnicodeEncoding ();

aData = oEncoding.GetBytes ( sData );

aHash = CalculateHash(aData);

string sResult = oEncoding.GetString ( aHash );

return sResult;

}


public static void Crypt ( Stream oFileIn, Stream oFileOut,
ICryptoTransform oTrans )

{

// Declare local variables

byte[] buf = new byte[ 4096]; // Read buffer

int iLen; // Current buffer length

long lReadLen = 0; // Total number of bytes written.

long lTotLen = oFileIn.Length; // Total length of the input file.


 // Move to the beginning of the file

if ( oFileIn.Position > 0 && oFileIn.CanSeek )

oFileIn.Seek ( 0, SeekOrigin.Begin );


 // Create the cryptographic stream

CryptoStream encStream = new CryptoStream (oFileOut, oTrans,
CryptoStreamMode.Write);


 // Read from the input file, then encrypt/decrypt and write to the output
file.

while ( lReadLen < lTotLen )

{

iLen = oFileIn.Read ( buf, 0, buf.Length );

encStream.Write ( buf, 0, iLen );

lReadLen += iLen;

}

 // Clean up

encStream.Close ();

}


René
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to