def on_add_button_clicked( self, widget, data=None ):
        redeem_script = None
        address = None

        try: 
             redeem_script = self.redeem_script_window.script_entry.get_text()
             address = bitcoin.scriptaddr( redeem_script )
             KeyHelper.parse_redeem_script( redeem_script )
        except ValueError as e:
            confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid redeemScript!" )
            confirm.format_secondary_markup(str(e))
            confirm.run()
            confirm.destroy()
            return

        notes = self.redeem_script_window.notes_entry.get_text()

        try:
            self.script_info = KeyHelper.add_redeem_script( redeem_script, notes )
        except ValueError as e:
            confirm = gtk.MessageDialog( self.redeem_script_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Duplicate redeemScript!" )
            confirm.format_secondary_markup(str(e))
            confirm.run()
            confirm.destroy()
            return
        except nacl.exceptions.CryptoError:
            confirm = gtk.MessageDialog( self.redeem_script_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid Password" )
            confirm.run()
            confirm.destroy()
            return

        self.display_redeem_scripts()
        return True
    def on_account_key_button_clicked( self, widget, data=None ):
        #no account? 
        if self.account_info is None:
            confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Setup is not yet complete" )
            confirm.run()
            confirm.destroy()
            return

        try:
            account_number, account_key, key_number = KeyHelper.get_account_number_and_chain( account_number=self.keys_window.account_spinner.get_value_as_int() )
        except nacl.exceptions.CryptoError:
            confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid Password" )
            confirm.run()
            confirm.destroy()
            return

        label_string = "Extended Private Account Key:"
        #This means we are showing a public key
        if data is True: 
            label_string = "Public Extended Account Key:"
            account_key = KeyHelper.get_extended_public_key( account_key )
            
        confirm = gtk.MessageDialog( self.keys_window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, label_string )
        confirm.format_secondary_markup( account_key )
        confirm.run()
        confirm.destroy()
    def on_script_changed( self, widget, data=None ):
        script = widget.get_text()
        address = None
        try: 
            address = bitcoin.scriptaddr( script )
            KeyHelper.parse_redeem_script( script )
        except Exception as e:
            address = "Invalid Script"

        self.redeem_script_window.address_entry.set_text( address )
        return False
Esempio n. 4
0
    def on_script_changed(self, widget, data=None):
        script = widget.get_text()
        address = None
        try:
            address = bitcoin.scriptaddr(script)
            KeyHelper.parse_redeem_script(script)
        except Exception as e:
            address = "Invalid Script"

        self.redeem_script_window.address_entry.set_text(address)
        return False
Esempio n. 5
0
    def sign_window_response(self, dialog, response_id, data=None):
        #fake it for now
        if response_id == gtk.RESPONSE_CANCEL or response_id == gtk.RESPONSE_DELETE_EVENT:
            self.signWindow.destroy()
            self.signWindow = None
            return

        bufferText = dialog.get_text_content()
        signer = TxSigner()
        try:
            signer.import_json(bufferText)
            key = KeyHelper.get_bip32_key(signer.pubs)
            if (key is None):
                key = gui.PasswordEntry.get_password_from_user("Private Key")
            signedtx, complete = signer.sign(key)
            self.show_signed_tx(signedtx, complete)

        except RuntimeError as e:
            primaryError = e.args[0]
            secondaryError = e.args[1]
            diag = gtk.MessageDialog(
                self.signWindow,
                gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, primaryError)
            diag.format_secondary_markup(secondaryError)
            diag.run()
            diag.destroy()
            self.signWindow.present()
            return

        self.signWindow.destroy()
        self.signWindow = None
        return
Esempio n. 6
0
    def on_add_button_clicked(self, widget, data=None):
        redeem_script = None
        address = None

        try:
            redeem_script = self.redeem_script_window.script_entry.get_text()
            address = bitcoin.scriptaddr(redeem_script)
            KeyHelper.parse_redeem_script(redeem_script)
        except ValueError as e:
            confirm = gtk.MessageDialog(
                self.keys_window,
                gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid redeemScript!")
            confirm.format_secondary_markup(str(e))
            confirm.run()
            confirm.destroy()
            return

        notes = self.redeem_script_window.notes_entry.get_text()

        try:
            self.script_info = KeyHelper.add_redeem_script(
                redeem_script, notes)
        except ValueError as e:
            confirm = gtk.MessageDialog(
                self.redeem_script_window,
                gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Duplicate redeemScript!")
            confirm.format_secondary_markup(str(e))
            confirm.run()
            confirm.destroy()
            return
        except nacl.exceptions.CryptoError:
            confirm = gtk.MessageDialog(
                self.redeem_script_window,
                gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "Invalid Password")
            confirm.run()
            confirm.destroy()
            return

        self.display_redeem_scripts()
        return True
    def __init__( self, redeem_script_window ):
        self.redeem_script_window = redeem_script_window
        self.redeem_script_window.connect( "delete_event", self.window_delete )

        self.redeem_script_window.add_button.connect( "clicked", self.on_add_button_clicked )
        self.redeem_script_window.script_entry.connect( "changed", self.on_script_changed )

        self.script_info = KeyHelper.get_redeem_scripts()

        if self.script_info is None:
            self.script_info = []
            return

        self.display_redeem_scripts()
        return
    def __init__( self, keys_window ):
        self.keys_window = keys_window
        #self.keys_window.connect_after( "response", self.window_response )
        self.keys_window.connect( "delete_event", self.window_delete )
        self.keys_window.account_key_button.connect( "clicked", self.on_account_key_button_clicked )
        self.keys_window.pub_key_button.connect( "clicked", self.on_account_key_button_clicked, True )
        self.keys_window.key_view.connect( "button_press_event", self.display_context_menu )
        self.keys_window.account_spinner.connect( "value_changed", self.update_account )

        self.account_info, account_number = KeyHelper.get_accounts()

        if self.account_info is None:
            self.keys_window.account_spinner.set_sensitive(False)
            display_needs_setup_message()
            return

        self.keys_window.account_spinner.set_value( account_number )
Esempio n. 9
0
    def __init__(self, redeem_script_window):
        self.redeem_script_window = redeem_script_window
        self.redeem_script_window.connect("delete_event", self.window_delete)

        self.redeem_script_window.add_button.connect(
            "clicked", self.on_add_button_clicked)
        self.redeem_script_window.script_entry.connect("changed",
                                                       self.on_script_changed)

        self.script_info = KeyHelper.get_redeem_scripts()

        if self.script_info is None:
            self.script_info = []
            return

        self.display_redeem_scripts()
        return
    def sign_window_response(self, dialog, response_id, data=None):
        # fake it for now
        if response_id == gtk.RESPONSE_CANCEL or response_id == gtk.RESPONSE_DELETE_EVENT:
            self.signWindow.destroy()
            self.signWindow = None
            return

        bufferText = dialog.get_text_content()
        signer = TxSigner()
        try:
            signer.import_json(bufferText)
            key = KeyHelper.get_bip32_key(signer.pubs)
            if key is None:
                key = gui.PasswordEntry.get_password_from_user("Private Key")
            signedtx, complete = signer.sign(key)
            self.show_signed_tx(signedtx, complete)

        except RuntimeError as e:
            primaryError = e.args[0]
            secondaryError = e.args[1]
            diag = gtk.MessageDialog(
                self.signWindow,
                gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                gtk.MESSAGE_ERROR,
                gtk.BUTTONS_OK,
                primaryError,
            )
            diag.format_secondary_markup(secondaryError)
            diag.run()
            diag.destroy()
            self.signWindow.present()
            return

        self.signWindow.destroy()
        self.signWindow = None
        return
 def get_private_key( self, context_path ):
     itr = self.keys_window.key_view.get_model().get_iter(context_path[0])
     chain_code = self.keys_window.key_view.get_model().get_value(itr, 0)
     account = self.keys_window.account_spinner.get_value_as_int()
     private_key = KeyHelper.get_private_for_chain( account, chain_code )
     return private_key