private void getCryptoKeys(int cryptoFlag, byte[] calculatedKey, byte[] calculatedIV, byte[] key, byte[] iv) { switch (((uint)(cryptoFlag & -268435456))) { case 0: ConversionUtils.arraycopy(key, 0, calculatedKey, 0L, calculatedKey.Length); ConversionUtils.arraycopy(iv, 0, calculatedIV, 0L, calculatedIV.Length); Debug.WriteLine("MODE: Unencrypted ERK"); break; case 0x10000000: ToolsImpl.aescbcDecrypt(EDATKeys.EDATKEY, EDATKeys.EDATIV, key, 0, calculatedKey, 0, calculatedKey.Length); ConversionUtils.arraycopy(iv, 0, calculatedIV, 0L, calculatedIV.Length); Debug.WriteLine("MODE: Encrypted ERK"); break; case 0x20000000: ConversionUtils.arraycopy(EDATKeys.EDATKEY, 0, calculatedKey, 0L, calculatedKey.Length); ConversionUtils.arraycopy(EDATKeys.EDATIV, 0, calculatedIV, 0L, calculatedIV.Length); Debug.WriteLine("MODE: Default ERK"); break; default: throw new Exception("Crypto mode is not valid: Undefined keys calculator"); } }
private void getHashKeys(int hashFlag, byte[] calculatedHash, byte[] hash) { uint mode = (uint)hashFlag & 0xF0000000; switch (mode) { case 0x10000000: ToolsImpl.aescbcDecrypt(EDATKeys.EDATKEY, EDATKeys.EDATIV, hash, 0, calculatedHash, 0, calculatedHash.Length); Debug.WriteLine("MODE: Encrypted HASHKEY"); break; case 0x20000000: ConversionUtils.arraycopy(EDATKeys.EDATHASH, 0, calculatedHash, 0, calculatedHash.Length); Debug.WriteLine("MODE: Default HASHKEY"); break; case 0x00000000: ConversionUtils.arraycopy(hash, 0, calculatedHash, 0, calculatedHash.Length); Debug.WriteLine("MODE: Unencrypted HASHKEY"); break; default: throw new Exception("Hash mode is not valid: Undefined keys calculator"); } }