Metadata-Version: 2.1
Name: openssh-key
Version: 0.3.0
Summary: Tools to deal with OpenSSH2 (RFC4716) keys
Project-URL: Homepage, https://github.com/valohai/openssh_key
Author: Valohai
Maintainer-email: Aarni Koskela <akx@iki.fi>
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.7
Provides-Extra: convert
Requires-Dist: cryptography; extra == 'convert'
Provides-Extra: dev
Requires-Dist: pytest-cov; extra == 'dev'
Description-Content-Type: text/markdown

# openssh_key

Tools to deal with OpenSSH2 (RFC4716) keys in as pure Python 3 as possible.

These key files are the default format generated by `ssh-keygen` since OpenSSH 7.8 (2018-08-24)
and can be recognized from their `-----BEGIN OPENSSH PRIVATE KEY-----` header.

If you need to simply convert one of these files into the "legacy" PEM format, you can do it using
a recent enough `ssh-keygen` – or you can use this library. In case you just want the conversion done,

```bash
ssh-keygen -e -m PEM -p -f my-openssh-format-private-key
```

will transmute `my-openssh-format-private-key` in-place into PEM.

## Limitations

- Encrypted OpenSSH private key files are not yet supported, and raise an error.
- Not all key formats supported by OpenSSH are supported; the widest support is for RSA keys.

## Requirements

- Python 3.7+

## Usage

Install the package into your environment using your favored tools.

If you need to be able to convert key data into PEM, also install `cryptography`
(or install this package with the `convert` extra, which depends on that module).

The basic API is provided via `openssh_key.OpenSSHKeyFile.parse_text()`, like so:

```python
from openssh_key import OpenSSHKeyFile

with open('my-openssh-format-private-key') as infp:
    kf = OpenSSHKeyFile.parse_text(infp)

for keypair in kf.decrypt_keypairs():
    print(keypair.public_key_string)  # as you'd find in `authorized_keys`

```

See the modules themselves and the tests for more.
