aiortc / aioquic

QUIC and HTTP/3 implementation in Python
BSD 3-Clause "New" or "Revised" License
1.69k stars 238 forks source link

Certificate and buffer capacity #89

Closed yutakahirano closed 4 years ago

yutakahirano commented 4 years ago

Hi,

Thank you very much for developing this!

We are trying to use this as a test server in web-platform-tests, and I have one problem: the server throws with our certificates.

With web-platform.test.pem and web-platform.test.key in https://github.com/web-platform-tests/wpt/tree/master/tools/certs, it throws an BufferWriteError.

handle: <Handle _SelectorDatagramTransport._read_ready()>
Traceback (most recent call last):
  File "/usr/lib/python3.6/asyncio/events.py", line 145, in _run
    self._callback(*self._args)
  File "/usr/lib/python3.6/asyncio/selector_events.py", line 1068, in _read_ready
    self._protocol.datagram_received(data, addr)
  File "/home/yuta/work/aioquic/src/aioquic/asyncio/server.py", line 144, in datagram_received
    protocol.datagram_received(data, addr)
  File "/home/yuta/work/aioquic/src/aioquic/asyncio/protocol.py", line 135, in datagram_received
    self._quic.receive_datagram(cast(bytes, data), addr, now=self._loop.time())
  File "/home/yuta/work/aioquic/src/aioquic/quic/connection.py", line 870, in receive_datagram
    context, plain_payload
  File "/home/yuta/work/aioquic/src/aioquic/quic/connection.py", line 1929, in _payload_received
    frame_handler(context, frame_type, buf)
  File "/home/yuta/work/aioquic/src/aioquic/quic/connection.py", line 1308, in _handle_crypto_frame
    self.tls.handle_message(event.data, self._crypto_buffers)
  File "/home/yuta/work/aioquic/src/aioquic/tls.py", line 1339, in handle_message
    output_buf[Epoch.ONE_RTT],
  File "/home/yuta/work/aioquic/src/aioquic/tls.py", line 1831, in _server_handle_hello
    for x in [self.certificate] + self.certificate_chain
  File "/home/yuta/work/aioquic/src/aioquic/tls.py", line 921, in push_certificate
    buf, 3, partial(push_certificate_entry, buf), certificate.certificates
  File "/home/yuta/work/aioquic/src/aioquic/tls.py", line 461, in push_list
    func(value)
  File "/home/yuta/work/aioquic/src/aioquic/tls.py", line 917, in push_certificate_entry
    push_opaque(buf, 3, entry[0])
  File "/home/yuta/work/aioquic/src/aioquic/tls.py", line 480, in push_opaque
    buf.push_bytes(value)
aioquic._buffer.BufferWriteError: Write out of bounds
2020-04-30 19:49:35,467 INFO root QUIC event: <class 'aioquic.quic.events.ProtocolNegotiated'>

I found this can be workarounded by changing a buffer capacity in aioquic/quic/connection.py.

self._crypto_buffers = {
    tls.Epoch.INITIAL: Buffer(capacity=4096),
#  tls.Epoch.HANDSHAKE: Buffer(capacity=4096),
    tls.Epoch.HANDSHAKE: Buffer(capacity=16384),
    tls.Epoch.ONE_RTT: Buffer(capacity=4096),
}

Is this a known issue? Is there any clean solution?

Thank you!

jlaine commented 4 years ago

Hello! I'm glad aioquic is of use to you, and very excited to hear you plan to roll it into web platform tests.

To be honest this is the first time I've seen the capacity of these buffers exceeded. I'm glad a proper exception was raised rather than a crash in our C code, that at least is good news! I'm a bit surprised, as 4096 bytes means that the certificate is already going to span 3 packets, how large is the certificate + chain?

I have no problem raising the size of all these buffers to 8192, would that be sufficient or do we need to go up to 16384 as you did?

Jeremy

jlaine commented 4 years ago

One warning though: I'm not sure using create_stream is a great idea. I'm not satisfied with the steams API and will possibly remove it in the future. This was an API I added very early in the project's life, and soon realized it was not practical for real cases such as HTTP/3. I'd recommend subclassing QuicConnectionProtocol instead, this is the approach used by most examples (HTTP/3 client and server, siduck client / server, doq client / server).

On a semi-related note, have you considered using aiortc for any WebRTC-related tests? My initial motivation for aioquic was to provide a QUIC layer which can used for WebRTC, I plan to integrate the two projects at some point.

Hexcles commented 4 years ago

On a semi-related note, have you considered using aiortc for any WebRTC-related tests? My initial motivation for aioquic was to provide a QUIC layer which can used for WebRTC, I plan to integrate the two projects at some point.

Unfortunately we'd like to maintain Python 2 compatibility as much as possible, so we'll probably need to stick with pywebsocket.

jlaine commented 4 years ago

I was talking about WebRTC, not WebSockets ;)

aiortc gives you a browserless WebRTC stack in Python.

Hexcles commented 4 years ago

I'm very sorry. I clearly was not caffeinated enough this morning :)

And I'm not an expert on WebRTC I'm not sure how it's tested right now.

On Thu., Apr. 30, 2020, 12:13 Jeremy Lainé, notifications@github.com wrote:

I was talking about WebRTC, not WebSockets ;)

aiortc gives you a browserless WebRTC stack in Python.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/aiortc/aioquic/issues/89#issuecomment-621952984, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK6ZDA63X2LPLYPFSO5OQTRPGPRZANCNFSM4MVM7EMQ .

yutakahirano commented 4 years ago

Thank you. Apparently 8192 doesn't work and 16384 works for me.

jlaine commented 4 years ago

OK thanks. Could you point me to your certificate please, as I don't think I've ever seen one so large?

yutakahirano commented 4 years ago

web-platform.test.pem and web-platform.test.key in https://github.com/web-platform-tests/wpt/tree/master/tools/certs.

Hexcles commented 4 years ago

It could be because of our super long domain list.

On Fri., May 1, 2020, 06:10 Yutaka Hirano, notifications@github.com wrote:

web-platform.test.pem and web-platform.test.key in https://github.com/web-platform-tests/wpt/tree/master/tools/certs.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/aiortc/aioquic/issues/89#issuecomment-622329299, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK6ZDHNVSL4PFDGWVCPNXTRPKNXXANCNFSM4MVM7EMQ .

jlaine commented 4 years ago

@Hexcles it definitely is due to the long domain list, just run:

òpenssl x509 -in cacert.pem text

which gives you:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 783278 (0xbf3ae)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = web-platform-tests
        Validity
            Not Before: Feb 18 20:29:47 2020 GMT
            Not After : Feb 15 20:29:47 2030 GMT
        Subject: CN = web-platform-tests
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:bf:7d:69:69:37:75:18:98:c4:88:cd:1e:5c:4b:
                    cd:92:cc:a9:a7:da:ff:00:2b:1b:94:3d:4f:61:0b:
                    c5:bd:2b:3a:00:e4:55:43:29:89:50:66:03:8a:d6:
                    a4:62:2e:f1:18:1e:fe:d1:e8:6b:71:4c:ef:ab:e4:
                    c7:2b:b7:07:af:ec:21:f4:8f:5a:99:d4:ed:83:7f:
                    3d:0f:78:6e:30:78:59:35:05:41:1d:0b:06:72:94:
                    19:b6:35:5d:5c:5e:e4:03:b5:77:57:d8:de:d0:26:
                    cf:73:47:03:8e:a2:7d:6c:db:56:a4:4f:65:2c:d7:
                    a6:e3:60:e5:eb:41:99:f2:76:7d:9e:ab:79:8b:60:
                    4b:d5:48:aa:e5:28:3d:20:05:30:a3:2d:dc:9e:3a:
                    6c:3e:95:3f:c4:0f:71:51:73:60:82:f4:0e:b9:d1:
                    96:a7:75:a2:83:05:14:13:22:cd:7a:ba:f5:94:a5:
                    63:64:97:03:e3:39:ed:ae:25:2e:6b:d4:4f:9d:5f:
                    e5:6f:c1:b4:1e:ee:70:a6:da:3a:7c:5e:65:92:d8:
                    00:bf:7e:d3:ea:e9:f7:6d:84:7b:60:eb:a0:8b:45:
                    32:09:00:41:07:2f:72:e0:e8:b5:64:bc:e9:58:12:
                    17:b7:4f:4e:34:35:d8:4f:fb:78:7f:bd:a0:f4:05:
                    4b:1b
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:TRUE
            X509v3 Subject Key Identifier: 
                F6:B9:DA:16:07:05:BB:6F:C9:63:30:C6:67:40:CB:03:D3:1E:90:EC
            X509v3 Authority Key Identifier: 
                keyid:F6:B9:DA:16:07:05:BB:6F:C9:63:30:C6:67:40:CB:03:D3:1E:90:EC
                DirName:/CN=web-platform-tests
                serial:0B:F3:AE

            X509v3 Key Usage: 
                Certificate Sign
            X509v3 Name Constraints: 
                Permitted:
                  DNS:web-platform.test
                  DNS:op2.web-platform.test
                  DNS:op9.web-platform.test
                  DNS:op7.web-platform.test
                  DNS:op1.web-platform.test
                  DNS:op3.web-platform.test
                  DNS:op6.web-platform.test
                  DNS:not-web-platform.test
                  DNS:op5.web-platform.test
                  DNS:op4.web-platform.test
                  DNS:op8.web-platform.test
                  DNS:www.web-platform.test
                  DNS:op87.web-platform.test
                  DNS:op80.web-platform.test
                  DNS:op94.web-platform.test
                  DNS:op16.web-platform.test
                  DNS:op40.web-platform.test
                  DNS:op17.web-platform.test
                  DNS:op72.web-platform.test
                  DNS:op64.web-platform.test
                  DNS:op23.web-platform.test
                  DNS:op28.web-platform.test
                  DNS:op13.web-platform.test
                  DNS:op36.web-platform.test
                  DNS:op11.web-platform.test
                  DNS:op79.web-platform.test
                  DNS:op61.web-platform.test
                  DNS:op48.web-platform.test
                  DNS:op19.web-platform.test
                  DNS:op42.web-platform.test
                  DNS:op46.web-platform.test
                  DNS:op37.web-platform.test
                  DNS:op98.web-platform.test
                  DNS:op66.web-platform.test
                  DNS:www1.web-platform.test
                  DNS:op26.web-platform.test
                  DNS:op67.web-platform.test
                  DNS:op73.web-platform.test
                  DNS:op38.web-platform.test
                  DNS:op62.web-platform.test
                  DNS:op58.web-platform.test
                  DNS:op56.web-platform.test
                  DNS:op22.web-platform.test
                  DNS:op24.web-platform.test
                  DNS:www2.web-platform.test
                  DNS:op18.web-platform.test
                  DNS:op74.web-platform.test
                  DNS:op91.web-platform.test
                  DNS:op33.web-platform.test
                  DNS:op69.web-platform.test
                  DNS:op30.web-platform.test
                  DNS:op39.web-platform.test
                  DNS:op52.web-platform.test
                  DNS:op43.web-platform.test
                  DNS:op85.web-platform.test
                  DNS:op34.web-platform.test
                  DNS:op21.web-platform.test
                  DNS:op71.web-platform.test
                  DNS:op50.web-platform.test
                  DNS:op84.web-platform.test
                  DNS:op31.web-platform.test
                  DNS:op54.web-platform.test
                  DNS:op49.web-platform.test
                  DNS:op44.web-platform.test
                  DNS:op45.web-platform.test
                  DNS:op35.web-platform.test
                  DNS:op76.web-platform.test
                  DNS:op14.web-platform.test
                  DNS:op81.web-platform.test
                  DNS:op88.web-platform.test
                  DNS:op20.web-platform.test
                  DNS:op95.web-platform.test
                  DNS:op51.web-platform.test
                  DNS:op86.web-platform.test
                  DNS:op55.web-platform.test
                  DNS:op27.web-platform.test
                  DNS:op12.web-platform.test
                  DNS:op75.web-platform.test
                  DNS:op47.web-platform.test
                  DNS:op96.web-platform.test
                  DNS:op93.web-platform.test
                  DNS:op57.web-platform.test
                  DNS:op63.web-platform.test
                  DNS:op53.web-platform.test
                  DNS:op29.web-platform.test
                  DNS:op25.web-platform.test
                  DNS:op83.web-platform.test
                  DNS:op97.web-platform.test
                  DNS:op41.web-platform.test
                  DNS:op32.web-platform.test
                  DNS:op70.web-platform.test
                  DNS:op60.web-platform.test
                  DNS:op92.web-platform.test
                  DNS:op78.web-platform.test
                  DNS:op89.web-platform.test
                  DNS:op10.web-platform.test
                  DNS:op77.web-platform.test
                  DNS:op59.web-platform.test
                  DNS:op15.web-platform.test
                  DNS:op65.web-platform.test
                  DNS:op68.web-platform.test
                  DNS:op90.web-platform.test
                  DNS:op82.web-platform.test
                  DNS:op6.not-web-platform.test
                  DNS:op8.not-web-platform.test
                  DNS:op9.not-web-platform.test
                  DNS:op4.not-web-platform.test
                  DNS:op7.not-web-platform.test
                  DNS:www.www.web-platform.test
                  DNS:op2.not-web-platform.test
                  DNS:op1.not-web-platform.test
                  DNS:www.not-web-platform.test
                  DNS:op5.not-web-platform.test
                  DNS:op3.not-web-platform.test
                  DNS:op27.not-web-platform.test
                  DNS:op40.not-web-platform.test
                  DNS:op45.not-web-platform.test
                  DNS:op96.not-web-platform.test
                  DNS:op28.not-web-platform.test
                  DNS:op83.not-web-platform.test
                  DNS:op33.not-web-platform.test
                  DNS:op56.not-web-platform.test
                  DNS:www1.not-web-platform.test
                  DNS:op62.not-web-platform.test
                  DNS:op18.not-web-platform.test
                  DNS:op48.not-web-platform.test
                  DNS:op43.not-web-platform.test
                  DNS:op89.not-web-platform.test
                  DNS:op60.not-web-platform.test
                  DNS:op95.not-web-platform.test
                  DNS:op73.not-web-platform.test
                  DNS:op91.not-web-platform.test
                  DNS:op42.not-web-platform.test
                  DNS:op26.not-web-platform.test
                  DNS:op69.not-web-platform.test
                  DNS:op32.not-web-platform.test
                  DNS:op37.not-web-platform.test
                  DNS:op98.not-web-platform.test
                  DNS:op19.not-web-platform.test
                  DNS:op76.not-web-platform.test
                  DNS:op13.not-web-platform.test
                  DNS:op79.not-web-platform.test
                  DNS:www2.www.web-platform.test
                  DNS:op86.not-web-platform.test
                  DNS:op77.not-web-platform.test
                  DNS:op29.not-web-platform.test
                  DNS:op55.not-web-platform.test
                  DNS:op92.not-web-platform.test
                  DNS:op44.not-web-platform.test
                  DNS:op54.not-web-platform.test
                  DNS:op94.not-web-platform.test
                  DNS:op34.not-web-platform.test
                  DNS:op30.not-web-platform.test
                  DNS:www1.www.web-platform.test
                  DNS:op25.not-web-platform.test
                  DNS:op64.not-web-platform.test
                  DNS:op20.not-web-platform.test
                  DNS:op51.not-web-platform.test
                  DNS:op41.not-web-platform.test
                  DNS:op12.not-web-platform.test
                  DNS:op10.not-web-platform.test
                  DNS:op72.not-web-platform.test
                  DNS:op22.not-web-platform.test
                  DNS:op52.not-web-platform.test
                  DNS:op74.not-web-platform.test
                  DNS:op67.not-web-platform.test
                  DNS:op80.not-web-platform.test
                  DNS:op84.not-web-platform.test
                  DNS:op31.not-web-platform.test
                  DNS:op53.not-web-platform.test
                  DNS:op23.not-web-platform.test
                  DNS:op35.not-web-platform.test
                  DNS:op16.not-web-platform.test
                  DNS:op63.not-web-platform.test
                  DNS:op38.not-web-platform.test
                  DNS:op58.not-web-platform.test
                  DNS:op61.not-web-platform.test
                  DNS:op14.not-web-platform.test
                  DNS:op90.not-web-platform.test
                  DNS:op70.not-web-platform.test
                  DNS:op11.not-web-platform.test
                  DNS:op15.not-web-platform.test
                  DNS:op65.not-web-platform.test
                  DNS:op50.not-web-platform.test
                  DNS:op68.not-web-platform.test
                  DNS:op87.not-web-platform.test
                  DNS:op78.not-web-platform.test
                  DNS:www.www2.web-platform.test
                  DNS:op82.not-web-platform.test
                  DNS:op93.not-web-platform.test
                  DNS:www.www1.web-platform.test
                  DNS:op21.not-web-platform.test
                  DNS:op71.not-web-platform.test
                  DNS:op97.not-web-platform.test
                  DNS:op88.not-web-platform.test
                  DNS:op24.not-web-platform.test
                  DNS:op66.not-web-platform.test
                  DNS:op49.not-web-platform.test
                  DNS:op59.not-web-platform.test
                  DNS:op46.not-web-platform.test
                  DNS:op36.not-web-platform.test
                  DNS:op39.not-web-platform.test
                  DNS:op47.not-web-platform.test
                  DNS:op17.not-web-platform.test
                  DNS:op75.not-web-platform.test
                  DNS:op85.not-web-platform.test
                  DNS:op57.not-web-platform.test
                  DNS:www2.not-web-platform.test
                  DNS:op81.not-web-platform.test
                  DNS:www2.www1.web-platform.test
                  DNS:www1.www2.web-platform.test
                  DNS:www2.www2.web-platform.test
                  DNS:www1.www1.web-platform.test
                  DNS:www.www.not-web-platform.test
                  DNS:www2.www.not-web-platform.test
                  DNS:xn--lve-6lad.web-platform.test
                  DNS:www1.www.not-web-platform.test
                  DNS:www.www1.not-web-platform.test
                  DNS:www.www2.not-web-platform.test
                  DNS:www1.www2.not-web-platform.test
                  DNS:www1.www1.not-web-platform.test
                  DNS:www2.www1.not-web-platform.test
                  DNS:www2.www2.not-web-platform.test
                  DNS:xn--lve-6lad.www.web-platform.test
                  DNS:xn--lve-6lad.not-web-platform.test
                  DNS:www.xn--lve-6lad.web-platform.test
                  DNS:www1.xn--lve-6lad.web-platform.test
                  DNS:www2.xn--lve-6lad.web-platform.test
                  DNS:xn--lve-6lad.www2.web-platform.test
                  DNS:xn--lve-6lad.www1.web-platform.test
                  DNS:www.xn--lve-6lad.not-web-platform.test
                  DNS:xn--lve-6lad.www.not-web-platform.test
                  DNS:www1.xn--lve-6lad.not-web-platform.test
                  DNS:www2.xn--lve-6lad.not-web-platform.test
                  DNS:xn--lve-6lad.www1.not-web-platform.test
                  DNS:xn--lve-6lad.www2.not-web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test
                  DNS:xn--lve-6lad.xn--lve-6lad.web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.www.web-platform.test
                  DNS:www.xn--n8j6ds53lwwkrqhv28a.web-platform.test
                  DNS:www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test
                  DNS:www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test
                  DNS:xn--lve-6lad.xn--lve-6lad.not-web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test
                  DNS:www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
                  DNS:www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test
                  DNS:www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test
                  DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test
                  DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test
                  DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test

            X509v3 Extended Key Usage: 
                TLS Web Server Authentication
            X509v3 Subject Alternative Name: 
                DNS:web-platform.test, DNS:op2.web-platform.test, DNS:op9.web-platform.test, DNS:op7.web-platform.test, DNS:op1.web-platform.test, DNS:op3.web-platform.test, DNS:op6.web-platform.test, DNS:not-web-platform.test, DNS:op5.web-platform.test, DNS:op4.web-platform.test, DNS:op8.web-platform.test, DNS:www.web-platform.test, DNS:op87.web-platform.test, DNS:op80.web-platform.test, DNS:op94.web-platform.test, DNS:op16.web-platform.test, DNS:op40.web-platform.test, DNS:op17.web-platform.test, DNS:op72.web-platform.test, DNS:op64.web-platform.test, DNS:op23.web-platform.test, DNS:op28.web-platform.test, DNS:op13.web-platform.test, DNS:op36.web-platform.test, DNS:op11.web-platform.test, DNS:op79.web-platform.test, DNS:op61.web-platform.test, DNS:op48.web-platform.test, DNS:op19.web-platform.test, DNS:op42.web-platform.test, DNS:op46.web-platform.test, DNS:op37.web-platform.test, DNS:op98.web-platform.test, DNS:op66.web-platform.test, DNS:www1.web-platform.test, DNS:op26.web-platform.test, DNS:op67.web-platform.test, DNS:op73.web-platform.test, DNS:op38.web-platform.test, DNS:op62.web-platform.test, DNS:op58.web-platform.test, DNS:op56.web-platform.test, DNS:op22.web-platform.test, DNS:op24.web-platform.test, DNS:www2.web-platform.test, DNS:op18.web-platform.test, DNS:op74.web-platform.test, DNS:op91.web-platform.test, DNS:op33.web-platform.test, DNS:op69.web-platform.test, DNS:op30.web-platform.test, DNS:op39.web-platform.test, DNS:op52.web-platform.test, DNS:op43.web-platform.test, DNS:op85.web-platform.test, DNS:op34.web-platform.test, DNS:op21.web-platform.test, DNS:op71.web-platform.test, DNS:op50.web-platform.test, DNS:op84.web-platform.test, DNS:op31.web-platform.test, DNS:op54.web-platform.test, DNS:op49.web-platform.test, DNS:op44.web-platform.test, DNS:op45.web-platform.test, DNS:op35.web-platform.test, DNS:op76.web-platform.test, DNS:op14.web-platform.test, DNS:op81.web-platform.test, DNS:op88.web-platform.test, DNS:op20.web-platform.test, DNS:op95.web-platform.test, DNS:op51.web-platform.test, DNS:op86.web-platform.test, DNS:op55.web-platform.test, DNS:op27.web-platform.test, DNS:op12.web-platform.test, DNS:op75.web-platform.test, DNS:op47.web-platform.test, DNS:op96.web-platform.test, DNS:op93.web-platform.test, DNS:op57.web-platform.test, DNS:op63.web-platform.test, DNS:op53.web-platform.test, DNS:op29.web-platform.test, DNS:op25.web-platform.test, DNS:op83.web-platform.test, DNS:op97.web-platform.test, DNS:op41.web-platform.test, DNS:op32.web-platform.test, DNS:op70.web-platform.test, DNS:op60.web-platform.test, DNS:op92.web-platform.test, DNS:op78.web-platform.test, DNS:op89.web-platform.test, DNS:op10.web-platform.test, DNS:op77.web-platform.test, DNS:op59.web-platform.test, DNS:op15.web-platform.test, DNS:op65.web-platform.test, DNS:op68.web-platform.test, DNS:op90.web-platform.test, DNS:op82.web-platform.test, DNS:op6.not-web-platform.test, DNS:op8.not-web-platform.test, DNS:op9.not-web-platform.test, DNS:op4.not-web-platform.test, DNS:op7.not-web-platform.test, DNS:www.www.web-platform.test, DNS:op2.not-web-platform.test, DNS:op1.not-web-platform.test, DNS:www.not-web-platform.test, DNS:op5.not-web-platform.test, DNS:op3.not-web-platform.test, DNS:op27.not-web-platform.test, DNS:op40.not-web-platform.test, DNS:op45.not-web-platform.test, DNS:op96.not-web-platform.test, DNS:op28.not-web-platform.test, DNS:op83.not-web-platform.test, DNS:op33.not-web-platform.test, DNS:op56.not-web-platform.test, DNS:www1.not-web-platform.test, DNS:op62.not-web-platform.test, DNS:op18.not-web-platform.test, DNS:op48.not-web-platform.test, DNS:op43.not-web-platform.test, DNS:op89.not-web-platform.test, DNS:op60.not-web-platform.test, DNS:op95.not-web-platform.test, DNS:op73.not-web-platform.test, DNS:op91.not-web-platform.test, DNS:op42.not-web-platform.test, DNS:op26.not-web-platform.test, DNS:op69.not-web-platform.test, DNS:op32.not-web-platform.test, DNS:op37.not-web-platform.test, DNS:op98.not-web-platform.test, DNS:op19.not-web-platform.test, DNS:op76.not-web-platform.test, DNS:op13.not-web-platform.test, DNS:op79.not-web-platform.test, DNS:www2.www.web-platform.test, DNS:op86.not-web-platform.test, DNS:op77.not-web-platform.test, DNS:op29.not-web-platform.test, DNS:op55.not-web-platform.test, DNS:op92.not-web-platform.test, DNS:op44.not-web-platform.test, DNS:op54.not-web-platform.test, DNS:op94.not-web-platform.test, DNS:op34.not-web-platform.test, DNS:op30.not-web-platform.test, DNS:www1.www.web-platform.test, DNS:op25.not-web-platform.test, DNS:op64.not-web-platform.test, DNS:op20.not-web-platform.test, DNS:op51.not-web-platform.test, DNS:op41.not-web-platform.test, DNS:op12.not-web-platform.test, DNS:op10.not-web-platform.test, DNS:op72.not-web-platform.test, DNS:op22.not-web-platform.test, DNS:op52.not-web-platform.test, DNS:op74.not-web-platform.test, DNS:op67.not-web-platform.test, DNS:op80.not-web-platform.test, DNS:op84.not-web-platform.test, DNS:op31.not-web-platform.test, DNS:op53.not-web-platform.test, DNS:op23.not-web-platform.test, DNS:op35.not-web-platform.test, DNS:op16.not-web-platform.test, DNS:op63.not-web-platform.test, DNS:op38.not-web-platform.test, DNS:op58.not-web-platform.test, DNS:op61.not-web-platform.test, DNS:op14.not-web-platform.test, DNS:op90.not-web-platform.test, DNS:op70.not-web-platform.test, DNS:op11.not-web-platform.test, DNS:op15.not-web-platform.test, DNS:op65.not-web-platform.test, DNS:op50.not-web-platform.test, DNS:op68.not-web-platform.test, DNS:op87.not-web-platform.test, DNS:op78.not-web-platform.test, DNS:www.www2.web-platform.test, DNS:op82.not-web-platform.test, DNS:op93.not-web-platform.test, DNS:www.www1.web-platform.test, DNS:op21.not-web-platform.test, DNS:op71.not-web-platform.test, DNS:op97.not-web-platform.test, DNS:op88.not-web-platform.test, DNS:op24.not-web-platform.test, DNS:op66.not-web-platform.test, DNS:op49.not-web-platform.test, DNS:op59.not-web-platform.test, DNS:op46.not-web-platform.test, DNS:op36.not-web-platform.test, DNS:op39.not-web-platform.test, DNS:op47.not-web-platform.test, DNS:op17.not-web-platform.test, DNS:op75.not-web-platform.test, DNS:op85.not-web-platform.test, DNS:op57.not-web-platform.test, DNS:www2.not-web-platform.test, DNS:op81.not-web-platform.test, DNS:www2.www1.web-platform.test, DNS:www1.www2.web-platform.test, DNS:www2.www2.web-platform.test, DNS:www1.www1.web-platform.test, DNS:www.www.not-web-platform.test, DNS:www2.www.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:www1.www.not-web-platform.test, DNS:www.www1.not-web-platform.test, DNS:www.www2.not-web-platform.test, DNS:www1.www2.not-web-platform.test, DNS:www1.www1.not-web-platform.test, DNS:www2.www1.not-web-platform.test, DNS:www2.www2.not-web-platform.test, DNS:xn--lve-6lad.www.web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:www.xn--lve-6lad.web-platform.test, DNS:www1.xn--lve-6lad.web-platform.test, DNS:www2.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www2.web-platform.test, DNS:xn--lve-6lad.www1.web-platform.test, DNS:www.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www.not-web-platform.test, DNS:www1.xn--lve-6lad.not-web-platform.test, DNS:www2.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www1.not-web-platform.test, DNS:xn--lve-6lad.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test
    Signature Algorithm: sha256WithRSAEncryption
         87:93:bb:62:32:4e:90:0f:6d:46:02:c5:f4:77:4f:a0:6a:77:
         96:26:a3:74:c6:f2:99:d9:ae:c6:2a:cc:7b:42:22:f1:a8:3b:
         cd:49:10:82:5d:84:fc:a2:b5:b2:5d:fe:eb:1b:b6:41:13:84:
         b8:5a:7d:e4:22:f5:19:a2:09:96:2f:09:47:b1:d0:87:54:c4:
         76:96:df:a6:71:e2:42:33:34:b7:f4:db:37:31:c0:12:6d:00:
         5a:5f:ff:20:2c:41:d2:88:23:46:45:34:64:75:5a:44:6a:9d:
         ab:5f:cf:9b:72:48:af:d2:e7:dd:cc:63:db:0e:ef:17:71:b0:
         f7:10:9c:9e:d6:3d:a5:ca:eb:ad:32:3b:51:a8:b5:b8:78:6d:
         1c:29:74:bf:2e:26:f1:55:a5:ee:be:50:03:92:eb:83:24:8c:
         ac:85:23:2d:d9:f4:79:5b:f8:73:d5:d3:01:41:4b:cf:56:aa:
         a1:1f:02:82:e4:6e:b7:f4:28:48:e8:06:bb:c8:94:85:df:f3:
         fb:4b:a2:04:d3:51:26:d9:77:ae:bb:a9:ff:3c:49:7f:f4:b5:
         85:4c:11:80:ba:fc:85:22:ca:28:00:c7:f8:4c:8a:e5:82:0c:
         24:b5:d2:65:8b:c1:87:cf:b3:62:70:0d:04:65:48:8a:2f:78:
         d0:69:fb:08
jlaine commented 4 years ago

@yutakahirano master should now work for your usecase. I aim to have new release on PyPI before the end of the week

yutakahirano commented 4 years ago

Thank you very much!

jlaine commented 4 years ago

Huh. And I failed to produce the promised release..