def main(): keychain_file = get_apsd_configuration().keychain fh = open(keychain_file) apsd_prefs = get_apsd_preferences() password = calculate_apsd_keychain_password(apsd_prefs) master_key = getdbkey(fh, password) keychain = Keychain(fh) # record type 16 - private keys # see CSSM_DL_DB_RECORD_PRIVATE_KEY in cssmtype.h (libsecurity_cssm) table = keychain.table_by_record_type(16) record = table.find_record_by_attribute('PrintName', apsd_prefs['CertificateName']) key = decrypt_rsa_key(record.data, master_key) key_pem = rsa_key_der_to_pem(key) certificate_pem = extract_certificate(keychain_file) push_cert_file = join(CERT_PATH, apsd_prefs['CertificateName'] + '.pem') cert_fh = sys.stdout if len(sys.argv) > 1 and sys.argv[1] == '-f': cert_fh = open(push_cert_file, 'wb') sys.stderr.write('Writing private key and certificate to %s\n' % push_cert_file) cert_fh.write(key_pem) cert_fh.write(certificate_pem)
def __init__(self, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr, getpass=getpass.getpass, arguments=sys.argv[1:]): self.stdin = stdin self.stdout = stdout self.stderr = stderr self.getpass = getpass self.arguments = self.argument_parser().parse_args(arguments) self.keychain = Keychain(self.arguments.path)
def __init__(self): super(App, self).__init__("HipStatus") self.icon = _menu_bar_icon(0) self.preferences = Preferences() self._validate_preferences() self.keychain = Keychain(self.preferences.email()) self._validate_keychain() self.hipchat = HipChat(self.keychain.read_token()) self.office365 = Office365(self.preferences.email(), self.keychain.read_o365()) self.menu_pause_button = rumps.MenuItem("Pause HipStatus", self.timer_pause) self.menu_preferences = rumps.MenuItem('Preferences...') self.menu = [ self.menu_pause_button, rumps.separator, self.menu_preferences, rumps.separator ] self.menu_preferences_message = rumps.MenuItem( "", self.preferences_message) if self.preferences.default_message(): self.menu_preferences_message.title = self.preferences.default_message( ) else: self.menu_preferences_message.title = "None..." self.menu_preferences_email = rumps.MenuItem( "Change email address", self.preferences_update_email) self.menu_preferences_o365 = rumps.MenuItem( "Update saved Office 365 password", self.preferences_update_o365) self.menu_preferences_token = rumps.MenuItem( "Update saved HipChat token", self.preferences_update_token) self.menu_preferences_get_token = rumps.MenuItem( "Get your HipChat token", open_browser) self.menu_preferences.add(rumps.MenuItem('Status message...')) self.menu_preferences.add(self.menu_preferences_message) self.menu_preferences.add(rumps.separator) self.menu_preferences.add(rumps.MenuItem('Preferences...')) self.menu_preferences.add(self.menu_preferences_email) self.menu_preferences.add(self.menu_preferences_o365) self.menu_preferences.add(self.menu_preferences_token) self.menu_preferences.add(rumps.separator) self.menu_preferences.add(self.menu_preferences_get_token) self.main_timer = rumps.Timer(self.timer_trigger, 300) self.main_timer.start()