def test_serialize_signup_info(self): signup_info = \ EnclaveSignupInfo( poet_public_key='My Fake Key', proof_data='I am Victoria Antoinette Scharleau, and I ' 'approve of this message.', sealed_signup_data="Signed, Sealed, Delivered, I'm Yours") self.assertIsNotNone(signup_info.serialize())
def test_deserialized_signup_info(self): signup_info = \ EnclaveSignupInfo( poet_public_key='My Fake Key', proof_data='I am Victoria Antoinette Scharleau, and I ' 'approve of this message.', sealed_signup_data="Signed, Sealed, Delivered, I'm Yours") serialized = signup_info.serialize() copy_signup_info = \ EnclaveSignupInfo.signup_info_from_serialized(serialized) self.assertEqual(signup_info.poet_public_key, copy_signup_info.poet_public_key) self.assertEqual(signup_info.proof_data, copy_signup_info.proof_data) self.assertIsNone(copy_signup_info.sealed_signup_data) self.assertEqual(serialized, copy_signup_info.serialize())
def test_deserialized_signup_info(self): signup_info = \ EnclaveSignupInfo( poet_public_key='My Fake Key', proof_data='I am Victoria Antoinette Scharleau, and I ' 'approve of this message.', sealed_signup_data="Signed, Sealed, Delivered, I'm Yours") serialized = signup_info.serialize() copy_signup_info = \ EnclaveSignupInfo.signup_info_from_serialized(serialized) self.assertEqual( signup_info.poet_public_key, copy_signup_info.poet_public_key) self.assertEqual(signup_info.proof_data, copy_signup_info.proof_data) self.assertIsNone(copy_signup_info.sealed_signup_data) self.assertEqual(serialized, copy_signup_info.serialize())
def test_create_signup_info(self): signup_info = \ EnclaveSignupInfo( poet_public_key='My Fake Key', proof_data='I am Victoria Antoinette Scharleau, and I ' 'approve of this message.', sealed_signup_data="Signed, Sealed, Delivered, I'm Yours") self.assertEqual(signup_info.poet_public_key, 'My Fake Key') self.assertEqual( signup_info.proof_data, 'I am Victoria Antoinette Scharleau, and I approve of this ' 'message.') self.assertEqual(signup_info.sealed_signup_data, "Signed, Sealed, Delivered, I'm Yours")
def create_signup_info(cls, originator_public_key): # First we need to create a public/private key pair for the PoET # enclave to use. cls._poet_private_key = pybitcointools.random_key() cls._poet_public_key = pybitcointools.privtopub(cls._poet_private_key) cls._active_wait_timer = None # We are going to fake out the sealing the signup data. signup_data = { 'poet_public_key': pybitcointools.encode_pubkey(cls._poet_public_key, 'hex'), 'poet_private_key': pybitcointools.encode_privkey(cls._poet_private_key, 'hex') } sealed_signup_data = \ pybitcointools.base64.b32encode(dict2json(signup_data)) # Create a fake report report_data = { 'originator_public_key_hash': pybitcointools.sha256( pybitcointools.encode_pubkey(originator_public_key, 'hex')), 'poet_public_key': pybitcointools.encode_pubkey(cls._poet_public_key, 'hex') } report = {'report_data': pybitcointools.sha256(dict2json(report_data))} report = pybitcointools.base64.b32encode(dict2json(report)) # Fake our "proof" data. proof_data = { 'attestation_evidence_payload': pybitcointools.sha256(report), 'attestation_verification_report': pybitcointools.sha256('Shave and a haircut...Two bits!') } return \ EnclaveSignupInfo( anti_sybil_id='Sally Field', poet_public_key=signup_data['poet_public_key'], proof_data=proof_data, sealed_signup_data=sealed_signup_data)
def create_signup_info(cls, originator_public_key, validator_network_basename, most_recent_wait_certificate_id): with cls._lock: # First we need to create a public/private key pair for the PoET # enclave to use. cls._poet_private_key = pybitcointools.random_key() cls._poet_public_key = \ pybitcointools.privtopub(cls._poet_private_key) cls._active_wait_timer = None # We are going to fake out the sealing the signup data. signup_data = { 'poet_public_key': pybitcointools.encode_pubkey(cls._poet_public_key, 'hex'), 'poet_private_key': pybitcointools.encode_privkey( cls._poet_private_key, 'hex') } sealed_signup_data = \ pybitcointools.base64.b32encode(dict2json(signup_data)) # Create a fake report report_data = { 'originator_public_key_hash': pybitcointools.sha256( pybitcointools.encode_pubkey( originator_public_key, 'hex')), 'poet_public_key': pybitcointools.encode_pubkey(cls._poet_public_key, 'hex') } report = { 'report_data': pybitcointools.sha256(dict2json(report_data)), 'validator_network_basename': validator_network_basename } # Fake our "proof" data. attestation_evidence_payload = { 'enclave_quote': pybitcointools.base64.b64encode(dict2json(report)), 'pse_manifest': pybitcointools.base64.b64encode( pybitcointools.sha256( 'manifest destiny')), 'nonce': most_recent_wait_certificate_id } attestation_verification_report = { 'attestation_evidence_payload': attestation_evidence_payload, 'anti_sybil_id': cls._anti_sybil_id } proof_data = { 'attestation_verification_report': attestation_verification_report, 'signature': pybitcointools.ecdsa_sign( dict2json(attestation_verification_report), cls._report_private_key) } return \ EnclaveSignupInfo( poet_public_key=signup_data['poet_public_key'], proof_data=proof_data, sealed_signup_data=sealed_signup_data)
def deserialize_signup_info(cls, serialized_signup_info): return \ EnclaveSignupInfo.signup_info_from_serialized( serialized_signup_info=serialized_signup_info)