コード例 #1
0
    def toBDD(self, index):
        """Compute the corresponding ROBDD of the Ip

        Parameters
        ----------
        index : int. The start point of the variable name

        Return
        ------
        Return the corresponding ROBDD
        """
        # Ip: 32 bits
        res = Robdd.true()
        ip_size = 32
        for i in range(ip_size - (32 - Ip.MaskToCidr(self.mask))):
            if (self.ip >> (ip_size - i - 1)) & 1:
                res = synthesize(res, Bdd.AND, Robdd.make_x(index + i))
            else:
                res = synthesize(res, Bdd.AND, Robdd.make_not_x(index + i))
        return res
コード例 #2
0
ファイル: Ip.py プロジェクト: conix-security/springbok
    def toBDD(self, index):
        """Compute the corresponding ROBDD of the Ip

        Parameters
        ----------
        index : int. The start point of the variable name

        Return
        ------
        Return the corresponding ROBDD
        """
        # Ip: 32 bits
        res = Robdd.true()
        ip_size = 32
        for i in range(ip_size - (32 - Ip.MaskToCidr(self.mask))):
            if (self.ip >> (ip_size - i - 1)) & 1:
                res = synthesize(res, Bdd.AND, Robdd.make_x(index + i))
            else:
                res = synthesize(res, Bdd.AND, Robdd.make_not_x(index + i))
        return res
コード例 #3
0
ファイル: Protocol.py プロジェクト: hellox-project/springbok
    def toBDD(self, index, limit=0):
        """Construct the ROBDD.

        Parameters
        ----------
        index : int. Used for ROBDD variable index
        limit : int (optional, default=0). The limit bit used for range representation

        Return
        ------
        Return the computed ROBDD.
        """
        # Protocol : 8 bits
        res = Robdd.true()
        protocol_size = 8
        for i in range(protocol_size - limit):
            if (self.protocol >> (protocol_size - i - 1)) & 1:
                res = synthesize(res, Bdd.AND, Robdd.make_x(index + i))
            else:
                res = synthesize(res, Bdd.AND, Robdd.make_not_x(index + i))

        return res
コード例 #4
0
ファイル: Port.py プロジェクト: quack1/springbok
    def toBDD(self, index, limit=0):
        """Compute the ROBDD.

        Parameters
        ----------
        index : int. Used for ROBDD variable index
        limit : int (optional, default=0). The limit bit used for range representation.

        Return
        ------
        Return the comuted ROBDD
        """
        # Port: 16 bits
        res = Robdd.true()
        port_size = 16
        for i in range(port_size - limit):
            if (self.port >> (port_size - i - 1)) & 1:
                res = synthesize(res, Bdd.AND, Robdd.make_x(index + i))
            else:
                res = synthesize(res, Bdd.AND, Robdd.make_not_x(index + i))

        return res
コード例 #5
0
ファイル: Port.py プロジェクト: conix-security/springbok
    def toBDD(self, index, limit=0):
        """Compute the ROBDD.

        Parameters
        ----------
        index : int. Used for ROBDD variable index
        limit : int (optional, default=0). The limit bit used for range representation.

        Return
        ------
        Return the comuted ROBDD
        """
        # Port: 16 bits
        res = Robdd.true()
        port_size = 16
        for i in range(port_size - limit):
            if (self.port >> (port_size - i - 1)) & 1:
                res = synthesize(res, Bdd.AND, Robdd.make_x(index + i))
            else:
                res = synthesize(res, Bdd.AND, Robdd.make_not_x(index + i))

        return res
コード例 #6
0
ファイル: Protocol.py プロジェクト: quack1/springbok
    def toBDD(self, index, limit=0):
        """Construct the ROBDD.

        Parameters
        ----------
        index : int. Used for ROBDD variable index
        limit : int (optional, default=0). The limit bit used for range representation

        Return
        ------
        Return the computed ROBDD.
        """
        # Protocol : 8 bits
        res = Robdd.true()
        protocol_size = 8
        for i in range(protocol_size - limit):
            if (self.protocol >> (protocol_size - i - 1)) & 1:
                res = synthesize(res, Bdd.AND, Robdd.make_x(index + i))
            else:
                res = synthesize(res, Bdd.AND, Robdd.make_not_x(index + i))

        return res