(function (_, Kotlin, $module$bignum) { 'use strict'; var $$importsForInline$$ = _.$$importsForInline$$ || (_.$$importsForInline$$ = {}); var Kind_OBJECT = Kotlin.Kind.OBJECT; var chunked = Kotlin.kotlin.collections.chunked_ba2ldo$; var joinToString = Kotlin.kotlin.collections.joinToString_fmv235$; var println = Kotlin.kotlin.io.println_s8jyv4$; var toString = Kotlin.kotlin.text.toString_aogav3$; var toString_0 = Kotlin.kotlin.text.toString_hc3rh$; var defineInlineFunction = Kotlin.defineInlineFunction; var wrapFunction = Kotlin.wrapFunction; var RuntimeException_init = Kotlin.kotlin.RuntimeException_init_pdl1vj$; var chunked_0 = Kotlin.kotlin.text.chunked_94bcnn$; var toUByte = Kotlin.kotlin.text.toUByte_6ic1pp$; var UInt = Kotlin.kotlin.UInt; var joinToString_0 = Kotlin.kotlin.collections.joinToString_cgipc5$; var toString_1 = Kotlin.kotlin.text.toString_dqglrj$; var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_ww73n8$; var ULong_init = Kotlin.kotlin.ULong; var UByte_init = Kotlin.kotlin.UByte; var toByte = Kotlin.toByte; var copyToArray = Kotlin.kotlin.collections.copyToArray; var collectionSizeOrDefault = Kotlin.kotlin.collections.collectionSizeOrDefault_ba2ldo$; var uintCompare = Kotlin.kotlin.uintCompare_vux9f0$; var Kind_INTERFACE = Kotlin.Kind.INTERFACE; var encodeToByteArray = Kotlin.kotlin.text.encodeToByteArray_pdl1vz$; var toList = Kotlin.kotlin.collections.toList_7wnvza$; var toBigInteger = $module$bignum.com.ionspin.kotlin.bignum.integer.toBigInteger_s8ev3n$; var toList_0 = Kotlin.kotlin.collections.toList_us0mfu$; var IllegalStateException_init = Kotlin.kotlin.IllegalStateException_init_pdl1vj$; var until = Kotlin.kotlin.ranges.until_dqglrj$; var BigInteger = $module$bignum.com.ionspin.kotlin.bignum.integer.BigInteger; var Kind_CLASS = Kotlin.Kind.CLASS; var Array_0 = Array; var L255 = Kotlin.Long.fromInt(255); var emptyList = Kotlin.kotlin.collections.emptyList_287e2$; var slice = Kotlin.kotlin.collections.slice_l0m14x$; var arrayCopy = Kotlin.kotlin.collections.arrayCopy; var ArrayList_init_0 = Kotlin.kotlin.collections.ArrayList_init_287e2$; var addAll = Kotlin.kotlin.collections.addAll_ipc267$; var copyOfRange = Kotlin.kotlin.collections.copyOfRange_5f8l3u$; var UByteArray = Kotlin.kotlin.UByteArray; var flatten = Kotlin.kotlin.collections.flatten_yrqxlj$; var get_indices = Kotlin.kotlin.collections.get_indices_m7z4lg$; var println_0 = Kotlin.kotlin.io.println; var uintDivide = Kotlin.kotlin.uintDivide_oqfnby$; var uintRemainder = Kotlin.kotlin.uintRemainder_oqfnby$; var reversed = Kotlin.kotlin.collections.reversed_7wnvza$; var last = Kotlin.kotlin.collections.last_2p1efm$; var last_0 = Kotlin.kotlin.collections.last_us0mfu$; var dropLast = Kotlin.kotlin.collections.dropLast_8ujjk8$; var dropLast_0 = Kotlin.kotlin.collections.dropLast_yzln2o$; var reversed_0 = Kotlin.kotlin.collections.reversed_us0mfu$; var List = Kotlin.kotlin.collections.List; var throwCCE = Kotlin.throwCCE; var toTypedArray = Kotlin.kotlin.collections.toTypedArray_o5f02i$; var contentEquals = Kotlin.arrayEquals; var contentHashCode = Kotlin.arrayHashCode; var ModularBigInteger = $module$bignum.com.ionspin.kotlin.bignum.modular.ModularBigInteger; var Endianness = $module$bignum.com.ionspin.kotlin.bignum.Endianness; var Enum = Kotlin.kotlin.Enum; var throwISE = Kotlin.throwISE; AesKey$Aes128Key.prototype = Object.create(AesKey.prototype); AesKey$Aes128Key.prototype.constructor = AesKey$Aes128Key; AesKey$Aes192Key.prototype = Object.create(AesKey.prototype); AesKey$Aes192Key.prototype.constructor = AesKey$Aes192Key; AesKey$Aes256Key.prototype = Object.create(AesKey.prototype); AesKey$Aes256Key.prototype.constructor = AesKey$Aes256Key; Mode.prototype = Object.create(Enum.prototype); Mode.prototype.constructor = Mode; function Config() { Config_instance = this; this.DEBUG = false; } Config.$metadata$ = { kind: Kind_OBJECT, simpleName: 'Config', interfaces: [] }; var Config_instance = null; function Config_getInstance() { if (Config_instance === null) { new Config(); } return Config_instance; } function hexColumsPrint$lambda$lambda(it) { return it.toUpperCase(); } function hexColumsPrint($receiver) { var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(toString_1(item, 16)); } var printout = chunked(destination, 16); var tmp$_0; tmp$_0 = printout.iterator(); while (tmp$_0.hasNext()) { var element = tmp$_0.next(); println(joinToString(element, ' ', void 0, void 0, void 0, void 0, hexColumsPrint$lambda$lambda)); } } function hexColumsPrint$lambda$lambda_0(it) { return it.toUpperCase(); } function hexColumsPrint_0($receiver) { var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(toString(item, 16)); } var printout = chunked(destination, 16); var tmp$_0; tmp$_0 = printout.iterator(); while (tmp$_0.hasNext()) { var element = tmp$_0.next(); println(joinToString(element, ' ', void 0, void 0, void 0, void 0, hexColumsPrint$lambda$lambda_0)); } } function hexColumsPrint$lambda$lambda_1(it) { return it.toUpperCase(); } function hexColumsPrint_1($receiver) { var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(toString_0(item, 16)); } var printout = chunked(destination, 3); var tmp$_0; tmp$_0 = printout.iterator(); while (tmp$_0.hasNext()) { var element = tmp$_0.next(); println(joinToString(element, ' ', void 0, void 0, void 0, void 0, hexColumsPrint$lambda$lambda_1)); } } var chunked_1 = defineInlineFunction('multiplatform-crypto.com.ionspin.kotlin.crypto.chunked_r20n03$', wrapFunction(function () { var emptyList = Kotlin.kotlin.collections.emptyList_287e2$; var wrapFunction = Kotlin.wrapFunction; var until = Kotlin.kotlin.ranges.until_dqglrj$; var slice = Kotlin.kotlin.collections.slice_l0m14x$; var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_ww73n8$; var collectionSizeOrDefault = Kotlin.kotlin.collections.collectionSizeOrDefault_ba2ldo$; var copyToArray = Kotlin.kotlin.collections.copyToArray; var chunked$lambda = wrapFunction(function () { var copyToArray = Kotlin.kotlin.collections.copyToArray; return function (it) { return copyToArray(it); }; }); return function (T_0, isT, $receiver, sliceSize) { var last = $receiver.length % sliceSize; var hasLast = last !== 0; var numberOfSlices = $receiver.length / sliceSize | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice($receiver, until(Kotlin.imul(i, sliceSize), Kotlin.imul(i + 1 | 0, sliceSize)))); } if (hasLast) { result.add_11rb$(slice($receiver, until(Kotlin.imul(numberOfSlices, sliceSize), $receiver.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$; tmp$ = result.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(copyToArray(item)); } return copyToArray(destination); }; })); function rotateRight($receiver, places) { var tmp$ = new UInt($receiver.data >>> places); var bitCount = 32 - places | 0; var other = new UInt($receiver.data << bitCount); return new UInt(tmp$.data ^ other.data); } function rotateRight_0($receiver, places) { var tmp$ = new ULong_init($receiver.data.shiftRightUnsigned(places)); var bitCount = 64 - places | 0; var other = new ULong_init($receiver.data.shiftLeft(bitCount)); return new ULong_init(tmp$.data.xor(other.data)); } function xor($receiver, other) { if ($receiver.length !== other.length) { throw RuntimeException_init('Operands of different sizes are not supported yet'); } var $receiver_0 = $receiver.slice(); var destination = ArrayList_init($receiver_0.length); var tmp$, tmp$_0; var index = 0; for (tmp$ = 0; tmp$ !== $receiver_0.length; ++tmp$) { var item = $receiver_0[tmp$]; var tmp$_1 = destination.add_11rb$; var other_0 = other[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0]; tmp$_1.call(destination, new UByte_init(toByte(item.data ^ other_0.data))); } return copyToArray(destination); } function hexStringToUByteArray($receiver) { var $receiver_0 = chunked_0($receiver, 2); var destination = ArrayList_init(collectionSizeOrDefault($receiver_0, 10)); var tmp$; tmp$ = $receiver_0.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(toUByte(item, 16)); } return copyToArray(destination); } function toHexString$lambda(it) { var other = new UInt(15); if (uintCompare((new UInt(it.data & 255)).data, other.data) <= 0) { return '0' + toString(it, 16); } else { return toString(it, 16); } } function toHexString($receiver) { return joinToString_0($receiver, '', void 0, void 0, void 0, void 0, toHexString$lambda); } function Hash() { } Hash.$metadata$ = { kind: Kind_INTERFACE, simpleName: 'Hash', interfaces: [] }; function UpdatableHash() { } UpdatableHash.$metadata$ = { kind: Kind_INTERFACE, simpleName: 'UpdatableHash', interfaces: [Hash] }; function StatelessHash() { } StatelessHash.prototype.digest_5pksov$ = function (inputString, key, hashLength, callback$default) { if (key === void 0) key = null; if (hashLength === void 0) hashLength = this.MAX_HASH_BYTES; return callback$default ? callback$default(inputString, key, hashLength) : this.digest_5pksov$$default(inputString, key, hashLength); }; StatelessHash.prototype.digest_o2z9gi$ = function (inputMessage, key, hashLength, callback$default) { if (inputMessage === void 0) { inputMessage = []; } if (key === void 0) { key = []; } if (hashLength === void 0) hashLength = this.MAX_HASH_BYTES; return callback$default ? callback$default(inputMessage, key, hashLength) : this.digest_o2z9gi$$default(inputMessage, key, hashLength); }; StatelessHash.$metadata$ = { kind: Kind_INTERFACE, simpleName: 'StatelessHash', interfaces: [Hash] }; var chunked$lambda = wrapFunction(function () { var copyToArray = Kotlin.kotlin.collections.copyToArray; return function (it) { return copyToArray(it); }; }); function Blake2b(key, hashLength) { Blake2b$Companion_getInstance(); if (key === void 0) key = null; if (hashLength === void 0) hashLength = 64; this.key = key; this.hashLength = hashLength; this.MAX_HASH_BYTES_b5cfdo$_0 = Blake2b$Companion_getInstance().MAX_HASH_BYTES; this.h = Blake2b$Companion_getInstance().iv_0.slice(); this.counter = BigInteger.Companion.ZERO; this.bufferCounter = 0; var array = Array_0(128); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { array[i] = new UByte_init(0); } this.buffer = array; var tmp$_0, tmp$_1, tmp$_2, tmp$_3; var $this = this.h[0]; var other = new ULong_init(Kotlin.Long.fromInt(16842752)); tmp$_3 = new ULong_init($this.data.xor(other.data)); tmp$_2 = (tmp$_1 = (tmp$_0 = this.key) != null ? new ULong_init((new ULong_init(Kotlin.Long.fromInt(tmp$_0.length))).data.shiftLeft(8)) : null) != null ? tmp$_1 : new ULong_init(Kotlin.Long.ZERO); var tmp$_4 = this.h; var tmp$_5 = new ULong_init(tmp$_3.data.xor(tmp$_2.data)); var $receiver = this.hashLength; var other_0 = new ULong_init(Kotlin.Long.fromInt($receiver)); tmp$_4[0] = new ULong_init(tmp$_5.data.xor(other_0.data)); var $receiver_0 = this.key; var tmp$_6 = $receiver_0 == null; if (!tmp$_6) { tmp$_6 = $receiver_0.length === 0; } if (!tmp$_6) { this.appendToBuffer_0(Blake2b$Companion_getInstance().padToBlock_0(this.key), this.bufferCounter); } } function Blake2b$Companion() { Blake2b$Companion_instance = this; this.BITS_IN_WORD = 64; this.ROUNDS_IN_COMPRESS = 12; this.BLOCK_BYTES = 128; this.MAX_HASH_BYTES_kbpvc6$_0 = 64; this.MIN_HASH_BYTES = 1; this.MAX_KEY_BYTES = 64; this.MIN_KEY_BYTES = 0; this.MAX_INPUT_BYTES = toBigInteger(2).shl_za3lpa$(128); this.sigma_0 = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3], [11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4], [7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8], [9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13], [2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9], [12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11], [13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10], [6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5], [10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0]]; this.iv_0 = [new ULong_init(new Kotlin.Long(-205731576, 1779033703)), new ULong_init(new Kotlin.Long(-2067093701, -1150833019)), new ULong_init(new Kotlin.Long(-23791573, 1013904242)), new ULong_init(new Kotlin.Long(1595750129, -1521486534)), new ULong_init(new Kotlin.Long(-1377402159, 1359893119)), new ULong_init(new Kotlin.Long(725511199, -1694144372)), new ULong_init(new Kotlin.Long(-79577749, 528734635)), new ULong_init(new Kotlin.Long(327033209, 1541459225))]; this.R1 = 32; this.R2 = 24; this.R3 = 16; this.R4 = 63; } Object.defineProperty(Blake2b$Companion.prototype, 'MAX_HASH_BYTES', { get: function () { return this.MAX_HASH_BYTES_kbpvc6$_0; } }); Blake2b$Companion.prototype.mixRound_r29y2p$ = function (input, message, round) { var v = input; var selectedSigma = this.sigma_0[round % 10]; v = this.mix_0(v, 0, 4, 8, 12, message[selectedSigma[0]], message[selectedSigma[1]]); v = this.mix_0(v, 1, 5, 9, 13, message[selectedSigma[2]], message[selectedSigma[3]]); v = this.mix_0(v, 2, 6, 10, 14, message[selectedSigma[4]], message[selectedSigma[5]]); v = this.mix_0(v, 3, 7, 11, 15, message[selectedSigma[6]], message[selectedSigma[7]]); v = this.mix_0(v, 0, 5, 10, 15, message[selectedSigma[8]], message[selectedSigma[9]]); v = this.mix_0(v, 1, 6, 11, 12, message[selectedSigma[10]], message[selectedSigma[11]]); v = this.mix_0(v, 2, 7, 8, 13, message[selectedSigma[12]], message[selectedSigma[13]]); v = this.mix_0(v, 3, 4, 9, 14, message[selectedSigma[14]], message[selectedSigma[15]]); return v; }; Blake2b$Companion.prototype.mix_0 = function (v, a, b, c, d, x, y) { var $this = v[a]; var other = v[b]; v[a] = new ULong_init((new ULong_init($this.data.add(other.data))).data.add(x.data)); var $this_0 = v[d]; var other_0 = v[a]; v[d] = rotateRight_0(new ULong_init($this_0.data.xor(other_0.data)), 32); var $this_1 = v[c]; var other_1 = v[d]; v[c] = new ULong_init($this_1.data.add(other_1.data)); var $this_2 = v[b]; var other_2 = v[c]; v[b] = rotateRight_0(new ULong_init($this_2.data.xor(other_2.data)), 24); var $this_3 = v[a]; var other_3 = v[b]; v[a] = new ULong_init((new ULong_init($this_3.data.add(other_3.data))).data.add(y.data)); var $this_4 = v[d]; var other_4 = v[a]; v[d] = rotateRight_0(new ULong_init($this_4.data.xor(other_4.data)), 16); var $this_5 = v[c]; var other_5 = v[d]; v[c] = new ULong_init($this_5.data.add(other_5.data)); var $this_6 = v[b]; var other_6 = v[c]; v[b] = rotateRight_0(new ULong_init($this_6.data.xor(other_6.data)), 63); return v; }; function Blake2b$Companion$compress$lambda$lambda(it) { return it.toUpperCase(); } Blake2b$Companion.prototype.compress_c1cv33$ = function (h, input, offsetCounter, finalBlock) { var array = Array_0(16); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { var init$result; if (i >= 0 && i <= 7) { init$result = h[i]; } else { init$result = this.iv_0[i - 8 | 0]; } array[i] = init$result; } var v = array; var array_0 = Array_0(16); var tmp$_0; tmp$_0 = array_0.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_0; i_0++) { array_0[i_0] = new ULong_init(Kotlin.Long.ZERO); } var tmp$_1, tmp$_0_0; var index = 0; var accumulator = array_0; for (tmp$_1 = 0; tmp$_1 !== input.length; ++tmp$_1) { var element = input[tmp$_1]; var index_0 = (tmp$_0_0 = index, index = tmp$_0_0 + 1 | 0, tmp$_0_0); var acc = accumulator; var slot = index_0 / 8 | 0; var position = index_0 % 8; var tmp$_2 = acc[slot]; var $this = new ULong_init(Kotlin.Long.fromInt(element.data).and(L255)); var bitCount = position * 8 | 0; var other = new ULong_init($this.data.shiftLeft(bitCount)); acc[slot] = new ULong_init(tmp$_2.data.add(other.data)); accumulator = acc; } var m = accumulator; if (Config_getInstance().DEBUG) { var destination = ArrayList_init(m.length); var tmp$_3; for (tmp$_3 = 0; tmp$_3 !== m.length; ++tmp$_3) { var item = m[tmp$_3]; destination.add_11rb$(toString_0(item, 16)); } var printout = chunked(destination, 4); var tmp$_4; tmp$_4 = printout.iterator(); while (tmp$_4.hasNext()) { var element_0 = tmp$_4.next(); println(joinToString(element_0, ' ', void 0, void 0, void 0, void 0, Blake2b$Companion$compress$lambda$lambda)); } println('Offset ' + offsetCounter); } var $this_0 = v[12]; var other_0 = offsetCounter.ulongValue_6taknv$(); v[12] = new ULong_init($this_0.data.xor(other_0.data)); var $this_1 = v[13]; var other_1 = offsetCounter.shr_za3lpa$(64).ulongValue_6taknv$(); v[13] = new ULong_init($this_1.data.xor(other_1.data)); if (finalBlock) { v[14] = new ULong_init(v[14].data.inv()); } for (var i_1 = 0; i_1 < 12; i_1++) { this.mixRound_r29y2p$(v, m, i_1); } for (var i_2 = 0; i_2 <= 7; i_2++) { var $this_2 = h[i_2]; var other_2 = v[i_2]; var $this_3 = new ULong_init($this_2.data.xor(other_2.data)); var other_3 = v[i_2 + 8 | 0]; h[i_2] = new ULong_init($this_3.data.xor(other_3.data)); } return h; }; Blake2b$Companion.prototype.digest_5pksov$$default = function (inputString, key, hashLength) { var tmp$; var $receiver = encodeToByteArray(inputString); var destination = ArrayList_init($receiver.length); var tmp$_0; for (tmp$_0 = 0; tmp$_0 !== $receiver.length; ++tmp$_0) { var item = $receiver[tmp$_0]; destination.add_11rb$(new UByte_init(item)); } var array = copyToArray(toList(destination)); var tmp$_1; if (key != null) { var $receiver_0 = encodeToByteArray(key); var destination_0 = ArrayList_init($receiver_0.length); var tmp$_2; for (tmp$_2 = 0; tmp$_2 !== $receiver_0.length; ++tmp$_2) { var item_0 = $receiver_0[tmp$_2]; destination_0.add_11rb$(new UByte_init(item_0)); } tmp$_1 = copyToArray(destination_0); } else tmp$_1 = null; var keyBytes = (tmp$ = tmp$_1) != null ? tmp$ : []; return this.digest_o2z9gi$(array, keyBytes); }; Blake2b$Companion.prototype.digest_o2z9gi$$default = function (inputMessage, key, hashLength) { var tmp$, tmp$_0, tmp$_1, tmp$_2; var last = inputMessage.length % 128; var hasLast = last !== 0; var numberOfSlices = inputMessage.length / 128 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(inputMessage, until(Kotlin.imul(i, 128), Kotlin.imul(i + 1 | 0, 128)))); } if (hasLast) { result.add_11rb$(slice(inputMessage, until(Kotlin.imul(numberOfSlices, 128), inputMessage.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$_3; tmp$_3 = result.iterator(); while (tmp$_3.hasNext()) { var item = tmp$_3.next(); destination.add_11rb$(copyToArray(item)); } var chunkedMessage = copyToArray(destination); var h = this.iv_0.slice(); var $this = h[0]; var other = new ULong_init(Kotlin.Long.fromInt(16842752)); var tmp$_4 = new ULong_init($this.data.xor(other.data)); var other_0 = new ULong_init((new ULong_init(Kotlin.Long.fromInt(key.length))).data.shiftLeft(8)); var tmp$_5 = new ULong_init(tmp$_4.data.xor(other_0.data)); var other_1 = new ULong_init(Kotlin.Long.fromInt(hashLength)); h[0] = new ULong_init(tmp$_5.data.xor(other_1.data)); if (key.length === 0) { if (chunkedMessage.length === 0) { var array = Array_0(1); var tmp$_6; tmp$_6 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_6; i_0++) { var array_0 = Array_0(128); var tmp$_7; tmp$_7 = array_0.length - 1 | 0; for (var i_1 = 0; i_1 <= tmp$_7; i_1++) { array_0[i_1] = new UByte_init(0); } array[i_0] = array_0; } tmp$ = array; } else { tmp$ = chunkedMessage; } } else { tmp$ = [this.padToBlock_0(key)].concat(chunkedMessage); } var message = tmp$; if (message.length > 1) { tmp$_0 = message.length - 1 | 0; for (var i_2 = 0; i_2 < tmp$_0; i_2++) { var $receiver = this.compress_c1cv33$(h, message[i_2], toBigInteger((i_2 + 1 | 0) * 128 | 0), false); arrayCopy($receiver, h, 0, 0, $receiver.length); } } switch (message.length) { case 0: tmp$_1 = 0; break; case 1: tmp$_1 = message[message.length - 1 | 0].length; break; default:tmp$_1 = ((message.length - 1 | 0) * 128 | 0) + message[message.length - 1 | 0].length | 0; break; } var lastSize = tmp$_1; if (!(message.length === 0)) { tmp$_2 = this.padToBlock_0(message[message.length - 1 | 0]); } else { var array_1 = Array_0(16); var tmp$_8; tmp$_8 = array_1.length - 1 | 0; for (var i_3 = 0; i_3 <= tmp$_8; i_3++) { array_1[i_3] = new UByte_init(0); } tmp$_2 = array_1; } var lastBlockPadded = tmp$_2; var $receiver_0 = this.compress_c1cv33$(h, lastBlockPadded, toBigInteger(lastSize), true); arrayCopy($receiver_0, h, 0, 0, $receiver_0.length); return this.formatResult_0(h); }; Blake2b$Companion.prototype.formatResult_0 = function (h) { var destination = ArrayList_init(h.length); var tmp$; for (tmp$ = 0; tmp$ !== h.length; ++tmp$) { var item = h[tmp$]; var tmp$_0 = destination.add_11rb$; var other = new ULong_init(Kotlin.Long.fromInt(255)); var tmp$_1 = new UByte_init(toByte((new ULong_init(item.data.and(other.data))).data.toInt())); var $this = new ULong_init(item.data.shiftRightUnsigned(8)); var other_0 = new ULong_init(Kotlin.Long.fromInt(255)); var tmp$_2 = new UByte_init(toByte((new ULong_init($this.data.and(other_0.data))).data.toInt())); var $this_0 = new ULong_init(item.data.shiftRightUnsigned(16)); var other_1 = new ULong_init(Kotlin.Long.fromInt(255)); var tmp$_3 = new UByte_init(toByte((new ULong_init($this_0.data.and(other_1.data))).data.toInt())); var $this_1 = new ULong_init(item.data.shiftRightUnsigned(24)); var other_2 = new ULong_init(Kotlin.Long.fromInt(255)); var tmp$_4 = new UByte_init(toByte((new ULong_init($this_1.data.and(other_2.data))).data.toInt())); var $this_2 = new ULong_init(item.data.shiftRightUnsigned(32)); var other_3 = new ULong_init(Kotlin.Long.fromInt(255)); var tmp$_5 = new UByte_init(toByte((new ULong_init($this_2.data.and(other_3.data))).data.toInt())); var $this_3 = new ULong_init(item.data.shiftRightUnsigned(40)); var other_4 = new ULong_init(Kotlin.Long.fromInt(255)); var tmp$_6 = new UByte_init(toByte((new ULong_init($this_3.data.and(other_4.data))).data.toInt())); var $this_4 = new ULong_init(item.data.shiftRightUnsigned(48)); var other_5 = new ULong_init(Kotlin.Long.fromInt(255)); var tmp$_7 = new UByte_init(toByte((new ULong_init($this_4.data.and(other_5.data))).data.toInt())); var $this_5 = new ULong_init(item.data.shiftRightUnsigned(56)); var other_6 = new ULong_init(Kotlin.Long.fromInt(255)); tmp$_0.call(destination, [tmp$_1, tmp$_2, tmp$_3, tmp$_4, tmp$_5, tmp$_6, tmp$_7, new UByte_init(toByte((new ULong_init($this_5.data.and(other_6.data))).data.toInt()))]); } var destination_0 = ArrayList_init_0(); var tmp$_8; tmp$_8 = destination.iterator(); while (tmp$_8.hasNext()) { var element = tmp$_8.next(); var list = toList_0(element); addAll(destination_0, list); } return copyToArray(destination_0); }; Blake2b$Companion.prototype.padToBlock_0 = function (unpadded) { if (unpadded.length === 128) { return unpadded; } if (unpadded.length > 128) { throw IllegalStateException_init('Block larger than 128 bytes'); } var array = Array_0(128); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { var init$result; if (0 <= i && i < unpadded.length) { init$result = unpadded[i]; } else { init$result = new UByte_init(0); } array[i] = init$result; } return array; }; Blake2b$Companion.$metadata$ = { kind: Kind_OBJECT, simpleName: 'Companion', interfaces: [StatelessHash] }; var Blake2b$Companion_instance = null; function Blake2b$Companion_getInstance() { if (Blake2b$Companion_instance === null) { new Blake2b$Companion(); } return Blake2b$Companion_instance; } Object.defineProperty(Blake2b.prototype, 'MAX_HASH_BYTES', { get: function () { return this.MAX_HASH_BYTES_b5cfdo$_0; } }); Blake2b.prototype.update_ummv9a$ = function (data) { if (data.length === 0) { throw RuntimeException_init('Updating with empty array is not allowed. If you need empty hash, just call digest without updating'); } if ((this.bufferCounter + data.length | 0) < 128) this.appendToBuffer_0(data, this.bufferCounter); else if ((this.bufferCounter + data.length | 0) >= 128) { var last = data.length % 128; var hasLast = last !== 0; var numberOfSlices = data.length / 128 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(data, until(Kotlin.imul(i, 128), Kotlin.imul(i + 1 | 0, 128)))); } if (hasLast) { result.add_11rb$(slice(data, until(Kotlin.imul(numberOfSlices, 128), data.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$; tmp$ = result.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(copyToArray(item)); } var chunked = copyToArray(destination); var tmp$_0; for (tmp$_0 = 0; tmp$_0 !== chunked.length; ++tmp$_0) { var element = chunked[tmp$_0]; if ((this.bufferCounter + element.length | 0) < 128) { this.appendToBuffer_0(element, this.bufferCounter); } else { arrayCopy(element, this.buffer, this.bufferCounter, 0, 128 - this.bufferCounter | 0); this.counter = this.counter.plus_za3lpa$(128); this.consumeBlock_0(this.buffer); var array = Array_0(128); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_1; i_0++) { var init$result; var tmp$_2; tmp$_2 = element.length - (128 - this.bufferCounter) | 0; if (0 <= i_0 && i_0 < tmp$_2) { init$result = element[i_0 + (128 - this.bufferCounter) | 0]; } else { init$result = new UByte_init(0); } array[i_0] = init$result; } this.buffer = array; this.bufferCounter = element.length - (128 - this.bufferCounter) | 0; } } } }; Blake2b.prototype.update_61zpoe$ = function (data) { var $receiver = encodeToByteArray(data); var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(new UByte_init(item)); } this.update_ummv9a$(copyToArray(destination)); }; Blake2b.prototype.appendToBuffer_0 = function (array, start) { arrayCopy(array, this.buffer, start, 0, array.length); this.bufferCounter = this.bufferCounter + array.length | 0; }; Blake2b.prototype.consumeBlock_0 = function (block) { this.h = Blake2b$Companion_getInstance().compress_c1cv33$(this.h, block, this.counter, false); }; Blake2b.prototype.digest = function () { var lastBlockPadded = Blake2b$Companion_getInstance().padToBlock_0(this.buffer); this.counter = this.counter.plus_za3lpa$(this.bufferCounter); Blake2b$Companion_getInstance().compress_c1cv33$(this.h, lastBlockPadded, this.counter, true); var result = Blake2b$Companion_getInstance().formatResult_0(this.h); this.reset_0(); return result; }; Blake2b.prototype.digestString = function () { var $receiver = this.digest(); var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(toString(item, 16)); } return joinToString(destination, ''); }; Blake2b.prototype.reset_0 = function () { this.h = Blake2b$Companion_getInstance().iv_0.slice(); this.counter = BigInteger.Companion.ZERO; this.bufferCounter = 0; var array = Array_0(128); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { array[i] = new UByte_init(0); } this.buffer = array; }; Blake2b.$metadata$ = { kind: Kind_CLASS, simpleName: 'Blake2b', interfaces: [UpdatableHash] }; function Blake2b_init(key, requestedHashLenght, $this) { if (requestedHashLenght === void 0) requestedHashLenght = 64; $this = $this || Object.create(Blake2b.prototype); var tmp$, tmp$_0, tmp$_1; var tmp$_2; if ((tmp$ = key != null ? encodeToByteArray(key) : null) != null) { var destination = ArrayList_init(tmp$.length); var tmp$_3; for (tmp$_3 = 0; tmp$_3 !== tmp$.length; ++tmp$_3) { var item = tmp$[tmp$_3]; destination.add_11rb$(new UByte_init(item)); } tmp$_2 = destination; } else tmp$_2 = null; Blake2b.call($this, (tmp$_1 = (tmp$_0 = tmp$_2) != null ? copyToArray(tmp$_0) : null) != null ? tmp$_1 : [], requestedHashLenght); return $this; } var chunked$lambda_0 = wrapFunction(function () { var copyToArray = Kotlin.kotlin.collections.copyToArray; return function (it) { return copyToArray(it); }; }); function Sha256() { Sha256$Companion_getInstance(); this.MAX_HASH_BYTES_mqxonl$_0 = 32; this.h = Sha256$Companion_getInstance().iv.slice(); this.counter = 0; this.bufferCounter = 0; var array = Array_0(64); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { array[i] = new UByte_init(0); } this.buffer = array; } Object.defineProperty(Sha256.prototype, 'MAX_HASH_BYTES', { get: function () { return this.MAX_HASH_BYTES_mqxonl$_0; } }); function Sha256$Companion() { Sha256$Companion_instance = this; this.BLOCK_SIZE = 512; this.BLOCK_SIZE_IN_BYTES = 64; this.UINT_MASK = new UInt(-1); this.BYTE_MASK_FROM_ULONG = new ULong_init(Kotlin.Long.fromInt(255)); this.BYTE_MASK_FROM_UINT = new UInt(255); this.MAX_HASH_BYTES_at6ood$_0 = 32; this.iv = [new UInt(1779033703), new UInt(-1150833019), new UInt(1013904242), new UInt(-1521486534), new UInt(1359893119), new UInt(-1694144372), new UInt(528734635), new UInt(1541459225)]; this.k = [new UInt(1116352408), new UInt(1899447441), new UInt(-1245643825), new UInt(-373957723), new UInt(961987163), new UInt(1508970993), new UInt(-1841331548), new UInt(-1424204075), new UInt(-670586216), new UInt(310598401), new UInt(607225278), new UInt(1426881987), new UInt(1925078388), new UInt(-2132889090), new UInt(-1680079193), new UInt(-1046744716), new UInt(-459576895), new UInt(-272742522), new UInt(264347078), new UInt(604807628), new UInt(770255983), new UInt(1249150122), new UInt(1555081692), new UInt(1996064986), new UInt(-1740746414), new UInt(-1473132947), new UInt(-1341970488), new UInt(-1084653625), new UInt(-958395405), new UInt(-710438585), new UInt(113926993), new UInt(338241895), new UInt(666307205), new UInt(773529912), new UInt(1294757372), new UInt(1396182291), new UInt(1695183700), new UInt(1986661051), new UInt(-2117940946), new UInt(-1838011259), new UInt(-1564481375), new UInt(-1474664885), new UInt(-1035236496), new UInt(-949202525), new UInt(-778901479), new UInt(-694614492), new UInt(-200395387), new UInt(275423344), new UInt(430227734), new UInt(506948616), new UInt(659060556), new UInt(883997877), new UInt(958139571), new UInt(1322822218), new UInt(1537002063), new UInt(1747873779), new UInt(1955562222), new UInt(2024104815), new UInt(-2067236844), new UInt(-1933114872), new UInt(-1866530822), new UInt(-1538233109), new UInt(-1090935817), new UInt(-965641998)]; } Object.defineProperty(Sha256$Companion.prototype, 'MAX_HASH_BYTES', { get: function () { return this.MAX_HASH_BYTES_at6ood$_0; } }); Sha256$Companion.prototype.digest_5pksov$$default = function (inputString, key, hashLength) { var tmp$, tmp$_0; var $receiver = encodeToByteArray(inputString); var destination = ArrayList_init($receiver.length); var tmp$_1; for (tmp$_1 = 0; tmp$_1 !== $receiver.length; ++tmp$_1) { var item = $receiver[tmp$_1]; destination.add_11rb$(new UByte_init(item)); } tmp$ = copyToArray(destination); var tmp$_2; if (key != null) { var $receiver_0 = encodeToByteArray(key); var destination_0 = ArrayList_init($receiver_0.length); var tmp$_3; for (tmp$_3 = 0; tmp$_3 !== $receiver_0.length; ++tmp$_3) { var item_0 = $receiver_0[tmp$_3]; destination_0.add_11rb$(new UByte_init(item_0)); } tmp$_2 = copyToArray(destination_0); } else tmp$_2 = null; return this.digest_o2z9gi$(tmp$, (tmp$_0 = tmp$_2) != null ? tmp$_0 : [], hashLength); }; Sha256$Companion.prototype.digest_o2z9gi$$default = function (inputMessage, key, hashLength) { var h = {v: this.iv.slice()}; var expansionArray = this.createExpansionArray_za3lpa$(inputMessage.length); var tmp$ = inputMessage.concat(expansionArray); var $receiver = inputMessage.length * 8 | 0; var elements = this.toPaddedByteArray_0(new ULong_init(Kotlin.Long.fromInt($receiver))); var $receiver_0 = tmp$.concat(elements); var last = $receiver_0.length % 64; var hasLast = last !== 0; var numberOfSlices = $receiver_0.length / 64 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice($receiver_0, until(Kotlin.imul(i, 64), Kotlin.imul(i + 1 | 0, 64)))); } if (hasLast) { result.add_11rb$(slice($receiver_0, until(Kotlin.imul(numberOfSlices, 64), $receiver_0.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$_0; tmp$_0 = result.iterator(); while (tmp$_0.hasNext()) { var item = tmp$_0.next(); destination.add_11rb$(copyToArray(item)); } var chunks = copyToArray(destination); var tmp$_1; for (tmp$_1 = 0; tmp$_1 !== chunks.length; ++tmp$_1) { var element = chunks[tmp$_1]; var w = this.expandChunk_0(element); var $receiver_1 = this.mix_0(h.v, w); arrayCopy($receiver_1, h.v, 0, 0, $receiver_1.length); } var $receiver_2 = this.toPaddedByteArray_1(h.v[0]); var elements_0 = this.toPaddedByteArray_1(h.v[1]); var $receiver_3 = $receiver_2.concat(elements_0); var elements_1 = this.toPaddedByteArray_1(h.v[2]); var $receiver_4 = $receiver_3.concat(elements_1); var elements_2 = this.toPaddedByteArray_1(h.v[3]); var $receiver_5 = $receiver_4.concat(elements_2); var elements_3 = this.toPaddedByteArray_1(h.v[4]); var $receiver_6 = $receiver_5.concat(elements_3); var elements_4 = this.toPaddedByteArray_1(h.v[5]); var $receiver_7 = $receiver_6.concat(elements_4); var elements_5 = this.toPaddedByteArray_1(h.v[6]); var $receiver_8 = $receiver_7.concat(elements_5); var elements_6 = this.toPaddedByteArray_1(h.v[7]); var digest = $receiver_8.concat(elements_6); return digest; }; Sha256$Companion.prototype.scheduleSigma0_0 = function (value) { var $this = rotateRight(value, 7); var other = rotateRight(value, 18); var tmp$ = new UInt($this.data ^ other.data); var other_0 = new UInt(value.data >>> 3); return new UInt(tmp$.data ^ other_0.data); }; Sha256$Companion.prototype.scheduleSigma1_0 = function (value) { var $this = rotateRight(value, 17); var other = rotateRight(value, 19); var tmp$ = new UInt($this.data ^ other.data); var other_0 = new UInt(value.data >>> 10); return new UInt(tmp$.data ^ other_0.data); }; Sha256$Companion.prototype.compressionSigma0_0 = function (a) { var $this = rotateRight(a, 2); var other = rotateRight(a, 13); var $this_0 = new UInt($this.data ^ other.data); var other_0 = rotateRight(a, 22); return new UInt($this_0.data ^ other_0.data); }; Sha256$Companion.prototype.compressionSigma1_0 = function (e) { var $this = rotateRight(e, 6); var other = rotateRight(e, 11); var $this_0 = new UInt($this.data ^ other.data); var other_0 = rotateRight(e, 25); return new UInt($this_0.data ^ other_0.data); }; Sha256$Companion.prototype.ch_0 = function (x, y, z) { var tmp$ = new UInt(x.data & y.data); var other = this.UINT_MASK; var other_0 = new UInt((new UInt(x.data ^ other.data)).data & z.data); return new UInt(tmp$.data ^ other_0.data); }; Sha256$Companion.prototype.maj_0 = function (x, y, z) { var tmp$ = new UInt(x.data & y.data); var other = new UInt(x.data & z.data); var tmp$_0 = new UInt(tmp$.data ^ other.data); var other_0 = new UInt(y.data & z.data); return new UInt(tmp$_0.data ^ other_0.data); }; Sha256$Companion.prototype.expandChunk_0 = function (chunk) { var array = Array_0(64); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { var init$result; if (0 <= i && i < 16) { var tmp$_0 = new UInt((new UInt(chunk[i * 4 | 0].data & 255)).data << 24); var other = new UInt((new UInt(chunk[(i * 4 | 0) + 1 | 0].data & 255)).data << 16); var tmp$_1 = new UInt(tmp$_0.data + other.data | 0); var other_0 = new UInt((new UInt(chunk[(i * 4 | 0) + 2 | 0].data & 255)).data << 8); var tmp$_2 = new UInt(tmp$_1.data + other_0.data | 0); var other_1 = new UInt(chunk[(i * 4 | 0) + 3 | 0].data & 255); var collected = new UInt(tmp$_2.data + other_1.data | 0); init$result = collected; } else { init$result = new UInt(0); } array[i] = init$result; } var w = array; for (var i_0 = 16; i_0 < 64; i_0++) { var s0 = this.scheduleSigma0_0(w[i_0 - 15 | 0]); var s1 = this.scheduleSigma1_0(w[i_0 - 2 | 0]); var $this = new UInt(w[i_0 - 16 | 0].data + s0.data | 0); var other_2 = w[i_0 - 7 | 0]; w[i_0] = new UInt((new UInt($this.data + other_2.data | 0)).data + s1.data | 0); } return w; }; Sha256$Companion.prototype.mix_0 = function (h, w) { var paramA = h[0]; var paramB = h[1]; var paramC = h[2]; var paramD = h[3]; var paramE = h[4]; var paramF = h[5]; var paramG = h[6]; var paramH = h[7]; for (var i = 0; i < 64; i++) { var s1 = this.compressionSigma1_0(paramE); var ch = this.ch_0(paramE, paramF, paramG); var $this = new UInt((new UInt(paramH.data + s1.data | 0)).data + ch.data | 0); var other = this.k[i]; var $this_0 = new UInt($this.data + other.data | 0); var other_0 = w[i]; var temp1 = new UInt($this_0.data + other_0.data | 0); var s0 = this.compressionSigma0_0(paramA); var maj = this.maj_0(paramA, paramB, paramC); var temp2 = new UInt(s0.data + maj.data | 0); paramH = paramG; paramG = paramF; paramF = paramE; paramE = new UInt(paramD.data + temp1.data | 0); paramD = paramC; paramC = paramB; paramB = paramA; paramA = new UInt(temp1.data + temp2.data | 0); } var $this_1 = h[0]; var other_1 = paramA; h[0] = new UInt($this_1.data + other_1.data | 0); var $this_2 = h[1]; var other_2 = paramB; h[1] = new UInt($this_2.data + other_2.data | 0); var $this_3 = h[2]; var other_3 = paramC; h[2] = new UInt($this_3.data + other_3.data | 0); var $this_4 = h[3]; var other_4 = paramD; h[3] = new UInt($this_4.data + other_4.data | 0); var $this_5 = h[4]; var other_5 = paramE; h[4] = new UInt($this_5.data + other_5.data | 0); var $this_6 = h[5]; var other_6 = paramF; h[5] = new UInt($this_6.data + other_6.data | 0); var $this_7 = h[6]; var other_7 = paramG; h[6] = new UInt($this_7.data + other_7.data | 0); var $this_8 = h[7]; var other_8 = paramH; h[7] = new UInt($this_8.data + other_8.data | 0); return h; }; Sha256$Companion.prototype.createExpansionArray_za3lpa$ = function (originalSizeInBytes) { var tmp$; var originalMessageSizeInBits = originalSizeInBytes * 8 | 0; var expandedRemainderOf512 = (originalMessageSizeInBits + 64 + 1 | 0) % 512; if (expandedRemainderOf512 === 0) tmp$ = 0; else tmp$ = (512 - expandedRemainderOf512 | 0) / 8 | 0; var zeroAddAmount = tmp$; var array = Array_0(zeroAddAmount + 1 | 0); var tmp$_0; tmp$_0 = array.length - 1 | 0; for (var i = 0; i <= tmp$_0; i++) { var init$result; if (i === 0) { init$result = new UByte_init(-128); } else { init$result = new UByte_init(0); } array[i] = init$result; } var expansionArray = array; return expansionArray; }; Sha256$Companion.prototype.toPaddedByteArray_0 = function ($receiver) { var byteMask = this.BYTE_MASK_FROM_ULONG; var array = Array_0(8); var tmp$; tmp$ = array.length - 1 | 0; loop_label: for (var i = 0; i <= tmp$; i++) { var init$result; init$break: do { switch (i) { case 7: init$result = new UByte_init(toByte((new ULong_init($receiver.data.and(byteMask.data))).data.toInt())); break init$break; case 6: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(8))).data.and(byteMask.data))).data.toInt())); break init$break; case 5: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(16))).data.and(byteMask.data))).data.toInt())); break init$break; case 4: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(24))).data.and(byteMask.data))).data.toInt())); break init$break; case 3: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(32))).data.and(byteMask.data))).data.toInt())); break init$break; case 2: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(40))).data.and(byteMask.data))).data.toInt())); break init$break; case 1: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(48))).data.and(byteMask.data))).data.toInt())); break init$break; case 0: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(54))).data.and(byteMask.data))).data.toInt())); break init$break; default:throw RuntimeException_init('Invalid conversion'); } } while (false); array[i] = init$result; } return array; }; Sha256$Companion.prototype.toPaddedByteArray_1 = function ($receiver) { var byteMask = this.BYTE_MASK_FROM_UINT; var array = Array_0(4); var tmp$; tmp$ = array.length - 1 | 0; loop_label: for (var i = 0; i <= tmp$; i++) { var init$result; init$break: do { switch (i) { case 3: init$result = new UByte_init(toByte((new UInt($receiver.data & byteMask.data)).data)); break init$break; case 2: init$result = new UByte_init(toByte((new UInt((new UInt($receiver.data >>> 8)).data & byteMask.data)).data)); break init$break; case 1: init$result = new UByte_init(toByte((new UInt((new UInt($receiver.data >>> 16)).data & byteMask.data)).data)); break init$break; case 0: init$result = new UByte_init(toByte((new UInt((new UInt($receiver.data >>> 24)).data & byteMask.data)).data)); break init$break; default:throw RuntimeException_init('Invalid conversion'); } } while (false); array[i] = init$result; } return array; }; Sha256$Companion.$metadata$ = { kind: Kind_OBJECT, simpleName: 'Companion', interfaces: [StatelessHash] }; var Sha256$Companion_instance = null; function Sha256$Companion_getInstance() { if (Sha256$Companion_instance === null) { new Sha256$Companion(); } return Sha256$Companion_instance; } Sha256.prototype.update_61zpoe$ = function (data) { var $receiver = encodeToByteArray(data); var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(new UByte_init(item)); } return this.update_ummv9a$(copyToArray(destination)); }; Sha256.prototype.update_ummv9a$ = function (data) { if (data.length === 0) { throw RuntimeException_init('Updating with empty array is not allowed. If you need empty hash, just call digest without updating'); } if ((this.bufferCounter + data.length | 0) < 64) this.appendToBuffer_0(data, this.bufferCounter); else if ((this.bufferCounter + data.length | 0) >= 64) { var last = data.length % 64; var hasLast = last !== 0; var numberOfSlices = data.length / 64 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(data, until(Kotlin.imul(i, 64), Kotlin.imul(i + 1 | 0, 64)))); } if (hasLast) { result.add_11rb$(slice(data, until(Kotlin.imul(numberOfSlices, 64), data.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$; tmp$ = result.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(copyToArray(item)); } var chunked = copyToArray(destination); var tmp$_0; for (tmp$_0 = 0; tmp$_0 !== chunked.length; ++tmp$_0) { var element = chunked[tmp$_0]; if ((this.bufferCounter + element.length | 0) < 64) { this.appendToBuffer_0(element, this.bufferCounter); } else { arrayCopy(element, this.buffer, this.bufferCounter, 0, 64 - this.bufferCounter | 0); this.counter = this.counter + 64 | 0; this.consumeBlock_0(this.buffer); var array = Array_0(64); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_1; i_0++) { var init$result; var tmp$_2; tmp$_2 = element.length - (64 - this.bufferCounter) | 0; if (0 <= i_0 && i_0 < tmp$_2) { init$result = element[i_0 + (64 - this.bufferCounter) | 0]; } else { init$result = new UByte_init(0); } array[i_0] = init$result; } this.buffer = array; this.bufferCounter = element.length - (64 - this.bufferCounter) | 0; } } } }; Sha256.prototype.consumeBlock_0 = function (block) { var w = Sha256$Companion_getInstance().expandChunk_0(block); var $receiver = Sha256$Companion_getInstance().mix_0(this.h, w); arrayCopy($receiver, this.h, 0, 0, $receiver.length); }; Sha256.prototype.digest = function () { var length = this.counter + this.bufferCounter | 0; var expansionArray = Sha256$Companion_getInstance().createExpansionArray_za3lpa$(length); var tmp$ = copyOfRange(this.buffer, 0, this.bufferCounter).concat(expansionArray); var tmp$_0 = Sha256$Companion_getInstance(); var $receiver = length * 8 | 0; var elements = tmp$_0.toPaddedByteArray_0(new ULong_init(Kotlin.Long.fromInt($receiver))); var finalBlock = tmp$.concat(elements); var last = finalBlock.length % 64; var hasLast = last !== 0; var numberOfSlices = finalBlock.length / 64 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(finalBlock, until(Kotlin.imul(i, 64), Kotlin.imul(i + 1 | 0, 64)))); } if (hasLast) { result.add_11rb$(slice(finalBlock, until(Kotlin.imul(numberOfSlices, 64), finalBlock.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$_1; tmp$_1 = result.iterator(); while (tmp$_1.hasNext()) { var item = tmp$_1.next(); destination.add_11rb$(copyToArray(item)); } var $receiver_0 = copyToArray(destination); var tmp$_2; for (tmp$_2 = 0; tmp$_2 !== $receiver_0.length; ++tmp$_2) { var element = $receiver_0[tmp$_2]; this.consumeBlock_0(element); } var $receiver_1 = Sha256$Companion_getInstance().toPaddedByteArray_1(this.h[0]); var elements_0 = Sha256$Companion_getInstance().toPaddedByteArray_1(this.h[1]); var $receiver_2 = $receiver_1.concat(elements_0); var elements_1 = Sha256$Companion_getInstance().toPaddedByteArray_1(this.h[2]); var $receiver_3 = $receiver_2.concat(elements_1); var elements_2 = Sha256$Companion_getInstance().toPaddedByteArray_1(this.h[3]); var $receiver_4 = $receiver_3.concat(elements_2); var elements_3 = Sha256$Companion_getInstance().toPaddedByteArray_1(this.h[4]); var $receiver_5 = $receiver_4.concat(elements_3); var elements_4 = Sha256$Companion_getInstance().toPaddedByteArray_1(this.h[5]); var $receiver_6 = $receiver_5.concat(elements_4); var elements_5 = Sha256$Companion_getInstance().toPaddedByteArray_1(this.h[6]); var $receiver_7 = $receiver_6.concat(elements_5); var elements_6 = Sha256$Companion_getInstance().toPaddedByteArray_1(this.h[7]); var digest = $receiver_7.concat(elements_6); return digest; }; Sha256.prototype.digestString = function () { var $receiver = this.digest(); var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(toString(item, 16)); } return joinToString(destination, ''); }; Sha256.prototype.appendToBuffer_0 = function (array, start) { arrayCopy(array, this.buffer, start, 0, array.length); this.bufferCounter = this.bufferCounter + array.length | 0; }; Sha256.$metadata$ = { kind: Kind_CLASS, simpleName: 'Sha256', interfaces: [UpdatableHash] }; var chunked$lambda_1 = wrapFunction(function () { var copyToArray = Kotlin.kotlin.collections.copyToArray; return function (it) { return copyToArray(it); }; }); function Sha512() { Sha512$Companion_getInstance(); this.MAX_HASH_BYTES_h6j4ni$_0 = 32; this.h = Sha512$Companion_getInstance().iv.slice(); this.counter = 0; this.bufferCounter = 0; var array = Array_0(128); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { array[i] = new UByte_init(0); } this.buffer = array; } Object.defineProperty(Sha512.prototype, 'MAX_HASH_BYTES', { get: function () { return this.MAX_HASH_BYTES_h6j4ni$_0; } }); function Sha512$Companion() { Sha512$Companion_instance = this; this.BLOCK_SIZE = 1024; this.BLOCK_SIZE_IN_BYTES = 128; this.CHUNK_SIZE = 80; this.ULONG_MASK = new ULong_init(Kotlin.Long.NEG_ONE); this.MAX_HASH_BYTES_1k9xu8$_0 = 32; this.k = [new ULong_init(new Kotlin.Long(-685199838, 1116352408)), new ULong_init(new Kotlin.Long(602891725, 1899447441)), new ULong_init(new Kotlin.Long(-330482897, -1245643825)), new ULong_init(new Kotlin.Long(-2121671748, -373957723)), new ULong_init(new Kotlin.Long(-213338824, 961987163)), new ULong_init(new Kotlin.Long(-1241133031, 1508970993)), new ULong_init(new Kotlin.Long(-1357295717, -1841331548)), new ULong_init(new Kotlin.Long(-630357736, -1424204075)), new ULong_init(new Kotlin.Long(-1560083902, -670586216)), new ULong_init(new Kotlin.Long(1164996542, 310598401)), new ULong_init(new Kotlin.Long(1323610764, 607225278)), new ULong_init(new Kotlin.Long(-704662302, 1426881987)), new ULong_init(new Kotlin.Long(-226784913, 1925078388)), new ULong_init(new Kotlin.Long(991336113, -2132889090)), new ULong_init(new Kotlin.Long(633803317, -1680079193)), new ULong_init(new Kotlin.Long(-815192428, -1046744716)), new ULong_init(new Kotlin.Long(-1628353838, -459576895)), new ULong_init(new Kotlin.Long(944711139, -272742522)), new ULong_init(new Kotlin.Long(-1953704523, 264347078)), new ULong_init(new Kotlin.Long(2007800933, 604807628)), new ULong_init(new Kotlin.Long(1495990901, 770255983)), new ULong_init(new Kotlin.Long(1856431235, 1249150122)), new ULong_init(new Kotlin.Long(-1119749164, 1555081692)), new ULong_init(new Kotlin.Long(-2096016459, 1996064986)), new ULong_init(new Kotlin.Long(-295247957, -1740746414)), new ULong_init(new Kotlin.Long(766784016, -1473132947)), new ULong_init(new Kotlin.Long(-1728372417, -1341970488)), new ULong_init(new Kotlin.Long(-1091629340, -1084653625)), new ULong_init(new Kotlin.Long(1034457026, -958395405)), new ULong_init(new Kotlin.Long(-1828018395, -710438585)), new ULong_init(new Kotlin.Long(-536640913, 113926993)), new ULong_init(new Kotlin.Long(168717936, 338241895)), new ULong_init(new Kotlin.Long(1188179964, 666307205)), new ULong_init(new Kotlin.Long(1546045734, 773529912)), new ULong_init(new Kotlin.Long(1522805485, 1294757372)), new ULong_init(new Kotlin.Long(-1651133473, 1396182291)), new ULong_init(new Kotlin.Long(-1951439906, 1695183700)), new ULong_init(new Kotlin.Long(1014477480, 1986661051)), new ULong_init(new Kotlin.Long(1206759142, -2117940946)), new ULong_init(new Kotlin.Long(344077627, -1838011259)), new ULong_init(new Kotlin.Long(1290863460, -1564481375)), new ULong_init(new Kotlin.Long(-1136513023, -1474664885)), new ULong_init(new Kotlin.Long(-789014639, -1035236496)), new ULong_init(new Kotlin.Long(106217008, -949202525)), new ULong_init(new Kotlin.Long(-688958952, -778901479)), new ULong_init(new Kotlin.Long(1432725776, -694614492)), new ULong_init(new Kotlin.Long(1467031594, -200395387)), new ULong_init(new Kotlin.Long(851169720, 275423344)), new ULong_init(new Kotlin.Long(-1194143544, 430227734)), new ULong_init(new Kotlin.Long(1363258195, 506948616)), new ULong_init(new Kotlin.Long(-544281703, 659060556)), new ULong_init(new Kotlin.Long(-509917016, 883997877)), new ULong_init(new Kotlin.Long(-976659869, 958139571)), new ULong_init(new Kotlin.Long(-482243893, 1322822218)), new ULong_init(new Kotlin.Long(2003034995, 1537002063)), new ULong_init(new Kotlin.Long(-692930397, 1747873779)), new ULong_init(new Kotlin.Long(1575990012, 1955562222)), new ULong_init(new Kotlin.Long(1125592928, 2024104815)), new ULong_init(new Kotlin.Long(-1578062990, -2067236844)), new ULong_init(new Kotlin.Long(442776044, -1933114872)), new ULong_init(new Kotlin.Long(593698344, -1866530822)), new ULong_init(new Kotlin.Long(-561857047, -1538233109)), new ULong_init(new Kotlin.Long(-1295615723, -1090935817)), new ULong_init(new Kotlin.Long(-479046869, -965641998)), new ULong_init(new Kotlin.Long(-366583396, -903397682)), new ULong_init(new Kotlin.Long(566280711, -779700025)), new ULong_init(new Kotlin.Long(-840897762, -354779690)), new ULong_init(new Kotlin.Long(-294727304, -176337025)), new ULong_init(new Kotlin.Long(1914138554, 116418474)), new ULong_init(new Kotlin.Long(-1563912026, 174292421)), new ULong_init(new Kotlin.Long(-1090974290, 289380356)), new ULong_init(new Kotlin.Long(320620315, 460393269)), new ULong_init(new Kotlin.Long(587496836, 685471733)), new ULong_init(new Kotlin.Long(1086792851, 852142971)), new ULong_init(new Kotlin.Long(365543100, 1017036298)), new ULong_init(new Kotlin.Long(-1676669620, 1126000580)), new ULong_init(new Kotlin.Long(-885112138, 1288033470)), new ULong_init(new Kotlin.Long(-60457430, 1501505948)), new ULong_init(new Kotlin.Long(987167468, 1607167915)), new ULong_init(new Kotlin.Long(1246189591, 1816402316))]; this.iv = [new ULong_init(new Kotlin.Long(-205731576, 1779033703)), new ULong_init(new Kotlin.Long(-2067093701, -1150833019)), new ULong_init(new Kotlin.Long(-23791573, 1013904242)), new ULong_init(new Kotlin.Long(1595750129, -1521486534)), new ULong_init(new Kotlin.Long(-1377402159, 1359893119)), new ULong_init(new Kotlin.Long(725511199, -1694144372)), new ULong_init(new Kotlin.Long(-79577749, 528734635)), new ULong_init(new Kotlin.Long(327033209, 1541459225))]; } Object.defineProperty(Sha512$Companion.prototype, 'MAX_HASH_BYTES', { get: function () { return this.MAX_HASH_BYTES_1k9xu8$_0; } }); Sha512$Companion.prototype.digest_5pksov$$default = function (inputString, key, hashLength) { var tmp$, tmp$_0; var $receiver = encodeToByteArray(inputString); var destination = ArrayList_init($receiver.length); var tmp$_1; for (tmp$_1 = 0; tmp$_1 !== $receiver.length; ++tmp$_1) { var item = $receiver[tmp$_1]; destination.add_11rb$(new UByte_init(item)); } tmp$ = copyToArray(destination); var tmp$_2; if (key != null) { var $receiver_0 = encodeToByteArray(key); var destination_0 = ArrayList_init($receiver_0.length); var tmp$_3; for (tmp$_3 = 0; tmp$_3 !== $receiver_0.length; ++tmp$_3) { var item_0 = $receiver_0[tmp$_3]; destination_0.add_11rb$(new UByte_init(item_0)); } tmp$_2 = copyToArray(destination_0); } else tmp$_2 = null; return this.digest_o2z9gi$(tmp$, (tmp$_0 = tmp$_2) != null ? tmp$_0 : [], hashLength); }; Sha512$Companion.prototype.digest_o2z9gi$$default = function (inputMessage, key, hashLength) { var h = {v: this.iv.slice()}; var expansionArray = this.createExpansionArray_za3lpa$(inputMessage.length); var tmp$ = inputMessage.concat(expansionArray); var $receiver = inputMessage.length * 8 | 0; var elements = this.toPadded128BitByteArray_0(new ULong_init(Kotlin.Long.fromInt($receiver))); var $receiver_0 = tmp$.concat(elements); var last = $receiver_0.length % 128; var hasLast = last !== 0; var numberOfSlices = $receiver_0.length / 128 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice($receiver_0, until(Kotlin.imul(i, 128), Kotlin.imul(i + 1 | 0, 128)))); } if (hasLast) { result.add_11rb$(slice($receiver_0, until(Kotlin.imul(numberOfSlices, 128), $receiver_0.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$_0; tmp$_0 = result.iterator(); while (tmp$_0.hasNext()) { var item = tmp$_0.next(); destination.add_11rb$(copyToArray(item)); } var chunks = copyToArray(destination); var tmp$_1; for (tmp$_1 = 0; tmp$_1 !== chunks.length; ++tmp$_1) { var element = chunks[tmp$_1]; var w = this.expandChunk_0(element); this.mix_0(h.v, w); } var $receiver_1 = this.toPaddedByteArray_0(h.v[0]); var elements_0 = this.toPaddedByteArray_0(h.v[1]); var $receiver_2 = $receiver_1.concat(elements_0); var elements_1 = this.toPaddedByteArray_0(h.v[2]); var $receiver_3 = $receiver_2.concat(elements_1); var elements_2 = this.toPaddedByteArray_0(h.v[3]); var $receiver_4 = $receiver_3.concat(elements_2); var elements_3 = this.toPaddedByteArray_0(h.v[4]); var $receiver_5 = $receiver_4.concat(elements_3); var elements_4 = this.toPaddedByteArray_0(h.v[5]); var $receiver_6 = $receiver_5.concat(elements_4); var elements_5 = this.toPaddedByteArray_0(h.v[6]); var $receiver_7 = $receiver_6.concat(elements_5); var elements_6 = this.toPaddedByteArray_0(h.v[7]); var digest = $receiver_7.concat(elements_6); return digest; }; Sha512$Companion.prototype.scheduleSigma0_0 = function (value) { var $this = rotateRight_0(value, 1); var other = rotateRight_0(value, 8); var tmp$ = new ULong_init($this.data.xor(other.data)); var other_0 = new ULong_init(value.data.shiftRightUnsigned(7)); return new ULong_init(tmp$.data.xor(other_0.data)); }; Sha512$Companion.prototype.scheduleSigma1_0 = function (value) { var $this = rotateRight_0(value, 19); var other = rotateRight_0(value, 61); var tmp$ = new ULong_init($this.data.xor(other.data)); var other_0 = new ULong_init(value.data.shiftRightUnsigned(6)); return new ULong_init(tmp$.data.xor(other_0.data)); }; Sha512$Companion.prototype.compressionSigma0_0 = function (e) { var $this = rotateRight_0(e, 28); var other = rotateRight_0(e, 34); var $this_0 = new ULong_init($this.data.xor(other.data)); var other_0 = rotateRight_0(e, 39); return new ULong_init($this_0.data.xor(other_0.data)); }; Sha512$Companion.prototype.compressionSigma1_0 = function (a) { var $this = rotateRight_0(a, 14); var other = rotateRight_0(a, 18); var $this_0 = new ULong_init($this.data.xor(other.data)); var other_0 = rotateRight_0(a, 41); return new ULong_init($this_0.data.xor(other_0.data)); }; Sha512$Companion.prototype.ch_0 = function (x, y, z) { var tmp$ = new ULong_init(x.data.and(y.data)); var other = this.ULONG_MASK; var other_0 = new ULong_init((new ULong_init(x.data.xor(other.data))).data.and(z.data)); return new ULong_init(tmp$.data.xor(other_0.data)); }; Sha512$Companion.prototype.maj_0 = function (x, y, z) { var tmp$ = new ULong_init(x.data.and(y.data)); var other = new ULong_init(x.data.and(z.data)); var tmp$_0 = new ULong_init(tmp$.data.xor(other.data)); var other_0 = new ULong_init(y.data.and(z.data)); return new ULong_init(tmp$_0.data.xor(other_0.data)); }; Sha512$Companion.prototype.expandChunk_0 = function (chunk) { var array = Array_0(80); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { var init$result; if (0 <= i && i < 16) { var $this = chunk[i * 8 | 0]; var tmp$_0 = new ULong_init((new ULong_init(Kotlin.Long.fromInt($this.data).and(L255))).data.shiftLeft(56)); var $this_0 = chunk[(i * 8 | 0) + 1 | 0]; var other = new ULong_init((new ULong_init(Kotlin.Long.fromInt($this_0.data).and(L255))).data.shiftLeft(48)); var tmp$_1 = new ULong_init(tmp$_0.data.add(other.data)); var $this_1 = chunk[(i * 8 | 0) + 2 | 0]; var other_0 = new ULong_init((new ULong_init(Kotlin.Long.fromInt($this_1.data).and(L255))).data.shiftLeft(40)); var tmp$_2 = new ULong_init(tmp$_1.data.add(other_0.data)); var $this_2 = chunk[(i * 8 | 0) + 3 | 0]; var other_1 = new ULong_init((new ULong_init(Kotlin.Long.fromInt($this_2.data).and(L255))).data.shiftLeft(32)); var tmp$_3 = new ULong_init(tmp$_2.data.add(other_1.data)); var $this_3 = chunk[(i * 8 | 0) + 4 | 0]; var other_2 = new ULong_init((new ULong_init(Kotlin.Long.fromInt($this_3.data).and(L255))).data.shiftLeft(24)); var tmp$_4 = new ULong_init(tmp$_3.data.add(other_2.data)); var $this_4 = chunk[(i * 8 | 0) + 5 | 0]; var other_3 = new ULong_init((new ULong_init(Kotlin.Long.fromInt($this_4.data).and(L255))).data.shiftLeft(16)); var tmp$_5 = new ULong_init(tmp$_4.data.add(other_3.data)); var $this_5 = chunk[(i * 8 | 0) + 6 | 0]; var other_4 = new ULong_init((new ULong_init(Kotlin.Long.fromInt($this_5.data).and(L255))).data.shiftLeft(8)); var tmp$_6 = new ULong_init(tmp$_5.data.add(other_4.data)); var $this_6 = chunk[(i * 8 | 0) + 7 | 0]; var other_5 = new ULong_init(Kotlin.Long.fromInt($this_6.data).and(L255)); var collected = new ULong_init(tmp$_6.data.add(other_5.data)); init$result = collected; } else { init$result = new ULong_init(Kotlin.Long.ZERO); } array[i] = init$result; } var w = array; for (var i_0 = 16; i_0 < 80; i_0++) { var s0 = this.scheduleSigma0_0(w[i_0 - 15 | 0]); var s1 = this.scheduleSigma1_0(w[i_0 - 2 | 0]); var $this_7 = new ULong_init(w[i_0 - 16 | 0].data.add(s0.data)); var other_6 = w[i_0 - 7 | 0]; w[i_0] = new ULong_init((new ULong_init($this_7.data.add(other_6.data))).data.add(s1.data)); } return w; }; Sha512$Companion.prototype.mix_0 = function (h, w) { var paramA = h[0]; var paramB = h[1]; var paramC = h[2]; var paramD = h[3]; var paramE = h[4]; var paramF = h[5]; var paramG = h[6]; var paramH = h[7]; for (var i = 0; i < 80; i++) { var s1 = this.compressionSigma1_0(paramE); var ch = this.ch_0(paramE, paramF, paramG); var $this = new ULong_init((new ULong_init(paramH.data.add(s1.data))).data.add(ch.data)); var other = this.k[i]; var $this_0 = new ULong_init($this.data.add(other.data)); var other_0 = w[i]; var temp1 = new ULong_init($this_0.data.add(other_0.data)); var s0 = this.compressionSigma0_0(paramA); var maj = this.maj_0(paramA, paramB, paramC); var temp2 = new ULong_init(s0.data.add(maj.data)); paramH = paramG; paramG = paramF; paramF = paramE; paramE = new ULong_init(paramD.data.add(temp1.data)); paramD = paramC; paramC = paramB; paramB = paramA; paramA = new ULong_init(temp1.data.add(temp2.data)); } var $this_1 = h[0]; var other_1 = paramA; h[0] = new ULong_init($this_1.data.add(other_1.data)); var $this_2 = h[1]; var other_2 = paramB; h[1] = new ULong_init($this_2.data.add(other_2.data)); var $this_3 = h[2]; var other_3 = paramC; h[2] = new ULong_init($this_3.data.add(other_3.data)); var $this_4 = h[3]; var other_4 = paramD; h[3] = new ULong_init($this_4.data.add(other_4.data)); var $this_5 = h[4]; var other_5 = paramE; h[4] = new ULong_init($this_5.data.add(other_5.data)); var $this_6 = h[5]; var other_6 = paramF; h[5] = new ULong_init($this_6.data.add(other_6.data)); var $this_7 = h[6]; var other_7 = paramG; h[6] = new ULong_init($this_7.data.add(other_7.data)); var $this_8 = h[7]; var other_8 = paramH; h[7] = new ULong_init($this_8.data.add(other_8.data)); return h; }; Sha512$Companion.prototype.createExpansionArray_za3lpa$ = function (originalSizeInBytes) { var tmp$; var originalMessageSizeInBits = originalSizeInBytes * 8 | 0; var expandedRemainderOf1024 = (originalMessageSizeInBits + 129 | 0) % 1024; if (expandedRemainderOf1024 === 0) tmp$ = 0; else tmp$ = (1024 - expandedRemainderOf1024 | 0) / 8 | 0; var zeroAddAmount = tmp$; var array = Array_0(zeroAddAmount + 1 | 0); var tmp$_0; tmp$_0 = array.length - 1 | 0; for (var i = 0; i <= tmp$_0; i++) { var init$result; if (i === 0) { init$result = new UByte_init(-128); } else { init$result = new UByte_init(0); } array[i] = init$result; } var expansionArray = array; return expansionArray; }; Sha512$Companion.prototype.toPaddedByteArray_0 = function ($receiver) { var byteMask = new ULong_init(Kotlin.Long.fromInt(255)); var array = Array_0(8); var tmp$; tmp$ = array.length - 1 | 0; loop_label: for (var i = 0; i <= tmp$; i++) { var init$result; init$break: do { switch (i) { case 7: init$result = new UByte_init(toByte((new ULong_init($receiver.data.and(byteMask.data))).data.toInt())); break init$break; case 6: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(8))).data.and(byteMask.data))).data.toInt())); break init$break; case 5: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(16))).data.and(byteMask.data))).data.toInt())); break init$break; case 4: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(24))).data.and(byteMask.data))).data.toInt())); break init$break; case 3: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(32))).data.and(byteMask.data))).data.toInt())); break init$break; case 2: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(40))).data.and(byteMask.data))).data.toInt())); break init$break; case 1: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(48))).data.and(byteMask.data))).data.toInt())); break init$break; case 0: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(56))).data.and(byteMask.data))).data.toInt())); break init$break; default:init$result = new UByte_init(0); break init$break; } } while (false); array[i] = init$result; } return array; }; Sha512$Companion.prototype.toPadded128BitByteArray_0 = function ($receiver) { var byteMask = new ULong_init(Kotlin.Long.fromInt(255)); var array = Array_0(16); var tmp$; tmp$ = array.length - 1 | 0; loop_label: for (var i = 0; i <= tmp$; i++) { var init$result; init$break: do { switch (i) { case 15: init$result = new UByte_init(toByte((new ULong_init($receiver.data.and(byteMask.data))).data.toInt())); break init$break; case 14: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(8))).data.and(byteMask.data))).data.toInt())); break init$break; case 13: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(16))).data.and(byteMask.data))).data.toInt())); break init$break; case 12: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(24))).data.and(byteMask.data))).data.toInt())); break init$break; case 11: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(32))).data.and(byteMask.data))).data.toInt())); break init$break; case 10: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(40))).data.and(byteMask.data))).data.toInt())); break init$break; case 9: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(48))).data.and(byteMask.data))).data.toInt())); break init$break; case 8: init$result = new UByte_init(toByte((new ULong_init((new ULong_init($receiver.data.shiftRightUnsigned(54))).data.and(byteMask.data))).data.toInt())); break init$break; default:init$result = new UByte_init(0); break init$break; } } while (false); array[i] = init$result; } return array; }; Sha512$Companion.$metadata$ = { kind: Kind_OBJECT, simpleName: 'Companion', interfaces: [StatelessHash] }; var Sha512$Companion_instance = null; function Sha512$Companion_getInstance() { if (Sha512$Companion_instance === null) { new Sha512$Companion(); } return Sha512$Companion_instance; } Sha512.prototype.update_61zpoe$ = function (data) { var $receiver = encodeToByteArray(data); var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(new UByte_init(item)); } return this.update_ummv9a$(copyToArray(destination)); }; Sha512.prototype.update_ummv9a$ = function (data) { if (data.length === 0) { throw RuntimeException_init('Updating with empty array is not allowed. If you need empty hash, just call digest without updating'); } if ((this.bufferCounter + data.length | 0) < 128) this.appendToBuffer_0(data, this.bufferCounter); else if ((this.bufferCounter + data.length | 0) >= 128) { var last = data.length % 128; var hasLast = last !== 0; var numberOfSlices = data.length / 128 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(data, until(Kotlin.imul(i, 128), Kotlin.imul(i + 1 | 0, 128)))); } if (hasLast) { result.add_11rb$(slice(data, until(Kotlin.imul(numberOfSlices, 128), data.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$; tmp$ = result.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(copyToArray(item)); } var chunked = copyToArray(destination); var tmp$_0; for (tmp$_0 = 0; tmp$_0 !== chunked.length; ++tmp$_0) { var element = chunked[tmp$_0]; if ((this.bufferCounter + element.length | 0) < 128) { this.appendToBuffer_0(element, this.bufferCounter); } else { arrayCopy(element, this.buffer, this.bufferCounter, 0, 128 - this.bufferCounter | 0); this.counter = this.counter + 128 | 0; this.consumeBlock_0(this.buffer); var array = Array_0(128); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_1; i_0++) { var init$result; var tmp$_2; tmp$_2 = element.length - (128 - this.bufferCounter) | 0; if (0 <= i_0 && i_0 < tmp$_2) { init$result = element[i_0 + (128 - this.bufferCounter) | 0]; } else { init$result = new UByte_init(0); } array[i_0] = init$result; } this.buffer = array; this.bufferCounter = element.length - (128 - this.bufferCounter) | 0; } } } }; Sha512.prototype.consumeBlock_0 = function (block) { var w = Sha512$Companion_getInstance().expandChunk_0(block); var $receiver = Sha512$Companion_getInstance().mix_0(this.h, w); arrayCopy($receiver, this.h, 0, 0, $receiver.length); }; Sha512.prototype.digest = function () { var length = this.counter + this.bufferCounter | 0; var expansionArray = Sha512$Companion_getInstance().createExpansionArray_za3lpa$(length); var tmp$ = copyOfRange(this.buffer, 0, this.bufferCounter).concat(expansionArray); var tmp$_0 = Sha512$Companion_getInstance(); var $receiver = length * 8 | 0; var elements = tmp$_0.toPadded128BitByteArray_0(new ULong_init(Kotlin.Long.fromInt($receiver))); var finalBlock = tmp$.concat(elements); var last = finalBlock.length % 128; var hasLast = last !== 0; var numberOfSlices = finalBlock.length / 128 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(finalBlock, until(Kotlin.imul(i, 128), Kotlin.imul(i + 1 | 0, 128)))); } if (hasLast) { result.add_11rb$(slice(finalBlock, until(Kotlin.imul(numberOfSlices, 128), finalBlock.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$_1; tmp$_1 = result.iterator(); while (tmp$_1.hasNext()) { var item = tmp$_1.next(); destination.add_11rb$(copyToArray(item)); } var $receiver_0 = copyToArray(destination); var tmp$_2; for (tmp$_2 = 0; tmp$_2 !== $receiver_0.length; ++tmp$_2) { var element = $receiver_0[tmp$_2]; this.consumeBlock_0(element); } var $receiver_1 = Sha512$Companion_getInstance().toPaddedByteArray_0(this.h[0]); var elements_0 = Sha512$Companion_getInstance().toPaddedByteArray_0(this.h[1]); var $receiver_2 = $receiver_1.concat(elements_0); var elements_1 = Sha512$Companion_getInstance().toPaddedByteArray_0(this.h[2]); var $receiver_3 = $receiver_2.concat(elements_1); var elements_2 = Sha512$Companion_getInstance().toPaddedByteArray_0(this.h[3]); var $receiver_4 = $receiver_3.concat(elements_2); var elements_3 = Sha512$Companion_getInstance().toPaddedByteArray_0(this.h[4]); var $receiver_5 = $receiver_4.concat(elements_3); var elements_4 = Sha512$Companion_getInstance().toPaddedByteArray_0(this.h[5]); var $receiver_6 = $receiver_5.concat(elements_4); var elements_5 = Sha512$Companion_getInstance().toPaddedByteArray_0(this.h[6]); var $receiver_7 = $receiver_6.concat(elements_5); var elements_6 = Sha512$Companion_getInstance().toPaddedByteArray_0(this.h[7]); var digest = $receiver_7.concat(elements_6); return digest; }; Sha512.prototype.digestString = function () { var $receiver = this.digest(); var destination = ArrayList_init($receiver.length); var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; destination.add_11rb$(toString(item, 16)); } return joinToString(destination, ''); }; Sha512.prototype.appendToBuffer_0 = function (array, start) { arrayCopy(array, this.buffer, start, 0, array.length); this.bufferCounter = this.bufferCounter + array.length | 0; }; Sha512.$metadata$ = { kind: Kind_CLASS, simpleName: 'Sha512', interfaces: [UpdatableHash] }; function Aes(aesKey, input) { Aes$Companion_getInstance(); this.aesKey = aesKey; this.input = input; var $receiver = until(0, 4); var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); var tmp$; tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); var tmp$_0 = destination.add_11rb$; var array = Array_0(4); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i = 0; i <= tmp$_1; i++) { array[i] = this.input[(i * 4 | 0) + item | 0]; } tmp$_0.call(destination, array); } this.state = copyToArray(destination); var tmp$_2, tmp$_3; tmp$_2 = this.aesKey; if (Kotlin.isType(tmp$_2, AesKey$Aes128Key)) tmp$_3 = 10; else if (Kotlin.isType(tmp$_2, AesKey$Aes192Key)) tmp$_3 = 12; else if (Kotlin.isType(tmp$_2, AesKey$Aes256Key)) tmp$_3 = 14; else tmp$_3 = Kotlin.noWhenBranchMatched(); this.numberOfRounds = tmp$_3; this.expandedKey = this.expandKey(); this.round = 0; this.completed_igbl6$_0 = false; } function Aes$Companion() { Aes$Companion_instance = this; this.debug_0 = false; this.sBox_0 = new UByteArray(new Int8Array([(new UByte_init(99)).toByte(), (new UByte_init(124)).toByte(), (new UByte_init(119)).toByte(), (new UByte_init(123)).toByte(), (new UByte_init(-14)).toByte(), (new UByte_init(107)).toByte(), (new UByte_init(111)).toByte(), (new UByte_init(-59)).toByte(), (new UByte_init(48)).toByte(), (new UByte_init(1)).toByte(), (new UByte_init(103)).toByte(), (new UByte_init(43)).toByte(), (new UByte_init(-2)).toByte(), (new UByte_init(-41)).toByte(), (new UByte_init(-85)).toByte(), (new UByte_init(118)).toByte(), (new UByte_init(-54)).toByte(), (new UByte_init(-126)).toByte(), (new UByte_init(-55)).toByte(), (new UByte_init(125)).toByte(), (new UByte_init(-6)).toByte(), (new UByte_init(89)).toByte(), (new UByte_init(71)).toByte(), (new UByte_init(-16)).toByte(), (new UByte_init(-83)).toByte(), (new UByte_init(-44)).toByte(), (new UByte_init(-94)).toByte(), (new UByte_init(-81)).toByte(), (new UByte_init(-100)).toByte(), (new UByte_init(-92)).toByte(), (new UByte_init(114)).toByte(), (new UByte_init(-64)).toByte(), (new UByte_init(-73)).toByte(), (new UByte_init(-3)).toByte(), (new UByte_init(-109)).toByte(), (new UByte_init(38)).toByte(), (new UByte_init(54)).toByte(), (new UByte_init(63)).toByte(), (new UByte_init(-9)).toByte(), (new UByte_init(-52)).toByte(), (new UByte_init(52)).toByte(), (new UByte_init(-91)).toByte(), (new UByte_init(-27)).toByte(), (new UByte_init(-15)).toByte(), (new UByte_init(113)).toByte(), (new UByte_init(-40)).toByte(), (new UByte_init(49)).toByte(), (new UByte_init(21)).toByte(), (new UByte_init(4)).toByte(), (new UByte_init(-57)).toByte(), (new UByte_init(35)).toByte(), (new UByte_init(-61)).toByte(), (new UByte_init(24)).toByte(), (new UByte_init(-106)).toByte(), (new UByte_init(5)).toByte(), (new UByte_init(-102)).toByte(), (new UByte_init(7)).toByte(), (new UByte_init(18)).toByte(), (new UByte_init(-128)).toByte(), (new UByte_init(-30)).toByte(), (new UByte_init(-21)).toByte(), (new UByte_init(39)).toByte(), (new UByte_init(-78)).toByte(), (new UByte_init(117)).toByte(), (new UByte_init(9)).toByte(), (new UByte_init(-125)).toByte(), (new UByte_init(44)).toByte(), (new UByte_init(26)).toByte(), (new UByte_init(27)).toByte(), (new UByte_init(110)).toByte(), (new UByte_init(90)).toByte(), (new UByte_init(-96)).toByte(), (new UByte_init(82)).toByte(), (new UByte_init(59)).toByte(), (new UByte_init(-42)).toByte(), (new UByte_init(-77)).toByte(), (new UByte_init(41)).toByte(), (new UByte_init(-29)).toByte(), (new UByte_init(47)).toByte(), (new UByte_init(-124)).toByte(), (new UByte_init(83)).toByte(), (new UByte_init(-47)).toByte(), (new UByte_init(0)).toByte(), (new UByte_init(-19)).toByte(), (new UByte_init(32)).toByte(), (new UByte_init(-4)).toByte(), (new UByte_init(-79)).toByte(), (new UByte_init(91)).toByte(), (new UByte_init(106)).toByte(), (new UByte_init(-53)).toByte(), (new UByte_init(-66)).toByte(), (new UByte_init(57)).toByte(), (new UByte_init(74)).toByte(), (new UByte_init(76)).toByte(), (new UByte_init(88)).toByte(), (new UByte_init(-49)).toByte(), (new UByte_init(-48)).toByte(), (new UByte_init(-17)).toByte(), (new UByte_init(-86)).toByte(), (new UByte_init(-5)).toByte(), (new UByte_init(67)).toByte(), (new UByte_init(77)).toByte(), (new UByte_init(51)).toByte(), (new UByte_init(-123)).toByte(), (new UByte_init(69)).toByte(), (new UByte_init(-7)).toByte(), (new UByte_init(2)).toByte(), (new UByte_init(127)).toByte(), (new UByte_init(80)).toByte(), (new UByte_init(60)).toByte(), (new UByte_init(-97)).toByte(), (new UByte_init(-88)).toByte(), (new UByte_init(81)).toByte(), (new UByte_init(-93)).toByte(), (new UByte_init(64)).toByte(), (new UByte_init(-113)).toByte(), (new UByte_init(-110)).toByte(), (new UByte_init(-99)).toByte(), (new UByte_init(56)).toByte(), (new UByte_init(-11)).toByte(), (new UByte_init(-68)).toByte(), (new UByte_init(-74)).toByte(), (new UByte_init(-38)).toByte(), (new UByte_init(33)).toByte(), (new UByte_init(16)).toByte(), (new UByte_init(-1)).toByte(), (new UByte_init(-13)).toByte(), (new UByte_init(-46)).toByte(), (new UByte_init(-51)).toByte(), (new UByte_init(12)).toByte(), (new UByte_init(19)).toByte(), (new UByte_init(-20)).toByte(), (new UByte_init(95)).toByte(), (new UByte_init(-105)).toByte(), (new UByte_init(68)).toByte(), (new UByte_init(23)).toByte(), (new UByte_init(-60)).toByte(), (new UByte_init(-89)).toByte(), (new UByte_init(126)).toByte(), (new UByte_init(61)).toByte(), (new UByte_init(100)).toByte(), (new UByte_init(93)).toByte(), (new UByte_init(25)).toByte(), (new UByte_init(115)).toByte(), (new UByte_init(96)).toByte(), (new UByte_init(-127)).toByte(), (new UByte_init(79)).toByte(), (new UByte_init(-36)).toByte(), (new UByte_init(34)).toByte(), (new UByte_init(42)).toByte(), (new UByte_init(-112)).toByte(), (new UByte_init(-120)).toByte(), (new UByte_init(70)).toByte(), (new UByte_init(-18)).toByte(), (new UByte_init(-72)).toByte(), (new UByte_init(20)).toByte(), (new UByte_init(-34)).toByte(), (new UByte_init(94)).toByte(), (new UByte_init(11)).toByte(), (new UByte_init(-37)).toByte(), (new UByte_init(-32)).toByte(), (new UByte_init(50)).toByte(), (new UByte_init(58)).toByte(), (new UByte_init(10)).toByte(), (new UByte_init(73)).toByte(), (new UByte_init(6)).toByte(), (new UByte_init(36)).toByte(), (new UByte_init(92)).toByte(), (new UByte_init(-62)).toByte(), (new UByte_init(-45)).toByte(), (new UByte_init(-84)).toByte(), (new UByte_init(98)).toByte(), (new UByte_init(-111)).toByte(), (new UByte_init(-107)).toByte(), (new UByte_init(-28)).toByte(), (new UByte_init(121)).toByte(), (new UByte_init(-25)).toByte(), (new UByte_init(-56)).toByte(), (new UByte_init(55)).toByte(), (new UByte_init(109)).toByte(), (new UByte_init(-115)).toByte(), (new UByte_init(-43)).toByte(), (new UByte_init(78)).toByte(), (new UByte_init(-87)).toByte(), (new UByte_init(108)).toByte(), (new UByte_init(86)).toByte(), (new UByte_init(-12)).toByte(), (new UByte_init(-22)).toByte(), (new UByte_init(101)).toByte(), (new UByte_init(122)).toByte(), (new UByte_init(-82)).toByte(), (new UByte_init(8)).toByte(), (new UByte_init(-70)).toByte(), (new UByte_init(120)).toByte(), (new UByte_init(37)).toByte(), (new UByte_init(46)).toByte(), (new UByte_init(28)).toByte(), (new UByte_init(-90)).toByte(), (new UByte_init(-76)).toByte(), (new UByte_init(-58)).toByte(), (new UByte_init(-24)).toByte(), (new UByte_init(-35)).toByte(), (new UByte_init(116)).toByte(), (new UByte_init(31)).toByte(), (new UByte_init(75)).toByte(), (new UByte_init(-67)).toByte(), (new UByte_init(-117)).toByte(), (new UByte_init(-118)).toByte(), (new UByte_init(112)).toByte(), (new UByte_init(62)).toByte(), (new UByte_init(-75)).toByte(), (new UByte_init(102)).toByte(), (new UByte_init(72)).toByte(), (new UByte_init(3)).toByte(), (new UByte_init(-10)).toByte(), (new UByte_init(14)).toByte(), (new UByte_init(97)).toByte(), (new UByte_init(53)).toByte(), (new UByte_init(87)).toByte(), (new UByte_init(-71)).toByte(), (new UByte_init(-122)).toByte(), (new UByte_init(-63)).toByte(), (new UByte_init(29)).toByte(), (new UByte_init(-98)).toByte(), (new UByte_init(-31)).toByte(), (new UByte_init(-8)).toByte(), (new UByte_init(-104)).toByte(), (new UByte_init(17)).toByte(), (new UByte_init(105)).toByte(), (new UByte_init(-39)).toByte(), (new UByte_init(-114)).toByte(), (new UByte_init(-108)).toByte(), (new UByte_init(-101)).toByte(), (new UByte_init(30)).toByte(), (new UByte_init(-121)).toByte(), (new UByte_init(-23)).toByte(), (new UByte_init(-50)).toByte(), (new UByte_init(85)).toByte(), (new UByte_init(40)).toByte(), (new UByte_init(-33)).toByte(), (new UByte_init(-116)).toByte(), (new UByte_init(-95)).toByte(), (new UByte_init(-119)).toByte(), (new UByte_init(13)).toByte(), (new UByte_init(-65)).toByte(), (new UByte_init(-26)).toByte(), (new UByte_init(66)).toByte(), (new UByte_init(104)).toByte(), (new UByte_init(65)).toByte(), (new UByte_init(-103)).toByte(), (new UByte_init(45)).toByte(), (new UByte_init(15)).toByte(), (new UByte_init(-80)).toByte(), (new UByte_init(84)).toByte(), (new UByte_init(-69)).toByte(), (new UByte_init(22)).toByte()])); this.inverseSBox_0 = new UByteArray(new Int8Array([(new UByte_init(82)).toByte(), (new UByte_init(9)).toByte(), (new UByte_init(106)).toByte(), (new UByte_init(-43)).toByte(), (new UByte_init(48)).toByte(), (new UByte_init(54)).toByte(), (new UByte_init(-91)).toByte(), (new UByte_init(56)).toByte(), (new UByte_init(-65)).toByte(), (new UByte_init(64)).toByte(), (new UByte_init(-93)).toByte(), (new UByte_init(-98)).toByte(), (new UByte_init(-127)).toByte(), (new UByte_init(-13)).toByte(), (new UByte_init(-41)).toByte(), (new UByte_init(-5)).toByte(), (new UByte_init(124)).toByte(), (new UByte_init(-29)).toByte(), (new UByte_init(57)).toByte(), (new UByte_init(-126)).toByte(), (new UByte_init(-101)).toByte(), (new UByte_init(47)).toByte(), (new UByte_init(-1)).toByte(), (new UByte_init(-121)).toByte(), (new UByte_init(52)).toByte(), (new UByte_init(-114)).toByte(), (new UByte_init(67)).toByte(), (new UByte_init(68)).toByte(), (new UByte_init(-60)).toByte(), (new UByte_init(-34)).toByte(), (new UByte_init(-23)).toByte(), (new UByte_init(-53)).toByte(), (new UByte_init(84)).toByte(), (new UByte_init(123)).toByte(), (new UByte_init(-108)).toByte(), (new UByte_init(50)).toByte(), (new UByte_init(-90)).toByte(), (new UByte_init(-62)).toByte(), (new UByte_init(35)).toByte(), (new UByte_init(61)).toByte(), (new UByte_init(-18)).toByte(), (new UByte_init(76)).toByte(), (new UByte_init(-107)).toByte(), (new UByte_init(11)).toByte(), (new UByte_init(66)).toByte(), (new UByte_init(-6)).toByte(), (new UByte_init(-61)).toByte(), (new UByte_init(78)).toByte(), (new UByte_init(8)).toByte(), (new UByte_init(46)).toByte(), (new UByte_init(-95)).toByte(), (new UByte_init(102)).toByte(), (new UByte_init(40)).toByte(), (new UByte_init(-39)).toByte(), (new UByte_init(36)).toByte(), (new UByte_init(-78)).toByte(), (new UByte_init(118)).toByte(), (new UByte_init(91)).toByte(), (new UByte_init(-94)).toByte(), (new UByte_init(73)).toByte(), (new UByte_init(109)).toByte(), (new UByte_init(-117)).toByte(), (new UByte_init(-47)).toByte(), (new UByte_init(37)).toByte(), (new UByte_init(114)).toByte(), (new UByte_init(-8)).toByte(), (new UByte_init(-10)).toByte(), (new UByte_init(100)).toByte(), (new UByte_init(-122)).toByte(), (new UByte_init(104)).toByte(), (new UByte_init(-104)).toByte(), (new UByte_init(22)).toByte(), (new UByte_init(-44)).toByte(), (new UByte_init(-92)).toByte(), (new UByte_init(92)).toByte(), (new UByte_init(-52)).toByte(), (new UByte_init(93)).toByte(), (new UByte_init(101)).toByte(), (new UByte_init(-74)).toByte(), (new UByte_init(-110)).toByte(), (new UByte_init(108)).toByte(), (new UByte_init(112)).toByte(), (new UByte_init(72)).toByte(), (new UByte_init(80)).toByte(), (new UByte_init(-3)).toByte(), (new UByte_init(-19)).toByte(), (new UByte_init(-71)).toByte(), (new UByte_init(-38)).toByte(), (new UByte_init(94)).toByte(), (new UByte_init(21)).toByte(), (new UByte_init(70)).toByte(), (new UByte_init(87)).toByte(), (new UByte_init(-89)).toByte(), (new UByte_init(-115)).toByte(), (new UByte_init(-99)).toByte(), (new UByte_init(-124)).toByte(), (new UByte_init(-112)).toByte(), (new UByte_init(-40)).toByte(), (new UByte_init(-85)).toByte(), (new UByte_init(0)).toByte(), (new UByte_init(-116)).toByte(), (new UByte_init(-68)).toByte(), (new UByte_init(-45)).toByte(), (new UByte_init(10)).toByte(), (new UByte_init(-9)).toByte(), (new UByte_init(-28)).toByte(), (new UByte_init(88)).toByte(), (new UByte_init(5)).toByte(), (new UByte_init(-72)).toByte(), (new UByte_init(-77)).toByte(), (new UByte_init(69)).toByte(), (new UByte_init(6)).toByte(), (new UByte_init(-48)).toByte(), (new UByte_init(44)).toByte(), (new UByte_init(30)).toByte(), (new UByte_init(-113)).toByte(), (new UByte_init(-54)).toByte(), (new UByte_init(63)).toByte(), (new UByte_init(15)).toByte(), (new UByte_init(2)).toByte(), (new UByte_init(-63)).toByte(), (new UByte_init(-81)).toByte(), (new UByte_init(-67)).toByte(), (new UByte_init(3)).toByte(), (new UByte_init(1)).toByte(), (new UByte_init(19)).toByte(), (new UByte_init(-118)).toByte(), (new UByte_init(107)).toByte(), (new UByte_init(58)).toByte(), (new UByte_init(-111)).toByte(), (new UByte_init(17)).toByte(), (new UByte_init(65)).toByte(), (new UByte_init(79)).toByte(), (new UByte_init(103)).toByte(), (new UByte_init(-36)).toByte(), (new UByte_init(-22)).toByte(), (new UByte_init(-105)).toByte(), (new UByte_init(-14)).toByte(), (new UByte_init(-49)).toByte(), (new UByte_init(-50)).toByte(), (new UByte_init(-16)).toByte(), (new UByte_init(-76)).toByte(), (new UByte_init(-26)).toByte(), (new UByte_init(115)).toByte(), (new UByte_init(-106)).toByte(), (new UByte_init(-84)).toByte(), (new UByte_init(116)).toByte(), (new UByte_init(34)).toByte(), (new UByte_init(-25)).toByte(), (new UByte_init(-83)).toByte(), (new UByte_init(53)).toByte(), (new UByte_init(-123)).toByte(), (new UByte_init(-30)).toByte(), (new UByte_init(-7)).toByte(), (new UByte_init(55)).toByte(), (new UByte_init(-24)).toByte(), (new UByte_init(28)).toByte(), (new UByte_init(117)).toByte(), (new UByte_init(-33)).toByte(), (new UByte_init(110)).toByte(), (new UByte_init(71)).toByte(), (new UByte_init(-15)).toByte(), (new UByte_init(26)).toByte(), (new UByte_init(113)).toByte(), (new UByte_init(29)).toByte(), (new UByte_init(41)).toByte(), (new UByte_init(-59)).toByte(), (new UByte_init(-119)).toByte(), (new UByte_init(111)).toByte(), (new UByte_init(-73)).toByte(), (new UByte_init(98)).toByte(), (new UByte_init(14)).toByte(), (new UByte_init(-86)).toByte(), (new UByte_init(24)).toByte(), (new UByte_init(-66)).toByte(), (new UByte_init(27)).toByte(), (new UByte_init(-4)).toByte(), (new UByte_init(86)).toByte(), (new UByte_init(62)).toByte(), (new UByte_init(75)).toByte(), (new UByte_init(-58)).toByte(), (new UByte_init(-46)).toByte(), (new UByte_init(121)).toByte(), (new UByte_init(32)).toByte(), (new UByte_init(-102)).toByte(), (new UByte_init(-37)).toByte(), (new UByte_init(-64)).toByte(), (new UByte_init(-2)).toByte(), (new UByte_init(120)).toByte(), (new UByte_init(-51)).toByte(), (new UByte_init(90)).toByte(), (new UByte_init(-12)).toByte(), (new UByte_init(31)).toByte(), (new UByte_init(-35)).toByte(), (new UByte_init(-88)).toByte(), (new UByte_init(51)).toByte(), (new UByte_init(-120)).toByte(), (new UByte_init(7)).toByte(), (new UByte_init(-57)).toByte(), (new UByte_init(49)).toByte(), (new UByte_init(-79)).toByte(), (new UByte_init(18)).toByte(), (new UByte_init(16)).toByte(), (new UByte_init(89)).toByte(), (new UByte_init(39)).toByte(), (new UByte_init(-128)).toByte(), (new UByte_init(-20)).toByte(), (new UByte_init(95)).toByte(), (new UByte_init(96)).toByte(), (new UByte_init(81)).toByte(), (new UByte_init(127)).toByte(), (new UByte_init(-87)).toByte(), (new UByte_init(25)).toByte(), (new UByte_init(-75)).toByte(), (new UByte_init(74)).toByte(), (new UByte_init(13)).toByte(), (new UByte_init(45)).toByte(), (new UByte_init(-27)).toByte(), (new UByte_init(122)).toByte(), (new UByte_init(-97)).toByte(), (new UByte_init(-109)).toByte(), (new UByte_init(-55)).toByte(), (new UByte_init(-100)).toByte(), (new UByte_init(-17)).toByte(), (new UByte_init(-96)).toByte(), (new UByte_init(-32)).toByte(), (new UByte_init(59)).toByte(), (new UByte_init(77)).toByte(), (new UByte_init(-82)).toByte(), (new UByte_init(42)).toByte(), (new UByte_init(-11)).toByte(), (new UByte_init(-80)).toByte(), (new UByte_init(-56)).toByte(), (new UByte_init(-21)).toByte(), (new UByte_init(-69)).toByte(), (new UByte_init(60)).toByte(), (new UByte_init(-125)).toByte(), (new UByte_init(83)).toByte(), (new UByte_init(-103)).toByte(), (new UByte_init(97)).toByte(), (new UByte_init(23)).toByte(), (new UByte_init(43)).toByte(), (new UByte_init(4)).toByte(), (new UByte_init(126)).toByte(), (new UByte_init(-70)).toByte(), (new UByte_init(119)).toByte(), (new UByte_init(-42)).toByte(), (new UByte_init(38)).toByte(), (new UByte_init(-31)).toByte(), (new UByte_init(105)).toByte(), (new UByte_init(20)).toByte(), (new UByte_init(99)).toByte(), (new UByte_init(85)).toByte(), (new UByte_init(33)).toByte(), (new UByte_init(12)).toByte(), (new UByte_init(125)).toByte()])); this.rcon = new UByteArray(new Int8Array([(new UByte_init(-115)).toByte(), (new UByte_init(1)).toByte(), (new UByte_init(2)).toByte(), (new UByte_init(4)).toByte(), (new UByte_init(8)).toByte(), (new UByte_init(16)).toByte(), (new UByte_init(32)).toByte(), (new UByte_init(64)).toByte(), (new UByte_init(-128)).toByte(), (new UByte_init(27)).toByte(), (new UByte_init(54)).toByte()])); } Aes$Companion.prototype.encrypt_dx3icu$ = function (aesKey, input) { return (new Aes(aesKey, input)).encrypt(); }; Aes$Companion.prototype.decrypt_dx3icu$ = function (aesKey, input) { return (new Aes(aesKey, input)).decrypt(); }; Aes$Companion.$metadata$ = { kind: Kind_OBJECT, simpleName: 'Companion', interfaces: [] }; var Aes$Companion_instance = null; function Aes$Companion_getInstance() { if (Aes$Companion_instance === null) { new Aes$Companion(); } return Aes$Companion_instance; } Object.defineProperty(Aes.prototype, 'completed', { get: function () { return this.completed_igbl6$_0; }, set: function (completed) { this.completed_igbl6$_0 = completed; } }); Aes.prototype.subBytes = function () { var $receiver = this.state; var tmp$, tmp$_0; var index = 0; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; var indexRow = (tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0); var tmp$_1, tmp$_0_0; var index_0 = 0; for (tmp$_1 = 0; tmp$_1 !== item.length; ++tmp$_1) { var item_0 = item[tmp$_1]; var indexColumn = (tmp$_0_0 = index_0, index_0 = tmp$_0_0 + 1 | 0, tmp$_0_0); this.state[indexRow][indexColumn] = this.getSBoxValue_mpmjao$(item_0); } } }; Aes.prototype.getSBoxValue_mpmjao$ = function (element) { var other = new UInt(16); var firstDigit = uintDivide(new UInt(element.data & 255), other).data; var other_0 = new UInt(16); var secondDigit = uintRemainder(new UInt(element.data & 255), other_0).data; return Aes$Companion_getInstance().sBox_0.get_za3lpa$((firstDigit * 16 | 0) + secondDigit | 0); }; Aes.prototype.inverseSubBytes = function () { var $receiver = this.state; var tmp$, tmp$_0; var index = 0; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var item = $receiver[tmp$]; var indexRow = (tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0); var tmp$_1, tmp$_0_0; var index_0 = 0; for (tmp$_1 = 0; tmp$_1 !== item.length; ++tmp$_1) { var item_0 = item[tmp$_1]; var indexColumn = (tmp$_0_0 = index_0, index_0 = tmp$_0_0 + 1 | 0, tmp$_0_0); this.state[indexRow][indexColumn] = this.getInverseSBoxValue_mpmjao$(item_0); } } }; Aes.prototype.getInverseSBoxValue_mpmjao$ = function (element) { var other = new UInt(16); var firstDigit = uintDivide(new UInt(element.data & 255), other).data; var other_0 = new UInt(16); var secondDigit = uintRemainder(new UInt(element.data & 255), other_0).data; return Aes$Companion_getInstance().inverseSBox_0.get_za3lpa$((firstDigit * 16 | 0) + secondDigit | 0); }; Aes.prototype.shiftRows = function () { this.state[0] = [this.state[0][0], this.state[0][1], this.state[0][2], this.state[0][3]]; this.state[1] = [this.state[1][1], this.state[1][2], this.state[1][3], this.state[1][0]]; this.state[2] = [this.state[2][2], this.state[2][3], this.state[2][0], this.state[2][1]]; this.state[3] = [this.state[3][3], this.state[3][0], this.state[3][1], this.state[3][2]]; }; Aes.prototype.inversShiftRows = function () { this.state[0] = [this.state[0][0], this.state[0][1], this.state[0][2], this.state[0][3]]; this.state[1] = [this.state[1][3], this.state[1][0], this.state[1][1], this.state[1][2]]; this.state[2] = [this.state[2][2], this.state[2][3], this.state[2][0], this.state[2][1]]; this.state[3] = [this.state[3][1], this.state[3][2], this.state[3][3], this.state[3][0]]; }; Aes.prototype.mixColumns = function () { var $receiver = until(0, 4); var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); var tmp$; tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); var tmp$_0 = destination.add_11rb$; var array = Array_0(4); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i = 0; i <= tmp$_1; i++) { array[i] = new UByte_init(0); } tmp$_0.call(destination, array); } var stateMixed = copyToArray(destination); for (var c = 0; c <= 3; c++) { var tmp$_2 = stateMixed[0]; var $this = this.gfm_lc54$(new UInt(2), this.state[0][c]); var other = this.gfm_lc54$(new UInt(3), this.state[1][c]); var $this_0 = new UByte_init(toByte($this.data ^ other.data)); var other_0 = this.state[2][c]; var $this_1 = new UByte_init(toByte($this_0.data ^ other_0.data)); var other_1 = this.state[3][c]; tmp$_2[c] = new UByte_init(toByte($this_1.data ^ other_1.data)); var tmp$_3 = stateMixed[1]; var $this_2 = this.state[0][c]; var other_2 = this.gfm_lc54$(new UInt(2), this.state[1][c]); var $this_3 = new UByte_init(toByte($this_2.data ^ other_2.data)); var other_3 = this.gfm_lc54$(new UInt(3), this.state[2][c]); var $this_4 = new UByte_init(toByte($this_3.data ^ other_3.data)); var other_4 = this.state[3][c]; tmp$_3[c] = new UByte_init(toByte($this_4.data ^ other_4.data)); var tmp$_4 = stateMixed[2]; var $this_5 = this.state[0][c]; var other_5 = this.state[1][c]; var $this_6 = new UByte_init(toByte($this_5.data ^ other_5.data)); var other_6 = this.gfm_lc54$(new UInt(2), this.state[2][c]); var $this_7 = new UByte_init(toByte($this_6.data ^ other_6.data)); var other_7 = this.gfm_lc54$(new UInt(3), this.state[3][c]); tmp$_4[c] = new UByte_init(toByte($this_7.data ^ other_7.data)); var tmp$_5 = stateMixed[3]; var $this_8 = this.gfm_lc54$(new UInt(3), this.state[0][c]); var other_8 = this.state[1][c]; var $this_9 = new UByte_init(toByte($this_8.data ^ other_8.data)); var other_9 = this.state[2][c]; var $this_10 = new UByte_init(toByte($this_9.data ^ other_9.data)); var other_10 = this.gfm_lc54$(new UInt(2), this.state[3][c]); tmp$_5[c] = new UByte_init(toByte($this_10.data ^ other_10.data)); } arrayCopy(stateMixed, this.state, 0, 0, stateMixed.length); }; Aes.prototype.inverseMixColumns = function () { var $receiver = until(0, 4); var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); var tmp$; tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); var tmp$_0 = destination.add_11rb$; var array = Array_0(4); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i = 0; i <= tmp$_1; i++) { array[i] = new UByte_init(0); } tmp$_0.call(destination, array); } var stateMixed = copyToArray(destination); for (var c = 0; c <= 3; c++) { var tmp$_2 = stateMixed[0]; var $this = this.gfm_lc54$(new UInt(14), this.state[0][c]); var other = this.gfm_lc54$(new UInt(11), this.state[1][c]); var $this_0 = new UByte_init(toByte($this.data ^ other.data)); var other_0 = this.gfm_lc54$(new UInt(13), this.state[2][c]); var $this_1 = new UByte_init(toByte($this_0.data ^ other_0.data)); var other_1 = this.gfm_lc54$(new UInt(9), this.state[3][c]); tmp$_2[c] = new UByte_init(toByte($this_1.data ^ other_1.data)); var tmp$_3 = stateMixed[1]; var $this_2 = this.gfm_lc54$(new UInt(9), this.state[0][c]); var other_2 = this.gfm_lc54$(new UInt(14), this.state[1][c]); var $this_3 = new UByte_init(toByte($this_2.data ^ other_2.data)); var other_3 = this.gfm_lc54$(new UInt(11), this.state[2][c]); var $this_4 = new UByte_init(toByte($this_3.data ^ other_3.data)); var other_4 = this.gfm_lc54$(new UInt(13), this.state[3][c]); tmp$_3[c] = new UByte_init(toByte($this_4.data ^ other_4.data)); var tmp$_4 = stateMixed[2]; var $this_5 = this.gfm_lc54$(new UInt(13), this.state[0][c]); var other_5 = this.gfm_lc54$(new UInt(9), this.state[1][c]); var $this_6 = new UByte_init(toByte($this_5.data ^ other_5.data)); var other_6 = this.gfm_lc54$(new UInt(14), this.state[2][c]); var $this_7 = new UByte_init(toByte($this_6.data ^ other_6.data)); var other_7 = this.gfm_lc54$(new UInt(11), this.state[3][c]); tmp$_4[c] = new UByte_init(toByte($this_7.data ^ other_7.data)); var tmp$_5 = stateMixed[3]; var $this_8 = this.gfm_lc54$(new UInt(11), this.state[0][c]); var other_8 = this.gfm_lc54$(new UInt(13), this.state[1][c]); var $this_9 = new UByte_init(toByte($this_8.data ^ other_8.data)); var other_9 = this.gfm_lc54$(new UInt(9), this.state[2][c]); var $this_10 = new UByte_init(toByte($this_9.data ^ other_9.data)); var other_10 = this.gfm_lc54$(new UInt(14), this.state[3][c]); tmp$_5[c] = new UByte_init(toByte($this_10.data ^ other_10.data)); } arrayCopy(stateMixed, this.state, 0, 0, stateMixed.length); }; Aes.prototype.galoisFieldAdd_jl2jf8$ = function (first, second) { return new UByte_init(toByte(first.data ^ second.data)); }; Aes.prototype.galoisFieldMultiply_jl2jf8$ = function (first, second) { var tmp$; var result = new UInt(0); var firstInt = new UInt(first.data & 255); var secondInt = new UInt(second.data & 255); var carry = new UInt(0); for (var i = 0; i <= 7; i++) { var $this = secondInt; var other = new UInt(1); if ((tmp$ = new UInt($this.data & other.data)) != null ? tmp$.equals(new UInt(1)) : null) { var $this_0 = result; var other_0 = firstInt; result = new UInt($this_0.data ^ other_0.data); } var $this_1 = firstInt; var other_1 = new UInt(128); carry = new UInt($this_1.data & other_1.data); firstInt = new UInt(firstInt.data << 1); if (carry != null ? carry.equals(new UInt(128)) : null) { var $this_2 = firstInt; var other_2 = new UInt(27); firstInt = new UInt($this_2.data ^ other_2.data); } secondInt = new UInt(secondInt.data >>> 1); var $this_3 = firstInt; var other_3 = new UInt(255); firstInt = new UInt($this_3.data & other_3.data); } return new UByte_init(toByte(result.data)); }; Aes.prototype.addRoundKey = function () { for (var i = 0; i < 4; i++) { var tmp$ = this.state[0]; var $this = this.state[0][i]; var other = this.expandedKey[(this.round * 4 | 0) + i | 0][0]; tmp$[i] = new UByte_init(toByte($this.data ^ other.data)); var tmp$_0 = this.state[1]; var $this_0 = this.state[1][i]; var other_0 = this.expandedKey[(this.round * 4 | 0) + i | 0][1]; tmp$_0[i] = new UByte_init(toByte($this_0.data ^ other_0.data)); var tmp$_1 = this.state[2]; var $this_1 = this.state[2][i]; var other_1 = this.expandedKey[(this.round * 4 | 0) + i | 0][2]; tmp$_1[i] = new UByte_init(toByte($this_1.data ^ other_1.data)); var tmp$_2 = this.state[3]; var $this_2 = this.state[3][i]; var other_2 = this.expandedKey[(this.round * 4 | 0) + i | 0][3]; tmp$_2[i] = new UByte_init(toByte($this_2.data ^ other_2.data)); } this.round = this.round + 1 | 0; }; Aes.prototype.inverseAddRoundKey = function () { for (var i = 0; i < 4; i++) { var tmp$ = this.state[0]; var $this = this.state[0][i]; var other = this.expandedKey[(this.round * 4 | 0) + i | 0][0]; tmp$[i] = new UByte_init(toByte($this.data ^ other.data)); var tmp$_0 = this.state[1]; var $this_0 = this.state[1][i]; var other_0 = this.expandedKey[(this.round * 4 | 0) + i | 0][1]; tmp$_0[i] = new UByte_init(toByte($this_0.data ^ other_0.data)); var tmp$_1 = this.state[2]; var $this_1 = this.state[2][i]; var other_1 = this.expandedKey[(this.round * 4 | 0) + i | 0][2]; tmp$_1[i] = new UByte_init(toByte($this_1.data ^ other_1.data)); var tmp$_2 = this.state[3]; var $this_2 = this.state[3][i]; var other_2 = this.expandedKey[(this.round * 4 | 0) + i | 0][3]; tmp$_2[i] = new UByte_init(toByte($this_2.data ^ other_2.data)); } this.round = this.round - 1 | 0; }; Aes.prototype.gfm_lc54$ = function ($receiver, second) { return this.galoisFieldMultiply_jl2jf8$(new UByte_init(toByte($receiver.data)), second); }; Aes.prototype.expandKey = function () { var tmp$, tmp$_0, tmp$_1; var $receiver = until(0, 4 * (this.numberOfRounds + 1 | 0) | 0); var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); var tmp$_2; tmp$_2 = $receiver.iterator(); while (tmp$_2.hasNext()) { var item = tmp$_2.next(); var tmp$_3 = destination.add_11rb$; var array = Array_0(4); var tmp$_4; tmp$_4 = array.length - 1 | 0; for (var i = 0; i <= tmp$_4; i++) { array[i] = new UByte_init(0); } tmp$_3.call(destination, array); } var expandedKey = copyToArray(destination); tmp$ = this.aesKey.numberOf32BitWords; for (var i_0 = 0; i_0 < tmp$; i_0++) { expandedKey[i_0][0] = this.aesKey.keyArray[(i_0 * 4 | 0) + 0 | 0]; expandedKey[i_0][1] = this.aesKey.keyArray[(i_0 * 4 | 0) + 1 | 0]; expandedKey[i_0][2] = this.aesKey.keyArray[(i_0 * 4 | 0) + 2 | 0]; expandedKey[i_0][3] = this.aesKey.keyArray[(i_0 * 4 | 0) + 3 | 0]; } tmp$_0 = this.aesKey.numberOf32BitWords; tmp$_1 = 4 * (this.numberOfRounds + 1 | 0) | 0; for (var i_1 = tmp$_0; i_1 < tmp$_1; i_1++) { var temp = expandedKey[i_1 - 1 | 0].slice(); if (i_1 % this.aesKey.numberOf32BitWords === 0) { var tempTemp = temp[0]; temp[0] = temp[1]; temp[1] = temp[2]; temp[2] = temp[3]; temp[3] = tempTemp; temp[0] = this.getSBoxValue_mpmjao$(temp[0]); temp[1] = this.getSBoxValue_mpmjao$(temp[1]); temp[2] = this.getSBoxValue_mpmjao$(temp[2]); temp[3] = this.getSBoxValue_mpmjao$(temp[3]); var $this = temp[0]; var other = Aes$Companion_getInstance().rcon.get_za3lpa$(i_1 / this.aesKey.numberOf32BitWords | 0); temp[0] = new UByte_init(toByte($this.data ^ other.data)); } else if (Kotlin.isType(this.aesKey, AesKey$Aes256Key) && i_1 % this.aesKey.numberOf32BitWords === 4) { temp[0] = this.getSBoxValue_mpmjao$(temp[0]); temp[1] = this.getSBoxValue_mpmjao$(temp[1]); temp[2] = this.getSBoxValue_mpmjao$(temp[2]); temp[3] = this.getSBoxValue_mpmjao$(temp[3]); } var $receiver_0 = expandedKey[i_1 - this.aesKey.numberOf32BitWords | 0]; var destination_0 = ArrayList_init($receiver_0.length); var tmp$_5, tmp$_0_0; var index = 0; for (tmp$_5 = 0; tmp$_5 !== $receiver_0.length; ++tmp$_5) { var item_0 = $receiver_0[tmp$_5]; var tmp$_6 = destination_0.add_11rb$; var other_0 = temp[tmp$_0_0 = index, index = tmp$_0_0 + 1 | 0, tmp$_0_0]; tmp$_6.call(destination_0, new UByte_init(toByte(item_0.data ^ other_0.data))); } expandedKey[i_1] = copyToArray(destination_0); this.clearArray_0(temp); } return expandedKey; }; Aes.prototype.encrypt = function () { var tmp$; if (this.completed) { throw RuntimeException_init('Encrypt can only be called once per Aes instance, since the state is cleared at the ' + 'end of the operation'); } this.printState_0(); this.addRoundKey(); this.printState_0(); tmp$ = this.numberOfRounds - 1 | 0; for (var i = 0; i < tmp$; i++) { this.subBytes(); this.printState_0(); this.shiftRows(); this.printState_0(); this.mixColumns(); this.printState_0(); this.addRoundKey(); this.printState_0(); } this.subBytes(); this.printState_0(); this.shiftRows(); this.printState_0(); this.addRoundKey(); this.printState_0(); var $receiver = until(0, 4); var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); var tmp$_0; tmp$_0 = $receiver.iterator(); while (tmp$_0.hasNext()) { var item = tmp$_0.next(); var tmp$_1 = destination.add_11rb$; var array = Array_0(4); var tmp$_2; tmp$_2 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_2; i_0++) { array[i_0] = new UByte_init(0); } tmp$_1.call(destination, array); } var transposedMatrix = copyToArray(destination); for (var i_1 = 0; i_1 < 4; i_1++) { for (var j = 0; j < 4; j++) { transposedMatrix[i_1][j] = this.state[j][i_1]; } } var $receiver_0 = this.state; var tmp$_3; for (tmp$_3 = 0; tmp$_3 !== $receiver_0.length; ++tmp$_3) { var element = $receiver_0[tmp$_3]; this.clearArray_0(element); } this.completed = true; return copyToArray(flatten(transposedMatrix)); }; Aes.prototype.decrypt = function () { var tmp$; if (this.completed) { throw RuntimeException_init('Decrypt can only be called once per Aes instance, since the state is cleared at the ' + 'end of the operation'); } this.round = this.numberOfRounds; this.printState_0(); this.inverseAddRoundKey(); this.printState_0(); tmp$ = this.numberOfRounds - 1 | 0; for (var i = 0; i < tmp$; i++) { this.inversShiftRows(); this.printState_0(); this.inverseSubBytes(); this.printState_0(); this.inverseAddRoundKey(); this.printState_0(); this.inverseMixColumns(); this.printState_0(); } this.inversShiftRows(); this.printState_0(); this.inverseSubBytes(); this.printState_0(); this.inverseAddRoundKey(); this.printState_0(); var $receiver = until(0, 4); var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); var tmp$_0; tmp$_0 = $receiver.iterator(); while (tmp$_0.hasNext()) { var item = tmp$_0.next(); var tmp$_1 = destination.add_11rb$; var array = Array_0(4); var tmp$_2; tmp$_2 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_2; i_0++) { array[i_0] = new UByte_init(0); } tmp$_1.call(destination, array); } var transposedMatrix = copyToArray(destination); for (var i_1 = 0; i_1 < 4; i_1++) { for (var j = 0; j < 4; j++) { transposedMatrix[i_1][j] = this.state[j][i_1]; } } this.printState_1(transposedMatrix); var $receiver_0 = this.state; var tmp$_3; for (tmp$_3 = 0; tmp$_3 !== $receiver_0.length; ++tmp$_3) { var element = $receiver_0[tmp$_3]; this.clearArray_0(element); } this.completed = true; return copyToArray(flatten(transposedMatrix)); }; Aes.prototype.clearArray_0 = function (array) { var tmp$; tmp$ = get_indices(array).iterator(); while (tmp$.hasNext()) { var element = tmp$.next(); array[element] = new UByte_init(0); } }; function Aes$printState$lambda$lambda(it) { return toString(it, 16); } Aes.prototype.printState_0 = function () { if (!Aes$Companion_getInstance().debug_0) { return; } println_0(); var $receiver = this.state; var tmp$; for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { var element = $receiver[tmp$]; println(joinToString_0(element, ' ', void 0, void 0, void 0, void 0, Aes$printState$lambda$lambda)); } }; function Aes$printState$lambda$lambda_0(it) { return toString(it, 16); } Aes.prototype.printState_1 = function (specific) { if (!Aes$Companion_getInstance().debug_0) { return; } println_0(); var tmp$; for (tmp$ = 0; tmp$ !== specific.length; ++tmp$) { var element = specific[tmp$]; println(joinToString_0(element, ' ', void 0, void 0, void 0, void 0, Aes$printState$lambda$lambda_0)); } }; Aes.$metadata$ = { kind: Kind_CLASS, simpleName: 'Aes', interfaces: [] }; function AesKey(key, keyLength) { this.key = key; this.keyLength = keyLength; var $receiver = chunked_0(this.key, 2); var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); var tmp$; tmp$ = $receiver.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(toUByte(item, 16)); } this.keyArray = copyToArray(destination); this.numberOf32BitWords = this.keyLength / 32 | 0; this.checkKeyLength_bm4lxs$(this.key, this.keyLength); } function AesKey$Aes128Key(key) { AesKey.call(this, key, 128); } AesKey$Aes128Key.$metadata$ = { kind: Kind_CLASS, simpleName: 'Aes128Key', interfaces: [AesKey] }; function AesKey$Aes192Key(key) { AesKey.call(this, key, 192); } AesKey$Aes192Key.$metadata$ = { kind: Kind_CLASS, simpleName: 'Aes192Key', interfaces: [AesKey] }; function AesKey$Aes256Key(key) { AesKey.call(this, key, 256); } AesKey$Aes256Key.$metadata$ = { kind: Kind_CLASS, simpleName: 'Aes256Key', interfaces: [AesKey] }; AesKey.prototype.checkKeyLength_bm4lxs$ = function (key, expectedLength) { if ((key.length / 2 | 0) !== (expectedLength / 8 | 0)) { throw RuntimeException_init('Invalid key length'); } }; AesKey.$metadata$ = { kind: Kind_CLASS, simpleName: 'AesKey', interfaces: [] }; function UByteArray$lambda(closure$init) { return function (index) { return closure$init(index).data; }; } var chunked$lambda_2 = wrapFunction(function () { var copyToArray = Kotlin.kotlin.collections.copyToArray; return function (it) { return copyToArray(it); }; }); function AesCbc(aesKey, mode, initializationVector) { AesCbc$Companion_getInstance(); if (initializationVector === void 0) initializationVector = null; this.aesKey = aesKey; this.mode = mode; this.currentOutput = []; this.previousEncrypted = []; var tmp$; var $receiver = initializationVector; var tmp$_0 = $receiver == null; if (!tmp$_0) { tmp$_0 = $receiver.length === 0; } if (tmp$_0) { tmp$ = SRNG_getInstance().getRandomBytes_za3lpa$(16); } else { tmp$ = initializationVector; } this.initVector = tmp$; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$([]); } this.output = list; this.buffer = toTypedArray(new UByteArray(Kotlin.fillArray(new Int8Array(16), UByteArray$lambda(AesCbc$buffer$lambda)))); this.bufferCounter = 0; } function AesCbc$Companion() { AesCbc$Companion_instance = this; this.BLOCK_BYTES = 16; } AesCbc$Companion.prototype.createEncryptor_c1slg8$ = function (aesKey) { return new AesCbc(aesKey, Mode$ENCRYPT_getInstance()); }; AesCbc$Companion.prototype.createDecryptor_c1slg8$ = function (aesKey) { return new AesCbc(aesKey, Mode$DECRYPT_getInstance()); }; AesCbc$Companion.prototype.encrypt_dx3icu$ = function (aesKey, data) { var aesCbc = new AesCbc(aesKey, Mode$ENCRYPT_getInstance()); aesCbc.addData_ummv9a$(data); return aesCbc.encrypt(); }; AesCbc$Companion.prototype.decrypt_drkyzd$ = function (aesKey, data, initialCounter) { if (initialCounter === void 0) initialCounter = null; var aesCbc = new AesCbc(aesKey, Mode$DECRYPT_getInstance(), initialCounter); aesCbc.addData_ummv9a$(data); return aesCbc.decrypt(); }; AesCbc$Companion.prototype.padToBlock_0 = function (unpadded) { var paddingSize = 16 - unpadded.length | 0; if (unpadded.length === 16) { return unpadded; } if (unpadded.length === 16) { var array = Array_0(16); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { array[i] = new UByte_init(toByte(16)); } return array; } if (unpadded.length > 16) { throw IllegalStateException_init('Block larger than 128 bytes'); } var array_0 = Array_0(16); var tmp$_0; tmp$_0 = array_0.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_0; i_0++) { var init$result; if (get_indices(unpadded).contains_mef7kx$(i_0)) { init$result = unpadded[i_0]; } else { init$result = new UByte_init(toByte(paddingSize)); } array_0[i_0] = init$result; } return array_0; }; AesCbc$Companion.$metadata$ = { kind: Kind_OBJECT, simpleName: 'Companion', interfaces: [] }; var AesCbc$Companion_instance = null; function AesCbc$Companion_getInstance() { if (AesCbc$Companion_instance === null) { new AesCbc$Companion(); } return AesCbc$Companion_instance; } AesCbc.prototype.addData_ummv9a$ = function (data) { if ((this.bufferCounter + data.length | 0) < 16) this.appendToBuffer_0(data, this.bufferCounter); else if ((this.bufferCounter + data.length | 0) >= 16) { var last = data.length % 16; var hasLast = last !== 0; var numberOfSlices = data.length / 16 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(data, until(Kotlin.imul(i, 16), Kotlin.imul(i + 1 | 0, 16)))); } if (hasLast) { result.add_11rb$(slice(data, until(Kotlin.imul(numberOfSlices, 16), data.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$; tmp$ = result.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(copyToArray(item)); } var chunked = copyToArray(destination); var tmp$_0; for (tmp$_0 = 0; tmp$_0 !== chunked.length; ++tmp$_0) { var element = chunked[tmp$_0]; if ((this.bufferCounter + element.length | 0) < 16) { this.appendToBuffer_0(element, this.bufferCounter); } else { arrayCopy(element, this.buffer, this.bufferCounter, 0, 16 - this.bufferCounter | 0); var $receiver = this.output; var element_0 = this.consumeBlock_0(this.buffer); $receiver.add_11rb$(element_0); var array = Array_0(16); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_1; i_0++) { var init$result; var tmp$_2; tmp$_2 = element.length - (16 - this.bufferCounter) | 0; if (0 <= i_0 && i_0 < tmp$_2) { init$result = element[i_0 + (16 - this.bufferCounter) | 0]; } else { init$result = new UByte_init(0); } array[i_0] = init$result; } this.buffer = array; this.bufferCounter = element.length - (16 - this.bufferCounter) | 0; } } } }; AesCbc.prototype.encrypt = function () { if (this.bufferCounter > 0) { var lastBlockPadded = AesCbc$Companion_getInstance().padToBlock_0(this.buffer); if (lastBlockPadded.length > 16) { var last = lastBlockPadded.length % 16; var hasLast = last !== 0; var numberOfSlices = lastBlockPadded.length / 16 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(lastBlockPadded, until(Kotlin.imul(i, 16), Kotlin.imul(i + 1 | 0, 16)))); } if (hasLast) { result.add_11rb$(slice(lastBlockPadded, until(Kotlin.imul(numberOfSlices, 16), lastBlockPadded.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$; tmp$ = result.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(copyToArray(item)); } var chunks = copyToArray(destination); var $receiver = this.output; var element = this.consumeBlock_0(chunks[0]); $receiver.add_11rb$(element); var $receiver_0 = this.output; var element_0 = this.consumeBlock_0(chunks[1]); $receiver_0.add_11rb$(element_0); } else { var $receiver_1 = this.output; var element_1 = this.consumeBlock_0(lastBlockPadded); $receiver_1.add_11rb$(element_1); } } var tmp$_0 = reversed(this.output); var array = Array_0(0); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_1; i_0++) { array[i_0] = new UByte_init(0); } var accumulator = array; if (!tmp$_0.isEmpty()) { var iterator = tmp$_0.listIterator_za3lpa$(tmp$_0.size); while (iterator.hasPrevious()) { var arrayOfUBytes = iterator.previous(); accumulator = accumulator.concat(arrayOfUBytes); } } return new EncryptedDataAndInitializationVector(accumulator, this.initVector); }; AesCbc.prototype.decrypt = function () { var tmp$, tmp$_0; var removePaddingCount = last_0(last(this.output)); var other = new UInt(0); var tmp$_1 = uintCompare((new UInt(removePaddingCount.data & 255)).data, other.data) > 0; if (tmp$_1) { var other_0 = new UInt(16); tmp$_1 = uintCompare((new UInt(removePaddingCount.data & 255)).data, other_0.data) < 0; } if (tmp$_1) { tmp$ = dropLast(last(this.output), removePaddingCount.data & 255 & 127); } else { tmp$ = toList_0(last(this.output)); } var removedPadding = tmp$; var tmp$_2 = copyToArray(dropLast_0(this.output, 1)); var elements = copyToArray(removedPadding); var preparedOutput = tmp$_2.concat(elements); var reversed = Kotlin.isType(tmp$_0 = reversed_0(preparedOutput), List) ? tmp$_0 : throwCCE(); var array = Array_0(0); var tmp$_3; tmp$_3 = array.length - 1 | 0; for (var i = 0; i <= tmp$_3; i++) { array[i] = new UByte_init(0); } var accumulator = array; if (!reversed.isEmpty()) { var iterator = reversed.listIterator_za3lpa$(reversed.size); while (iterator.hasPrevious()) { var arrayOfUBytes = iterator.previous(); accumulator = accumulator.concat(arrayOfUBytes); } } var folded = accumulator; return folded; }; AesCbc.prototype.appendToBuffer_0 = function (array, start) { arrayCopy(array, this.buffer, start, 0, array.length); this.bufferCounter = this.bufferCounter + array.length | 0; }; AesCbc.prototype.consumeBlock_0 = function (data) { var tmp$, tmp$_0; switch (this.mode.name) { case 'ENCRYPT': if (this.currentOutput.length === 0) { println('IV: ' + this.initVector); tmp$ = Aes$Companion_getInstance().encrypt_dx3icu$(this.aesKey, xor(data, this.initVector)); } else { tmp$ = Aes$Companion_getInstance().encrypt_dx3icu$(this.aesKey, xor(data, this.currentOutput)); } this.currentOutput = tmp$; tmp$_0 = this.currentOutput; break; case 'DECRYPT': if (this.currentOutput.length === 0) { this.currentOutput = xor(Aes$Companion_getInstance().decrypt_dx3icu$(this.aesKey, data), this.initVector); } else { this.currentOutput = xor(Aes$Companion_getInstance().decrypt_dx3icu$(this.aesKey, data), this.previousEncrypted); } this.previousEncrypted = data; tmp$_0 = this.currentOutput; break; default:tmp$_0 = Kotlin.noWhenBranchMatched(); break; } return tmp$_0; }; function AesCbc$buffer$lambda(it) { return new UByte_init(0); } AesCbc.$metadata$ = { kind: Kind_CLASS, simpleName: 'AesCbc', interfaces: [] }; function EncryptedDataAndInitializationVector(encryptedData, initilizationVector) { this.encryptedData = encryptedData; this.initilizationVector = initilizationVector; } EncryptedDataAndInitializationVector.prototype.equals = function (other) { var tmp$, tmp$_0; if (this === other) return true; if (other == null || !((tmp$ = Kotlin.getKClassFromExpression(this)) != null ? tmp$.equals(Kotlin.getKClassFromExpression(other)) : null)) return false; Kotlin.isType(tmp$_0 = other, EncryptedDataAndInitializationVector) ? tmp$_0 : throwCCE(); if (!contentEquals(this.encryptedData, other.encryptedData)) return false; if (!contentEquals(this.initilizationVector, other.initilizationVector)) return false; return true; }; EncryptedDataAndInitializationVector.prototype.hashCode = function () { var result = contentHashCode(this.encryptedData); result = (31 * result | 0) + contentHashCode(this.initilizationVector) | 0; return result; }; EncryptedDataAndInitializationVector.$metadata$ = { kind: Kind_CLASS, simpleName: 'EncryptedDataAndInitializationVector', interfaces: [] }; EncryptedDataAndInitializationVector.prototype.component1 = function () { return this.encryptedData; }; EncryptedDataAndInitializationVector.prototype.component2 = function () { return this.initilizationVector; }; EncryptedDataAndInitializationVector.prototype.copy_6a75nw$ = function (encryptedData, initilizationVector) { return new EncryptedDataAndInitializationVector(encryptedData === void 0 ? this.encryptedData : encryptedData, initilizationVector === void 0 ? this.initilizationVector : initilizationVector); }; EncryptedDataAndInitializationVector.prototype.toString = function () { return 'EncryptedDataAndInitializationVector(encryptedData=' + Kotlin.toString(this.encryptedData) + (', initilizationVector=' + Kotlin.toString(this.initilizationVector)) + ')'; }; function UByteArray$lambda_0(closure$init) { return function (index) { return closure$init(index).data; }; } var chunked$lambda_3 = wrapFunction(function () { var copyToArray = Kotlin.kotlin.collections.copyToArray; return function (it) { return copyToArray(it); }; }); function AesCtr(aesKey, mode, initialCounter) { AesCtr$Companion_getInstance(); if (initialCounter === void 0) initialCounter = null; this.aesKey = aesKey; this.mode = mode; this.currentOutput = []; this.previousEncrypted = []; var tmp$; var $receiver = initialCounter; var tmp$_0 = $receiver == null; if (!tmp$_0) { tmp$_0 = $receiver.length === 0; } if (tmp$_0) { tmp$ = SRNG_getInstance().getRandomBytes_za3lpa$(16); } else { tmp$ = initialCounter; } this.counterStart = tmp$; this.blockCounter = AesCtr$Companion_getInstance().modularCreator.fromBigInteger_sao9k6$(BigInteger.Companion.fromUByteArray_6jbb10$(this.counterStart, Endianness.BIG)); var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$([]); } this.output = list; this.buffer = toTypedArray(new UByteArray(Kotlin.fillArray(new Int8Array(16), UByteArray$lambda_0(AesCtr$buffer$lambda)))); this.bufferCounter = 0; } function AesCtr$Companion() { AesCtr$Companion_instance = this; this.BLOCK_BYTES = 16; this.modularCreator = ModularBigInteger.Companion.creatorForModulo_sao9k6$(BigInteger.Companion.ONE.shl_za3lpa$(128).minus_za3lpa$(1)); } AesCtr$Companion.prototype.createEncryptor_c1slg8$ = function (aesKey) { return new AesCtr(aesKey, Mode$ENCRYPT_getInstance()); }; AesCtr$Companion.prototype.createDecryptor_c1slg8$ = function (aesKey) { return new AesCtr(aesKey, Mode$DECRYPT_getInstance()); }; AesCtr$Companion.prototype.encrypt_dx3icu$ = function (aesKey, data) { var aesCtr = new AesCtr(aesKey, Mode$ENCRYPT_getInstance()); aesCtr.addData_ummv9a$(data); return aesCtr.encrypt(); }; AesCtr$Companion.prototype.decrypt_drkyzd$ = function (aesKey, data, initialCounter) { if (initialCounter === void 0) initialCounter = null; var aesCtr = new AesCtr(aesKey, Mode$DECRYPT_getInstance(), initialCounter); aesCtr.addData_ummv9a$(data); return aesCtr.decrypt(); }; AesCtr$Companion.$metadata$ = { kind: Kind_OBJECT, simpleName: 'Companion', interfaces: [] }; var AesCtr$Companion_instance = null; function AesCtr$Companion_getInstance() { if (AesCtr$Companion_instance === null) { new AesCtr$Companion(); } return AesCtr$Companion_instance; } AesCtr.prototype.addData_ummv9a$ = function (data) { if ((this.bufferCounter + data.length | 0) < 16) this.appendToBuffer_0(data, this.bufferCounter); else if ((this.bufferCounter + data.length | 0) >= 16) { var last = data.length % 16; var hasLast = last !== 0; var numberOfSlices = data.length / 16 | 0; var list = ArrayList_init(0); for (var index = 0; index < 0; index++) { list.add_11rb$(emptyList()); } var result = list; for (var i = 0; i < numberOfSlices; i++) { result.add_11rb$(slice(data, until(Kotlin.imul(i, 16), Kotlin.imul(i + 1 | 0, 16)))); } if (hasLast) { result.add_11rb$(slice(data, until(Kotlin.imul(numberOfSlices, 16), data.length))); } var destination = ArrayList_init(collectionSizeOrDefault(result, 10)); var tmp$; tmp$ = result.iterator(); while (tmp$.hasNext()) { var item = tmp$.next(); destination.add_11rb$(copyToArray(item)); } var chunked = copyToArray(destination); var tmp$_0; for (tmp$_0 = 0; tmp$_0 !== chunked.length; ++tmp$_0) { var element = chunked[tmp$_0]; if ((this.bufferCounter + element.length | 0) < 16) { this.appendToBuffer_0(element, this.bufferCounter); } else { arrayCopy(element, this.buffer, this.bufferCounter, 0, 16 - this.bufferCounter | 0); var $receiver = this.output; var element_0 = this.consumeBlock_0(this.buffer, this.blockCounter); $receiver.add_11rb$(element_0); this.blockCounter = this.blockCounter.plus_za3lpa$(1); var array = Array_0(16); var tmp$_1; tmp$_1 = array.length - 1 | 0; for (var i_0 = 0; i_0 <= tmp$_1; i_0++) { var init$result; var tmp$_2; tmp$_2 = element.length - (16 - this.bufferCounter) | 0; if (0 <= i_0 && i_0 < tmp$_2) { init$result = element[i_0 + (16 - this.bufferCounter) | 0]; } else { init$result = new UByte_init(0); } array[i_0] = init$result; } this.buffer = array; this.bufferCounter = element.length - (16 - this.bufferCounter) | 0; } } } }; AesCtr.prototype.encrypt = function () { if (this.bufferCounter > 0) { var $receiver = this.output; var element = this.consumeBlock_0(this.buffer, this.blockCounter); $receiver.add_11rb$(element); } var tmp$ = reversed(this.output); var array = Array_0(0); var tmp$_0; tmp$_0 = array.length - 1 | 0; for (var i = 0; i <= tmp$_0; i++) { array[i] = new UByte_init(0); } var accumulator = array; if (!tmp$.isEmpty()) { var iterator = tmp$.listIterator_za3lpa$(tmp$.size); while (iterator.hasPrevious()) { var arrayOfUBytes = iterator.previous(); accumulator = accumulator.concat(arrayOfUBytes); } } return new EncryptedDataAndInitialCounter(accumulator, this.counterStart); }; AesCtr.prototype.decrypt = function () { var tmp$; if (this.bufferCounter > 0) { var $receiver = this.output; var element = this.consumeBlock_0(this.buffer, this.blockCounter); $receiver.add_11rb$(element); } var reversed_0 = Kotlin.isType(tmp$ = reversed(this.output), List) ? tmp$ : throwCCE(); var array = Array_0(0); var tmp$_0; tmp$_0 = array.length - 1 | 0; for (var i = 0; i <= tmp$_0; i++) { array[i] = new UByte_init(0); } var accumulator = array; if (!reversed_0.isEmpty()) { var iterator = reversed_0.listIterator_za3lpa$(reversed_0.size); while (iterator.hasPrevious()) { var arrayOfUBytes = iterator.previous(); accumulator = accumulator.concat(arrayOfUBytes); } } var folded = accumulator; return folded; }; AesCtr.prototype.appendToBuffer_0 = function (array, start) { arrayCopy(array, this.buffer, start, 0, array.length); this.bufferCounter = this.bufferCounter + array.length | 0; }; AesCtr.prototype.consumeBlock_0 = function (data, blockCount) { var tmp$; var blockCountAsByteArray = this.expandCounterTo16Bytes_0(blockCount.toUByteArray_1g0qma$(Endianness.BIG)); switch (this.mode.name) { case 'ENCRYPT': tmp$ = xor(Aes$Companion_getInstance().encrypt_dx3icu$(this.aesKey, blockCountAsByteArray), data); break; case 'DECRYPT': tmp$ = xor(Aes$Companion_getInstance().encrypt_dx3icu$(this.aesKey, blockCountAsByteArray), data); break; default:tmp$ = Kotlin.noWhenBranchMatched(); break; } return tmp$; }; AesCtr.prototype.expandCounterTo16Bytes_0 = function ($receiver) { var tmp$; if ($receiver.length < 16) { println('Expanding'); var diff = 16 - $receiver.length | 0; var array = Array_0(diff); var tmp$_0; tmp$_0 = array.length - 1 | 0; for (var i = 0; i <= tmp$_0; i++) { array[i] = new UByte_init(0); } var pad = array; tmp$ = pad.concat($receiver); } else { tmp$ = $receiver; } return tmp$; }; function AesCtr$buffer$lambda(it) { return new UByte_init(0); } AesCtr.$metadata$ = { kind: Kind_CLASS, simpleName: 'AesCtr', interfaces: [] }; function EncryptedDataAndInitialCounter(encryptedData, initialCounter) { this.encryptedData = encryptedData; this.initialCounter = initialCounter; } EncryptedDataAndInitialCounter.prototype.equals = function (other) { var tmp$, tmp$_0; if (this === other) return true; if (other == null || !((tmp$ = Kotlin.getKClassFromExpression(this)) != null ? tmp$.equals(Kotlin.getKClassFromExpression(other)) : null)) return false; Kotlin.isType(tmp$_0 = other, EncryptedDataAndInitializationVector) ? tmp$_0 : throwCCE(); if (!contentEquals(this.encryptedData, other.encryptedData)) return false; if (!contentEquals(this.initialCounter, other.initilizationVector)) return false; return true; }; EncryptedDataAndInitialCounter.prototype.hashCode = function () { var result = contentHashCode(this.encryptedData); result = (31 * result | 0) + contentHashCode(this.initialCounter) | 0; return result; }; EncryptedDataAndInitialCounter.$metadata$ = { kind: Kind_CLASS, simpleName: 'EncryptedDataAndInitialCounter', interfaces: [] }; EncryptedDataAndInitialCounter.prototype.component1 = function () { return this.encryptedData; }; EncryptedDataAndInitialCounter.prototype.component2 = function () { return this.initialCounter; }; EncryptedDataAndInitialCounter.prototype.copy_6a75nw$ = function (encryptedData, initialCounter) { return new EncryptedDataAndInitialCounter(encryptedData === void 0 ? this.encryptedData : encryptedData, initialCounter === void 0 ? this.initialCounter : initialCounter); }; EncryptedDataAndInitialCounter.prototype.toString = function () { return 'EncryptedDataAndInitialCounter(encryptedData=' + Kotlin.toString(this.encryptedData) + (', initialCounter=' + Kotlin.toString(this.initialCounter)) + ')'; }; function Mode(name, ordinal) { Enum.call(this); this.name$ = name; this.ordinal$ = ordinal; } function Mode_initFields() { Mode_initFields = function () { }; Mode$ENCRYPT_instance = new Mode('ENCRYPT', 0); Mode$DECRYPT_instance = new Mode('DECRYPT', 1); } var Mode$ENCRYPT_instance; function Mode$ENCRYPT_getInstance() { Mode_initFields(); return Mode$ENCRYPT_instance; } var Mode$DECRYPT_instance; function Mode$DECRYPT_getInstance() { Mode_initFields(); return Mode$DECRYPT_instance; } Mode.$metadata$ = { kind: Kind_CLASS, simpleName: 'Mode', interfaces: [Enum] }; function Mode$values() { return [Mode$ENCRYPT_getInstance(), Mode$DECRYPT_getInstance()]; } Mode.values = Mode$values; function Mode$valueOf(name) { switch (name) { case 'ENCRYPT': return Mode$ENCRYPT_getInstance(); case 'DECRYPT': return Mode$DECRYPT_getInstance(); default:throwISE('No enum constant com.ionspin.kotlin.crypto.symmetric.Mode.' + name); } } Mode.valueOf_61zpoe$ = Mode$valueOf; function SRNG() { SRNG_instance = this; this.counter = 0; } SRNG.prototype.getRandomBytes_za3lpa$ = function (amount) { var array = Array_0(amount); var tmp$; tmp$ = array.length - 1 | 0; for (var i = 0; i <= tmp$; i++) { var tmp$_0; array[i] = new UByte_init(toByte((tmp$_0 = this.counter, this.counter = tmp$_0 + 1 | 0, tmp$_0))); } return array; }; SRNG.$metadata$ = { kind: Kind_OBJECT, simpleName: 'SRNG', interfaces: [] }; var SRNG_instance = null; function SRNG_getInstance() { if (SRNG_instance === null) { new SRNG(); } return SRNG_instance; } var package$com = _.com || (_.com = {}); var package$ionspin = package$com.ionspin || (package$com.ionspin = {}); var package$kotlin = package$ionspin.kotlin || (package$ionspin.kotlin = {}); var package$crypto = package$kotlin.crypto || (package$kotlin.crypto = {}); Object.defineProperty(package$crypto, 'Config', { get: Config_getInstance }); package$crypto.hexColumsPrint_mgx7ee$ = hexColumsPrint; package$crypto.hexColumsPrint_q387ch$ = hexColumsPrint_0; package$crypto.hexColumsPrint_uo2ox1$ = hexColumsPrint_1; package$crypto.rotateRight_k13f4a$ = rotateRight; package$crypto.rotateRight_hc3rh$ = rotateRight_0; package$crypto.xor_h1cpxt$ = xor; package$crypto.hexStringToUByteArray_pdl1vz$ = hexStringToUByteArray; package$crypto.toHexString_q387ch$ = toHexString; var package$hash = package$crypto.hash || (package$crypto.hash = {}); package$hash.Hash = Hash; package$hash.UpdatableHash = UpdatableHash; package$hash.StatelessHash = StatelessHash; $$importsForInline$$['multiplatform-crypto'] = _; Object.defineProperty(Blake2b, 'Companion', { get: Blake2b$Companion_getInstance }); var package$blake2b = package$hash.blake2b || (package$hash.blake2b = {}); package$blake2b.Blake2b_init_9d67ql$ = Blake2b_init; package$blake2b.Blake2b = Blake2b; Object.defineProperty(Sha256, 'Companion', { get: Sha256$Companion_getInstance }); var package$sha = package$hash.sha || (package$hash.sha = {}); package$sha.Sha256 = Sha256; Object.defineProperty(Sha512, 'Companion', { get: Sha512$Companion_getInstance }); package$sha.Sha512 = Sha512; Object.defineProperty(Aes, 'Companion', { get: Aes$Companion_getInstance }); var package$symmetric = package$crypto.symmetric || (package$crypto.symmetric = {}); package$symmetric.Aes = Aes; AesKey.Aes128Key = AesKey$Aes128Key; AesKey.Aes192Key = AesKey$Aes192Key; AesKey.Aes256Key = AesKey$Aes256Key; package$symmetric.AesKey = AesKey; Object.defineProperty(AesCbc, 'Companion', { get: AesCbc$Companion_getInstance }); package$symmetric.AesCbc = AesCbc; package$symmetric.EncryptedDataAndInitializationVector = EncryptedDataAndInitializationVector; Object.defineProperty(AesCtr, 'Companion', { get: AesCtr$Companion_getInstance }); package$symmetric.AesCtr = AesCtr; package$symmetric.EncryptedDataAndInitialCounter = EncryptedDataAndInitialCounter; Object.defineProperty(Mode, 'ENCRYPT', { get: Mode$ENCRYPT_getInstance }); Object.defineProperty(Mode, 'DECRYPT', { get: Mode$DECRYPT_getInstance }); package$symmetric.Mode = Mode; Object.defineProperty(package$crypto, 'SRNG', { get: SRNG_getInstance }); Blake2b$Companion.prototype.digest_5pksov$ = StatelessHash.prototype.digest_5pksov$; Blake2b$Companion.prototype.digest_o2z9gi$ = StatelessHash.prototype.digest_o2z9gi$; Sha256$Companion.prototype.digest_5pksov$ = StatelessHash.prototype.digest_5pksov$; Sha256$Companion.prototype.digest_o2z9gi$ = StatelessHash.prototype.digest_o2z9gi$; Sha512$Companion.prototype.digest_5pksov$ = StatelessHash.prototype.digest_5pksov$; Sha512$Companion.prototype.digest_o2z9gi$ = StatelessHash.prototype.digest_o2z9gi$; Kotlin.defineModule('multiplatform-crypto', _); return _; }(module.exports, require('kotlin'), require('bignum'))); //# sourceMappingURL=multiplatform-crypto.js.map