Secretive is an app for storing and managing SSH keys in the Secure Enclave.

Overview

Secretive Test Release

Secretive is an app for storing and managing SSH keys in the Secure Enclave. It is inspired by the sekey project, but rewritten in Swift with no external dependencies and with a handy native management app.

Screenshot of Secretive

Why?

Safer Storage

The most common setup for SSH keys is just keeping them on disk, guarded by proper permissions. This is fine in most cases, but it's not super hard for malicious users or malware to copy your private key. If you store your keys in the Secure Enclave, it's impossible to export them, by design.

Access Control

If your Mac has a Secure Enclave, it also has support for strong access controls like Touch ID, or authentication with Apple Watch. You can configure your key so that they require Touch ID (or Watch) authentication before they're accessed.

Screenshot of Secretive authenticating with Touch ID

Notifications

Secretive also notifies you whenever your keys are accessed, so you're never caught off guard.

Screenshot of Secretive notifying the user

Support for Smart Cards Too!

For Macs without Secure Enclaves, you can configure a Smart Card (such as a YubiKey) and use it for signing as well.

Getting Started

Installation

Direct Download

You can download the latest release over on the Releases Page

Using Homebrew

brew install secretive

FAQ

There's a FAQ here.

Auditable Build Process

Builds are produced by GitHub Actions with an auditable build and release generation process. Each build has a "Document SHAs" step, which will output SHA checksums for the build produced by the GitHub Action, so you can verify that the source code for a given build corresponds to any given release.

A Note Around Code Signing and Keychains

While Secretive uses the Secure Enclave for key storage, it still relies on Keychain APIs to access them. Keychain restricts reads of keys to the app (and specifically, the bundle ID) that created them. If you build Secretive from source, make sure you are consistent in which bundle ID you use so that the Keychain is able to locate your keys.

Backups and Transfers to New Machines

Because secrets in the Secure Enclave are not exportable, they are not able to be backed up, and you will not be able to transfer them to a new machine. If you get a new Mac, just create a new set of secrets specific to that Mac.

Security

If you discover any vulnerabilities in this project, please notify [email protected] with the subject containing "SECRETIVE SECURITY."

Comments
  • Support git signatures using SSH Keys

    Support git signatures using SSH Keys

    This mostly works out of the box and is primarily documentation based + made easier by #261.

    Config:

    • Needs SSH_AUTH_SOCK in the shell rc (unfortunately doesn't work with ./ssh/config)
    • user.signingkey = [path to public key file (again see #261)]
    • gpg.format = ssh
    • gpg.ssh.allowedSignersFile = [path to keys that are authorized (optional, really)]
    documentation enhancement 
    opened by maxgoedjen 34
  • Authentication inconsistently fails against GitLab and Codewerks

    Authentication inconsistently fails against GitLab and Codewerks

    I wanted to try this software so I generated a new keypair with it and copied the public key to my testserver. When trying to connect to it, a password prompt appears even after the publickey got acceptet (As seen in the log). This does not happen if I use the same setup with my ssh key in my .ssh folder.

    debug1: Authentications that can continue: publickey,password
    debug1: Offering public key: ecdsa-sha2-nistp256 ECDSA SHA256:RANDOMSTRING agent
    debug1: Server accepts key: ecdsa-sha2-nistp256 ECDSA SHA256:RANDOMSTRING agent
    debug1: Authentications that can continue: publickey,password
    debug1: Offering public key: ecdsa-sha2-nistp256 ECDSA SHA256:RANDOMSTRING agent
    debug1: Authentications that can continue: publickey,password
    debug1: Trying private key: /Users/admin/.ssh/id_rsa
    debug1: Trying private key: /Users/admin/.ssh/id_dsa
    debug1: Trying private key: /Users/admin/.ssh/id_ecdsa
    debug1: Trying private key: /Users/admin/.ssh/id_ed25519
    debug1: Trying private key: /Users/admin/.ssh/id_xmss
    debug1: Next authentication method: password
    [email protected]'s password:
    

    If theres some kind of log I can provide let me know.

    bug help wanted 
    opened by vordenken 29
  • Version 2.0 UI Problem

    Version 2.0 UI Problem

    Hi, me again

    I found several UI issues.

    1. When try to Create/Delete keys, the window disappears. (Re-open window can fix temporary)
    2. Copy public key not working. (Re-open window can fix temporary)
    3. The orange box "Secret Agent Is Not Running" still exist even if it runs well.
    4. The menubar buttons are not working at all.
    bug 
    opened by jerryzj 18
  • Secretive seams to have deleted all keys

    Secretive seams to have deleted all keys

    My Secretive App on my M1 MacBook Pro running macOS 12.4 seemed to have deleted all my SSH keys or access to those. I then wanted to recreate a Key to be able to use GitHub still, and the app quit on me after I tried to create a key; it just crashed. The Error became obvious after trying to push some code to GitHub. I tried reinstalling and using HomeBrew and the release on GitHub, but the Error persists.

    This is the Debugging output provided while running ssh -Tv [email protected]

    OpenSSH_8.6p1, LibreSSL 3.3.6
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files
    debug1: /etc/ssh/ssh_config line 54: Applying options for *
    debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
    debug1: Connecting to github.com port 22.
    debug1: Connection established.
    debug1: identity file /Users/moritz/.ssh/id_rsa type 0
    debug1: identity file /Users/moritz/.ssh/id_rsa-cert type -1
    debug1: identity file /Users/moritz/.ssh/id_dsa type -1
    debug1: identity file /Users/moritz/.ssh/id_dsa-cert type -1
    debug1: identity file /Users/moritz/.ssh/id_ecdsa type -1
    debug1: identity file /Users/moritz/.ssh/id_ecdsa-cert type -1
    debug1: identity file /Users/moritz/.ssh/id_ecdsa_sk type -1
    debug1: identity file /Users/moritz/.ssh/id_ecdsa_sk-cert type -1
    debug1: identity file /Users/moritz/.ssh/id_ed25519 type -1
    debug1: identity file /Users/moritz/.ssh/id_ed25519-cert type -1
    debug1: identity file /Users/moritz/.ssh/id_ed25519_sk type -1
    debug1: identity file /Users/moritz/.ssh/id_ed25519_sk-cert type -1
    debug1: identity file /Users/moritz/.ssh/id_xmss type -1
    debug1: identity file /Users/moritz/.ssh/id_xmss-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_8.6
    debug1: Remote protocol version 2.0, remote software version babeld-7f91b4d6
    debug1: compat_banner: no match: babeld-7f91b4d6
    debug1: Authenticating to github.com:22 as 'git'
    debug1: load_hostkeys: fopen /Users/moritz/.ssh/known_hosts2: No such file or directory
    debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: No such file or directory
    debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: No such file or directory
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: curve25519-sha256
    debug1: kex: host key algorithm: ssh-ed25519
    debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
    debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: SSH2_MSG_KEX_ECDH_REPLY received
    debug1: Server host key: ssh-ed25519 SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU
    debug1: load_hostkeys: fopen /Users/moritz/.ssh/known_hosts2: No such file or directory
    debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: No such file or directory
    debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: No such file or directory
    debug1: Host 'github.com' is known and matches the ED25519 host key.
    debug1: Found key in /Users/moritz/.ssh/known_hosts:10
    debug1: rekey out after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey in after 134217728 blocks
    debug1: Will attempt key: ecdsa-sha2-nistp256 ECDSA SHA256:T/PFCesRK/z8anOuhTVtnPUwg3JuBFEZuC5IhM3aIEE agent
    debug1: Will attempt key: ecdsa-sha2-nistp256 ECDSA SHA256:j9IoF3g4cSbtoTrj1/CWFnNCobl5HBZczlIaatefOSw agent
    debug1: Will attempt key: /Users/moritz/.ssh/id_rsa RSA SHA256:4T7OMLuiNCKh5FtV1HGiqN0UUhMYjfDbBmFpOBy0Lpg
    debug1: Will attempt key: /Users/moritz/.ssh/id_dsa
    debug1: Will attempt key: /Users/moritz/.ssh/id_ecdsa
    debug1: Will attempt key: /Users/moritz/.ssh/id_ecdsa_sk
    debug1: Will attempt key: /Users/moritz/.ssh/id_ed25519
    debug1: Will attempt key: /Users/moritz/.ssh/id_ed25519_sk
    debug1: Will attempt key: /Users/moritz/.ssh/id_xmss
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,rsa-sha2-512,rsa-sha2-256,ssh-rsa>
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Offering public key: ecdsa-sha2-nistp256 ECDSA SHA256:T/PFCesRK/z8anOuhTVtnPUwg3JuBFEZuC5IhM3aIEE agent
    debug1: Authentications that can continue: publickey
    debug1: Offering public key: ecdsa-sha2-nistp256 ECDSA SHA256:j9IoF3g4cSbtoTrj1/CWFnNCobl5HBZczlIaatefOSw agent
    debug1: Authentications that can continue: publickey
    debug1: Offering public key: /Users/moritz/.ssh/id_rsa RSA SHA256:4T7OMLuiNCKh5FtV1HGiqN0UUhMYjfDbBmFpOBy0Lpg
    debug1: Authentications that can continue: publickey
    debug1: Trying private key: /Users/moritz/.ssh/id_dsa
    debug1: Trying private key: /Users/moritz/.ssh/id_ecdsa
    debug1: Trying private key: /Users/moritz/.ssh/id_ecdsa_sk
    debug1: Trying private key: /Users/moritz/.ssh/id_ed25519
    debug1: Trying private key: /Users/moritz/.ssh/id_ed25519_sk
    debug1: Trying private key: /Users/moritz/.ssh/id_xmss
    debug1: No more authentication methods to try.
    [email protected]: Permission denied (public key).
    
    opened by mo-cmyk 12
  • wait for new packets on the agent socket after the handler is invoked…

    wait for new packets on the agent socket after the handler is invoked…

    wait for new data on the socket after the handler is called. ruby net::ssh keeps the agent connection open, but the secretive agent closes the connection :( this fixes https://github.com/maxgoedjen/secretive/issues/244

    opened by pfy 12
  • YubiKey 5C not recognized on macOS Big Sur (dev beta 2)

    YubiKey 5C not recognized on macOS Big Sur (dev beta 2)

    I realize Big Sur is still in beta, so this is more of a heads up than a "fix my problem now RAR!!!!" kind of issue report. ;)

    When I insert my YubiKey 5C into my iMac running Big Sur dev beta 2, Secretive still says "No Secure Storage Available."

    opened by cap10morgan 12
  • Feature Request: Support OpenSSH Certificates

    Feature Request: Support OpenSSH Certificates

    It would be great if secretive supported OpenSSH Certificates

    I'm unsure how this would work, perhaps a location on disk where secretive looks for certificates, and adds them to the list of identities if a matching public key is found?

    Unless its already supported? I could not find any mention of them in the docs or code...

    proposed 
    opened by unreality 9
  • Crash when using docker remote context

    Crash when using docker remote context

    I had a Secretive crash today when using docker-compose and a remote docker context. Its worked fairly reliably in the past under this scneario. The crash report is as follows:

    -------------------------------------
    Translated Report (Full Report Below)
    -------------------------------------
    
    Process:               SecretAgent [95140]
    Path:                  /Volumes/VOLUME/*/Secretive.app/Contents/Library/LoginItems/SecretAgent.app/Contents/MacOS/SecretAgent
    Identifier:            com.maxgoedjen.Secretive.SecretAgent
    Version:               2.1.1 (1)
    Code Type:             ARM-64 (Native)
    Parent Process:        launchd [1]
    User ID:               501
    
    Date/Time:             2022-01-10 20:26:07.2208 -0800
    OS Version:            macOS 12.2 (21D5025f)
    Report Version:        12
    Anonymous UUID:        4FAED921-D49D-A227-DA12-45321B5056F5
    
    Sleep/Wake UUID:       802E5F85-96C1-4592-BE7F-BE7D5957E3DE
    
    Time Awake Since Boot: 290000 seconds
    Time Since Wake:       9017 seconds
    
    System Integrity Protection: enabled
    
    Notes:
    thread_get_state(PAGEIN) returned 0x10000003: (ipc/send) invalid destination port
    thread_get_state(EXCEPTION) returned 0x10000003: (ipc/send) invalid destination port
    thread_get_state(FLAVOR) returned 0x10000003: (ipc/send) invalid destination port
    
    Crashed Thread:        0  Dispatch queue: com.apple.main-thread
    
    Exception Type:        EXC_BREAKPOINT (SIGTRAP)
    Exception Codes:       0x0000000000000001, 0x00000001ac5e3480
    Exception Note:        EXC_CORPSE_NOTIFY
    
    Termination Reason:    Namespace SIGNAL, Code 5 Trace/BPT trap: 5
    Terminating Process:   exc handler [95140]
    
    Error Formulating Crash Report:
    thread_get_state(PAGEIN) returned 0x10000003: (ipc/send) invalid destination port
    thread_get_state(EXCEPTION) returned 0x10000003: (ipc/send) invalid destination port
    thread_get_state(FLAVOR) returned 0x10000003: (ipc/send) invalid destination port
    
    Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
    0   libswiftFoundation.dylib      	       0x1ac5e3480 Data.subscript.getter + 296
    1   SecretAgentKit                	       0x1006d3fb0 0x1006cc000 + 32688
    2   SecretAgentKit                	       0x1006d24a0 0x1006cc000 + 25760
    3   SecretAgentKit                	       0x1006d257c 0x1006cc000 + 25980
    4   CoreFoundation                	       0x19ace1200 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 28
    5   CoreFoundation                	       0x19ad84b84 ___CFXRegistrationPost_block_invoke + 52
    6   CoreFoundation                	       0x19ad84af0 _CFXRegistrationPost + 456
    7   CoreFoundation                	       0x19acafeb0 _CFXNotificationPost + 720
    8   Foundation                    	       0x19bb65e3c -[NSNotificationCenter postNotificationName:object:userInfo:] + 96
    9   Foundation                    	       0x19bc7b3f0 _performFileHandleSource + 1148
    10  CoreFoundation                	       0x19acecc5c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
    11  CoreFoundation                	       0x19acecba8 __CFRunLoopDoSource0 + 208
    12  CoreFoundation                	       0x19acec894 __CFRunLoopDoSources0 + 268
    13  CoreFoundation                	       0x19aceb208 __CFRunLoopRun + 820
    14  CoreFoundation                	       0x19acea734 CFRunLoopRunSpecific + 600
    15  HIToolbox                     	       0x1a3930f68 RunCurrentEventLoopInMode + 292
    16  HIToolbox                     	       0x1a3930cdc ReceiveNextEventCommon + 552
    17  HIToolbox                     	       0x1a3930a9c _BlockUntilNextEventMatchingListInModeWithFilter + 72
    18  AppKit                        	       0x19d83fce0 _DPSNextEvent + 844
    19  AppKit                        	       0x19d83e584 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1332
    20  AppKit                        	       0x19d8305a4 -[NSApplication run] + 596
    21  AppKit                        	       0x19d801c78 NSApplicationMain + 1064
    22  SecretAgent                   	       0x1004afc64 0x1004ac000 + 15460
    23  dyld                          	       0x1005d10f4 start + 520
    
    Thread 1:: com.apple.NSEventThread
    0   libsystem_kernel.dylib        	       0x19abe5954 mach_msg_trap + 8
    1   libsystem_kernel.dylib        	       0x19abe5d00 mach_msg + 76
    2   CoreFoundation                	       0x19aceced8 __CFRunLoopServiceMachPort + 372
    3   CoreFoundation                	       0x19aceb390 __CFRunLoopRun + 1212
    4   CoreFoundation                	       0x19acea734 CFRunLoopRunSpecific + 600
    5   AppKit                        	       0x19d9acc90 _NSEventThread + 196
    6   libsystem_pthread.dylib       	       0x19ac21240 _pthread_start + 148
    7   libsystem_pthread.dylib       	       0x19ac1c024 thread_start + 8
    
    Thread 2:: com.apple.CFSocket.private
    0   libsystem_kernel.dylib        	       0x19abefd38 __select + 8
    1   CoreFoundation                	       0x19ad17334 __CFSocketManager + 648
    2   libsystem_pthread.dylib       	       0x19ac21240 _pthread_start + 148
    3   libsystem_pthread.dylib       	       0x19ac1c024 thread_start + 8
    
    Thread 3:
    0   libsystem_pthread.dylib       	       0x19ac1c010 start_wqthread + 0
    
    Thread 4:
    0   libsystem_pthread.dylib       	       0x19ac1c010 start_wqthread + 0
    
    
    No thread state (register information) available
    
    Binary Images:
           0x1ac4e4000 -        0x1ac854fff libswiftFoundation.dylib (*) <b3c51d7d-0b52-3792-af94-d7750c383c3e> /usr/lib/swift/libswiftFoundation.dylib
           0x1006cc000 -        0x1006dbfff com.maxgoedjen.SecretAgentKit (2.1.1) <cb6ea34a-0ef3-3548-aa27-17c2f00fa49c> /Volumes/VOLUME/*/Secretive.app/Contents/Library/LoginItems/SecretAgent.app/Contents/Frameworks/SecretAgentKit.framework/Versions/A/SecretAgentKit
           0x19ac68000 -        0x19b1abfff com.apple.CoreFoundation (6.9) <34254e35-3517-33d3-908a-ecb87b5e475b> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
           0x19bb5c000 -        0x19bf49fff com.apple.Foundation (6.9) <1f2dae39-3d30-35e2-83a0-2a49b51fc0d5> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
           0x1a38fe000 -        0x1a3c2dfff com.apple.HIToolbox (2.1.1) <fe6e9222-7900-3418-b94d-dc70ef2912e2> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
           0x19d7fe000 -        0x19e6b1fff com.apple.AppKit (6.9) <528ee562-f26c-3098-ae41-0b844b1b23ee> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
           0x1004ac000 -        0x1004b3fff com.maxgoedjen.Secretive.SecretAgent (2.1.1) <44e73559-9b10-394d-bb1a-aae206a00d74> /Volumes/VOLUME/*/Secretive.app/Contents/Library/LoginItems/SecretAgent.app/Contents/MacOS/SecretAgent
           0x1005cc000 -        0x10062bfff dyld (*) <6c3fc6e6-ee27-3ad4-82fd-73e4b990bb02> /usr/lib/dyld
           0x19abe4000 -        0x19ac19fff libsystem_kernel.dylib (*) <b2f21b34-f3f3-3a01-8537-dcd2cc36d2da> /usr/lib/system/libsystem_kernel.dylib
           0x19ac1a000 -        0x19ac26fff libsystem_pthread.dylib (*) <61ee3110-0816-31e9-84bb-6a4fe8548658> /usr/lib/system/libsystem_pthread.dylib
    
    External Modification Summary:
      Calls made by other processes targeting this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by all processes on this machine:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
    
    VM Region Summary:
    ReadOnly portion of Libraries: Total=900.6M resident=0K(0%) swapped_out_or_unallocated=900.6M(100%)
    Writable regions: Total=1.9G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.9G(100%)
    
                                    VIRTUAL   REGION 
    REGION TYPE                        SIZE    COUNT (non-coalesced) 
    ===========                     =======  ======= 
    Activity Tracing                   256K        1 
    ColorSync                          464K       23 
    CoreGraphics                        48K        3 
    Kernel Alloc Once                   32K        1 
    MALLOC                           340.4M      121 
    MALLOC guard page                  288K       15 
    MALLOC_MEDIUM (reserved)           1.1G       10         reserved VM address space (unallocated)
    MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
    SQLite page cache                  192K        3 
    STACK GUARD                       56.1M        5 
    Stack                             10.1M        5 
    VM_ALLOCATE                        1.0G        4 
    __AUTH                            2182K      225 
    __AUTH_CONST                      13.6M      388 
    __DATA                             9.8M      379 
    __DATA_CONST                      13.9M      397 
    __DATA_DIRTY                      1264K      154 
    __FONT_DATA                          4K        1 
    __LINKEDIT                       576.2M        7 
    __OBJC_CONST                      2369K      190 
    __OBJC_RO                         82.0M        1 
    __OBJC_RW                         3104K        1 
    __TEXT                           324.4M      409 
    __UNICODE                          588K        1 
    dyld private memory               1024K        1 
    libnetwork                         128K        8 
    mapped file                      130.6M       19 
    shared memory                      896K       16 
    ===========                     =======  ======= 
    TOTAL                              4.0G     2389 
    TOTAL, minus reserved VM space     2.5G     2389 
    
    
    
    -----------
    Full Report
    -----------
    
    {"app_name":"SecretAgent","timestamp":"2022-01-10 20:26:09.00 -0800","app_version":"2.1.1","slice_uuid":"44e73559-9b10-394d-bb1a-aae206a00d74","build_version":"1","platform":1,"bundleID":"com.maxgoedjen.Secretive.SecretAgent","share_with_app_devs":1,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.2 (21D5025f)","incident_id":"911E6DB8-1C8B-4C01-8AB2-4F9397E73235","name":"SecretAgent"}
    {
      "uptime" : 290000,
      "procLaunch" : "2022-01-02 13:53:22.0056 -0800",
      "procRole" : "Default",
      "version" : 2,
      "userID" : 501,
      "deployVersion" : 210,
      "modelCode" : "MacBookPro18,1",
      "procStartAbsTime" : 3766162131467,
      "coalitionID" : 18642,
      "osVersion" : {
        "train" : "macOS 12.2",
        "build" : "21D5025f",
        "releaseType" : "User"
      },
      "captureTime" : "2022-01-10 20:26:07.2208 -0800",
      "incident" : "911E6DB8-1C8B-4C01-8AB2-4F9397E73235",
      "bug_type" : "309",
      "pid" : 95140,
      "procExitAbsTime" : 6967739058843,
      "translated" : false,
      "cpuType" : "ARM-64",
      "procName" : "SecretAgent",
      "procPath" : "\/Volumes\/VOLUME\/*\/Secretive.app\/Contents\/Library\/LoginItems\/SecretAgent.app\/Contents\/MacOS\/SecretAgent",
      "bundleInfo" : {"CFBundleShortVersionString":"2.1.1","CFBundleVersion":"1","CFBundleIdentifier":"com.maxgoedjen.Secretive.SecretAgent"},
      "storeInfo" : {"deviceIdentifierForVendor":"B10DA965-F614-5C15-AC85-D88D7F7D26C2","thirdParty":true},
      "parentProc" : "launchd",
      "parentPid" : 1,
      "coalitionName" : "com.maxgoedjen.Secretive.SecretAgent",
      "crashReporterKey" : "4FAED921-D49D-A227-DA12-45321B5056F5",
      "wakeTime" : 9017,
      "sleepWakeUUID" : "802E5F85-96C1-4592-BE7F-BE7D5957E3DE",
      "sip" : "enabled",
      "isCorpse" : 1,
      "exception" : {"codes":"0x0000000000000001, 0x00000001ac5e3480","rawCodes":[1,7186822272],"type":"EXC_BREAKPOINT","signal":"SIGTRAP"},
      "termination" : {"flags":0,"code":5,"namespace":"SIGNAL","indicator":"Trace\/BPT trap: 5","byProc":"exc handler","byPid":95140},
      "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
      "faultingThread" : 0,
      "threads" : [{"triggered":true,"id":2016331,"queue":"com.apple.main-thread","frames":[{"imageOffset":1045632,"symbol":"Data.subscript.getter","symbolLocation":296,"imageIndex":0},{"imageOffset":32688,"imageIndex":1},{"imageOffset":25760,"imageIndex":1},{"imageOffset":25980,"imageIndex":1},{"imageOffset":496128,"symbol":"__CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__","symbolLocation":28,"imageIndex":2},{"imageOffset":1166212,"symbol":"___CFXRegistrationPost_block_invoke","symbolLocation":52,"imageIndex":2},{"imageOffset":1166064,"symbol":"_CFXRegistrationPost","symbolLocation":456,"imageIndex":2},{"imageOffset":294576,"symbol":"_CFXNotificationPost","symbolLocation":720,"imageIndex":2},{"imageOffset":40508,"symbol":"-[NSNotificationCenter postNotificationName:object:userInfo:]","symbolLocation":96,"imageIndex":3},{"imageOffset":1176560,"symbol":"_performFileHandleSource","symbolLocation":1148,"imageIndex":3},{"imageOffset":543836,"symbol":"__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__","symbolLocation":28,"imageIndex":2},{"imageOffset":543656,"symbol":"__CFRunLoopDoSource0","symbolLocation":208,"imageIndex":2},{"imageOffset":542868,"symbol":"__CFRunLoopDoSources0","symbolLocation":268,"imageIndex":2},{"imageOffset":537096,"symbol":"__CFRunLoopRun","symbolLocation":820,"imageIndex":2},{"imageOffset":534324,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":2},{"imageOffset":208744,"symbol":"RunCurrentEventLoopInMode","symbolLocation":292,"imageIndex":4},{"imageOffset":208092,"symbol":"ReceiveNextEventCommon","symbolLocation":552,"imageIndex":4},{"imageOffset":207516,"symbol":"_BlockUntilNextEventMatchingListInModeWithFilter","symbolLocation":72,"imageIndex":4},{"imageOffset":269536,"symbol":"_DPSNextEvent","symbolLocation":844,"imageIndex":5},{"imageOffset":263556,"symbol":"-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]","symbolLocation":1332,"imageIndex":5},{"imageOffset":206244,"symbol":"-[NSApplication run]","symbolLocation":596,"imageIndex":5},{"imageOffset":15480,"symbol":"NSApplicationMain","symbolLocation":1064,"imageIndex":5},{"imageOffset":15460,"imageIndex":6},{"imageOffset":20724,"symbol":"start","symbolLocation":520,"imageIndex":7}]},{"id":2016376,"name":"com.apple.NSEventThread","frames":[{"imageOffset":6484,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":8},{"imageOffset":7424,"symbol":"mach_msg","symbolLocation":76,"imageIndex":8},{"imageOffset":544472,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":2},{"imageOffset":537488,"symbol":"__CFRunLoopRun","symbolLocation":1212,"imageIndex":2},{"imageOffset":534324,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":2},{"imageOffset":1764496,"symbol":"_NSEventThread","symbolLocation":196,"imageIndex":5},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":9},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":9}]},{"id":2016377,"name":"com.apple.CFSocket.private","frames":[{"imageOffset":48440,"symbol":"__select","symbolLocation":8,"imageIndex":8},{"imageOffset":717620,"symbol":"__CFSocketManager","symbolLocation":648,"imageIndex":2},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":9},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":9}]},{"id":3790158,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":9}]},{"id":3791400,"frames":[{"imageOffset":8208,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":9}]}],
      "usedImages" : [
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 7185776640,
        "size" : 3608576,
        "uuid" : "b3c51d7d-0b52-3792-af94-d7750c383c3e",
        "path" : "\/usr\/lib\/swift\/libswiftFoundation.dylib",
        "name" : "libswiftFoundation.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64",
        "base" : 4302094336,
        "CFBundleShortVersionString" : "2.1.1",
        "CFBundleIdentifier" : "com.maxgoedjen.SecretAgentKit",
        "size" : 65536,
        "uuid" : "cb6ea34a-0ef3-3548-aa27-17c2f00fa49c",
        "path" : "\/Volumes\/VOLUME\/*\/Secretive.app\/Contents\/Library\/LoginItems\/SecretAgent.app\/Contents\/Frameworks\/SecretAgentKit.framework\/Versions\/A\/SecretAgentKit",
        "name" : "SecretAgentKit",
        "CFBundleVersion" : "1"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6891667456,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.CoreFoundation",
        "size" : 5521408,
        "uuid" : "34254e35-3517-33d3-908a-ecb87b5e475b",
        "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
        "name" : "CoreFoundation",
        "CFBundleVersion" : "1856.105"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6907346944,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.Foundation",
        "size" : 4120576,
        "uuid" : "1f2dae39-3d30-35e2-83a0-2a49b51fc0d5",
        "path" : "\/System\/Library\/Frameworks\/Foundation.framework\/Versions\/C\/Foundation",
        "name" : "Foundation",
        "CFBundleVersion" : "1856.105"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 7039082496,
        "CFBundleShortVersionString" : "2.1.1",
        "CFBundleIdentifier" : "com.apple.HIToolbox",
        "size" : 3342336,
        "uuid" : "fe6e9222-7900-3418-b94d-dc70ef2912e2",
        "path" : "\/System\/Library\/Frameworks\/Carbon.framework\/Versions\/A\/Frameworks\/HIToolbox.framework\/Versions\/A\/HIToolbox",
        "name" : "HIToolbox"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6937370624,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.AppKit",
        "size" : 15417344,
        "uuid" : "528ee562-f26c-3098-ae41-0b844b1b23ee",
        "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
        "name" : "AppKit",
        "CFBundleVersion" : "2113.20.111"
      },
      {
        "source" : "P",
        "arch" : "arm64",
        "base" : 4299866112,
        "CFBundleShortVersionString" : "2.1.1",
        "CFBundleIdentifier" : "com.maxgoedjen.Secretive.SecretAgent",
        "size" : 32768,
        "uuid" : "44e73559-9b10-394d-bb1a-aae206a00d74",
        "path" : "\/Volumes\/VOLUME\/*\/Secretive.app\/Contents\/Library\/LoginItems\/SecretAgent.app\/Contents\/MacOS\/SecretAgent",
        "name" : "SecretAgent",
        "CFBundleVersion" : "1"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 4301045760,
        "size" : 393216,
        "uuid" : "6c3fc6e6-ee27-3ad4-82fd-73e4b990bb02",
        "path" : "\/usr\/lib\/dyld",
        "name" : "dyld"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6891126784,
        "size" : 221184,
        "uuid" : "b2f21b34-f3f3-3a01-8537-dcd2cc36d2da",
        "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
        "name" : "libsystem_kernel.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6891347968,
        "size" : 53248,
        "uuid" : "61ee3110-0816-31e9-84bb-6a4fe8548658",
        "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
        "name" : "libsystem_pthread.dylib"
      }
    ],
      "sharedCache" : {
      "base" : 6888177664,
      "size" : 3097231360,
      "uuid" : "edd23039-6072-38ad-bd6e-69def54e5de9"
    },
      "vmSummary" : "ReadOnly portion of Libraries: Total=900.6M resident=0K(0%) swapped_out_or_unallocated=900.6M(100%)\nWritable regions: Total=1.9G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.9G(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nActivity Tracing                   256K        1 \nColorSync                          464K       23 \nCoreGraphics                        48K        3 \nKernel Alloc Once                   32K        1 \nMALLOC                           340.4M      121 \nMALLOC guard page                  288K       15 \nMALLOC_MEDIUM (reserved)           1.1G       10         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)\nSQLite page cache                  192K        3 \nSTACK GUARD                       56.1M        5 \nStack                             10.1M        5 \nVM_ALLOCATE                        1.0G        4 \n__AUTH                            2182K      225 \n__AUTH_CONST                      13.6M      388 \n__DATA                             9.8M      379 \n__DATA_CONST                      13.9M      397 \n__DATA_DIRTY                      1264K      154 \n__FONT_DATA                          4K        1 \n__LINKEDIT                       576.2M        7 \n__OBJC_CONST                      2369K      190 \n__OBJC_RO                         82.0M        1 \n__OBJC_RW                         3104K        1 \n__TEXT                           324.4M      409 \n__UNICODE                          588K        1 \ndyld private memory               1024K        1 \nlibnetwork                         128K        8 \nmapped file                      130.6M       19 \nshared memory                      896K       16 \n===========                     =======  ======= \nTOTAL                              4.0G     2389 \nTOTAL, minus reserved VM space     2.5G     2389 \n",
      "legacyInfo" : {
      "threadTriggered" : {
        "queue" : "com.apple.main-thread"
      }
    },
      "trialInfo" : {
      "rollouts" : [
        {
          "rolloutId" : "5ffde50ce2aacd000d47a95f",
          "factorPackIds" : {
    
          },
          "deploymentId" : 250000063
        },
        {
          "rolloutId" : "60da5e84ab0ca017dace9abf",
          "factorPackIds" : {
    
          },
          "deploymentId" : 250000007
        },
        {
          "rolloutId" : "60356660bbe37970735c5624",
          "factorPackIds" : {
    
          },
          "deploymentId" : 250000016
        },
        {
          "rolloutId" : "607844aa04477260f58a8077",
          "factorPackIds" : {
            "SIRI_MORPHUN_ASSETS" : "60ef663fa2f864203caf575c"
          },
          "deploymentId" : 250000055
        },
        {
          "rolloutId" : "602ad4dac86151000cf27e46",
          "factorPackIds" : {
            "SIRI_DICTATION_ASSETS" : "61a7b71b37dce5558831d479"
          },
          "deploymentId" : 250000288
        },
        {
          "rolloutId" : "5fc94383418129005b4e9ae0",
          "factorPackIds" : {
    
          },
          "deploymentId" : 250000191
        },
        {
          "rolloutId" : "601d9415f79519000ccd4b69",
          "factorPackIds" : {
            "SIRI_TEXT_TO_SPEECH" : "6193e7ae2171a2330e561ea2"
          },
          "deploymentId" : 250000350
        }
      ],
      "experiments" : [
    
      ]
    },
      "reportNotes" : [
      "thread_get_state(PAGEIN) returned 0x10000003: (ipc\/send) invalid destination port",
      "thread_get_state(EXCEPTION) returned 0x10000003: (ipc\/send) invalid destination port",
      "thread_get_state(FLAVOR) returned 0x10000003: (ipc\/send) invalid destination port"
    ]
    }
    
    
    bug needs info 
    opened by zachberger 8
  • Timed Biometric Requirement

    Timed Biometric Requirement

    It would be perfect to have a middle-ground between "requires authentication" and "authentication not required" (ie. "requires authentication every x hours") Currently, for git-heavy workflows, "requires authentication" means touching the fingerprint 50 times a day.

    Ps. Secretive is great - fantastic job!

    duplicate 
    opened by lvangool 8
  • Multiple authentication check in VS Code workspaces

    Multiple authentication check in VS Code workspaces

    Hi,

    I'm using Visual Studio Code extensively with workspaces (multiple git repositories in the same VS Code window), using git over ssh, and I get asked to authenticate through Touch ID multiple times (not sure it's 1 authent per git repos actually), although they're all using the same destination (gitlab in the setup below) Here is my ssh config:

    Host *
      ForwardAgent yes
      ServerAliveInterval 240
      AddKeysToAgent yes
      ControlMaster auto
      ControlPath ~/.ssh/%r@%h:%p
      ControlPersist yes
      Compression yes
      IdentityAgent ~/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh
    
    Host mygitlab
      IdentityFile ~/.ssh/gitlab.pub
      IdentitiesOnly yes
      ForwardAgent no
      SendEnv GIT_PROTOCOL
      ProxyJump none
    

    and a terminal in VS code gives this:

    $ echo $SSH_AUTH_SOCK
    ~/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh
    $ ll ~/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh
    Permissions    Size User  Date Modified  Name
    srwxr-xr-x@       0 EppO  13 Jan 12:04   ~/Library/Containers/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh
    

    I use SSH multiplexing, not sure that's the issue. I made a video of the issue: https://media.giphy.com/media/2Gfm7jOCEb2dfIkvOV/giphy.gif

    opened by EppO 8
  • Agent not restarting when updating

    Agent not restarting when updating

    Hi,

    I just installed the pre-lease version 2.0. My OS is macOS Big Sur 11.0.1 RC2(20B28)

    After I set the SSH_SOCKET and install the SecretAgent, (the SecretAgent is shown in Activity Monitor) I still see the "Secret Agent is not Running" notification in Secretive App, and the GitHub ssh test still not getting the ssh key in Secure Enclave.

    bug 
    opened by jerryzj 8
  • Pubkey files not present after install on 13.1

    Pubkey files not present after install on 13.1

    Upon install, I hit two issues:

    1. "Agent not running" message (even though the agent process visible); resolved by HUP'ing both processes

    2. No pubkey file after a key is generated: /Users/<me>/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/PublicKeys/ dir does not exist at all.

    opened by ardigan6 1
  • Add detailed instructions for git and GitHub auth + signing

    Add detailed instructions for git and GitHub auth + signing

    This PR adds step by step notes to make things a bit more point and click.

    The reasons this initially didn't work for me were scattered across many issues in the repo, and ultimately had to review the source code to get this working.

    Also ran across several bugs on 13.1, with workarounds listed under Troubleshooting.

    opened by ardigan6 1
  • Add menu option to restart the agent

    Add menu option to restart the agent

    Occasionally (not very often) the agent will stop running. The only way to get it working again is to open Secretive and run through the setup helper. It would be useful if there were a "restart agent" item in the menu. I guess it would also help if it checked if the agent was running when Secretive opens so and asked to start it if it isn't.

    opened by asmeurer 2
  • ventura issues: not in /Applications

    ventura issues: not in /Applications

    Complains about not being in /Applications, despite being there. Tried ~/Applications as well. Still displays the "not in applications" badge. Both on 13.0 and 13.1

    opened by permezel 2
  • Support ControlMaster and ControlPersist

    Support ControlMaster and ControlPersist

    It looks like using Secretive as the IdentityAgent invalidates options specified in ~/.ssh/config such as ControlMaster and ControlPersist.

    This means that I cannot set keep alive to ~15 minutes to allow repeated connections to not require TouchID.

    opened by zachriggle 3
Releases(v2.3.0)
  • v2.3.0(Dec 23, 2022)

    Lots of great new features and some important bug fixes. Huge thanks to @unreality in particular, for proposing and implementing support of OpenSSH Certificates!

    Features

    • Support for OpenSSH Certificates (#416)
    • Redesign the "Create Secret" view (#370)
    • Add "agent is running" toolbar item (#434)
    • Show lock icon in items that require authentication (#357)

    Fixes

    • Fix bug where agent could act as if it had no keys (#427)
    • Fix potential crash in agent around path generation (#420)
    • Fix crash in agent when tapping notification, causing re-auth to be prompted after authorizing time-based unlock (#385)
    • Fix issue where toolbar text could be illegible when in light mode (#434)
    • UI tweaks for light mode (#429)
    • Fixed selection after creating/renaming/deleting secrets (#436)

    New Contributors

    • @PBHDK made their first contribution in https://github.com/maxgoedjen/secretive/pull/360
    • @paulhammond made their first contribution in https://github.com/maxgoedjen/secretive/pull/377
    • @thebitstick made their first contribution in https://github.com/maxgoedjen/secretive/pull/380
    • @KitAdams made their first contribution in https://github.com/maxgoedjen/secretive/pull/406
    • @bermannoah made their first contribution in https://github.com/maxgoedjen/secretive/pull/382
    • @unreality made their first contribution in https://github.com/maxgoedjen/secretive/pull/416

    Minimum macOS Version

    11.0.0

    Build

    https://github.com/maxgoedjen/secretive/actions/runs/3763232242

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(2.17 MB)
  • v2.2.0(Feb 17, 2022)

    More quality of life improvements and bug fixes.

    Features

    • Added the ability to temporarily unlock authentication-required keys for set periods of time (#252)
    • Added on-disk public key representations managed by Secret Agent (#264)
    • Added scrolling to detail view (#241)
    • Identify smart cards by name when connected and on macOS 12.0 or greater (#223)
    • Disabled symbol stripping to allow easier crash and performance tracing (#291)

    Fixes

    • Fixed crash (#284)
    • Fixed bug where setup prompt would sometimes not correctly appear (#340)
    • Fixed incompatibility with ruby net:ssh (#267)
    • Fixed bug where agent would sometimes not update when new key is added (#350)

    Minimum macOS Version

    11.0.0

    Build

    https://github.com/maxgoedjen/secretive/actions/runs/1857237470

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(1.68 MB)
  • v2.1.1(Aug 8, 2021)

    Lots of bug fixes and quality-of-life improvements!

    Features

    • Easier bundle ID setup when configuring a development environment (#202)
    • Improvements to UI around requiring authentication (#210)
    • Direct SSH configuration as alternative to shell config (#208)
    • Ability to rename secrets (#216)

    Fixes

    • Fixed threading bug (#217)
    • Fixes bug where app would resign active status due to background relaunch (#227)

    Minimum macOS Version

    11.0.0

    Build

    https://github.com/maxgoedjen/secretive/actions/runs/1111024541

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(868.61 KB)
  • v2.1.0(Jan 19, 2021)

    NOTE: This update requires macOS 11.0 Big Sur The 1.0 series of Secretive will continue to receive security patches, but going forward, Secretive will require 11.0 and above. There is a final update for 1.0 available here which fixes a few bugs around updating and will let you ignore this release if you're not planning on upgrading to Big Sur.

    Features

    • Add support for SHA256 fingerprints (#198)
    • Add comment to public keys (#181)
    • Updater will now only prompt you to update if your OS is capable of running that version of Secretive (#203)
    • Updater will always pick the greatest eligible semantic version, instead of the "last published" version (#203)
    • Add Internet Access Policy (#199)

    Fixes

    • Fix arrow positioning in onboarding flow (#200)
    • Allow the app to run in ~/Applications without warning. (#178)

    Minimum macOS Version

    11.0.0

    Build

    https://github.com/maxgoedjen/secretive/actions/runs/494736918

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(860.43 KB)
  • v2.0.0(Nov 13, 2020)

    A big update for Big Sur!

    Features

    • A top-to-bottom redesign for Big Sur! (#134 #157)
    • Full support for Apple Silicon
    • Redesigned onboarding flow (#137 #50)
    • Specific instructions for zsh/bash/fish in onboarding (#131)
    • Improved readme for app setup (#161)
    • Show requesting app in Touch ID prompt (#142)
    • Lots of code cleanup around SwiftUI views (#133)
    • Show warning if app is not in /Applications (#77)

    Fixes

    • Fixes bugs around agent not launching properly in some circumstances (#96 #151 #169)
    • Fixes bug where electron-based apps would show as just "Electron" in notifications (#148)
    • Fixes bug where version comparison would incorrectly prompt update (#144)
    • Fixes bug where critical/regular notifications were using the same identifier (#135)

    Minimum macOS Version

    11.0.0

    Build

    https://github.com/maxgoedjen/secretive/actions/runs/361209406

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(821.68 KB)
  • v1.0.3(Nov 13, 2020)

    Bug fix release to address restarting agent after updating. NOTE: This is the final planned release for macOS 10.15 Catalina.

    Features

    This release does not contain any new features.

    Fixes

    • Fixes bug where users would not be able to ignore update prompts.
    • Fixes version check comparison (#144)

    Minimum macOS Version

    10.15.0

    Build

    https://github.com/maxgoedjen/secretive/actions/runs/361194612

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(529.16 KB)
  • v1.0.2(Apr 4, 2020)

    Bug fix release to address restarting agent after updating.

    Features

    This release does not contain any new features

    Fixes

    • Fixes bug where the agent would not be properly updated after the main app is updated (#85). This is fixed by restarting the agent after updating.

    Minimum macOS Version

    10.15.0

    Build

    https://github.com/maxgoedjen/secretive/actions/runs/70780144

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(550.14 KB)
  • v1.0.1(Apr 2, 2020)

    Bug fix release to address issues with signatures on common SSH servers.

    Features

    This release does not contain any new features

    Fixes

    • Fixes bug where authentication would fail against many common SSH servers (#82, thank you to @vordenken for the report, as well as everyone who contributed their logs)

    Minimum macOS Version

    10.15.0

    Build

    https://github.com/maxgoedjen/secretive/actions/runs/68865179

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(548.02 KB)
  • v1.0.0(Mar 26, 2020)

  • v0.5.1(Mar 24, 2020)

  • v0.5.0(Mar 22, 2020)

    Potential release candidate.

    Adds a help screen for no SE + no smart card case (#66) Adds copy button to shell config in setup (#51) Adds better notification copy (#68) Fixes framing issues where truncation would occur (#69) Adds notifications for updates being available (#70) Miscellaneous cleanup/unit tests

    Minimum macOS Version: 10.15.0 Build: https://github.com/maxgoedjen/secretive/actions/runs/60659200

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(542.04 KB)
  • v0.4.2(Mar 20, 2020)

  • v0.4.1(Mar 20, 2020)

    Rough fix for naming smart card if only one is present (#16) Add request chain signing validation (currently unused) Fixes bug where notification would be sent before singing was performed (#62) Adds about page (#40)

    Minimum macOS Version: 10.15.0 Build: https://github.com/maxgoedjen/secretive/actions/runs/59418691

    Source code(tar.gz)
    Source code(zip)
    Secretive.zip(481.63 KB)
  • v0.4.0(Mar 17, 2020)

  • v0.3.2(Mar 16, 2020)

  • v0.3.1(Mar 15, 2020)

  • v0.3.0(Mar 15, 2020)

  • v0.2.0(Mar 15, 2020)

  • v0.1.1(Mar 15, 2020)

Owner
Max Goedjen
Max Goedjen
An iOS App to generate phonetic keys for your Chinese contacts. Written in Swift.

An iOS App to add phonetic keys with Pinyin for Chinese(SC & TC) names. Your Contacts will be sorted by alphabet automatically even under English System.

iAugus 595 Dec 27, 2022
Thomas Grapperon 32 Dec 12, 2022
BRD - the simple and secure wallet for bitcoin, ethereum, and other digital assets

BRD is the simple and secure wallet for bitcoin, ethereum, and other digital assets. Today, BRD is one of the largest non-custodial mobile wallets used by over 6 million users and protects an estimated nearly $7B USD.

bread 647 Jan 7, 2023
Bither - a simple and secure Bitcoin wallet!

bither-ios Bither is a simple and secure Bitcoin wallet! You can find Bither on App Store. There is also an android version. Features HOT and COLD wal

null 261 Dec 23, 2022
In this mini app covered the concepts like basics of SwiftUI and Navigations and Animations and List with CRUD functions and MVVM and App Launch and App icons adding and also applied persistence using UserDefaults Concept.

TodoList In this application used the concepts from the beginner level project of SwiftUI_Evolve_1 The following concepts covered in this mini app Swi

Sivaram Yadav 2 Dec 4, 2021
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

Gabriel Denoni 11 Dec 27, 2021
This To-Do app was developed using Swift and SwiftUI and works on iOS, MacOS (Apple Silicon) and WatchOS. The tasks are kept on storage even when the app is restarted.

ToDo-SwiftUI This app has a lot of sentimental value for me, given that it helped me a lot to understand the process of doing an iOS app and became th

Augusto Galindo Ali 6 Jul 12, 2022
Todo is an iOS App written in Swift. This app is used for an online video training course. This app demonstrates how to use UITableViewController.

Todo Todo is an iOS App written in Swift. This app is used for an online video training course. This app demonstrates how to use UITableViewController

Jake Lin 273 Dec 29, 2022
Mahmoud-Abdelwahab 5 Nov 23, 2022
The app provides additional actions for the Shortcuts app on macOS and iOS.

Actions Supercharge your shortcuts The app provides additional actions for the Shortcuts app on macOS and iOS. Submit action idea (Submit an issue bef

Sindre Sorhus 1.2k Dec 29, 2022
A todo list iOS app developed with swift5 and coredata to persist data, this app help people organise their tasks on categories.

A todo list iOS app developed with swift5 and coredata to persist data, this app help people organise their tasks on categories. The app is simple, intuitive, and easy to use and update tasks informations.

null 1 Oct 10, 2022
Small app trying to recreate the Github's repos section from the iOS app with RxSwift and .nibs

Github Profile Repos Small app trying to recreate the Github's repos section from the iOS app with RxSwift and .nibs. This project is currently in pro

Leonardo 1 Apr 5, 2022
Porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI.

SwiftUI example app: Koober We're porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI and we are sharing the cod

raywenderlich 55 Dec 19, 2022
Quotes App is quotes browsing app which is built with Quotable Free API completely in SwiftUI.

Quotes App is quotes browsing app which is built with Quotable Free API completely in SwiftUI. You can watch the whole journey of building this

Dheeraj Kumar Sharma 32 Nov 22, 2022
SwiftUI App to view the App Activity Record from iOS 15

App Activity Viewer A viewer for the iOS 15 "Record App Activity" export. FAQ How do I create an App Activity Report? Go to the "Settings" app of your

Jannik Arndt 13 Nov 16, 2022
iOS app for Ribbit, Broker API Reference App

Ribbit Reference Implementation (iOS) The reference implementation for designing the iOS user interface of a broker-dealer trading application with th

Alpaca 23 Dec 14, 2022
The app demonstrates how to use Firebase in a SwiftUI iOS app

Firebase SwiftUIDemo app This app demonstrates how to use Firebase in a SwiftUI iOS app. Firebase Setup Go to firebase.com Click new project. Copy app

Andrew Gholson 0 Nov 28, 2021
Stocks-App - App that allows the user to track stocks of their choice

Stocks-App App that allows the user to track stocks of their choice (Coming soon

Eli Hartnett 0 Jul 9, 2022