def get_harvester_signature(self, header_data: HeaderData,
                             plot_pk: PublicKey):
     for value_dict in self.plot_config["plots"].values():
         if (PrivateKey.from_bytes(bytes.fromhex(
                 value_dict["sk"])).get_public_key() == plot_pk):
             return PrivateKey.from_bytes(bytes.fromhex(
                 value_dict["sk"])).sign_prepend(header_data.get_hash())
Beispiel #2
0
    def get_plot_signature(self, header_data: HeaderData,
                           plot_pk: G1Element) -> Optional[G2Element]:
        """
        Returns the plot signature of the header data.
        """
        farmer_sk = master_sk_to_farmer_sk(self.all_sks[0][0])
        for _, plot_info in self.plots.items():
            agg_pk = ProofOfSpace.generate_plot_public_key(
                plot_info.local_sk.get_g1(), plot_info.farmer_public_key)
            if agg_pk == plot_pk:
                m = header_data.get_hash()
                harv_share = AugSchemeMPL.sign(plot_info.local_sk, m, agg_pk)
                farm_share = AugSchemeMPL.sign(farmer_sk, m, agg_pk)
                return AugSchemeMPL.aggregate([harv_share, farm_share])

        return None