Esempio n. 1
0
def testLeaks6():
    import socket
    p = pk_generate(512)
    p2 = pk_generate(512)
    fn = mix_mktemp()
    dh = mix_mktemp()
    _ml.generate_cert(fn, p, p2, "A", "B", 100, 10000)
    dh_fname = os.environ.get("MM_TEST_DHPARAMS", None)
    if dh_fname and os.path.exists(dh_fname):
        dh = dh_fname
    elif dh_fname:
        _ml.generate_dh_parameters(dh_fname, 1, 512)
        dh = dh_fname
    else:
        _ml.generate_dh_parameters(dh, 1, 512)
    print "OK"
    context = _ml.TLSContext_new(fn, p)#XXXX, dh)

    listenSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listenSock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    listenSock.bind(("127.0.0.1", 48999))
    listenSock.listen(5)
    while 1:
        con, address = listenSock.accept()
        tls = context.sock(con, serverMode=1)
        tls.accept()
        while 1:
            r = tls.read(50)
            if r == 0:
                break
        while 1:
            r = tls.shutdown()
            if r == 1:
                break
        con.close()
Esempio n. 2
0
def testLeaks3():
    print "Trying to leak (certgen)"
    p = pk_generate(512)
    p2 = pk_generate(512)
    fn = mix_mktemp()
    while 1:
        _ml.generate_cert(fn, p, p2, "A", "B", 100, 10000)
Esempio n. 3
0
def hashlogTiming():
    print "#==================== HASH LOGS ======================="
    for load in (100, 1000, 10000, 100000):
        fname = mix_mktemp(".db")
        try:
            _hashlogTiming(fname,load)
        finally:
            for suffix in ("", ".dat", ".bak", ".dir"):
                try:
                    os.unlink(fname+suffix)
                except OSError:
                    pass
Esempio n. 4
0
def testLeaks4():
    print "Trying to leak (SSL)"

    p = pk_generate(512)
    p2 = pk_generate(512)
    fn = mix_mktemp()
    dh = mix_mktemp()
    _ml.generate_cert(fn, p, p2, "A", "B", 100, 10000)
    dh_fname = os.environ.get("MM_TEST_DHPARAMS")
    if dh_fname and os.path.exists(dh_fname):
        dh = dh_fname
    elif dh_fname:
        _ml.generate_dh_parameters(dh_fname, 1, 512)
        dh = dh_fname
    else:
        _ml.generate_dh_parameters(dh, 1, 512)
    print "OK"
    context = _ml.TLSContext_new(fn, p, dh)
    while 1:
        if 1:
            context = _ml.TLSContext_new(fn, p, dh)
            _ = context.sock(0, 0)
            _ = context.sock(0, 1)
Esempio n. 5
0
def directoryTiming():
    print "#========== DESCRIPTORS AND DIRECTORIES =============="
    from mixminion.server.ServerKeys import ServerKeyring
    confStr = """
[Server]
EncryptIdentityKey: no
PublicKeyLifetime: 1 day
EncryptPrivateKey: no
Homedir: %s
Mode: relay
Nickname: The-Server
Contact-Email: [email protected]
[Incoming/MMTP]
Enabled: yes
IP: 1.1.1.1
""" % mix_mktemp()
    config = ServerConfig(string=confStr)
    keyring = ServerKeyring(config)
    keyring.getIdentityKey()
    print "Create and sign server descriptor", timeit(keyring.createKeys, 10)
    liveKey = keyring.getServerKeysets()[0]
    descFile = liveKey.getDescriptorFileName()
    desc = open(descFile).read()
##     for _ in xrange(2000):
##         ServerInfo(string=desc, assumeValid=0)
##     if 1: return

    print "Parse server descriptor (no validation)", \
          timeit(lambda desc=desc: ServerInfo(string=desc,assumeValid=1),
                 400)
    print "Parse server descriptor (full validation)", \
          timeit(lambda desc=desc: ServerInfo(string=desc,assumeValid=0),
                 400)
    info = ServerInfo(string=desc)
    dbin = cPickle.dumps(info, 1)
    print "Unpickle binary-pickled descriptor (%s/%s)"%(len(dbin),len(desc)), \
          timeit(lambda dbin=dbin: cPickle.loads(dbin), 400)
    dtxt = cPickle.dumps(info, 0)
    print "Unpickle text-pickled descriptor (%s/%s)"%(len(dtxt),len(desc)), \
          timeit(lambda dtxt=dtxt: cPickle.loads(dtxt), 400)
Esempio n. 6
0
def fileOpsTiming():
    print "#================= File ops ====================="
    installSIGCHLDHandler()
    dname = mix_mktemp(".d")

    os.mkdir(dname)

    lockfile = Lockfile(os.path.join("dname"))
    t1 = time()
    for _ in xrange(2000):
        lockfile.acquire(blocking=1)
        lockfile.release()
    t = time()-t1
    print "Lockfile: lock+unlock", timestr(t/2000.)

    for i in xrange(200):
        f = open(os.path.join(dname, str(i)), 'wb')
        f.write(s32K)
        f.close()
    lst = [os.path.join(dname,str(i)) for i in range(100) ]
    t1 = time()
    secureDelete(lst)
    t = time()-t1
    print "secureDelete (100x32)", timestr(t)

    waitForChildren()
    t = time()-t1
    print "               (sync)", timestr(t)

    lst = [ os.path.join(dname,str(i)) for i in range(100,200) ]
    t1 = time()
    for fname in lst:
        secureDelete(fname)
    t = time()-t1
    print "secureDelete (1)", timestr(t/100)

    waitForChildren()
    t = time()-t1
    print "          (sync)", timestr(t/100)
Esempio n. 7
0
def serverQueueTiming():
    print "#================= SERVER QUEUES ====================="
    import mixminion.Filestore
    Queue = mixminion.Filestore.MixedStore
    DeliveryQueue = mixminion.server.ServerQueue.DeliveryQueue
    d1 = mix_mktemp()
    q1 = Queue(d1, create=1)

    d2 = mix_mktemp()
    os.mkdir(d2,0700)
    getCommonPRNG().getBytes(1)

    #for ln,it in (32*1024,100),(128,400),(1024,400), (32*1024,100):
    for ln,it in ():
        msg = "z"*ln
        def y(msg=msg,idx=[0],d2=d2):
            fn = os.path.join(d2,"k_"+str(idx[0]))
            idx[0] += 1
            f = open(fn, 'wb')
            f.write(msg)
            f.close()
        def x(msg=msg,d2=d2):
            f,b=getCommonPRNG().openNewFile(d2,"k_",1)
            f.write(msg)
            f.close()
        print "Base: write %s file: %s" %(
            spacestr(ln), timestr(timeit_(y, it)))
        for p in os.listdir(d2):
            os.unlink(os.path.join(d2,p))
        print "Base: write %s file with random name: %s" %(
            spacestr(ln), timestr(timeit_(x, it)))
        for p in os.listdir(d2):
            os.unlink(os.path.join(d2,p))

        tm = timeit_(lambda q1=q1,msg=msg:q1.queueMessage(msg),  it)
        print "Queue %s message: %s" %(spacestr(ln), timestr(tm))
        t2 = time()
        q1.removeAll()
        q1.cleanQueue()
        t2 = time() - t2
        print "Scrub %s message: %s" %(spacestr(ln), timestr(t2/float(it)))

        msg = [ 123, 414, msg ]
        tm = timeit_(lambda q1=q1,msg=msg:q1.queueObject(msg), it)
        print "Pickle %s message: %s" %(spacestr(ln), timestr(tm))
        q1.removeAll()
        q1.cleanQueue()

    for ln,it in (128,400),(1024,400), (32*1024,100):
        q1 = DeliveryQueue(d1, [100,100,100,100])
        msg = "z"*ln
        print "Delivery queue: %s message: %s" %(
            spacestr(ln),
            timeit(lambda q1=q1,msg=msg: q1.queueDeliveryMessage(msg), it))
        print "            (repOK):", \
              timeit(lambda q1=q1: q1._repOk(), it*10)
#        q1._bs2()
#        print "          (set metadata 2):", \
#              timeit(lambda q1=q1: q1._saveState2(), it)

        for p in os.listdir(d1):
            os.unlink(os.path.join(d1,p))