Repository files navigation

Authenticator

Two-Factor Authentication Client for iOS.

Build StatusCodecovLatest ReleaseMIT License

Authenticator is a simple, free, and open source two-factor authentication app. It helps keep your online accounts secure by generating unique one-time passwords, which you use in combination with your other passwords to log into supporting websites. The simple combination of the password in your head and the rotating passwords generated by the app make it much harder for anyone but you to access your accounts.

  • Easy: Simple setup via QR code, "otpauth://" URL, or manual entry
  • Secure: All data is stored in encrypted form on the iOS keychain
  • Compatible: Full support for time-based and counter-based one-time passwords as standardized in RFC 4226 and 6238
  • Off the Grid: The app never connects to the internet, and your secret keys never leave your device.

Screenshot of the Authenticator token listScreenshot of the Authenticator QR Code scannerScreenshot of the Authenticator token entry form

Getting Started

  1. Check out the latest version of the project:
git clone https://github.com/mattrubin/Authenticator.git
  1. In the Authenticator directory, check out the project's dependencies:
cd Authenticator
git submodule update --init --recursive
  1. Open the Authenticator.xcworkspace file.

If you open the .xcodeproj instead, the project will not be able to find its dependencies.

  1. Build and run the "Authenticator" scheme.

Managing Dependencies

Authenticator uses Carthage to manage its dependencies, but it does not currently use Carthage to build those dependencies. The dependency projects are checked out as submodules, are included in Authenticator.xcworkspace, and are built by Xcode as target dependencies of the Authenticator app.

To check out the dependencies, simply follow the "Getting Started" instructions above.

To update the dependencies, modify the Cartfile and run:

carthage update --no-build --use-submodules

License

This project is made available under the terms of the MIT License.

The modern Authenticator grew out of the abandoned source for Google Authenticator for iOS. The original Google code on which this project was based is licensed under the Apache License, Version 2.0.

About

Two-Factor Authentication Client for iOS

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Authenticator

Two-Factor Authentication Client for iOS.

Build StatusCodecovLatest ReleaseMIT License

Authenticator is a simple, free, and open source two-factor authentication app. It helps keep your online accounts secure by generating unique one-time passwords, which you use in combination with your other passwords to log into supporting websites. The simple combination of the password in your head and the rotating passwords generated by the app make it much harder for anyone but you to access your accounts.

  • Easy: Simple setup via QR code, "otpauth://" URL, or manual entry
  • Secure: All data is stored in encrypted form on the iOS keychain
  • Compatible: Full support for time-based and counter-based one-time passwords as standardized in RFC 4226 and 6238
  • Off the Grid: The app never connects to the internet, and your secret keys never leave your device.

Screenshot of the Authenticator token listScreenshot of the Authenticator QR Code scannerScreenshot of the Authenticator token entry form

Getting Started

  1. Check out the latest version of the project:
git clone https://github.com/mattrubin/Authenticator.git
  1. In the Authenticator directory, check out the project's dependencies:
cd Authenticator
git submodule update --init --recursive
  1. Open the Authenticator.xcworkspace file.

If you open the .xcodeproj instead, the project will not be able to find its dependencies.

  1. Build and run the "Authenticator" scheme.

Managing Dependencies

Authenticator uses Carthage to manage its dependencies, but it does not currently use Carthage to build those dependencies. The dependency projects are checked out as submodules, are included in Authenticator.xcworkspace, and are built by Xcode as target dependencies of the Authenticator app.

To check out the dependencies, simply follow the "Getting Started" instructions above.

To update the dependencies, modify the Cartfile and run:

carthage update --no-build --use-submodules

License

This project is made available under the terms of the MIT License.

The modern Authenticator grew out of the abandoned source for Google Authenticator for iOS. The original Google code on which this project was based is licensed under the Apache License, Version 2.0.

About

Two-Factor Authentication Client for iOS

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Authenticator

Two-Factor Authentication Client for iOS.

Build StatusCodecovLatest ReleaseMIT License

Authenticator is a simple, free, and open source two-factor authentication app. It helps keep your online accounts secure by generating unique one-time passwords, which you use in combination with your other passwords to log into supporting websites. The simple combination of the password in your head and the rotating passwords generated by the app make it much harder for anyone but you to access your accounts.

  • Easy: Simple setup via QR code, "otpauth://" URL, or manual entry
  • Secure: All data is stored in encrypted form on the iOS keychain
  • Compatible: Full support for time-based and counter-based one-time passwords as standardized in RFC 4226 and 6238
  • Off the Grid: The app never connects to the internet, and your secret keys never leave your device.

Screenshot of the Authenticator token listScreenshot of the Authenticator QR Code scannerScreenshot of the Authenticator token entry form

Getting Started

  1. Check out the latest version of the project:
git clone https://github.com/mattrubin/Authenticator.git
  1. In the Authenticator directory, check out the project's dependencies:
cd Authenticator
git submodule update --init --recursive
  1. Open the Authenticator.xcworkspace file.

If you open the .xcodeproj instead, the project will not be able to find its dependencies.

  1. Build and run the "Authenticator" scheme.

Managing Dependencies

Authenticator uses Carthage to manage its dependencies, but it does not currently use Carthage to build those dependencies. The dependency projects are checked out as submodules, are included in Authenticator.xcworkspace, and are built by Xcode as target dependencies of the Authenticator app.

To check out the dependencies, simply follow the "Getting Started" instructions above.

To update the dependencies, modify the Cartfile and run:

carthage update --no-build --use-submodules

License

This project is made available under the terms of the MIT License.

The modern Authenticator grew out of the abandoned source for Google Authenticator for iOS. The original Google code on which this project was based is licensed under the Apache License, Version 2.0.

About

Two-Factor Authentication Client for iOS

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Authenticator

Two-Factor Authentication Client for iOS.

Build StatusCodecovLatest ReleaseMIT License

Authenticator is a simple, free, and open source two-factor authentication app. It helps keep your online accounts secure by generating unique one-time passwords, which you use in combination with your other passwords to log into supporting websites. The simple combination of the password in your head and the rotating passwords generated by the app make it much harder for anyone but you to access your accounts.

  • Easy: Simple setup via QR code, "otpauth://" URL, or manual entry
  • Secure: All data is stored in encrypted form on the iOS keychain
  • Compatible: Full support for time-based and counter-based one-time passwords as standardized in RFC 4226 and 6238
  • Off the Grid: The app never connects to the internet, and your secret keys never leave your device.

Screenshot of the Authenticator token listScreenshot of the Authenticator QR Code scannerScreenshot of the Authenticator token entry form

Getting Started

  1. Check out the latest version of the project:
git clone https://github.com/mattrubin/Authenticator.git
  1. In the Authenticator directory, check out the project's dependencies:
cd Authenticator
git submodule update --init --recursive
  1. Open the Authenticator.xcworkspace file.

If you open the .xcodeproj instead, the project will not be able to find its dependencies.

  1. Build and run the "Authenticator" scheme.

Managing Dependencies

Authenticator uses Carthage to manage its dependencies, but it does not currently use Carthage to build those dependencies. The dependency projects are checked out as submodules, are included in Authenticator.xcworkspace, and are built by Xcode as target dependencies of the Authenticator app.

To check out the dependencies, simply follow the "Getting Started" instructions above.

To update the dependencies, modify the Cartfile and run:

carthage update --no-build --use-submodules

License

This project is made available under the terms of the MIT License.

The modern Authenticator grew out of the abandoned source for Google Authenticator for iOS. The original Google code on which this project was based is licensed under the Apache License, Version 2.0.

About

Two-Factor Authentication Client for iOS

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Authenticator

Two-Factor Authentication Client for iOS.

Build StatusCodecovLatest ReleaseMIT License

Authenticator is a simple, free, and open source two-factor authentication app. It helps keep your online accounts secure by generating unique one-time passwords, which you use in combination with your other passwords to log into supporting websites. The simple combination of the password in your head and the rotating passwords generated by the app make it much harder for anyone but you to access your accounts.

  • Easy: Simple setup via QR code, "otpauth://" URL, or manual entry
  • Secure: All data is stored in encrypted form on the iOS keychain
  • Compatible: Full support for time-based and counter-based one-time passwords as standardized in RFC 4226 and 6238
  • Off the Grid: The app never connects to the internet, and your secret keys never leave your device.

Screenshot of the Authenticator token listScreenshot of the Authenticator QR Code scannerScreenshot of the Authenticator token entry form

Getting Started

  1. Check out the latest version of the project:
git clone https://github.com/mattrubin/Authenticator.git
  1. In the Authenticator directory, check out the project's dependencies:
cd Authenticator
git submodule update --init --recursive
  1. Open the Authenticator.xcworkspace file.

If you open the .xcodeproj instead, the project will not be able to find its dependencies.

  1. Build and run the "Authenticator" scheme.

Managing Dependencies

Authenticator uses Carthage to manage its dependencies, but it does not currently use Carthage to build those dependencies. The dependency projects are checked out as submodules, are included in Authenticator.xcworkspace, and are built by Xcode as target dependencies of the Authenticator app.

To check out the dependencies, simply follow the "Getting Started" instructions above.

To update the dependencies, modify the Cartfile and run:

carthage update --no-build --use-submodules

License

This project is made available under the terms of the MIT License.

The modern Authenticator grew out of the abandoned source for Google Authenticator for iOS. The original Google code on which this project was based is licensed under the Apache License, Version 2.0.

About

Two-Factor Authentication Client for iOS

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Authenticator

Two-Factor Authentication Client for iOS.

Build StatusCodecovLatest ReleaseMIT License

Authenticator is a simple, free, and open source two-factor authentication app. It helps keep your online accounts secure by generating unique one-time passwords, which you use in combination with your other passwords to log into supporting websites. The simple combination of the password in your head and the rotating passwords generated by the app make it much harder for anyone but you to access your accounts.

  • Easy: Simple setup via QR code, "otpauth://" URL, or manual entry
  • Secure: All data is stored in encrypted form on the iOS keychain
  • Compatible: Full support for time-based and counter-based one-time passwords as standardized in RFC 4226 and 6238
  • Off the Grid: The app never connects to the internet, and your secret keys never leave your device.

Screenshot of the Authenticator token listScreenshot of the Authenticator QR Code scannerScreenshot of the Authenticator token entry form

Getting Started

  1. Check out the latest version of the project:
git clone https://github.com/mattrubin/Authenticator.git
  1. In the Authenticator directory, check out the project's dependencies:
cd Authenticator
git submodule update --init --recursive
  1. Open the Authenticator.xcworkspace file.

If you open the .xcodeproj instead, the project will not be able to find its dependencies.

  1. Build and run the "Authenticator" scheme.

Managing Dependencies

Authenticator uses Carthage to manage its dependencies, but it does not currently use Carthage to build those dependencies. The dependency projects are checked out as submodules, are included in Authenticator.xcworkspace, and are built by Xcode as target dependencies of the Authenticator app.

To check out the dependencies, simply follow the "Getting Started" instructions above.

To update the dependencies, modify the Cartfile and run:

carthage update --no-build --use-submodules

License

This project is made available under the terms of the MIT License.

The modern Authenticator grew out of the abandoned source for Google Authenticator for iOS. The original Google code on which this project was based is licensed under the Apache License, Version 2.0.

About

Two-Factor Authentication Client for iOS

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Authenticator

Two-Factor Authentication Client for iOS.

Build StatusCodecovLatest ReleaseMIT License

Authenticator is a simple, free, and open source two-factor authentication app. It helps keep your online accounts secure by generating unique one-time passwords, which you use in combination with your other passwords to log into supporting websites. The simple combination of the password in your head and the rotating passwords generated by the app make it much harder for anyone but you to access your accounts.

  • Easy: Simple setup via QR code, "otpauth://" URL, or manual entry
  • Secure: All data is stored in encrypted form on the iOS keychain
  • Compatible: Full support for time-based and counter-based one-time passwords as standardized in RFC 4226 and 6238
  • Off the Grid: The app never connects to the internet, and your secret keys never leave your device.

Screenshot of the Authenticator token listScreenshot of the Authenticator QR Code scannerScreenshot of the Authenticator token entry form

Getting Started

  1. Check out the latest version of the project:
git clone https://github.com/mattrubin/Authenticator.git
  1. In the Authenticator directory, check out the project's dependencies:
cd Authenticator
git submodule update --init --recursive
  1. Open the Authenticator.xcworkspace file.

If you open the .xcodeproj instead, the project will not be able to find its dependencies.

  1. Build and run the "Authenticator" scheme.

Managing Dependencies

Authenticator uses Carthage to manage its dependencies, but it does not currently use Carthage to build those dependencies. The dependency projects are checked out as submodules, are included in Authenticator.xcworkspace, and are built by Xcode as target dependencies of the Authenticator app.

To check out the dependencies, simply follow the "Getting Started" instructions above.

To update the dependencies, modify the Cartfile and run:

carthage update --no-build --use-submodules

License

This project is made available under the terms of the MIT License.

The modern Authenticator grew out of the abandoned source for Google Authenticator for iOS. The original Google code on which this project was based is licensed under the Apache License, Version 2.0.

About

Two-Factor Authentication Client for iOS

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Authenticator

Two-Factor Authentication Client for iOS.

Build StatusCodecovLatest ReleaseMIT License

Authenticator is a simple, free, and open source two-factor authentication app. It helps keep your online accounts secure by generating unique one-time passwords, which you use in combination with your other passwords to log into supporting websites. The simple combination of the password in your head and the rotating passwords generated by the app make it much harder for anyone but you to access your accounts.

  • Easy: Simple setup via QR code, "otpauth://" URL, or manual entry
  • Secure: All data is stored in encrypted form on the iOS keychain
  • Compatible: Full support for time-based and counter-based one-time passwords as standardized in RFC 4226 and 6238
  • Off the Grid: The app never connects to the internet, and your secret keys never leave your device.

Screenshot of the Authenticator token listScreenshot of the Authenticator QR Code scannerScreenshot of the Authenticator token entry form

Getting Started

  1. Check out the latest version of the project:
git clone https://github.com/mattrubin/Authenticator.git
  1. In the Authenticator directory, check out the project's dependencies:
cd Authenticator
git submodule update --init --recursive
  1. Open the Authenticator.xcworkspace file.

If you open the .xcodeproj instead, the project will not be able to find its dependencies.

  1. Build and run the "Authenticator" scheme.

Managing Dependencies

Authenticator uses Carthage to manage its dependencies, but it does not currently use Carthage to build those dependencies. The dependency projects are checked out as submodules, are included in Authenticator.xcworkspace, and are built by Xcode as target dependencies of the Authenticator app.

To check out the dependencies, simply follow the "Getting Started" instructions above.

To update the dependencies, modify the Cartfile and run:

carthage update --no-build --use-submodules

License

This project is made available under the terms of the MIT License.

The modern Authenticator grew out of the abandoned source for Google Authenticator for iOS. The original Google code on which this project was based is licensed under the Apache License, Version 2.0.

About

Two-Factor Authentication Client for iOS

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages