def sign_ccl_transaction(payload, contract, enclave_signing_key):
    hash_input = make_ccl_transaction_hash_input(
        payload, contract.contract_code_hash,
        contract.pdo_contract_creator_pem_key)
    context = create_context('secp256k1')
    private_key = Secp256k1PrivateKey.from_hex(enclave_signing_key)
    return context.sign(hash_input, private_key)
    def get_default_enclave_signing_public_key_as_hex(self):
        context = create_context('secp256k1')

        private_key = Secp256k1PrivateKey.from_hex(
            self.get_default_enclave_signing_private_key_as_hex())

        public_key = context.get_public_key(private_key)
        return public_key.as_hex()
def secp256k1_sign(message, private_key_str):
    context = create_context('secp256k1')
    private_key = Secp256k1PrivateKey.from_hex(private_key_str)
    try:
        if isinstance(message, bytes):
            return context.sign(message, private_key)
        else:
            return context.sign(message.encode(), private_key)
    except:
        return None
def get_public_key_as_hex(private_key_as_hex):
    private_key = Secp256k1PrivateKey.from_hex(private_key_as_hex)
    signer = CryptoFactory(create_context('secp256k1')).new_signer(private_key)
    return signer.get_public_key().as_hex()
def generate_private_key_as_hex():
    private_key = Secp256k1PrivateKey.new_random()
    return private_key.as_hex()