#!/usr/bin/python
# -*- coding: utf-8 -*-

import socket
import SocketServer as ss
import tlslite.api as tls

sharedKeyDB = tls.SharedKeyDB()
sharedKeyDB.create()
sharedKeyDB['nakiki'] = 'nakikinakiki'

# 共有鍵を使った例
class Handler(ss.StreamRequestHandler):
  def setup(self):
    self.connection = tls.TLSConnection(self.request)
    self.connection.closeSocket = True
    settings = tls.HandshakeSettings()
    settings.cipherNames = ["aes128"]
    self.connection.handshakeServer(sharedKeyDB = sharedKeyDB,
      settings = settings)
    self.rfile = self.connection.makefile('rb', self.rbufsize)
    self.wfile = self.connection.makefile('wb', self.wbufsize)

  def handle(self):
    print 'handle'
    while 1:
      line = self.rfile.readline()
      if len(line) == 0:
	return
      self.wfile.write(line)

class Server(ss.ThreadingTCPServer):
  allow_reuse_address = 1
  daemon_threads = 1

server = Server(('localhost', 3747), Handler)
print 'listening:', server.socket.getsockname()
server.serve_forever()
