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())
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