def test_spkilib(): """Test based on spki examples draft The base64 encoded s-expressions form the draft are include in test/sexps. """ from pisces.spkilib import sexp chunks = [] chunk = [] for line in fileinput.input('test/sexps'): if line.strip(): chunk.append(line) else: chunks.append("\n".join(chunk)) chunk = [] chunks.append("\n".join(chunk)) consts = eval(open("test/sexps.py").read()) assert len(consts) == len(chunks), \ "pisces.spkilib: error loading spkilib tests" for i in range(len(consts)): chunk = chunks[i] const = consts[i] sx1 = sexp.parse(chunk) sx2 = sexp.construct_seq(_cleanup(const)) assert sx1 == sx2, \ "pisces.spkilib: #%d: parsed s-exp differs " \ "from constructed s-exp" % i enc1 = sx1.encode_canonical() enc2 = sx1.encode_base64() sx11 = sexp.parse(enc1) sx12 = sexp.parse(enc2) assert sx11 == sx12, "pisces.spkilib: s-exp parsing failed" assert sx11 == sx1, "pisces.spkilib: s-exp parsing failed" buf = str(sx1) if '\n' in buf: continue # parseText doesn't handle multi-line base64 data sx3 = sexp.parseText(buf) assert sx1 == sx3, "pisces.spkilib: parseText failed"
def sexp(self): return parse(['ciphered-data', self.data])
def sexp(self): return parse(['random', str(self.t), self.rand])
def sexp(self): return parse(['error', self.msg])
def sexp(self): return parse(['data', self.data, self.mac])
def sexp(self): return parse(['finished', self.verify])
def sexp(self): return parse(['close-notify'])
def sexp(self): return parse(['client-key-exchange', self.cipher])
def sexp(self): return parse(['certificate-verify', self.sig.sexp()])
def sexp(self): return parse(['server-hello-done'])
def sexp(self): return parse(['pre-master-secret', self.ver, self.rand.sexp()])
def sexp(self): return parse(['certificate-request'])
def sexp(self): return parse(['certificate', self.certs.sexp()])
def sexp(self): return parse(['server-hello', self.ver, object_to_sexp(self.rand), self.sessId])
def sexp(self): return parse(['client-hello', self.ver, object_to_sexp(self.rand)])
def parse(buf): return eval(sexp.parse(buf))