from hashlib import sha1

from .. import helpers as utils
from ..extensions import BinaryReader, BinaryWriter


class AuthKey:
    def __init__(self, data):
        self.key = data

        with BinaryReader(sha1(self.key).digest()) as reader:
            self.aux_hash = reader.read_long(signed=False)
            reader.read(4)
            self.key_id = reader.read_long(signed=False)

    def calc_new_nonce_hash(self, new_nonce, number):
        """Calculates the new nonce hash based on
           the current class fields' values
        """
        with BinaryWriter() as writer:
            writer.write(new_nonce)
            writer.write_byte(number)
            writer.write_long(self.aux_hash, signed=False)

            new_nonce_hash = utils.calc_msg_key(writer.get_bytes())
            return new_nonce_hash
