From: Martin Bosslet Date: 2011-01-24T10:26:13+09:00 Subject: [ruby-core:34818] [Ruby 1.9-Feature#4309] [ext/openssl] ASN1 performance enhancement --mimepart_4d3cd534d179c_1dc2b1067dc1565c Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Issue #4309 has been updated by Martin Bosslet. File class_tag_map2.diff added Added tests that further assert behavior of OpenSSL::ASN1::default_tag/de= fault_tag_class_of. Attachment replaces the first one. ---------------------------------------- http://redmine.ruby-lang.org/issues/show/4309 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d3cd534d179c_1dc2b1067dc1565c Content-Type: text/x-patch; name=class_tag_map2.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=class_tag_map2.diff ClByb3BlcnR5IGNoYW5nZXMgb246IHJ1YnkvZXh0L29wZW5zc2wKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpNb2RpZmllZDogc3ZuOmlnbm9yZQogICAtIEdO VW1ha2VmaWxlCk1ha2VmaWxlCmRlcApleHRjb25mLmgKbWttZi5sb2cKb3Bl bnNzbC5hCmNvbmZ0ZXN0LmRTWU0KCiAgICsgR05VbWFrZWZpbGUKTWFrZWZp bGUKZGVwCmV4dGNvbmYuaApta21mLmxvZwpvcGVuc3NsLmEKY29uZnRlc3Qu ZFNZTQpvcGVuc3NsLnNvCgoKSW5kZXg6IHJ1YnkvZXh0L29wZW5zc2wvb3Nz bF9hc24xLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnVieS9leHQv b3BlbnNzbC9vc3NsX2FzbjEuYwkocmV2aXNpb24gMzA2NDApCisrKyBydWJ5 L2V4dC9vcGVuc3NsL29zc2xfYXNuMS5jCSh3b3JraW5nIGNvcHkpCkBAIC00 NTQsNyArNDU0LDcgQEAKIH0gb3NzbF9hc24xX2luZm9fdDsKIAogc3RhdGlj IG9zc2xfYXNuMV9pbmZvX3Qgb3NzbF9hc24xX2luZm9bXSA9IHsKLSAgICB7 ICJFT0MiLCAgICAgICAgICAgICAgICZjQVNOMUVuZE9mQ29udGVudCwgICAg fSwgIC8qICAwICovCisgICAgeyAiRU5EX09GX0NPTlRFTlQiLCAgICAmY0FT TjFFbmRPZkNvbnRlbnQsICAgIH0sICAvKiAgMCAqLwogICAgIHsgIkJPT0xF QU4iLCAgICAgICAgICAgJmNBU04xQm9vbGVhbiwgICAgICAgICB9LCAgLyog IDEgKi8KICAgICB7ICJJTlRFR0VSIiwgICAgICAgICAgICZjQVNOMUludGVn ZXIsICAgICAgICAgfSwgIC8qICAyICovCiAgICAgeyAiQklUX1NUUklORyIs ICAgICAgICAmY0FTTjFCaXRTdHJpbmcsICAgICAgIH0sICAvKiAgMyAqLwpA QCAtNDg3LDEwICs0ODcsMzQgQEAKICAgICB7ICJCTVBTVFJJTkciLCAgICAg ICAgICZjQVNOMUJNUFN0cmluZywgICAgICAgfSwgIC8qIDMwICovCiB9Owog CisKKwogaW50IG9zc2xfYXNuMV9pbmZvX3NpemUgPSAoc2l6ZW9mKG9zc2xf YXNuMV9pbmZvKS9zaXplb2Yob3NzbF9hc24xX2luZm9bMF0pKTsKIAorc3Rh dGljIFZBTFVFIGNsYXNzX3RhZ19tYXA7CisKIHN0YXRpYyBpbnQgb3NzbF9h c24xX2RlZmF1bHRfdGFnKFZBTFVFIG9iaik7CiAKK3N0YXRpYyBWQUxVRQor b3NzbF9hc24xX2RlZmF1bHRfdGFnX2NsYXNzKFZBTFVFIHNlbGYsIFZBTFVF IGtsYXNzKQoreworICAgIFZBTFVFIHRhZyA9IHJiX2hhc2hfbG9va3VwKGNs YXNzX3RhZ19tYXAsIGtsYXNzKTsKKyAgICBpZiAodGFnICE9IFFuaWwpIHsK KyAgICAgICAgcmV0dXJuIHRhZzsKKyAgICB9CisKKyAgICBvc3NsX3JhaXNl KGVBU04xRXJyb3IsICJ1bml2ZXJzYWwgdGFnIGZvciAlcyBub3QgZm91bmQi LAorCSAgICAgICByYl9jbGFzczJuYW1lKGtsYXNzKSk7CisKKyAgICByZXR1 cm4gUW5pbDsgLyogZHVtbXkgKi8KK30KKworc3RhdGljIFZBTFVFCitvc3Ns X2FzbjFfZGVmYXVsdF90YWdfcHVibGljKFZBTFVFIHNlbGYsIFZBTFVFIG9i aikKK3sKKyAgcmV0dXJuIElOVDJOVU0ob3NzbF9hc24xX2RlZmF1bHRfdGFn KG9iaikpOworfQorCiBBU04xX1RZUEUqCiBvc3NsX2FzbjFfZ2V0X2FzbjF0 eXBlKFZBTFVFIG9iaikKIHsKQEAgLTU3MCwxNCArNTk0LDE1IEBACiBzdGF0 aWMgaW50CiBvc3NsX2FzbjFfZGVmYXVsdF90YWcoVkFMVUUgb2JqKQogewot ICAgIGludCBpOworICAgIFZBTFVFIHRtcF9jbGFzcyA9IENMQVNTX09GKG9i aik7CisgICAgd2hpbGUgKHRtcF9jbGFzcykgeworICAgICAgICBWQUxVRSB0 YWcgPSByYl9oYXNoX2xvb2t1cChjbGFzc190YWdfbWFwLCB0bXBfY2xhc3Mp OworICAgICAgICBpZiAodGFnICE9IFFuaWwpIHsKKyAgICAgICAgICAgIHJl dHVybiBOVU0ySU5UKHRhZyk7CisgICAgICAgIH0KKyAgICAgICAgdG1wX2Ns YXNzID0gUkNMQVNTX1NVUEVSKHRtcF9jbGFzcyk7CisgICAgfQogCi0gICAg Zm9yKGkgPSAwOyBpIDwgb3NzbF9hc24xX2luZm9fc2l6ZTsgaSsrKXsKLQlp Zihvc3NsX2FzbjFfaW5mb1tpXS5rbGFzcyAmJgotCSAgIHJiX29ial9pc19r aW5kX29mKG9iaiwgKm9zc2xfYXNuMV9pbmZvW2ldLmtsYXNzKSl7Ci0JICAg IHJldHVybiBpOwotCX0KLSAgICB9CiAgICAgb3NzbF9yYWlzZShlQVNOMUVy cm9yLCAidW5pdmVyc2FsIHRhZyBmb3IgJXMgbm90IGZvdW5kIiwKIAkgICAg ICAgcmJfY2xhc3MybmFtZShDTEFTU19PRihvYmopKSk7CiAKQEAgLTg0MSw3 ICs4NjYsNyBAQAogICAgICAgICAgICAgb3NzbF9hc24xX3NldF9pbmZpbml0 ZV9sZW5ndGgoYXNuMWRhdGEsIFF0cnVlKTsKICAgICAgICAgZWxzZQogICAg ICAgICAgICAgb3NzbF9hc24xX3NldF9pbmZpbml0ZV9sZW5ndGgoYXNuMWRh dGEsIFFmYWxzZSk7Ci0gICAgICAgIAorCiAJcmJfYXJ5X3B1c2goYXJ5LCBh c24xZGF0YSk7CiAJbGVuZ3RoIC09IGxlbjsKICAgICAgICAgaWYob25jZSkg YnJlYWs7CkBAIC0xMTkwLDYgKzEyMTUsOCBAQAogICAgIHJiX2RlZmluZV9t b2R1bGVfZnVuY3Rpb24obUFTTjEsICJ0cmF2ZXJzZSIsIG9zc2xfYXNuMV90 cmF2ZXJzZSwgMSk7CiAgICAgcmJfZGVmaW5lX21vZHVsZV9mdW5jdGlvbiht QVNOMSwgImRlY29kZSIsIG9zc2xfYXNuMV9kZWNvZGUsIDEpOwogICAgIHJi X2RlZmluZV9tb2R1bGVfZnVuY3Rpb24obUFTTjEsICJkZWNvZGVfYWxsIiwg b3NzbF9hc24xX2RlY29kZV9hbGwsIDEpOworICAgIHJiX2RlZmluZV9tb2R1 bGVfZnVuY3Rpb24obUFTTjEsICJkZWZhdWx0X3RhZ19vZl9jbGFzcyIsIG9z c2xfYXNuMV9kZWZhdWx0X3RhZ19jbGFzcywgMSk7CisgICAgcmJfZGVmaW5l X21vZHVsZV9mdW5jdGlvbihtQVNOMSwgImRlZmF1bHRfdGFnIiwgb3NzbF9h c24xX2RlZmF1bHRfdGFnX3B1YmxpYywgMSk7CiAgICAgYXJ5ID0gcmJfYXJ5 X25ldygpOwogICAgIHJiX2RlZmluZV9jb25zdChtQVNOMSwgIlVOSVZFUlNB TF9UQUdfTkFNRSIsIGFyeSk7CiAgICAgZm9yKGkgPSAwOyBpIDwgb3NzbF9h c24xX2luZm9fc2l6ZTsgaSsrKXsKQEAgLTEyNjAsNCArMTI4NywzMSBAQAog ICAgIHJiX2F0dHIoY0FTTjFCaXRTdHJpbmcsIHJiX2ludGVybigidW51c2Vk X2JpdHMiKSwgMSwgMSwgMCk7CiAKICAgICByYl9kZWZpbmVfbWV0aG9kKGNB U04xRW5kT2ZDb250ZW50LCAiaW5pdGlhbGl6ZSIsIG9zc2xfYXNuMWVvY19p bml0aWFsaXplLCAwKTsKKworICAgIGNsYXNzX3RhZ19tYXAgPSByYl9oYXNo X25ldygpOworICAgIHJiX2hhc2hfYXNldChjbGFzc190YWdfbWFwLCBjQVNO MUVuZE9mQ29udGVudCwgSU5UMk5VTSgwKSk7CisgICAgcmJfaGFzaF9hc2V0 KGNsYXNzX3RhZ19tYXAsIGNBU04xQm9vbGVhbiwgSU5UMk5VTSgxKSk7Cisg ICAgcmJfaGFzaF9hc2V0KGNsYXNzX3RhZ19tYXAsIGNBU04xSW50ZWdlciwg SU5UMk5VTSgyKSk7CisgICAgcmJfaGFzaF9hc2V0KGNsYXNzX3RhZ19tYXAs IGNBU04xQml0U3RyaW5nLCBJTlQyTlVNKDMpKTsKKyAgICByYl9oYXNoX2Fz ZXQoY2xhc3NfdGFnX21hcCwgY0FTTjFPY3RldFN0cmluZywgSU5UMk5VTSg0 KSk7CisgICAgcmJfaGFzaF9hc2V0KGNsYXNzX3RhZ19tYXAsIGNBU04xTnVs bCwgSU5UMk5VTSg1KSk7CisgICAgcmJfaGFzaF9hc2V0KGNsYXNzX3RhZ19t YXAsIGNBU04xT2JqZWN0SWQsIElOVDJOVU0oNikpOworICAgIHJiX2hhc2hf YXNldChjbGFzc190YWdfbWFwLCBjQVNOMUVudW1lcmF0ZWQsIElOVDJOVU0o MTApKTsKKyAgICByYl9oYXNoX2FzZXQoY2xhc3NfdGFnX21hcCwgY0FTTjFV VEY4U3RyaW5nLCBJTlQyTlVNKDEyKSk7CisgICAgcmJfaGFzaF9hc2V0KGNs YXNzX3RhZ19tYXAsIGNBU04xU2VxdWVuY2UsIElOVDJOVU0oMTYpKTsKKyAg ICByYl9oYXNoX2FzZXQoY2xhc3NfdGFnX21hcCwgY0FTTjFTZXQsIElOVDJO VU0oMTcpKTsKKyAgICByYl9oYXNoX2FzZXQoY2xhc3NfdGFnX21hcCwgY0FT TjFOdW1lcmljU3RyaW5nLCBJTlQyTlVNKDE4KSk7CisgICAgcmJfaGFzaF9h c2V0KGNsYXNzX3RhZ19tYXAsIGNBU04xUHJpbnRhYmxlU3RyaW5nLCBJTlQy TlVNKDE5KSk7CisgICAgcmJfaGFzaF9hc2V0KGNsYXNzX3RhZ19tYXAsIGNB U04xVDYxU3RyaW5nLCBJTlQyTlVNKDIwKSk7CisgICAgcmJfaGFzaF9hc2V0 KGNsYXNzX3RhZ19tYXAsIGNBU04xVmlkZW90ZXhTdHJpbmcsIElOVDJOVU0o MjEpKTsKKyAgICByYl9oYXNoX2FzZXQoY2xhc3NfdGFnX21hcCwgY0FTTjFJ QTVTdHJpbmcsIElOVDJOVU0oMjIpKTsKKyAgICByYl9oYXNoX2FzZXQoY2xh c3NfdGFnX21hcCwgY0FTTjFVVENUaW1lLCBJTlQyTlVNKDIzKSk7CisgICAg cmJfaGFzaF9hc2V0KGNsYXNzX3RhZ19tYXAsIGNBU04xR2VuZXJhbGl6ZWRU aW1lLCBJTlQyTlVNKDI0KSk7CisgICAgcmJfaGFzaF9hc2V0KGNsYXNzX3Rh Z19tYXAsIGNBU04xR3JhcGhpY1N0cmluZywgSU5UMk5VTSgyNSkpOworICAg IHJiX2hhc2hfYXNldChjbGFzc190YWdfbWFwLCBjQVNOMUlTTzY0U3RyaW5n LCBJTlQyTlVNKDI2KSk7CisgICAgcmJfaGFzaF9hc2V0KGNsYXNzX3RhZ19t YXAsIGNBU04xR2VuZXJhbFN0cmluZywgSU5UMk5VTSgyNykpOworICAgIHJi X2hhc2hfYXNldChjbGFzc190YWdfbWFwLCBjQVNOMVVuaXZlcnNhbFN0cmlu ZywgSU5UMk5VTSgyOCkpOworICAgIHJiX2hhc2hfYXNldChjbGFzc190YWdf bWFwLCBjQVNOMUJNUFN0cmluZywgSU5UMk5VTSgzMCkpOworCisgICAgcmJf ZGVmaW5lX2NvbnN0KG1BU04xLCAiQ0xBU1NfVEFHX01BUCIsIGNsYXNzX3Rh Z19tYXApOwogfQpJbmRleDogcnVieS90ZXN0L29wZW5zc2wvdGVzdF9hc24x LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJ1YnkvdGVzdC9vcGVu c3NsL3Rlc3RfYXNuMS5yYgkocmV2aXNpb24gMzA2NDApCisrKyBydWJ5L3Rl c3Qvb3BlbnNzbC90ZXN0X2FzbjEucmIJKHdvcmtpbmcgY29weSkKQEAgLTQz MCw0ICs0MzAsNTQgQEAKICAgICBlbmQKICAgZW5kCiAgIAorICBkZWYgdGVz dF9kZWZhdWx0X3RhZ19vZl9jbGFzcworICAgIE9wZW5TU0w6OkFTTjE6OkNM QVNTX1RBR19NQVAuZWFjaCBkbyB8a2xhc3MsIHRhZ3wKKyAgICAgIGFzc2Vy dF9lcXVhbCh0YWcsIE9wZW5TU0w6OkFTTjEuZGVmYXVsdF90YWdfb2ZfY2xh c3Moa2xhc3MpKQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiB0ZXN0X2Rl ZmF1bHRfdGFnCisgICAgYXNzZXJ0X2VxdWFsKDAsIE9wZW5TU0w6OkFTTjEu ZGVmYXVsdF90YWcoT3BlblNTTDo6QVNOMTo6RW5kT2ZDb250ZW50Lm5ldykp ICAgIAorICAgIGFzc2VydF9lcXVhbCgxLCBPcGVuU1NMOjpBU04xLmRlZmF1 bHRfdGFnKE9wZW5TU0w6OkFTTjE6OkJvb2xlYW4ubmV3KHRydWUpKSkKKyAg ICBhc3NlcnRfZXF1YWwoMiwgT3BlblNTTDo6QVNOMS5kZWZhdWx0X3RhZyhP cGVuU1NMOjpBU04xOjpJbnRlZ2VyLm5ldygxKSkpCisgICAgYXNzZXJ0X2Vx dWFsKDMsIE9wZW5TU0w6OkFTTjEuZGVmYXVsdF90YWcoT3BlblNTTDo6QVNO MTo6Qml0U3RyaW5nLm5ldygiXHgwMSIpKSkKKyAgICBhc3NlcnRfZXF1YWwo NCwgT3BlblNTTDo6QVNOMS5kZWZhdWx0X3RhZyhPcGVuU1NMOjpBU04xOjpP Y3RldFN0cmluZy5uZXcoIlx4MDEiKSkpICAgIAorICAgIGFzc2VydF9lcXVh bCg1LCBPcGVuU1NMOjpBU04xLmRlZmF1bHRfdGFnKE9wZW5TU0w6OkFTTjE6 Ok51bGwubmV3KG5pbCkpKSAgICAKKyAgICBhc3NlcnRfZXF1YWwoNiwgT3Bl blNTTDo6QVNOMS5kZWZhdWx0X3RhZyhPcGVuU1NMOjpBU04xOjpPYmplY3RJ ZC5uZXcoIjEuMi4zLjQuNSIpKSkgICAgCisgICAgYXNzZXJ0X2VxdWFsKDEw LCBPcGVuU1NMOjpBU04xLmRlZmF1bHRfdGFnKE9wZW5TU0w6OkFTTjE6OkVu dW1lcmF0ZWQubmV3KDEpKSkgICAgCisgICAgYXNzZXJ0X2VxdWFsKDEyLCBP cGVuU1NMOjpBU04xLmRlZmF1bHRfdGFnKE9wZW5TU0w6OkFTTjE6OlVURjhT dHJpbmcubmV3KCJhIikpKSAKKyAgICBhc3NlcnRfZXF1YWwoMTYsIE9wZW5T U0w6OkFTTjEuZGVmYXVsdF90YWcoT3BlblNTTDo6QVNOMTo6U2VxdWVuY2Uu bmV3KFtdKSkpICAgIAorICAgIGFzc2VydF9lcXVhbCgxNywgT3BlblNTTDo6 QVNOMS5kZWZhdWx0X3RhZyhPcGVuU1NMOjpBU04xOjpTZXQubmV3KFtdKSkp ICAgIAorICAgIGFzc2VydF9lcXVhbCgxOCwgT3BlblNTTDo6QVNOMS5kZWZh dWx0X3RhZyhPcGVuU1NMOjpBU04xOjpOdW1lcmljU3RyaW5nLm5ldygiYSIp KSkKKyAgICBhc3NlcnRfZXF1YWwoMTksIE9wZW5TU0w6OkFTTjEuZGVmYXVs dF90YWcoT3BlblNTTDo6QVNOMTo6UHJpbnRhYmxlU3RyaW5nLm5ldygiYSIp KSkKKyAgICBhc3NlcnRfZXF1YWwoMjAsIE9wZW5TU0w6OkFTTjEuZGVmYXVs dF90YWcoT3BlblNTTDo6QVNOMTo6VDYxU3RyaW5nLm5ldygiYSIpKSkKKyAg ICBhc3NlcnRfZXF1YWwoMjEsIE9wZW5TU0w6OkFTTjEuZGVmYXVsdF90YWco T3BlblNTTDo6QVNOMTo6VmlkZW90ZXhTdHJpbmcubmV3KCJhIikpKQorICAg IGFzc2VydF9lcXVhbCgyMiwgT3BlblNTTDo6QVNOMS5kZWZhdWx0X3RhZyhP cGVuU1NMOjpBU04xOjpJQTVTdHJpbmcubmV3KCJhIikpKQorICAgIGFzc2Vy dF9lcXVhbCgyMywgT3BlblNTTDo6QVNOMS5kZWZhdWx0X3RhZyhPcGVuU1NM OjpBU04xOjpVVENUaW1lLm5ldyhUaW1lLm5vdykpKQorICAgIGFzc2VydF9l cXVhbCgyNCwgT3BlblNTTDo6QVNOMS5kZWZhdWx0X3RhZyhPcGVuU1NMOjpB U04xOjpHZW5lcmFsaXplZFRpbWUubmV3KFRpbWUubm93KSkpCisgICAgYXNz ZXJ0X2VxdWFsKDI1LCBPcGVuU1NMOjpBU04xLmRlZmF1bHRfdGFnKE9wZW5T U0w6OkFTTjE6OkdyYXBoaWNTdHJpbmcubmV3KCJhIikpKQorICAgIGFzc2Vy dF9lcXVhbCgyNiwgT3BlblNTTDo6QVNOMS5kZWZhdWx0X3RhZyhPcGVuU1NM OjpBU04xOjpJU082NFN0cmluZy5uZXcoImEiKSkpCisgICAgYXNzZXJ0X2Vx dWFsKDI3LCBPcGVuU1NMOjpBU04xLmRlZmF1bHRfdGFnKE9wZW5TU0w6OkFT TjE6OkdlbmVyYWxTdHJpbmcubmV3KCJhIikpKQorICAgIGFzc2VydF9lcXVh bCgyOCwgT3BlblNTTDo6QVNOMS5kZWZhdWx0X3RhZyhPcGVuU1NMOjpBU04x OjpVbml2ZXJzYWxTdHJpbmcubmV3KCJhIikpKQorICAgIGFzc2VydF9lcXVh bCgzMCwgT3BlblNTTDo6QVNOMS5kZWZhdWx0X3RhZyhPcGVuU1NMOjpBU04x OjpCTVBTdHJpbmcubmV3KCJhIikpKQorICBlbmQKKyAgCisgIGRlZiB0ZXN0 X2RlZmF1bHRfdGFnX3N1Yl9jbGFzcworICAgIGFzbjFfY2xhc3MgPSBDbGFz cy5uZXcoT3BlblNTTDo6QVNOMTo6SW50ZWdlcikKKyAgICBhc24xID0gYXNu MV9jbGFzcy5uZXcoOCkKKyAgICBhc3NlcnRfZXF1YWwoMiwgT3BlblNTTDo6 QVNOMS5kZWZhdWx0X3RhZyhhc24xKSkKKyAgZW5kCisgIAorICBkZWYgdGVz dF9kZWZhdWx0X3RhZ19vZl9jbGFzc19uZWdhdGl2ZQorICAgIGFzc2VydF9y YWlzZXMoT3BlblNTTDo6QVNOMTo6QVNOMUVycm9yKSBkbworICAgICAgT3Bl blNTTDo6QVNOMS5kZWZhdWx0X3RhZ19vZl9jbGFzcyhBcnJheSkKKyAgICBl bmQKKyAgZW5kCisgICAgCisgIGRlZiB0ZXN0X2RlZmF1bHRfdGFnX25lZ2F0 aXZlCisgICAgYXNzZXJ0X3JhaXNlcyhPcGVuU1NMOjpBU04xOjpBU04xRXJy b3IpIGRvCisgICAgICBPcGVuU1NMOjpBU04xLmRlZmF1bHRfdGFnKE9wZW5T U0w6OkFTTjE6OkFTTjFEYXRhLm5ldygxLCAyLCBuaWwpKQorICAgIGVuZAor ICBlbmQKKyAgCiBlbmQgaWYgZGVmaW5lZD8oT3BlblNTTCkK --mimepart_4d3cd534d179c_1dc2b1067dc1565c--