Serialization and de-serialization of new cert format.
This commit is contained in:
parent
243e0efefc
commit
47651b1ff2
|
@ -463,12 +463,12 @@ class Response(HTTPMsg):
|
|||
|
||||
timestamp: Seconds since the epoch
|
||||
"""
|
||||
def __init__(self, request, httpversion, code, msg, headers, content, der_cert, timestamp=None):
|
||||
def __init__(self, request, httpversion, code, msg, headers, content, cert, timestamp=None):
|
||||
assert isinstance(headers, ODictCaseless)
|
||||
self.request = request
|
||||
self.httpversion, self.code, self.msg = httpversion, code, msg
|
||||
self.headers, self.content = headers, content
|
||||
self.der_cert = der_cert
|
||||
self.cert = cert
|
||||
self.timestamp = timestamp or utils.timestamp()
|
||||
controller.Msg.__init__(self)
|
||||
self.replay = False
|
||||
|
@ -538,14 +538,7 @@ class Response(HTTPMsg):
|
|||
self.headers = ODictCaseless._from_state(state["headers"])
|
||||
self.content = state["content"]
|
||||
self.timestamp = state["timestamp"]
|
||||
self.der_cert = state["der_cert"]
|
||||
|
||||
def get_cert(self):
|
||||
"""
|
||||
Returns a certutils.SSLCert object, or None.
|
||||
"""
|
||||
if self.der_cert:
|
||||
return certutils.SSLCert.from_der(self.der_cert)
|
||||
self.cert = state["cert"]
|
||||
|
||||
def _get_state(self):
|
||||
return dict(
|
||||
|
@ -554,7 +547,7 @@ class Response(HTTPMsg):
|
|||
msg = self.msg,
|
||||
headers = self.headers._get_state(),
|
||||
timestamp = self.timestamp,
|
||||
der_cert = self.der_cert,
|
||||
cert = self.cert.to_pem() if self.cert else None,
|
||||
content = self.content
|
||||
)
|
||||
|
||||
|
@ -567,7 +560,7 @@ class Response(HTTPMsg):
|
|||
str(state["msg"]),
|
||||
ODictCaseless._from_state(state["headers"]),
|
||||
state["content"],
|
||||
state.get("der_cert"),
|
||||
certutils.SSLCert.from_pem(state["cert"]) if state["cert"] else None,
|
||||
state["timestamp"],
|
||||
)
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ import Queue, time
|
|||
from cStringIO import StringIO
|
||||
import email.utils
|
||||
from libmproxy import filt, flow, controller, utils, tnetstring
|
||||
from netlib import certutils
|
||||
import tutils
|
||||
import libpry
|
||||
|
||||
|
@ -865,17 +866,6 @@ class TestResponse:
|
|||
c = "MOO=BAR; Expires=Tue, 08-Mar-2011 00:20:38 GMT; Path=foo.com; Secure"
|
||||
assert "00:21:38" in r._refresh_cookie(c, 60)
|
||||
|
||||
def test_get_cert(self):
|
||||
req = tutils.treq()
|
||||
resp = flow.Response(
|
||||
req, (1, 1), 200, "msg", flow.ODictCaseless(), "content",
|
||||
file(tutils.test_data.path("data/dercert")).read()
|
||||
)
|
||||
assert resp.get_cert()
|
||||
|
||||
resp = tutils.tresp()
|
||||
assert not resp.get_cert()
|
||||
|
||||
def test_getset_state(self):
|
||||
h = flow.ODictCaseless()
|
||||
h["test"] = ["test"]
|
||||
|
|
|
@ -2,6 +2,7 @@ import threading, Queue, time
|
|||
import os, shutil, tempfile
|
||||
from contextlib import contextmanager
|
||||
from libmproxy import proxy, flow, controller, utils
|
||||
from netlib import certutils
|
||||
import human_curl as hurl
|
||||
import libpathod.test
|
||||
import random
|
||||
|
@ -19,7 +20,8 @@ def tresp(req=None):
|
|||
req = treq()
|
||||
headers = flow.ODictCaseless()
|
||||
headers["header_response"] = ["svalue"]
|
||||
return flow.Response(req, (1, 1), 200, "message", headers, "content_response", None)
|
||||
cert = certutils.SSLCert.from_der(file(test_data.path("data/dercert")).read())
|
||||
return flow.Response(req, (1, 1), 200, "message", headers, "content_response", cert)
|
||||
|
||||
|
||||
def tflow():
|
||||
|
|
Loading…
Reference in New Issue