From: "Tan Swee Heng" Subject: Re: [PATCH 2/3] [eSTREAM] stream: Wrapper for eSTREAM ciphers Date: Tue, 13 Nov 2007 04:02:30 +0800 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_8848_3942501.1194897750501" To: "Linux Crypto" Return-path: Received: from wa-out-1112.google.com ([209.85.146.177]:63684 "EHLO wa-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751457AbXKLUCb (ORCPT ); Mon, 12 Nov 2007 15:02:31 -0500 Received: by wa-out-1112.google.com with SMTP id v27so1650406wah for ; Mon, 12 Nov 2007 12:02:30 -0800 (PST) In-Reply-To: Sender: linux-crypto-owner@vger.kernel.org List-Id: linux-crypto.vger.kernel.org ------=_Part_8848_3942501.1194897750501 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Sorry I omitted the patch. Here it is. On Nov 13, 2007 3:59 AM, Tan Swee Heng wrote: > This patch implements a template that wraps around an eSTREAM cipher > algorithm and its ivsize. > > For example, an eSTREAM cipher with the name CIPHERNAME and ivsize > IVSIZE will be instantiated as "stream(CIPHERNAME,IVSIZE)" in > cryptomgr. It uses blkcipher to walk over the memory it > encrypts/decrypts. It has been modified to use the crypto_estream_* > type instead of crypto_cipher_*. > ------=_Part_8848_3942501.1194897750501 Content-Type: text/plain; name=patch2-stream.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_f8xf70ai0 Content-Disposition: attachment; filename=patch2-stream.txt ZGlmZiAtLWdpdCBhL2NyeXB0by9LY29uZmlnIGIvY3J5cHRvL0tjb25maWcKaW5kZXggNGFkMjVm ZC4uMjdhODAyZiAxMDA2NDQKLS0tIGEvY3J5cHRvL0tjb25maWcKKysrIGIvY3J5cHRvL0tjb25m aWcKQEAgLTIxMSw2ICsyMTEsMTYgQEAgY29uZmlnIENSWVBUT19DVFIKIAkgIENUUjogQ291bnRl ciBtb2RlCiAJICBUaGlzIGJsb2NrIGNpcGhlciBhbGdvcml0aG0gaXMgcmVxdWlyZWQgZm9yIElQ U2VjLgogCitjb25maWcgQ1JZUFRPX1NUUkVBTQorCXRyaXN0YXRlICJTVFJFQU06IFdyYXBwZXIg Zm9yIGVTVFJFQU0gY2lwaGVycyAoRVhQRVJJTUVOVEFMKSIKKwlkZXBlbmRzIG9uIEVYUEVSSU1F TlRBTAorCXNlbGVjdCBDUllQVE9fQkxLQ0lQSEVSCisJc2VsZWN0IENSWVBUT19NQU5BR0VSCisJ c2VsZWN0IENSWVBUT19FU1RSRUFNCisJaGVscAorCSAgU1RSRUFNOiBXcmFwcGVyIGZvciBlU1RS RUFNIGNpcGhlcnMKKwkgIFRoaXMgd3JhcHBlciBpcyB1c2VkIGJ5IHN0cmVhbSBjaXBoZXJzIHN1 Ym1pdHRlZCB0byBlU1RSRUFNLgorCiBjb25maWcgQ1JZUFRPX0NSWVBURAogCXRyaXN0YXRlICJT b2Z0d2FyZSBhc3luYyBjcnlwdG8gZGFlbW9uIgogCXNlbGVjdCBDUllQVE9fQUJMS0NJUEhFUgpk aWZmIC0tZ2l0IGEvY3J5cHRvL01ha2VmaWxlIGIvY3J5cHRvL01ha2VmaWxlCmluZGV4IDE0YWZh MzQuLmY5NTIwNmIgMTAwNjQ0Ci0tLSBhL2NyeXB0by9NYWtlZmlsZQorKysgYi9jcnlwdG8vTWFr ZWZpbGUKQEAgLTM0LDYgKzM0LDcgQEAgb2JqLSQoQ09ORklHX0NSWVBUT19QQ0JDKSArPSBwY2Jj Lm8KIG9iai0kKENPTkZJR19DUllQVE9fTFJXKSArPSBscncubwogb2JqLSQoQ09ORklHX0NSWVBU T19YVFMpICs9IHh0cy5vCiBvYmotJChDT05GSUdfQ1JZUFRPX0NUUikgKz0gY3RyLm8KK29iai0k KENPTkZJR19DUllQVE9fU1RSRUFNKSArPSBzdHJlYW0ubwogb2JqLSQoQ09ORklHX0NSWVBUT19D UllQVEQpICs9IGNyeXB0ZC5vCiBvYmotJChDT05GSUdfQ1JZUFRPX0RFUykgKz0gZGVzX2dlbmVy aWMubwogb2JqLSQoQ09ORklHX0NSWVBUT19GQ1JZUFQpICs9IGZjcnlwdC5vCmRpZmYgLS1naXQg YS9jcnlwdG8vc3RyZWFtLmMgYi9jcnlwdG8vc3RyZWFtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMGMyZmZjNwotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9zdHJlYW0u YwpAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIFNUUkVBTTogV3JhcHBlciBmb3IgZVNUUkVBTSBj aXBoZXJzCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA3IFRhbiBTd2VlIEhlbmcgPHRoZXN3ZWVo ZW5nQGdtYWlsLmNvbT4KKyAqCisgKiBEZXJpdmVkIGZyb20KKyAqIC0gY2JjLmM6IENvcHlyaWdo dCAoYykgMjAwNiBIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+CisgKiAt IGN0ci5jOiBDb3B5cmlnaHQgKGMpIElCTSBDb3JwLiAyMDA3IEpveSBMYXR0ZW4gPGxhdHRlbkB1 cy5pYm0uY29tPgorICoKKyAqIFN0cmVhbSBjaXBoZXJzIHN1Ym1pdHRlZCB0byBlU1RSRUFNLCB0 aGUgRUNSWVBUIFN0cmVhbSBDaXBoZXIgUHJvamVjdCwKKyAqIHJlcXVpcmVzIGJvdGgga2V5IHNp emUgYW5kIElWIHNpemUgaW4gdGhlIGtleSBzZXR1cC4gVGhpcyBpcyBkaWZmZXJlbnQKKyAqIGZy b20gc3RhbmRhcmQgYmxvY2sgY2lwaGVycy4gVGhpcyB3cmFwcGVyIHByb3ZpZGVzIHRoZSBuZWNl c3NhcnkgZ2x1ZQorICogdHAgd29yayB3aXRoIHN1Y2ggZVNUUkVBTSBjaXBoZXJzLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u KQorICogYW55IGxhdGVyIHZlcnNpb24uCisgKgorICovCisKKyNpbmNsdWRlIDxjcnlwdG8vYWxn YXBpLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgor I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorCitz dHJ1Y3Qgc3RyZWFtX2luc3RhbmNlX2N0eCB7CisJc3RydWN0IGNyeXB0b19zcGF3biBhbGc7CisJ dW5zaWduZWQgaW50IGl2c2l6ZTsKK307CisKK3N0cnVjdCBjcnlwdG9fc3RyZWFtX2N0eCB7CisJ c3RydWN0IGNyeXB0b19lc3RyZWFtICpjaGlsZDsKK307CisKK3N0YXRpYyBpbnQgY3J5cHRvX3N0 cmVhbV9zZXRrZXkoc3RydWN0IGNyeXB0b190Zm0gKnBhcmVudCwgY29uc3QgdTggKmtleSwKKwkJ CQl1bnNpZ25lZCBpbnQga2V5c2l6ZSkKK3sKKwlzdHJ1Y3QgY3J5cHRvX3N0cmVhbV9jdHggKmN0 eCA9IGNyeXB0b190Zm1fY3R4KHBhcmVudCk7CisJc3RydWN0IGNyeXB0b19lc3RyZWFtICpjaGls ZCA9IGN0eC0+Y2hpbGQ7CisJc3RydWN0IHN0cmVhbV9pbnN0YW5jZV9jdHggKmljdHggPQorCQlj cnlwdG9faW5zdGFuY2VfY3R4KGNyeXB0b190Zm1fYWxnX2luc3RhbmNlKHBhcmVudCkpOworCWlu dCBlcnI7CisKKwljcnlwdG9fZXN0cmVhbV9jbGVhcl9mbGFncyhjaGlsZCwgQ1JZUFRPX1RGTV9S RVFfTUFTSyk7CisJY3J5cHRvX2VzdHJlYW1fc2V0X2ZsYWdzKGNoaWxkLCBjcnlwdG9fdGZtX2dl dF9mbGFncyhwYXJlbnQpICYKKwkJCQkgQ1JZUFRPX1RGTV9SRVFfTUFTSyk7CisJZXJyID0gY3J5 cHRvX2VzdHJlYW1fc2V0a2V5KGNoaWxkLCBrZXksIGtleXNpemUsIGljdHgtPml2c2l6ZSk7CisJ Y3J5cHRvX3RmbV9zZXRfZmxhZ3MocGFyZW50LCBjcnlwdG9fZXN0cmVhbV9nZXRfZmxhZ3MoY2hp bGQpICYKKwkJCSAgICAgQ1JZUFRPX1RGTV9SRVNfTUFTSyk7CisJcmV0dXJuIGVycjsKK30KKwor c3RhdGljIGludCBjcnlwdG9fc3RyZWFtX2NyeXB0X3dhbGsoc3RydWN0IGJsa2NpcGhlcl93YWxr ICp3YWxrLAorCQkJCSAgICBzdHJ1Y3QgY3J5cHRvX2VzdHJlYW0gKnRmbSkKK3sKKwl1bnNpZ25l ZCBpbnQgYnNpemUgPSBjcnlwdG9fZXN0cmVhbV9ibG9ja3NpemUodGZtKTsKKwl1bnNpZ25lZCBp bnQgbmJ5dGVzID0gd2Fsay0+bmJ5dGVzOworCXU4ICpzcmMgPSB3YWxrLT5zcmMudmlydC5hZGRy OworCXU4ICpkc3QgPSB3YWxrLT5kc3QudmlydC5hZGRyOworCXU4ICppdiA9IHdhbGstPml2Owor CXU4ICprczsKKworCWNyeXB0b19lc3RyZWFtX3NldGl2KHRmbSwgaXYpOworCXdoaWxlIChuYnl0 ZXMgPj0gYnNpemUpIHsKKwkJY3J5cHRvX2VzdHJlYW1fZW5jcnlwdF9ibG9jayh0Zm0sIGRzdCwg c3JjKTsKKwkJZHN0ICs9IGJzaXplOworCQlzcmMgKz0gYnNpemU7CisJCW5ieXRlcyAtPSBic2l6 ZTsKKwl9CisJaWYgKG5ieXRlcyA+IDApIHsKKwkJa3MgPSBremFsbG9jKGJzaXplLCBHRlBfS0VS TkVMKTsKKwkJbWVtY3B5KGtzLCBzcmMsIG5ieXRlcyk7CisJCWNyeXB0b19lc3RyZWFtX2VuY3J5 cHRfYmxvY2sodGZtLCBrcywga3MpOworCQltZW1jcHkoZHN0LCBrcywgbmJ5dGVzKTsKKwkJa2Zy ZWUoa3MpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNyeXB0b19zdHJlYW1f Y3J5cHQoc3RydWN0IGJsa2NpcGhlcl9kZXNjICpkZXNjLAorCQkJICAgICAgIHN0cnVjdCBzY2F0 dGVybGlzdCAqZHN0LAorCQkJICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc3JjLAorCQkJICAg ICAgIHVuc2lnbmVkIGludCBuYnl0ZXMpCit7CisJc3RydWN0IGJsa2NpcGhlcl93YWxrIHdhbGs7 CisJc3RydWN0IGNyeXB0b19ibGtjaXBoZXIgKnRmbSA9IGRlc2MtPnRmbTsKKwlzdHJ1Y3QgY3J5 cHRvX3N0cmVhbV9jdHggKmN0eCA9IGNyeXB0b19ibGtjaXBoZXJfY3R4KHRmbSk7CisJc3RydWN0 IGNyeXB0b19lc3RyZWFtICpjaGlsZCA9IGN0eC0+Y2hpbGQ7CisJaW50IGVycjsKKworCWJsa2Np cGhlcl93YWxrX2luaXQoJndhbGssIGRzdCwgc3JjLCBuYnl0ZXMpOworCWVyciA9IGJsa2NpcGhl cl93YWxrX3ZpcnQoZGVzYywgJndhbGspOworCisJd2hpbGUgKHdhbGsubmJ5dGVzKSB7CisJCW5i eXRlcyA9IGNyeXB0b19zdHJlYW1fY3J5cHRfd2Fsaygmd2FsaywgY2hpbGQpOworCQllcnIgPSBi bGtjaXBoZXJfd2Fsa19kb25lKGRlc2MsICZ3YWxrLCBuYnl0ZXMpOworCX0KKworCXJldHVybiBl cnI7Cit9CisKKworc3RhdGljIGludCBjcnlwdG9fc3RyZWFtX2luaXRfdGZtKHN0cnVjdCBjcnlw dG9fdGZtICp0Zm0pCit7CisJc3RydWN0IGNyeXB0b19pbnN0YW5jZSAqaW5zdCA9ICh2b2lkICop dGZtLT5fX2NydF9hbGc7CisJc3RydWN0IHN0cmVhbV9pbnN0YW5jZV9jdHggKmljdHggPSBjcnlw dG9faW5zdGFuY2VfY3R4KGluc3QpOworCXN0cnVjdCBjcnlwdG9fc3RyZWFtX2N0eCAqY3R4ID0g Y3J5cHRvX3RmbV9jdHgodGZtKTsKKwlzdHJ1Y3QgY3J5cHRvX2VzdHJlYW0gKmVzdHJlYW07CisK Kwllc3RyZWFtID0gY3J5cHRvX3NwYXduX2VzdHJlYW0oJmljdHgtPmFsZyk7CisJaWYgKElTX0VS Uihlc3RyZWFtKSkKKwkJcmV0dXJuIFBUUl9FUlIoZXN0cmVhbSk7CisKKwljdHgtPmNoaWxkID0g ZXN0cmVhbTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY3J5cHRvX3N0cmVhbV9leGl0 X3RmbShzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCXN0cnVjdCBjcnlwdG9fc3RyZWFtX2N0 eCAqY3R4ID0gY3J5cHRvX3RmbV9jdHgodGZtKTsKKwljcnlwdG9fZnJlZV9lc3RyZWFtKGN0eC0+ Y2hpbGQpOworfQorCitzdGF0aWMgc3RydWN0IGNyeXB0b19pbnN0YW5jZSAqY3J5cHRvX3N0cmVh bV9hbGxvYyhzdHJ1Y3QgcnRhdHRyICoqdGIpCit7CisJc3RydWN0IGNyeXB0b19pbnN0YW5jZSAq aW5zdDsKKwlzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnOworCXN0cnVjdCBzdHJlYW1faW5zdGFuY2Vf Y3R4ICppY3R4OworCXVuc2lnbmVkIGludCBpdnNpemU7CisJaW50IGVycjsKKworCWVyciA9IGNy eXB0b19jaGVja19hdHRyX3R5cGUodGIsIENSWVBUT19BTEdfVFlQRV9CTEtDSVBIRVIpOworCWlm IChlcnIpCisJCXJldHVybiBFUlJfUFRSKGVycik7CisKKwlhbGcgPSBjcnlwdG9fYXR0cl9hbGco dGJbMV0sIENSWVBUT19BTEdfVFlQRV9FU1RSRUFNLAorCQkJICAgICAgQ1JZUFRPX0FMR19UWVBF X01BU0spOworCWlmIChJU19FUlIoYWxnKSkKKwkJcmV0dXJuIEVSUl9QVFIoUFRSX0VSUihhbGcp KTsKKworCWVyciA9IGNyeXB0b19hdHRyX3UzMih0YlsyXSwgJml2c2l6ZSk7CisJaWYgKGVycikK KwkJZ290byBvdXRfcHV0X2FsZzsKKworCWVyciA9IC1FSU5WQUw7CisJaWYgKChpdnNpemUgPCBh bGctPmNyYV9lc3RyZWFtLm1pbl9pdnNpemUpIHx8CisJCShpdnNpemUgPiBhbGctPmNyYV9lc3Ry ZWFtLm1heF9pdnNpemUpKQorCQlnb3RvIG91dF9wdXRfYWxnOworCisJaW5zdCA9IGt6YWxsb2Mo c2l6ZW9mKCppbnN0KSArIHNpemVvZigqaWN0eCksIEdGUF9LRVJORUwpOworCWVyciA9IC1FTk9N RU07CisJaWYgKCFpbnN0KQorCQlnb3RvIG91dF9wdXRfYWxnOworCisJZXJyID0gLQlFTkFNRVRP T0xPTkc7CisJaWYgKHNucHJpbnRmKGluc3QtPmFsZy5jcmFfbmFtZSwgQ1JZUFRPX01BWF9BTEdf TkFNRSwKKwkJICAgICAic3RyZWFtKCVzLCV1KSIsIGFsZy0+Y3JhX25hbWUsCisJCSAgICAgaXZz aXplKSA+PSAgQ1JZUFRPX01BWF9BTEdfTkFNRSkgeworCQlnb3RvIGVycl9mcmVlX2luc3Q7CisJ fQorCisJaWYgKHNucHJpbnRmKGluc3QtPmFsZy5jcmFfZHJpdmVyX25hbWUsIENSWVBUT19NQVhf QUxHX05BTUUsCisJCSAgICAgInN0cmVhbSglcywldSkiLCBhbGctPmNyYV9kcml2ZXJfbmFtZSwK KwkJICAgICBpdnNpemUpID49ICBDUllQVE9fTUFYX0FMR19OQU1FKSB7CisJCWdvdG8gZXJyX2Zy ZWVfaW5zdDsKKwl9CisKKwlpY3R4ID0gY3J5cHRvX2luc3RhbmNlX2N0eChpbnN0KTsKKwlpY3R4 LT5pdnNpemUgPSBpdnNpemU7CisKKwllcnIgPSBjcnlwdG9faW5pdF9zcGF3bigmaWN0eC0+YWxn LCBhbGcsIGluc3QsCisJCQkJQ1JZUFRPX0FMR19UWVBFX01BU0sgfCBDUllQVE9fQUxHX0FTWU5D KTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycl9mcmVlX2luc3Q7CisKKwllcnIgPSAwOworCWluc3Qt PmFsZy5jcmFfZmxhZ3MgPSBDUllQVE9fQUxHX1RZUEVfQkxLQ0lQSEVSOworCWluc3QtPmFsZy5j cmFfcHJpb3JpdHkgPSBhbGctPmNyYV9wcmlvcml0eTsKKwlpbnN0LT5hbGcuY3JhX2Jsb2Nrc2l6 ZSA9IDE7CisJaW5zdC0+YWxnLmNyYV9hbGlnbm1hc2sgPSBhbGctPmNyYV9hbGlnbm1hc2s7CisJ aW5zdC0+YWxnLmNyYV90eXBlID0gJmNyeXB0b19ibGtjaXBoZXJfdHlwZTsKKworCWluc3QtPmFs Zy5jcmFfYmxrY2lwaGVyLml2c2l6ZSA9IGl2c2l6ZTsKKwlpbnN0LT5hbGcuY3JhX2Jsa2NpcGhl ci5taW5fa2V5c2l6ZSA9IGFsZy0+Y3JhX2VzdHJlYW0ubWluX2tleXNpemU7CisJaW5zdC0+YWxn LmNyYV9ibGtjaXBoZXIubWF4X2tleXNpemUgPSBhbGctPmNyYV9lc3RyZWFtLm1heF9rZXlzaXpl OworCisJaW5zdC0+YWxnLmNyYV9jdHhzaXplID0gc2l6ZW9mKHN0cnVjdCBjcnlwdG9fc3RyZWFt X2N0eCk7CisKKwlpbnN0LT5hbGcuY3JhX2luaXQgPSBjcnlwdG9fc3RyZWFtX2luaXRfdGZtOwor CWluc3QtPmFsZy5jcmFfZXhpdCA9IGNyeXB0b19zdHJlYW1fZXhpdF90Zm07CisKKwlpbnN0LT5h bGcuY3JhX2Jsa2NpcGhlci5zZXRrZXkgPSBjcnlwdG9fc3RyZWFtX3NldGtleTsKKwlpbnN0LT5h bGcuY3JhX2Jsa2NpcGhlci5lbmNyeXB0ID0gY3J5cHRvX3N0cmVhbV9jcnlwdDsKKwlpbnN0LT5h bGcuY3JhX2Jsa2NpcGhlci5kZWNyeXB0ID0gY3J5cHRvX3N0cmVhbV9jcnlwdDsKKworZXJyX2Zy ZWVfaW5zdDoKKwlpZiAoZXJyKQorCQlrZnJlZShpbnN0KTsKKworb3V0X3B1dF9hbGc6CisJY3J5 cHRvX21vZF9wdXQoYWxnKTsKKworCWlmKGVycikKKwkJaW5zdCA9IEVSUl9QVFIoZXJyKTsKKwor CXJldHVybiBpbnN0OworfQorCitzdGF0aWMgdm9pZCBjcnlwdG9fc3RyZWFtX2ZyZWUoc3RydWN0 IGNyeXB0b19pbnN0YW5jZSAqaW5zdCkKK3sKKwljcnlwdG9fZHJvcF9zcGF3bihjcnlwdG9faW5z dGFuY2VfY3R4KGluc3QpKTsKKwlrZnJlZShpbnN0KTsKK30KKworc3RhdGljIHN0cnVjdCBjcnlw dG9fdGVtcGxhdGUgY3J5cHRvX3N0cmVhbV90bXBsID0geworCS5uYW1lID0gInN0cmVhbSIsCisJ LmFsbG9jID0gY3J5cHRvX3N0cmVhbV9hbGxvYywKKwkuZnJlZSA9IGNyeXB0b19zdHJlYW1fZnJl ZSwKKwkubW9kdWxlID0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBjcnlw dG9fc3RyZWFtX21vZHVsZV9pbml0KHZvaWQpCit7CisJcmV0dXJuIGNyeXB0b19yZWdpc3Rlcl90 ZW1wbGF0ZSgmY3J5cHRvX3N0cmVhbV90bXBsKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGNy eXB0b19zdHJlYW1fbW9kdWxlX2V4aXQodm9pZCkKK3sKKwljcnlwdG9fdW5yZWdpc3Rlcl90ZW1w bGF0ZSgmY3J5cHRvX3N0cmVhbV90bXBsKTsKK30KKworbW9kdWxlX2luaXQoY3J5cHRvX3N0cmVh bV9tb2R1bGVfaW5pdCk7Cittb2R1bGVfZXhpdChjcnlwdG9fc3RyZWFtX21vZHVsZV9leGl0KTsK KworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJXcmFwcGVyIGZv ciBlU1RSRUFNIGNpcGhlcnMiKTsK ------=_Part_8848_3942501.1194897750501--