def test_pack(self): pw = "password" jA, jB = JPAKE(pw, signerid="Alice"), JPAKE(pw, signerid="Bob") m1A, m1B = jA.one(), jB.one() m1Ap = jA.pack_one(m1A) #print "m1:", len(json.dumps(m1A)), len(m1Ap) m2A, m2B = jA.two(m1B), jB.two(jB.unpack_one(m1Ap)) m2Ap = jA.pack_two(m2A) #print "m2:", len(json.dumps(m2A)), len(m2Ap) kA, kB = jA.three(m2B), jB.three(jB.unpack_two(m2Ap)) self.failUnlessEqual(hexlify(kA), hexlify(kB)) self.failUnlessEqual(len(kA), len(sha256().digest()))
def test_ascii(self): self.failUnlessRaises(SignerIDMustBeASCII, JPAKE, "pw", signerid="not-ascii\xff") jA, jB = JPAKE("pw", signerid="Alice"), JPAKE("pw", signerid="Bob") m1A = jA.one() m1Ap = jA.pack_one(m1A) # now doctor m1Ap to contain non-ascii, to exercise the check in # unpack_one. We happen to know that the signerid is stored at the # end of the packed structure assert m1Ap[-5:] == "Alice" m1Ap_bad = m1Ap[:-5] + "Alic\xff" self.failUnlessRaises(SignerIDMustBeASCII, jA.unpack_one, m1Ap_bad) # same for message two m2A = jA.two(jB.one()) m2Ap = jA.pack_two(m2A) assert m2Ap[-5:] == "Alice" m2Ap_bad = m2Ap[:-5] + "Alic\xff" self.failUnlessRaises(SignerIDMustBeASCII, jA.unpack_two, m2Ap_bad)