//private bool InternalProcessSafe(Galois16 factor, uint size, byte[] inputbuffer, byte[] outputbuffer) //{ // //Treat the buffers as arrays of 16-bit Galois values. // //Awfully long to execute // try // { // // Create Galois16 inputbuffer // Galois16[] inputGalois16 = new Galois16[inputbuffer.Length / 2]; // // Create Galois16 outputbuffer // Galois16[] outputGalois16 = new Galois16[inputGalois16.Length]; // // Fill Galois16 input buffer with inpuntbuffer values // for (int i = 0; i < inputGalois16.Length; ++i) // { // inputGalois16[i] = (Galois16)(inputbuffer[2 * i + 1] << 8 | inputbuffer[2 * i]); // outputGalois16[i] = (Galois16)(outputbuffer[2 * i + 1] << 8 | outputbuffer[2 * i]); // } // // Process the data // for (uint i = 0; i < outputGalois16.Length; ++i) // { // outputGalois16[i] += inputGalois16[i] * factor.Value; // } // // Copy back data from Galois16 output buffer to outputbuffer (byte) // for (int i = 0; i < outputGalois16.Length; ++i) // { // outputbuffer[2 * i + 1] = (byte)(outputGalois16[i].Value >> 8 & 0xFF); // outputbuffer[2 * i] = (byte)(outputGalois16[i].Value & 0xFF); // } // return true; // } // catch (Exception ex) // { // Debug.WriteLine(ex); // return false; // } //} private bool InternalProcess(ushort factor, uint size, byte[] inputbuffer, byte[] outputbuffer, int startIndex, uint length) { // Rewrite : TPL ? // Rewrite : Dynamic load FastGaloisFieldsUnsafe //FastGaloisFieldsSafeProcessor safeProcessor = new FastGaloisFieldsSafeProcessor(); //return safeProcessor.InternalProcess(factor, size, inputbuffer, outputbuffer); try { //FastGaloisFieldsUnsafeProcessor unsafeProcessor = new FastGaloisFieldsUnsafeProcessor(); //return unsafeProcessor.InternalProcess(factor, size, inputbuffer, outputbuffer, startIndex, length); //return FastGaloisFieldsUnsafeProcessor.InternalProcess(factor, size, inputbuffer, outputbuffer, startIndex, length); return(processor.InternalProcess(factor, size, inputbuffer, outputbuffer, startIndex, length)); } catch (SecurityException) { //return InternalProcessSafe(factor, size, inputbuffer, outputbuffer); return(false); } catch (Exception ex) { Debug.WriteLine(ex); return(false); } }