Beispiel #1
0
class Entry(object):
    __KEY = "entry_key1234"
    __c = Cryptor()
    userKey = ""

    def __init__(self, num, d="", t=""):
        if d == "":
            self.__state = EntryState.UNDECRYPTED
            self.__hash = num
        else:
            self.__number = int(num)
            self.__date = d
            self.__text = t
            self.__state = EntryState.UNENCRYPTED

    def __encrypt(self, key):
        self.__hash = c.encrypt(
            Entry.__c.encrypt(self.__text, Entry.__KEY) + " " +
            self.__date.toString() + " " + self.__number, key)
        self.__state = EntryState.ENCRYPTED

    def __encrypt(self):
        selfEntry.__encrypt(userKey)

    def __decrypt(self):
        tokens = Entry.__c.decrypt(self.__hash, Entry.userKey).split()
        if len(tokens) != 3:
            raise Exception("Decryption cannot be done")
        self.__text = Entry.__c.decrypt(tokens[0], Entry.__KEY)
        self.__date = Date(tokens[1])
        self.__number = int(tokens[2])
        self.__state = EntryState.DECRYPTED

    def recrypt(self, newKey):
        if self.__state == EntryState.UNDECRYPTED:
            self.__decrypt()
        self.__encrypt(newKey)

    def getHash(self):
        if self.__state == EntryState.UNENCRYPTED:
            self.__encrypt()
        return self.__hash

    def getText(self):
        if self.__state == EntryState.UNDECRYPTED:
            self.__decrypt()
        return self.__text

    def getDate(self):
        if self.__state == EntryState.UNDECRYPTED:
            self.__decrypt()
        return self.__date.toString()

    def getNumber(self):
        if self.__state == EntryState.UNDECRYPTED:
            self.__decrypt()
        return self.__number

    def setText(self, input):
        self.__text = input
        self.__state = EntryState.UNENCRYPTED

    def setDate(self, input):
        self.__date = Date(input)
        self.__state = EntryState.UNENCRYPTED

    def setNumber(self, input):
        self.__number = input
        self.__state = EntryState.UNDECRYPTED