From: "Tan Swee Heng" Subject: [PATCH 1/3] [eSTREAM] estream: New crypto_type to support eSTREAM ciphers Date: Tue, 13 Nov 2007 03:52:37 +0800 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_8812_12671443.1194897157149" To: "Linux Crypto" Return-path: Received: from wa-out-1112.google.com ([209.85.146.180]:40904 "EHLO wa-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751700AbXKLTwi (ORCPT ); Mon, 12 Nov 2007 14:52:38 -0500 Received: by wa-out-1112.google.com with SMTP id v27so1647137wah for ; Mon, 12 Nov 2007 11:52:37 -0800 (PST) Sender: linux-crypto-owner@vger.kernel.org List-Id: linux-crypto.vger.kernel.org ------=_Part_8812_12671443.1194897157149 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline This patch introduces a new crypto_type (and the associated *_alg and *_tfm) to support eSTREAM ciphers. It is created to provide better support for the setiv() operation required by eSTREAM ciphers. ------=_Part_8812_12671443.1194897157149 Content-Type: text/plain; name=patch1-estream.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_f8xet0ot0 Content-Disposition: attachment; filename=patch1-estream.txt ZGlmZiAtLWdpdCBhL2NyeXB0by9LY29uZmlnIGIvY3J5cHRvL0tjb25maWcKaW5kZXggMWYzMjA3 MS4uNGFkMjVmZCAxMDA2NDQKLS0tIGEvY3J5cHRvL0tjb25maWcKKysrIGIvY3J5cHRvL0tjb25m aWcKQEAgLTQwLDYgKzQwLDEzIEBAIGNvbmZpZyBDUllQVE9fSEFTSAogCXRyaXN0YXRlCiAJc2Vs ZWN0IENSWVBUT19BTEdBUEkKIAorY29uZmlnIENSWVBUT19FU1RSRUFNCisJdHJpc3RhdGUgImVT VFJFQU0gY2lwaGVycyIKKwlkZXBlbmRzIG9uIEVYUEVSSU1FTlRBTAorCXNlbGVjdCBDUllQVE9f QUxHQVBJCisJaGVscAorCSAgVGhpcyBpcyBhIGNyeXB0b190eXBlIHRvIHN1cHBvcnQgZVNUUkVB TSBjaXBoZXJzLgorCiBjb25maWcgQ1JZUFRPX01BTkFHRVIKIAl0cmlzdGF0ZSAiQ3J5cHRvZ3Jh cGhpYyBhbGdvcml0aG0gbWFuYWdlciIKIAlzZWxlY3QgQ1JZUFRPX0FMR0FQSQpkaWZmIC0tZ2l0 IGEvY3J5cHRvL01ha2VmaWxlIGIvY3J5cHRvL01ha2VmaWxlCmluZGV4IDFmODdkYjIuLjE0YWZh MzQgMTAwNjQ0Ci0tLSBhL2NyeXB0by9NYWtlZmlsZQorKysgYi9jcnlwdG8vTWFrZWZpbGUKQEAg LTE0LDYgKzE0LDcgQEAgb2JqLSQoQ09ORklHX0NSWVBUT19CTEtDSVBIRVIpICs9IGJsa2NpcGhl ci5vCiAKIGNyeXB0b19oYXNoLW9ianMgOj0gaGFzaC5vCiBvYmotJChDT05GSUdfQ1JZUFRPX0hB U0gpICs9IGNyeXB0b19oYXNoLm8KK29iai0kKENPTkZJR19DUllQVE9fRVNUUkVBTSkgKz0gZXN0 cmVhbS5vCiAKIG9iai0kKENPTkZJR19DUllQVE9fTUFOQUdFUikgKz0gY3J5cHRvbWdyLm8KIG9i ai0kKENPTkZJR19DUllQVE9fSE1BQykgKz0gaG1hYy5vCmRpZmYgLS1naXQgYS9jcnlwdG8vZXN0 cmVhbS5jIGIvY3J5cHRvL2VzdHJlYW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi43YWQ3MGZmCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL2VzdHJlYW0uYwpAQCAtMCww ICsxLDE2NSBAQAorLyoKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIGVTVFJFQU0gY2lw aGVyIG9wZXJhdGlvbnMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA3IFRhbiBTd2VlIEhlbmcg PHRoZXN3ZWVoZW5nQGdtYWlsLmNvbT4KKyAqCisgKiBDb2RlIGRlcml2ZWQgZnJvbToKKyAqIGNp cGhlci5jOiBDb3B5cmlnaHQgKGMpIDIwMDIgSmFtZXMgTW9ycmlzIDxqbW9ycmlzQGludGVyY29k ZS5jb20uYXU+CisgKiAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA1IEhlcmJlcnQgWHUgPGhl cmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAqIGFueSBsYXRlciB2ZXJzaW9u LgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgv Y3J5cHRvLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNpbmNsdWRlICJpbnRlcm5hbC5oIgor CitzdGF0aWMgaW50IHNldGtleV91bmFsaWduZWQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgY29u c3QgdTggKmtleSwKKwkJCSAgICB1bnNpZ25lZCBpbnQga2V5c2l6ZSwgdW5zaWduZWQgaW50IGl2 c2l6ZSkKK3sKKwlzdHJ1Y3QgZXN0cmVhbV9hbGcgKmVzYSA9ICZ0Zm0tPl9fY3J0X2FsZy0+Y3Jh X2VzdHJlYW07CisJdW5zaWduZWQgbG9uZyBhbGlnbm1hc2sgPSBjcnlwdG9fdGZtX2FsZ19hbGln bm1hc2sodGZtKTsKKwlpbnQgcmV0OworCXU4ICpidWZmZXIsICphbGlnbmJ1ZmZlcjsKKwl1bnNp Z25lZCBsb25nIGFic2l6ZTsKKworCWFic2l6ZSA9IGtleXNpemUgKyBhbGlnbm1hc2s7CisJYnVm ZmVyID0ga21hbGxvYyhhYnNpemUsIEdGUF9BVE9NSUMpOworCWlmICghYnVmZmVyKQorCQlyZXR1 cm4gLUVOT01FTTsKKworCWFsaWduYnVmZmVyID0gKHU4ICopQUxJR04oKHVuc2lnbmVkIGxvbmcp YnVmZmVyLCBhbGlnbm1hc2sgKyAxKTsKKwltZW1jcHkoYWxpZ25idWZmZXIsIGtleSwga2V5c2l6 ZSk7CisJcmV0ID0gZXNhLT5zZXRrZXkodGZtLCBhbGlnbmJ1ZmZlciwga2V5c2l6ZSwgaXZzaXpl KTsKKwltZW1zZXQoYWxpZ25idWZmZXIsIDAsIGtleXNpemUpOworCWtmcmVlKGJ1ZmZlcik7CisJ cmV0dXJuIHJldDsKKworfQorCitzdGF0aWMgaW50IHNldGtleShzdHJ1Y3QgY3J5cHRvX3RmbSAq dGZtLCBjb25zdCB1OCAqa2V5LAorCQkgIHVuc2lnbmVkIGludCBrZXlzaXplLCB1bnNpZ25lZCBp bnQgaXZzaXplKQoreworCXN0cnVjdCBlc3RyZWFtX2FsZyAqZXNhID0gJnRmbS0+X19jcnRfYWxn LT5jcmFfZXN0cmVhbTsKKwl1bnNpZ25lZCBsb25nIGFsaWdubWFzayA9IGNyeXB0b190Zm1fYWxn X2FsaWdubWFzayh0Zm0pOworCisJdGZtLT5jcnRfZmxhZ3MgJj0gfkNSWVBUT19URk1fUkVTX01B U0s7CisJaWYgKGl2c2l6ZSA8IGVzYS0+bWluX2l2c2l6ZSB8fCBpdnNpemUgPiBlc2EtPm1heF9p dnNpemUpIHsKKwkJdGZtLT5jcnRfZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVNfQkFEX0lWX0xFTjsK KwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCXRmbS0+Y3J0X2VzdHJlYW0uaXZzaXplID0gaXZzaXpl OworCisJdGZtLT5jcnRfZmxhZ3MgJj0gfkNSWVBUT19URk1fUkVTX01BU0s7CisJaWYgKGtleXNp emUgPCBlc2EtPm1pbl9rZXlzaXplIHx8IGtleXNpemUgPiBlc2EtPm1heF9rZXlzaXplKSB7CisJ CXRmbS0+Y3J0X2ZsYWdzIHw9IENSWVBUT19URk1fUkVTX0JBRF9LRVlfTEVOOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisJaWYgKCh1bnNpZ25lZCBsb25nKWtleSAmIGFsaWdubWFzaykKKwkJcmV0 dXJuIHNldGtleV91bmFsaWduZWQodGZtLCBrZXksIGtleXNpemUsIGl2c2l6ZSk7CisKKwlyZXR1 cm4gZXNhLT5zZXRrZXkodGZtLCBrZXksIGtleXNpemUsIGl2c2l6ZSk7Cit9CisKK3N0YXRpYyBp bnQgc2V0aXZfdW5hbGlnbmVkKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIGNvbnN0IHU4ICppdikK K3sKKwlzdHJ1Y3QgZXN0cmVhbV9hbGcgKmVzYSA9ICZ0Zm0tPl9fY3J0X2FsZy0+Y3JhX2VzdHJl YW07CisJdW5zaWduZWQgbG9uZyBhbGlnbm1hc2sgPSBjcnlwdG9fdGZtX2FsZ19hbGlnbm1hc2so dGZtKTsKKwl1OCAqYnVmZmVyLCAqYWxpZ25idWZmZXI7CisJdW5zaWduZWQgbG9uZyBhYnNpemU7 CisJdW5zaWduZWQgaW50IGl2c2l6ZTsKKwlpbnQgcmV0OworCisJaXZzaXplID0gdGZtLT5jcnRf ZXN0cmVhbS5pdnNpemU7CisJYWJzaXplID0gaXZzaXplICsgYWxpZ25tYXNrOworCWJ1ZmZlciA9 IGttYWxsb2MoYWJzaXplLCBHRlBfQVRPTUlDKTsKKwlpZiAoIWJ1ZmZlcikKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwlhbGlnbmJ1ZmZlciA9ICh1OCAqKUFMSUdOKCh1bnNpZ25lZCBsb25nKWJ1ZmZl ciwgYWxpZ25tYXNrICsgMSk7CisJbWVtY3B5KGFsaWduYnVmZmVyLCBpdiwgaXZzaXplKTsKKwly ZXQgPSBlc2EtPnNldGl2KHRmbSwgYWxpZ25idWZmZXIpOworCWtmcmVlKGJ1ZmZlcik7CisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCBzZXRpdihzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCBj b25zdCB1OCAqaXYpCit7CisJc3RydWN0IGVzdHJlYW1fYWxnICplc2EgPSAmdGZtLT5fX2NydF9h bGctPmNyYV9lc3RyZWFtOworCXVuc2lnbmVkIGxvbmcgYWxpZ25tYXNrID0gY3J5cHRvX3RmbV9h bGdfYWxpZ25tYXNrKHRmbSk7CisKKwlpZiAoKHVuc2lnbmVkIGxvbmcpaXYgJiBhbGlnbm1hc2sp CisJCXJldHVybiBzZXRpdl91bmFsaWduZWQodGZtLCBpdik7CisJcmV0dXJuIGVzYS0+c2V0aXYo dGZtLCBpdik7Cit9CisKK3N0YXRpYyB2b2lkIGVuY3J5cHRfYmxvY2tfdW5hbGlnbmVkKHN0cnVj dCBjcnlwdG9fdGZtICp0Zm0sIHU4ICpkc3QsCisJCQkJICAgIGNvbnN0IHU4ICpzcmMpCit7CisJ dW5zaWduZWQgbG9uZyBhbGlnbm1hc2sgPSBjcnlwdG9fdGZtX2FsZ19hbGlnbm1hc2sodGZtKTsK KwlzdHJ1Y3QgZXN0cmVhbV9hbGcgKmVzYSA9ICZ0Zm0tPl9fY3J0X2FsZy0+Y3JhX2VzdHJlYW07 CisJdW5zaWduZWQgaW50IHNpemUgPSBjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKTsKKwl1 OCBidWZmZXJbc2l6ZSArIGFsaWdubWFza107CisJdTggKnRtcCA9ICh1OCAqKUFMSUdOKCh1bnNp Z25lZCBsb25nKWJ1ZmZlciwgYWxpZ25tYXNrICsgMSk7CisKKwlpZiAodW5saWtlbHkoKCh1bnNp Z25lZCBsb25nKWRzdCB8ICh1bnNpZ25lZCBsb25nKXNyYykgJiBhbGlnbm1hc2spKSB7CisJCW1l bWNweSh0bXAsIHNyYywgc2l6ZSk7CisJCWVzYS0+ZW5jcnlwdF9ibG9jayh0Zm0sIHRtcCwgdG1w KTsKKwkJbWVtY3B5KGRzdCwgdG1wLCBzaXplKTsKKwkJcmV0dXJuOworCX0KKwllc2EtPmVuY3J5 cHRfYmxvY2sodGZtLCBkc3QsIHNyYyk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY3J5cHRv X2VzdHJlYW1fY3R4c2l6ZShzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnLCB1MzIgdHlwZSwKKwkJCQkJ ICAgdTMyIG1hc2spCit7CisJcmV0dXJuIGFsZy0+Y3JhX2N0eHNpemU7Cit9CisKK3N0YXRpYyBp bnQgY3J5cHRvX2luaXRfZXN0cmVhbV9vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTMyIHR5 cGUsIHUzMiBtYXNrKQoreworCXN0cnVjdCBlc3RyZWFtX3RmbSAqY3J0ID0gJnRmbS0+Y3J0X2Vz dHJlYW07CisJc3RydWN0IGVzdHJlYW1fYWxnICplc2EgPSAmdGZtLT5fX2NydF9hbGctPmNyYV9l c3RyZWFtOworCisJY3J0LT5pdnNpemUgPSAwOworCWNydC0+c2V0a2V5ID0gc2V0a2V5OworCWNy dC0+c2V0aXYgPSBzZXRpdjsKKwljcnQtPmVuY3J5cHRfYmxvY2sgPSBjcnlwdG9fdGZtX2FsZ19h bGlnbm1hc2sodGZtKSA/CisJCWVuY3J5cHRfYmxvY2tfdW5hbGlnbmVkIDogZXNhLT5lbmNyeXB0 X2Jsb2NrOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGNyeXB0b19lc3RyZWFtX3No b3coc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnKQorCV9fYXR0cmli dXRlX18gKCh1bnVzZWQpKTsKK3N0YXRpYyB2b2lkIGNyeXB0b19lc3RyZWFtX3Nob3coc3RydWN0 IHNlcV9maWxlICptLCBzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnKQoreworCXNlcV9wcmludGYobSwg InR5cGUgICAgICAgICA6IGVzdHJlYW1cbiIpOworCXNlcV9wcmludGYobSwgImJsb2Nrc2l6ZSAg ICA6ICV1XG4iLCBhbGctPmNyYV9ibG9ja3NpemUpOworCXNlcV9wcmludGYobSwgIm1pbl9rZXlz aXplICA6ICV1XG4iLCBhbGctPmNyYV9lc3RyZWFtLm1pbl9rZXlzaXplKTsKKwlzZXFfcHJpbnRm KG0sICJtYXhfa2V5c2l6ZSAgOiAldVxuIiwgYWxnLT5jcmFfZXN0cmVhbS5tYXhfa2V5c2l6ZSk7 CisJc2VxX3ByaW50ZihtLCAibWluX2l2c2l6ZSAgIDogJXVcbiIsIGFsZy0+Y3JhX2VzdHJlYW0u bWluX2l2c2l6ZSk7CisJc2VxX3ByaW50ZihtLCAibWF4X2l2c2l6ZSAgIDogJXVcbiIsIGFsZy0+ Y3JhX2VzdHJlYW0ubWF4X2l2c2l6ZSk7Cit9CisKK2NvbnN0IHN0cnVjdCBjcnlwdG9fdHlwZSBj cnlwdG9fZXN0cmVhbV90eXBlID0geworCS5jdHhzaXplID0gY3J5cHRvX2VzdHJlYW1fY3R4c2l6 ZSwKKwkuaW5pdCA9IGNyeXB0b19pbml0X2VzdHJlYW1fb3BzLAorI2lmZGVmIENPTkZJR19QUk9D X0ZTCisJLnNob3cgPSBjcnlwdG9fZXN0cmVhbV9zaG93LAorI2VuZGlmCit9OworRVhQT1JUX1NZ TUJPTF9HUEwoY3J5cHRvX2VzdHJlYW1fdHlwZSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsK K01PRFVMRV9ERVNDUklQVElPTigiZVNUUkVBTSBjaXBoZXJzIik7CmRpZmYgLS1naXQgYS9pbmNs dWRlL2NyeXB0by9hbGdhcGkuaCBiL2luY2x1ZGUvY3J5cHRvL2FsZ2FwaS5oCmluZGV4IGI5YjA1 ZDMuLmQ0NjI4MTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY3J5cHRvL2FsZ2FwaS5oCisrKyBiL2lu Y2x1ZGUvY3J5cHRvL2FsZ2FwaS5oCkBAIC05OCw2ICs5OCw3IEBAIGV4dGVybiBjb25zdCBzdHJ1 Y3QgY3J5cHRvX3R5cGUgY3J5cHRvX2FibGtjaXBoZXJfdHlwZTsKIGV4dGVybiBjb25zdCBzdHJ1 Y3QgY3J5cHRvX3R5cGUgY3J5cHRvX2FlYWRfdHlwZTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgY3J5 cHRvX3R5cGUgY3J5cHRvX2Jsa2NpcGhlcl90eXBlOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBjcnlw dG9fdHlwZSBjcnlwdG9faGFzaF90eXBlOworZXh0ZXJuIGNvbnN0IHN0cnVjdCBjcnlwdG9fdHlw ZSBjcnlwdG9fZXN0cmVhbV90eXBlOwogCiB2b2lkIGNyeXB0b19tb2RfcHV0KHN0cnVjdCBjcnlw dG9fYWxnICphbGcpOwogCkBAIC0yMjQsNiArMjI1LDE1IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0 IGNyeXB0b19jaXBoZXIgKmNyeXB0b19zcGF3bl9jaXBoZXIoCiAJcmV0dXJuIF9fY3J5cHRvX2Np cGhlcl9jYXN0KGNyeXB0b19zcGF3bl90Zm0oc3Bhd24sIHR5cGUsIG1hc2spKTsKIH0KIAorc3Rh dGljIGlubGluZSBzdHJ1Y3QgY3J5cHRvX2VzdHJlYW0gKmNyeXB0b19zcGF3bl9lc3RyZWFtKAor CXN0cnVjdCBjcnlwdG9fc3Bhd24gKnNwYXduKQoreworCXUzMiB0eXBlID0gQ1JZUFRPX0FMR19U WVBFX0VTVFJFQU07CisJdTMyIG1hc2sgPSBDUllQVE9fQUxHX1RZUEVfTUFTSzsKKworCXJldHVy biBfX2NyeXB0b19lc3RyZWFtX2Nhc3QoY3J5cHRvX3NwYXduX3RmbShzcGF3biwgdHlwZSwgbWFz aykpOworfQorCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBjaXBoZXJfYWxnICpjcnlwdG9fY2lwaGVy X2FsZyhzdHJ1Y3QgY3J5cHRvX2NpcGhlciAqdGZtKQogewogCXJldHVybiAmY3J5cHRvX2NpcGhl cl90Zm0odGZtKS0+X19jcnRfYWxnLT5jcmFfY2lwaGVyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9jcnlwdG8uaCBiL2luY2x1ZGUvbGludXgvY3J5cHRvLmgKaW5kZXggZjMxMTBlYi4uYzVi MWY2NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jcnlwdG8uaAorKysgYi9pbmNsdWRlL2xp bnV4L2NyeXB0by5oCkBAIC0zNSw2ICszNSw3IEBACiAjZGVmaW5lIENSWVBUT19BTEdfVFlQRV9C TEtDSVBIRVIJMHgwMDAwMDAwNAogI2RlZmluZSBDUllQVE9fQUxHX1RZUEVfQ09NUFJFU1MJMHgw MDAwMDAwNQogI2RlZmluZSBDUllQVE9fQUxHX1RZUEVfQUVBRAkJMHgwMDAwMDAwNgorI2RlZmlu ZSBDUllQVE9fQUxHX1RZUEVfRVNUUkVBTSAgICAgICAgIDB4MDAwMDAwMDcKIAogI2RlZmluZSBD UllQVE9fQUxHX1RZUEVfSEFTSF9NQVNLCTB4MDAwMDAwMGUKIApAQCAtNjMsNiArNjQsNyBAQAog I2RlZmluZSBDUllQVE9fVEZNX1JFU19CQURfS0VZX1NDSEVEIAkweDAwNDAwMDAwCiAjZGVmaW5l IENSWVBUT19URk1fUkVTX0JBRF9CTE9DS19MRU4gCTB4MDA4MDAwMDAKICNkZWZpbmUgQ1JZUFRP X1RGTV9SRVNfQkFEX0ZMQUdTIAkweDAxMDAwMDAwCisjZGVmaW5lIENSWVBUT19URk1fUkVTX0JB RF9JVl9MRU4gCTB4MDIwMDAwMDAKIAogLyoKICAqIE1pc2NlbGxhbmVvdXMgc3R1ZmYuCkBAIC0y MTYsNiArMjE4LDE3IEBAIHN0cnVjdCBjaXBoZXJfYWxnIHsKIAl2b2lkICgqY2lhX2RlY3J5cHQp KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpOwogfTsKIAor c3RydWN0IGVzdHJlYW1fYWxnIHsKKwl1bnNpZ25lZCBpbnQgbWluX2tleXNpemU7CisJdW5zaWdu ZWQgaW50IG1heF9rZXlzaXplOworCXVuc2lnbmVkIGludCBtaW5faXZzaXplOworCXVuc2lnbmVk IGludCBtYXhfaXZzaXplOworCWludCAoKnNldGtleSkoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwg Y29uc3QgdTggKmtleSwKKwkJICAgICAgdW5zaWduZWQgaW50IGtleXNpemUsIHVuc2lnbmVkIGlu dCBpdnNpemUpOworCWludCAoKnNldGl2KShzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCBjb25zdCB1 OCAqaXYpOworCXZvaWQgKCplbmNyeXB0X2Jsb2NrKShzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1 OCAqZHN0LCBjb25zdCB1OCAqc3JjKTsKK307CisKIHN0cnVjdCBkaWdlc3RfYWxnIHsKIAl1bnNp Z25lZCBpbnQgZGlhX2RpZ2VzdHNpemU7CiAJdm9pZCAoKmRpYV9pbml0KShzdHJ1Y3QgY3J5cHRv X3RmbSAqdGZtKTsKQEAgLTI1MCw2ICsyNjMsNyBAQCBzdHJ1Y3QgY29tcHJlc3NfYWxnIHsKICNk ZWZpbmUgY3JhX2FlYWQJY3JhX3UuYWVhZAogI2RlZmluZSBjcmFfYmxrY2lwaGVyCWNyYV91LmJs a2NpcGhlcgogI2RlZmluZSBjcmFfY2lwaGVyCWNyYV91LmNpcGhlcgorI2RlZmluZSBjcmFfZXN0 cmVhbQljcmFfdS5lc3RyZWFtCiAjZGVmaW5lIGNyYV9kaWdlc3QJY3JhX3UuZGlnZXN0CiAjZGVm aW5lIGNyYV9oYXNoCWNyYV91Lmhhc2gKICNkZWZpbmUgY3JhX2NvbXByZXNzCWNyYV91LmNvbXBy ZXNzCkBAIC0yNzYsNiArMjkwLDcgQEAgc3RydWN0IGNyeXB0b19hbGcgewogCQlzdHJ1Y3QgYWVh ZF9hbGcgYWVhZDsKIAkJc3RydWN0IGJsa2NpcGhlcl9hbGcgYmxrY2lwaGVyOwogCQlzdHJ1Y3Qg Y2lwaGVyX2FsZyBjaXBoZXI7CisJCXN0cnVjdCBlc3RyZWFtX2FsZyBlc3RyZWFtOwogCQlzdHJ1 Y3QgZGlnZXN0X2FsZyBkaWdlc3Q7CiAJCXN0cnVjdCBoYXNoX2FsZyBoYXNoOwogCQlzdHJ1Y3Qg Y29tcHJlc3NfYWxnIGNvbXByZXNzOwpAQCAtMzQ4LDYgKzM2MywxNCBAQCBzdHJ1Y3QgY2lwaGVy X3RmbSB7CiAJdm9pZCAoKmNpdF9kZWNyeXB0X29uZSkoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwg dTggKmRzdCwgY29uc3QgdTggKnNyYyk7CiB9OwogCitzdHJ1Y3QgZXN0cmVhbV90Zm0geworCXVu c2lnbmVkIGludCBpdnNpemU7CisJaW50ICgqc2V0a2V5KShzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZt LCBjb25zdCB1OCAqa2V5LAorCQkgICAgICB1bnNpZ25lZCBpbnQga2V5c2l6ZSwgdW5zaWduZWQg aW50IGl2c2l6ZSk7CisJaW50ICgqc2V0aXYpKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIGNvbnN0 IHU4ICppdik7CisJdm9pZCAoKmVuY3J5cHRfYmxvY2spKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0s IHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpOworfTsKKwogc3RydWN0IGhhc2hfdGZtIHsKIAlpbnQg KCppbml0KShzdHJ1Y3QgaGFzaF9kZXNjICpkZXNjKTsKIAlpbnQgKCp1cGRhdGUpKHN0cnVjdCBo YXNoX2Rlc2MgKmRlc2MsCkBAIC0zNzMsNiArMzk2LDcgQEAgc3RydWN0IGNvbXByZXNzX3RmbSB7 CiAjZGVmaW5lIGNydF9hZWFkCWNydF91LmFlYWQKICNkZWZpbmUgY3J0X2Jsa2NpcGhlcgljcnRf dS5ibGtjaXBoZXIKICNkZWZpbmUgY3J0X2NpcGhlcgljcnRfdS5jaXBoZXIKKyNkZWZpbmUgY3J0 X2VzdHJlYW0JY3J0X3UuZXN0cmVhbQogI2RlZmluZSBjcnRfaGFzaAljcnRfdS5oYXNoCiAjZGVm aW5lIGNydF9jb21wcmVzcwljcnRfdS5jb21wcmVzcwogCkBAIC0zODUsNiArNDA5LDcgQEAgc3Ry dWN0IGNyeXB0b190Zm0gewogCQlzdHJ1Y3QgYWVhZF90Zm0gYWVhZDsKIAkJc3RydWN0IGJsa2Np cGhlcl90Zm0gYmxrY2lwaGVyOwogCQlzdHJ1Y3QgY2lwaGVyX3RmbSBjaXBoZXI7CisJCXN0cnVj dCBlc3RyZWFtX3RmbSBlc3RyZWFtOwogCQlzdHJ1Y3QgaGFzaF90Zm0gaGFzaDsKIAkJc3RydWN0 IGNvbXByZXNzX3RmbSBjb21wcmVzczsKIAl9IGNydF91OwpAQCAtNDEwLDYgKzQzNSwxMCBAQCBz dHJ1Y3QgY3J5cHRvX2NpcGhlciB7CiAJc3RydWN0IGNyeXB0b190Zm0gYmFzZTsKIH07CiAKK3N0 cnVjdCBjcnlwdG9fZXN0cmVhbSB7CisJc3RydWN0IGNyeXB0b190Zm0gYmFzZTsKK307CisKIHN0 cnVjdCBjcnlwdG9fY29tcCB7CiAJc3RydWN0IGNyeXB0b190Zm0gYmFzZTsKIH07CkBAIC0xMDY1 LDYgKzEwOTQsODEgQEAgc3RhdGljIGlubGluZSB2b2lkIGNyeXB0b19jaXBoZXJfZGVjcnlwdF9v bmUoc3RydWN0IGNyeXB0b19jaXBoZXIgKnRmbSwKIAkJCQkJCWRzdCwgc3JjKTsKIH0KIAorc3Rh dGljIGlubGluZSBzdHJ1Y3QgY3J5cHRvX2VzdHJlYW0gKl9fY3J5cHRvX2VzdHJlYW1fY2FzdCgK KwlzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCXJldHVybiAoc3RydWN0IGNyeXB0b19lc3Ry ZWFtICopdGZtOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBjcnlwdG9fdGZtICpjcnlwdG9f ZXN0cmVhbV90Zm0oc3RydWN0IGNyeXB0b19lc3RyZWFtICp0Zm0pCit7CisJcmV0dXJuICZ0Zm0t PmJhc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9fZnJlZV9lc3RyZWFtKHN0cnVj dCBjcnlwdG9fZXN0cmVhbSAqdGZtKQoreworCWNyeXB0b19mcmVlX3RmbShjcnlwdG9fZXN0cmVh bV90Zm0odGZtKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGVzdHJlYW1fdGZtICpjcnlw dG9fZXN0cmVhbV9jcnQoc3RydWN0IGNyeXB0b19lc3RyZWFtICp0Zm0pCit7CisJcmV0dXJuICZj cnlwdG9fZXN0cmVhbV90Zm0odGZtKS0+Y3J0X2VzdHJlYW07Cit9CisKK3N0YXRpYyBpbmxpbmUg c3RydWN0IGVzdHJlYW1fYWxnICpjcnlwdG9fZXN0cmVhbV9hbGcoc3RydWN0IGNyeXB0b19lc3Ry ZWFtICp0Zm0pCit7CisJcmV0dXJuICZjcnlwdG9fZXN0cmVhbV90Zm0odGZtKS0+X19jcnRfYWxn LT5jcmFfZXN0cmVhbTsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY3J5cHRvX2Vz dHJlYW1faXZzaXplKHN0cnVjdCBjcnlwdG9fZXN0cmVhbSAqdGZtKQoreworCXJldHVybiBjcnlw dG9fZXN0cmVhbV9jcnQodGZtKS0+aXZzaXplOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGludCBjcnlwdG9fZXN0cmVhbV9ibG9ja3NpemUoc3RydWN0IGNyeXB0b19lc3RyZWFtICp0Zm0p Cit7CisJcmV0dXJuIGNyeXB0b190Zm1fYWxnX2Jsb2Nrc2l6ZShjcnlwdG9fZXN0cmVhbV90Zm0o dGZtKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGNyeXB0b19lc3RyZWFtX2dldF9mbGFncyhz dHJ1Y3QgY3J5cHRvX2VzdHJlYW0gKnRmbSkKK3sKKwlyZXR1cm4gY3J5cHRvX3RmbV9nZXRfZmxh Z3MoY3J5cHRvX2VzdHJlYW1fdGZtKHRmbSkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY3J5 cHRvX2VzdHJlYW1fc2V0X2ZsYWdzKHN0cnVjdCBjcnlwdG9fZXN0cmVhbSAqdGZtLAorCQkJCQkg ICAgdTMyIGZsYWdzKQoreworCWNyeXB0b190Zm1fc2V0X2ZsYWdzKGNyeXB0b19lc3RyZWFtX3Rm bSh0Zm0pLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9fZXN0cmVhbV9j bGVhcl9mbGFncyhzdHJ1Y3QgY3J5cHRvX2VzdHJlYW0gKnRmbSwKKwkJCQkJICAgICAgdTMyIGZs YWdzKQoreworCWNyeXB0b190Zm1fY2xlYXJfZmxhZ3MoY3J5cHRvX2VzdHJlYW1fdGZtKHRmbSks IGZsYWdzKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgY3J5cHRvX2VzdHJlYW1fc2V0a2V5KHN0 cnVjdCBjcnlwdG9fZXN0cmVhbSAqdGZtLAorCQkJCQljb25zdCB1OCAqa2V5LAorCQkJCQl1bnNp Z25lZCBpbnQga2V5c2l6ZSwKKwkJCQkJdW5zaWduZWQgaW50IGl2c2l6ZSkKK3sKKwlyZXR1cm4g Y3J5cHRvX2VzdHJlYW1fY3J0KHRmbSktPnNldGtleShjcnlwdG9fZXN0cmVhbV90Zm0odGZtKSwK KwkJCQkJICAgICAgIGtleSwga2V5c2l6ZSwgaXZzaXplKTsKK30KKworc3RhdGljIGlubGluZSB2 b2lkIGNyeXB0b19lc3RyZWFtX3NldGl2KHN0cnVjdCBjcnlwdG9fZXN0cmVhbSAqdGZtLAorCQkJ CQljb25zdCB1OCAqaXYpCit7CisJY3J5cHRvX2VzdHJlYW1fY3J0KHRmbSktPnNldGl2KGNyeXB0 b19lc3RyZWFtX3RmbSh0Zm0pLCBpdik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9f ZXN0cmVhbV9lbmNyeXB0X2Jsb2NrKHN0cnVjdCBjcnlwdG9fZXN0cmVhbSAqdGZtLAorCQkJCQkJ dTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwljcnlwdG9fZXN0cmVhbV9jcnQodGZtKS0+ZW5j cnlwdF9ibG9jayhjcnlwdG9fZXN0cmVhbV90Zm0odGZtKSwKKwkJCQkJICAgICAgIGRzdCwgc3Jj KTsKK30KKwogc3RhdGljIGlubGluZSBzdHJ1Y3QgY3J5cHRvX2hhc2ggKl9fY3J5cHRvX2hhc2hf Y2FzdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQogewogCXJldHVybiAoc3RydWN0IGNyeXB0b19o YXNoICopdGZtOwo= ------=_Part_8812_12671443.1194897157149--