示例#1
0
文件: index.py 项目: tkbctf/tkbctf4
class Room:
    def __init__(self, s, b = True):
        self.s     = s
        self.group = IntegerGroupQ()

        if b and not self.s.get('p') is None and not self.s.get('q') is None:
            self.p = self.group.deserialize(fromBase64(self.s['p']))
            self.q = self.group.deserialize(fromBase64(self.s['q']))
            self.group.setparam(self.p, self.q)

    def state(self, s):
        self.set('state', s)
        self.save()
    
    def check(self, v):
        try:
            return self.get('state') == v
        except:
            print(v, self.s.get('state'))
            return False
    
    def get(self, n, f = None):
        if f is None:
            f = lambda x: self.group.deserialize(x) if type(x) == bytes else x

        return map( f, fromBase64(self.s.get(n)) )

    def set(self, n, v, f = None):
        if f is None:
            f = lambda x: self.group.serialize(x) if type(x) == integer else x

        self.s[n] = toBase64( map(f, v) )

    def save(self):
        self.s.save()

    def clear(self):
        self.s.clear()
        self.s.save()