Skip to main content

A pythonic wrapper around pinentry for secure password input

Project description

PynEntry

A pythonic wrapper for pinentry

Written mostly to practice metaprogramming

credit to mijikai for a working example

Requires pinentry to be installed

convienience methods:

  • to quickly and simply get a password/pin from a user:

get_pin(description=None, prompt=None, timeout=0, display=None, global_grab=True)

  • to show and get a confirmation from a user:

get_confirm(description=None, timeout=0, display=None, global_grab=True)

  • to show a message to a user:

show_message(description=None, timeout=0, display=None, global_grab=True)

PynEntry class

The above methods instance and configure a PynEntry instance wich can be called and configured manually via attributes

the PynEntry class supports the following attributes:

  • description: Sets the descriptive text to display
  • prompt: Sets the text just before the passphrase entry (ex: "PASS:")
  • title: Sets the window title
  • ok_text: Sets the text shown in the "OK" button
  • cancel_text: Sets the text shown in the "Cancel" button
  • error_text: Sets the text in case of error before reprompt (Cleared after every get_pin() call)
  • tty_name: Chose the tty to use (set automatically)
  • tty_type: Change the tty type to use.
  • locale: Sets the locale to use (set automatically to current os locale)

NOTE: The PynEntry class uses the $PATH variable to find the pinentry executable, you can specify the location of the executable manually when you initialize like so: PynEntry(executable='/path/to/pinentry')

PynEntry is best used as a context manager to automatically kill the pinentry process when you are done.

Example:

import pynentry
pynentry.show_message('Hello there!')

with pynentry.PynEntry() as p:
    p.description = 'Enter a password.\n Choose Wisely!'
    p.prompt = 'PASS>'
    try:
        passwd = p.get_pin()
    except pynentry.PinEntryCancelled:
        print('Cancelled?! Goodbye.')
        exit()
    p.ok_text = 'yep!'
    p.cancel_text = 'nope!'
    p.description = f'CAN YOU CONFIRM YOUR SUPER SECRET PASSWORD IS {passwd}?'
    if p.get_confirm():
            print(f'password {passwd} saved!')
    else:
            print(f'Too bad, so sad')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pynentry-0.1.1.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

pynentry-0.1.1-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file pynentry-0.1.1.tar.gz.

File metadata

  • Download URL: pynentry-0.1.1.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for pynentry-0.1.1.tar.gz
Algorithm Hash digest
SHA256 da3e8413ba063d940e55e7d430cae2c30cd345d369f605e00cb99801740abe75
MD5 6020b1172052b8815fc6ca23edf2bce5
BLAKE2b-256 2619ed4e3e29cb2d82af10e4befc9ed992a92305900a725064d3294f0206ed86

See more details on using hashes here.

File details

Details for the file pynentry-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pynentry-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.4

File hashes

Hashes for pynentry-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5f703b8b2b41e7bb092fb681d77beaa2dd79e65c6b0f26898a4113c951ae1d60
MD5 941b1069f1a9babb337ec95c6e1ad451
BLAKE2b-256 66504862b90fdd977910ce4c5e210f9b70eb2227d503e962f83982c3f20582da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page