Re: SNI on STARTTLS in mailfront
Giam Teck Choon <[email protected]> Sun, 10 Feb 2019 22:53:18 +0800
| Newsgroups | gmane.comp.sysutils.bgware |
|---|---|
| Message-ID | <[email protected]> |
--=_e8cb725bd5d1247af06594c1725911a5 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi, Sorry, forgot to str_free for snicertfile and snikeyfile so attached is the updated file. Thanks. Kindest regards, Giam Teck Choon On 2019-02-10 21:03, Giam Teck Choon wrote: > Hi John, > > Many thanks for your kind assistance and precious time. > > I have made the SNI work by using > gnutls_handshake_set_post_client_hello_function() instead. Attached > is my modified starttls-gnutls.c for your review and comments (if > any). > > Greatly appreciated! > > Once again, thanks. > > Kindest regards, > Giam Teck Choon > > > On 2019-02-08 09:27, Giam Teck Choon wrote: >> Hi John, >> >> Thanks a lot for taking time to reply. >> >> On 2019-02-08 09:08, John R. Levine wrote: >>> Hard to say. It works fine on my FreeBSD system, and I can't think >>> of >>> any obvious differences between BSD and Centos. I assume you've >>> checked the directory and file permissions, and your mailfront daemon >>> can read both the .crt and the .key files? >> >> There is no permission and/or ownership issues related to those >> .crt/.key files as one of my testing is to set >> TLS_CERTFILE/TLS_KEYFILE to the same SNI cert/keyfile. >> >> Once again, thanks. >> >> Kindest regards, >> Giam Teck Choon >> >>> >>>> I used your starttls-gnutls.c and encountered problems when >>>> TLS_CERTDIR is set and regardless SNI cert/key file exists will show >>>> the following errors: >>>> >>>> The below error suppose to use the default TLS_CERTFILE and >>>> TLS_KEYFILE when SNI cert/key files not found: >>>> >>>> @ 400000005c5bdf89185de07c mailfront[20072]: Starting TLS handshake >>>> @ 400000005c5bdf89185df7ec mailfront[20072]: No SNI in request, >>>> using default certificate >>>> @ 400000005c5bdf89185dffbc mailfront[20072]: TLS handshake failed: >>>> Could not negotiate a supported cipher suite. >>>> >>>> The below error suppose to use the SNI cert/key files (when exists) >>>> when TLS_CERTDIR is set. I patched your starttls-gnutls.c to show >>>> the SNI key/cert files: >>>> >>>> @ 400000005c5bdf91377adf8c mailfront[20075]: Starting TLS handshake >>>> @ 400000005c5bdf9137d23ad4 mailfront[20075]: Using SNI cert/key file >>>> for rat.choon.net >>>> @ 400000005c5bdf9137d24a74 mailfront[20075]: SNI certfile >>>> /var/qmail/ssl/rat.choon.net/rat.choon.net.crt for rat.choon.net >>>> @ 400000005c5bdf9137d25244 mailfront[20075]: SNI keyfile >>>> /var/qmail/ssl/rat.choon.net/rat.choon.net.key for rat.choon.net >>>> @ 400000005c5bdf9137d25a14 mailfront[20075]: TLS handshake failed: >>>> Could not negotiate a supported cipher suite. >>>> >>>> If TLS_CERTDIR not set then everything working to use TLS_CERTFILE >>>> and TLS_KEYFILE. >>>> >>>> System is CentOS 7. openssl version/release is 1.0.2k-16.el7 and >>>> gnutls version/release is 3.3.29-8.el7. >>>> >>>> Thanks for file and any suggestions I can get to make SNI work in my >>>> system. >>>> >>>> Kindest regards, >>>> Giam Teck Choon >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>>> >>>> >>> >>> Regards, >>> John Levine, [email protected], Primary Perpetrator of "The Internet for >>> Dummies", >>> Please consider the environment before reading this e-mail. >>> https://jl.ly >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] --=_e8cb725bd5d1247af06594c1725911a5 Content-Transfer-Encoding: base64 Content-Type: text/x-c; name=starttls-gnutls.c Content-Disposition: attachment; filename=starttls-gnutls.c; size=8025 I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx1bmlzdGQu aD4KI2luY2x1ZGUgPGJnbGlicy9pb2J1Zi5oPgojaW5jbHVkZSA8YmdsaWJzL21zZy5oPgojaW5j bHVkZSA8YmdsaWJzL3N0ci5oPgojaW5jbHVkZSA8YmdsaWJzL3dyYXAuaD4KCiNpbmNsdWRlIDxl cnJuby5oPgojaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgoKI2luY2x1ZGUgIm1haWxmcm9udC5o IgojaW5jbHVkZSAic3RhcnR0bHMuaCIKCnN0YXRpYyBnbnV0bHNfc2Vzc2lvbl90IGdzZXNzaW9u OwpzdGF0aWMgZ251dGxzX2NlcnRpZmljYXRlX2NyZWRlbnRpYWxzX3QgeDUwOV9jcmVkOwpzdGF0 aWMgY2hhciAqY2VydGZpbGUsICprZXlmaWxlLCAqY2VydGRpcjsKCnN0YXRpYyBpbnQgdGxzX2F2 YWlsYWJsZSA9IDA7CgpzdGF0aWMgaWJ1ZiByZWFsaW5idWY7CQkJLyogdW5kZXJseWluZyBpbnB1 dCBzdHJlYW0gKi8Kc3RhdGljIG9idWYgcmVhbG91dGJ1ZjsJCQkvKiB1bmRlcmx5aW5nIG91dHB1 dCBzdHJlYW0gKi8KCi8qCiAqIFRMUyByZWFkIGFuZCB3cml0ZSBmdW5jdGlvbnMgZm9yIGJnbGli LCB0byBmYWtlIG91dCB0aGUgcmVzdCBvZgogKiBtYWlsZnJvbnQKICovCgpzdGF0aWMgaW50IHRs c3JlYWQoaW50IG4sIHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBsZW4pCnsKICBzc2l6ZV90IHJl dDsKCiAgZm9yKDs7KSB7CiAgICByZXQgPSBnbnV0bHNfcmVjb3JkX3JlY3YoZ3Nlc3Npb24sIHB0 ciwgKHNpemVfdClsZW4pOwogICAgaWYgKHJldCA+PSAwKSByZXR1cm4gcmV0OwogICAgaWYgKHJl dCA9PSBHTlVUTFNfRV9BR0FJTiB8fCByZXQgPT0gR05VVExTX0VfSU5URVJSVVBURUQpIGNvbnRp bnVlOwogICAgaWYgKHJldCA9PSBHTlVUTFNfRV9QUkVNQVRVUkVfVEVSTUlOQVRJT04pIHJldHVy biAwOwogICAgbXNnZigie1RMUyBlcnJvciB9ZCIsIHJldCk7CiAgICByZXR1cm4gMDsKICB9CiAg KHZvaWQpbjsKfQoKLyogd3JpdGUgaW4gYXMgbWFueSBjaHVua3MgYXMgbmVlZGVkICovCnN0YXRp YyBpbnQgdGxzd3JpdGUoaW50IG4sIHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBsZW4pCnsKICBz aXplX3QgcmV0OwogIHNpemVfdCB0cmV0ID0gMDsKCiAgZm9yKDs7KSB7CiAgICByZXQgPSBnbnV0 bHNfcmVjb3JkX3NlbmQoZ3Nlc3Npb24sIHB0ciwgKHNpemVfdClsZW4pOwogICAgaWYgKHJldCA8 PSAwKQogICAgICByZXR1cm4gcmV0OwogICAgdHJldCArPSByZXQ7CiAgICBpZiAocmV0ID49IGxl bikKICAgICAgcmV0dXJuIHRyZXQ7CiAgICBsZW4gLT0gcmV0OwogICAgcHRyID0gKGNoYXIgKilw dHIgKyByZXQ7CiAgfQogICh2b2lkKW47Cn0KCi8qCiAqIGxvdy1sZXZlbCByZWFkIGFuZCB3cml0 ZSBmdW5jdGlvbnMgZm9yIGdudXRscwogKiByZWFkIHJldHVybnMgYXQgbGVhc3Qgb25lIGNoYXIs IG1vcmUgaWYgdGhleSdyZSBpbiB0aGUgYnVmZmVyCiAqLwpzdGF0aWMgc3NpemVfdCBsbHJlYWQo Z251dGxzX3RyYW5zcG9ydF9wdHJfdCBwLCB2b2lkKiBidWYsIHNpemVfdCBzaXplKQp7CiAgaW50 IG47CiAgc2l6ZV90IHIgPSAxOwoKICBuID0gaWJ1Zl9nZXRjKCZyZWFsaW5idWYsIGJ1ZisrKTsK ICBpZiAoIW4pIHJldHVybiAwOwogIHdoaWxlIChyIDwgc2l6ZSAmJiByZWFsaW5idWYuaW8uYnVm c3RhcnQgPCByZWFsaW5idWYuaW8uYnVmbGVuKSB7CiAgICBuID0gaWJ1Zl9nZXRjKCZyZWFsaW5i dWYsIGJ1ZisrKTsKICAgIGlmICghbikgcmV0dXJuIDA7CiAgICByKys7CiAgfQogIHJldHVybiBy OwogICh2b2lkKXA7Cn0KCnN0YXRpYyBzc2l6ZV90IGxsd3JpdGUoZ251dGxzX3RyYW5zcG9ydF9w dHJfdCBwLCB2b2lkKiBidWYsIHNpemVfdCBzaXplKQp7CiAgaW50IG47CgogIG4gPSBvYnVmX3dy aXRlKCZyZWFsb3V0YnVmLCBidWYsIHNpemUpOwogIG9idWZfZmx1c2goJnJlYWxvdXRidWYpOwog IGlmIChuKSByZXR1cm4gc2l6ZTsKICByZXR1cm4gcmVhbG91dGJ1Zi5jb3VudDsJLyogYWN0dWFs IGFtb3VudCB3cml0dGVuICovCiAgKHZvaWQpcDsKfQoKLyoKICogQ2FsbGVkIGFmdGVyIGNsaWVu dCBoZWxsbywgc2hvdWxkIGhhbmRsZSBTTkkgd29yay4KICogU2hvdWxkIGJlIHJlZ2lzdGVyZWQg d2l0aAogKiAgZ251dGxzX2hhbmRzaGFrZV9zZXRfcG9zdF9jbGllbnRfaGVsbG9fZnVuY3Rpb24o KQogKgogKiBUaGlzIGNhbGxiYWNrIG11c3QgcmV0dXJuIDAgb24gc3VjY2VzcyBvciBhIGdudXRs cyBlcnJvciBjb2RlIHRvIHRlcm1pbmF0ZQogKiB0aGUgaGFuZHNoYWtlLgogKiBGb3IgaW5hYmls aXR5IHRvIGdldCBTTkkgaW5mb3JtYXRpb24sIHdlIHJldHVybiAwLgogKiBXZSBvbmx5IHJldHVy biBub24temVybyBpZiByZS1zZXR1cCBmYWlsZWQuCiAqIE9ubHkgdXNlZCBmb3Igc2VydmVyLXNp ZGUgVExTLgogKi8Kc3RhdGljIGludCBzbmlfaGFuZGxpbmdfY2IoZ251dGxzX3Nlc3Npb25fdCBz ZXNzaW9uKQp7CiAgY2hhciBzbmlfbmFtZVsyNTZdOwogIHNpemVfdCBkYXRhX2xlbiA9IHNpemVv ZihzbmlfbmFtZSk7CiAgdW5zaWduZWQgaW50IHNuaV90eXBlOwogIGludCByYzsKCiAgcmMgPSBn bnV0bHNfc2VydmVyX25hbWVfZ2V0KHNlc3Npb24sIHNuaV9uYW1lLCAmZGF0YV9sZW4sICZzbmlf dHlwZSwgMCk7CiAgaWYgKHJjICE9IEdOVVRMU19FX1NVQ0NFU1MpIHsKICAgIGlmIChyYyA9PSBH TlVUTFNfRV9SRVFVRVNURURfREFUQV9OT1RfQVZBSUxBQkxFKSB7CiAgICAgIG1zZzEoIlRMUzog bm8gU05JIHByZXNlbnRlZCBpbiBoYW5kc2hha2UuIik7CiAgICB9IGVsc2UgewogICAgICBtc2dm KCJ7VExTIGZhaWx1cmU6IGdudXRsc19zZXJ2ZXJfbmFtZV9nZXQoKTogfXN7IFt9ZHtdfSIsIGdu dXRsc19zdHJlcnJvcihyYyksIHJjKTsKICAgIH0KICAgIHJldHVybiAwOwogIH0KICBpZiAoc25p X3R5cGUgIT0gR05VVExTX05BTUVfRE5TKSB7CiAgICBtc2dmKCJ7VExTOiBpZ25vcmluZyBTTkkg b2YgdW5oYW5kbGVkIHR5cGUgfXUiLCBzbmlfdHlwZSk7CiAgICByZXR1cm4gMDsKICB9CgogIHN0 ciBzbmljZXJ0ZmlsZSA9IHswfTsKICBzdHIgc25pa2V5ZmlsZSA9IHswfTsKICBzdHIgc25pZG5z ID0gezB9OwoKICB3cmFwX3N0cihzdHJfY29weXMoJnNuaWRucywgc25pX25hbWUpKTsKICBzdHJf bG93ZXIoJnNuaWRucyk7CS8qIG1ha2UgYWxsIGxvd2VyIGNhc2UgKi8KCiAgd3JhcF9zdHIoc3Ry X2NvcHlmKCZzbmljZXJ0ZmlsZSwgInN7L31Tey99U3suY3J0fSIsIGNlcnRkaXIsICZzbmlkbnMs ICZzbmlkbnMpKTsKICB3cmFwX3N0cihzdHJfY29weWYoJnNuaWtleWZpbGUsICJzey99U3svfVN7 LmtleX0iLCBjZXJ0ZGlyLCAmc25pZG5zLCAmc25pZG5zKSk7CiAgaWYgKCFhY2Nlc3Moc25pY2Vy dGZpbGUucywgUl9PSykpIHsKICAgIGlmIChhY2Nlc3Moc25pa2V5ZmlsZS5zLCBSX09LKSkKICAg ICAgd3JhcF9zdHIoc3RyX2NvcHkoJnNuaWtleWZpbGUsICZzbmljZXJ0ZmlsZSkpOwkvKiBkZWZh dWx0IGlzIHNhbWUgZmlsZSAqLwoKICAgIHJjID0gZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5 X2tleV9maWxlKHg1MDlfY3JlZCwgc25pY2VydGZpbGUucywgc25pa2V5ZmlsZS5zLCBHTlVUTFNf WDUwOV9GTVRfUEVNKTsKICAgIG1zZ2YoIntVc2luZyBTTkkgY2VydCBmaWxlIGZvciB9UyIsICZz bmlkbnMpOwogICAgc2Vzc2lvbl9zZXRzdHIoInRsc19zbmkiLCBzbmlkbnMucyk7CiAgfSBlbHNl IHsKICAgIG1zZ2YoIntObyBTTkkgY2VydCBmb3IgfVN7LCB1c2luZyBkZWZhdWx0fSIsICZzbmlk bnMpOwogICAgcmMgPSBnbnV0bHNfY2VydGlmaWNhdGVfc2V0X3g1MDlfa2V5X2ZpbGUoeDUwOV9j cmVkLCBjZXJ0ZmlsZSwga2V5ZmlsZSwgR05VVExTX1g1MDlfRk1UX1BFTSk7CiAgfQogIHN0cl9m cmVlKCZzbmljZXJ0ZmlsZSk7CiAgc3RyX2ZyZWUoJnNuaWtleWZpbGUpOwogIHN0cl9mcmVlKCZz bmlkbnMpOwoKICBpZiAocmMgIT0gR05VVExTX0VfU1VDQ0VTUykgewogICAgbXNnMigiU05JIFRM UyBjZXJ0aWZpY2F0ZSBpbml0IGZhaWxlZDogIiwgZ251dGxzX3N0cmVycm9yKHJjKSk7CiAgfQog IHJldHVybiByYzsKfQoKY29uc3QgcmVzcG9uc2UqIHN0YXJ0dGxzX2luaXQodm9pZCkKewogIGlu dCByZXQ7CiAgZ251dGxzX2RoX3BhcmFtc190IGRoX3BhcmFtczsKICBjb25zdCBjaGFyICpteV9w cmlvcml0eSA9IGdldGVudigiVExTX1BSSU9SSVRZIik7CiAgY29uc3QgY2hhciAqZGhmaWxlID0g Z2V0ZW52KCJUTFNfREhfUEFSQU1TIik7CiAgY2VydGZpbGUgPSBnZXRlbnYoIlRMU19DRVJURklM RSIpOwogIGtleWZpbGUgPSBnZXRlbnYoIlRMU19LRVlGSUxFIik7CiAgY2VydGRpciA9IGdldGVu digiVExTX0NFUlRESVIiKTsKCiAgaWYgKGtleWZpbGUgPT0gTlVMTCkKICAgIGtleWZpbGUgPSBj ZXJ0ZmlsZTsKCiAgaWYgKGNlcnRmaWxlID09IE5VTEwgfHwgKmNlcnRmaWxlID09IDAgfHwga2V5 ZmlsZSA9PSBOVUxMIHx8ICprZXlmaWxlID09IDApCiAgICByZXR1cm4gTlVMTDsKCiAgZ251dGxz X2dsb2JhbF9pbml0KCk7CgogIGdudXRsc19jZXJ0aWZpY2F0ZV9hbGxvY2F0ZV9jcmVkZW50aWFs cygmeDUwOV9jcmVkKTsKCiAgcmV0ID0gZ251dGxzX2NlcnRpZmljYXRlX3NldF94NTA5X2tleV9m aWxlKHg1MDlfY3JlZCwgY2VydGZpbGUsIGtleWZpbGUsIEdOVVRMU19YNTA5X0ZNVF9QRU0pOwog IGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VTUykgewogICAgbXNnMigiVExTIGluaXQgZmFpbGVk OiAiLCBnbnV0bHNfc3RyZXJyb3IocmV0KSk7CiAgICByZXR1cm4gMDsKICB9CgogIGdudXRsc19p bml0KCZnc2Vzc2lvbiwgR05VVExTX1NFUlZFUik7CgogIGlmIChjZXJ0ZGlyICYmICpjZXJ0ZGly KSB7CiAgICBnbnV0bHNfaGFuZHNoYWtlX3NldF9wb3N0X2NsaWVudF9oZWxsb19mdW5jdGlvbihn c2Vzc2lvbiwgc25pX2hhbmRsaW5nX2NiKTsKICB9CgogIGlmICghbXlfcHJpb3JpdHkpCiAgICBt eV9wcmlvcml0eSA9ICJOT1JNQUwiOwogIHJldCA9IGdudXRsc19wcmlvcml0eV9zZXRfZGlyZWN0 KGdzZXNzaW9uLCBteV9wcmlvcml0eSwgTlVMTCk7CiAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUND RVNTKSB7CiAgICBtc2cyKCJUTFMgcHJpb3JpdHkgZXJyb3I6ICIsIGdudXRsc19zdHJlcnJvcihy ZXQpKTsKICAgIHJldHVybiAwOwogIH0KCiAgaWYgKGRoZmlsZSAhPSBOVUxMKSB7CiAgICBzdHIg ZGF0YSA9IHswfTsKICAgIGdudXRsc19kYXR1bV90IHBhcmFtczsKICAgIGlmICghaWJ1Zl9vcGVu cmVhZGNsb3NlKGRoZmlsZSwgJmRhdGEpKSB7CiAgICAgIG1zZzIoIlRMUyBlcnJvciByZWFkaW5n IERIIHBhcmFtczogIiwgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgcmV0dXJuIE5VTEw7CiAgICB9 CiAgICBwYXJhbXMuZGF0YSA9ICh1bnNpZ25lZCBjaGFyKilkYXRhLnM7CiAgICBwYXJhbXMuc2l6 ZSA9IGRhdGEubGVuOwogICAgZ251dGxzX2RoX3BhcmFtc19pbml0KCZkaF9wYXJhbXMpOwogICAg aWYgKChyZXQgPSBnbnV0bHNfZGhfcGFyYW1zX2ltcG9ydF9wa2NzMyhkaF9wYXJhbXMsICZwYXJh bXMsIEdOVVRMU19YNTA5X0ZNVF9QRU0pKSA8IDApIHsKICAgICAgbXNnMigiVExTIGVycm9yIHBh cnNpbmcgREggcGFyYW1zOiAiLCBnbnV0bHNfc3RyZXJyb3IocmV0KSk7CiAgICAgIHJldHVybiBO VUxMOwogICAgfQogICAgZ251dGxzX2NlcnRpZmljYXRlX3NldF9kaF9wYXJhbXMoeDUwOV9jcmVk LCBkaF9wYXJhbXMpOwogICAgLyogRG9uJ3QgZGVpbml0IHRoZSBkaF9wYXJhbXMsIHNpbmNlIHRo ZSBhYm92ZSBvbmx5IHN0b3JlcyBhIHBvaW50ZXIgdG8gdGhlIHBhcmFtcy4gKi8KICB9CgogIGdu dXRsc19jcmVkZW50aWFsc19zZXQoZ3Nlc3Npb24sIEdOVVRMU19DUkRfQ0VSVElGSUNBVEUsIHg1 MDlfY3JlZCk7CgogIGlmIChnZXRlbnYoIlRMU19DT01QQVQiKSAhPSBOVUxMKSB7CiAgICAvKiBT ZXQgbWF4aW11bSBjb21wYXRpYmlsaXR5IG1vZGUuICovCiAgICBnbnV0bHNfc2Vzc2lvbl9lbmFi bGVfY29tcGF0aWJpbGl0eV9tb2RlKGdzZXNzaW9uKTsKICB9CgogIHRsc19hdmFpbGFibGUgPSAx OwoKICBpZiAoZ2V0ZW52KCJUTFNfSU1NRURJQVRFIikpIHsKICAgIGlmICghc3RhcnR0bHNfc3Rh cnQoKSkKICAgICAgZXhpdCgxKTsJCS8qIG5vdCBtdWNoIGVsc2UgdG8gZG8gKi8KICB9CiAgcmV0 dXJuIE5VTEw7Cn0KCnN0YXRpYyB2b2lkIHNldF90bHNwYXJhbXModm9pZCkKewogIGNvbnN0IGNo YXIgKnByb3RvY29sID0gZ251dGxzX3Byb3RvY29sX2dldF9uYW1lKGdudXRsc19wcm90b2NvbF9n ZXRfdmVyc2lvbihnc2Vzc2lvbikpOwogIGNvbnN0IGNoYXIgKmtleWV4ID0gZ251dGxzX2t4X2dl dF9uYW1lKGdudXRsc19reF9nZXQoZ3Nlc3Npb24pKTsKICBjb25zdCBjaGFyICpjaXBoZXIgPSBn bnV0bHNfY2lwaGVyX2dldF9uYW1lKGdudXRsc19jaXBoZXJfZ2V0KGdzZXNzaW9uKSk7CiAgY29u c3QgY2hhciAqbWFjID0gZ251dGxzX21hY19nZXRfbmFtZShnbnV0bHNfbWFjX2dldChnc2Vzc2lv bikpOwogIHN0ciB0bHNwYXJhbXMgPSB7MH07CiAgd3JhcF9zdHIoc3RyX2NvcHlmKCZ0bHNwYXJh bXMsICJzeyB9c3sgfXN7IH1zIiwgcHJvdG9jb2wsIGtleWV4LCBjaXBoZXIsIG1hYykpOwogIG1z ZzIoIlRMUyBoYW5kc2hha2U6ICIsIHRsc3BhcmFtcy5zKTsKICBzZXNzaW9uX3NldHN0cigidGxz X3BhcmFtcyIsIHRsc3BhcmFtcy5zKTsKICBzdHJfZnJlZSgmdGxzcGFyYW1zKTsKICBzZXNzaW9u X3NldHN0cigidGxzX3Byb3RvY29sIiwgcHJvdG9jb2wpOwogIHNlc3Npb25fc2V0c3RyKCJ0bHNf a2V5ZXgiLCBrZXlleCk7CiAgc2Vzc2lvbl9zZXRzdHIoInRsc19jaXBoZXIiLCBjaXBoZXIpOwog IHNlc3Npb25fc2V0c3RyKCJ0bHNfbWFjIiwgbWFjKTsKfQoKaW50IHN0YXJ0dGxzX3N0YXJ0KHZv aWQpCnsKICBzdGF0aWMgaW50IGRpZHN0YXJ0dGxzID0gMDsKICBpbnQgcmV0OwoKICAvKiBTVEFS VFRMUyBtdXN0IGJlIHRoZSBsYXN0IGNvbW1hbmQgaW4gYSBwaXBlbGluZSwgYnV0IHRvbyBiYWQu CiAgICogSSBkb24ndCB0aGluayBDVkUtMjAxMS0wNDExIGFwcGxpZXMgc2luY2UgdGhlIFRMUyBo YW5kc2hha2UKICAgKiBjb25zdW1lcyB3aHRhdGV2ZXIgZm9sbG93cyB0aGUgU1RBUlRUTFMgY29t bWFuZCAgKi8KCiAgaWYgKGRpZHN0YXJ0dGxzKSB7CiAgICBtc2cyKCJhbHJlYWR5IGNhbGxlZCIs ICJnbnV0bHMgZ2xvYmFsIGluaXQiKTsKICAgIHJldHVybiAwOwogIH0KICBkaWRzdGFydHRscyA9 IDE7CgogIC8qIHNhdmUgaW5wdXQgYW5kIG91dHB1dCB0byBmZWVkIGludG8gVExTIGVuZ2luZSB2 aWEgbGxyZWFkIGFuZCBsbHdyaXRlICovCiAgcmVhbGluYnVmID0gaW5idWY7CiAgcmVhbG91dGJ1 ZiA9IG91dGJ1ZjsKCiAgLyogUmUtaW5pdGlhbGl6ZSBpbnB1dCBhbmQgb3V0cHV0IHRvIHVzZSBv dXIgbG9jYWwgVExTLWl6ZWQgSS9PICovCiAgaWJ1Zl9pbml0KCZpbmJ1ZiwgLTEsIChpYnVmX2Zu KSp0bHNyZWFkLCAwLCAwKTsKICBvYnVmX2luaXQoJm91dGJ1ZiwtMSwgKG9idWZfZm4pKnRsc3dy aXRlLCAwLCAwKTsKCiAgZ251dGxzX3RyYW5zcG9ydF9zZXRfcHVsbF9mdW5jdGlvbihnc2Vzc2lv biwgKGdudXRsc19wdWxsX2Z1bmMpbGxyZWFkKTsKICBnbnV0bHNfdHJhbnNwb3J0X3NldF9wdXNo X2Z1bmN0aW9uKGdzZXNzaW9uLCAoZ251dGxzX3B1c2hfZnVuYylsbHdyaXRlKTsKCiAgbXNnMSgi U3RhcnRpbmcgVExTIGhhbmRzaGFrZSIpOwoKICByZXQgPSBnbnV0bHNfaGFuZHNoYWtlKGdzZXNz aW9uKTsKICBpZiAocmV0IDwgMCkgewogICAgbXNnMigiVExTIGhhbmRzaGFrZSBmYWlsZWQ6ICIs IGdudXRsc19zdHJlcnJvcihyZXQpKTsKICAgIGdudXRsc19kZWluaXQoZ3Nlc3Npb24pOwogICAg cmV0dXJuIDA7CiAgfQogIHNldF90bHNwYXJhbXMoKTsKICByZXR1cm4gMTsKfQoKaW50IHN0YXJ0 dGxzX2F2YWlsYWJsZSh2b2lkKQp7CiAgcmV0dXJuIHRsc19hdmFpbGFibGU7Cn0KCnZvaWQgc3Rh cnR0bHNfZGlzYWJsZSh2b2lkKQp7CiAgdGxzX2F2YWlsYWJsZSA9IDA7Cn0K --=_e8cb725bd5d1247af06594c1725911a5 Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --=_e8cb725bd5d1247af06594c1725911a5--