The cl-ssh-keys Reference Manual

This is the cl-ssh-keys Reference Manual, version 0.7.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 15:44:27 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 cl-ssh-keys

Common Lisp system for generating and parsing of OpenSSH keys

Long Name

cl-ssh-keys

Maintainer

Marin Atanasov Nikolov <>

Author

Marin Atanasov Nikolov <>

Home Page

https://github.com/dnaeon/cl-ssh-keys

Source Control

https://github.com/dnaeon/cl-ssh-keys

Bug Tracker

https://github.com/dnaeon/cl-ssh-keys

License

BSD 2-Clause

Long Description

## cl-ssh-keys

‘cl-ssh-keys‘ is a Common Lisp system, which provides the following
features.

* Decode OpenSSH public keys as defined in [RFC 4253][RFC 4253],
section 6.6.
* Decode OpenSSH private private keys as defined in
[PROTOCOL.key][PROTOCOL.key]
* Generate new private/public key pairs in OpenSSH compatible
binary format.

## Requirements

* [Quicklisp][Quicklisp]

## Installation

Clone the [cl-ssh-keys][cl-ssh-keys] repo in
your [Quicklisp local-projects
directory][Quicklisp FAQ].

“‘ shell
git clone https://github.com/dnaeon/cl-ssh-keys.git
“‘

Load the system.

“‘ common-lisp
CL-USER> (ql:quickload :cl-ssh-keys)
“‘

## Supported Key Types

The following public and private key pairs can be decoded, encoded and
generated by ‘cl-ssh-keys‘.

| Type | Status |
|———|———–|
| RSA | Supported |
| DSA | Supported |
| ED25519 | Supported |
| ECDSA | Supported |

In addition to the public keys listed above the following certificate
key types are supported.

| Type | Status |
|——————————————|———–|
| ssh-rsa-cert-v01@openssh.com | Supported |
| ssh-dss-cert-v01@openssh.com | Supported |
| ecdsa-sha2-nistp256-cert-v01@openssh.com | Supported |
| ecdsa-sha2-nistp384-cert-v01@openssh.com | Supported |
| ecdsa-sha2-nistp521-cert-v01@openssh.com | Supported |
| ssh-ed25519-cert-v01@openssh.com | Supported |

## Usage

The following section provides various examples showing you how to decode,
encode, and generate new OpenSSH private and public key pairs.

For additional examples, make sure to check the [test
suite](./t/test-suite.lisp).

### Public keys

A public key can be parsed from a given string using the
‘SSH-KEYS:PARSE-PUBLIC-KEY‘ function, or from a file using the
‘SSH-KEYS:PARSE-PUBLIC-KEY-FILE‘ function.

The public key may be a regular public key (e.g. RSA, DSA, etc.), or
it could be an [OpenSSH Certificate
Key](https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.certkeys).

“‘ common-lisp
CL-USER> (defparameter *public-key*
(ssh-keys:parse-public-key-file #P"~/.ssh/id_rsa.pub"))
*PUBLIC-KEY*
“‘

You can retrieve the comment associated with a public key by using the
‘SSH-KEYS:KEY-COMMENT‘ accessor.

“‘ common-lisp
CL-USER> (ssh-keys:key-comment *public-key*)
"john.doe@localhost"
“‘

The key kind can be retrieved using ‘SSH-KEYS:KEY-KIND‘.

“‘ common-lisp
CL-USER> (ssh-keys:key-kind *public-key*)
(:NAME "ssh-rsa" :PLAIN-NAME "ssh-rsa" :SHORT-NAME "RSA" :ID :SSH-RSA :IS-CERT NIL)
“‘

The number of bits for a key can be retrieved using the
‘SSH-KEYS:KEY-BITS‘ generic function, e.g.

“‘ common-lisp
CL-USER> (ssh-keys:key-bits *public-key*)
3072
“‘

‘SSH-KEYS:WITH-PUBLIC-KEY‘ and ‘SSH-KEYS:WITH-PUBLIC-KEY-FILE‘
are convenient macros when working with public keys, e.g.

“‘ common-lisp
CL-USER> (ssh-keys:with-public-key-file (key #P"~/.ssh/id_rsa.pub")
(format t "Comment: ~a~%" (ssh-keys:key-comment key))
(format t "MD5 fingerprint: ~a~%" (ssh-keys:fingerprint :md5 key))
(format t "Number of bits: ~a~%" (ssh-keys:key-bits key)))
Comment: john.doe@localhost
MD5 fingerprint: 04:02:4b:b2:43:39:a4:8e:89:47:49:6f:30:78:94:1e
Number of bits: 3072
NIL
“‘

### Private keys

A private keys can be parsed using the ‘SSH-KEYS:PARSE-PRIVATE-KEY‘
function, which takes a string representing a private key in [OpenSSH
private key format][PROTOCOL.key], or you can use the
‘SSH-KEYS:PARSE-PRIVATE-KEY-FILE‘ function, e.g.

“‘ common-lisp
CL-USER> (defparameter *private-key*
(ssh-keys:parse-private-key-file #P"~/.ssh/id_rsa"))
*PRIVATE-KEY*
“‘

Key kind, comment and number of bits can be retrieved using
‘SSH-KEYS:KEY-KIND‘, ‘SSH-KEYS:KEY-COMMENT‘ and ‘SSH-KEYS:KEY-BITS‘,
similarly to the way you would for public keys, e.g.

“‘ common-lisp
CL-USER> (ssh-keys:key-kind *private-key*)
(:NAME "ssh-rsa" :PLAIN-NAME "ssh-rsa" :SHORT-NAME "RSA" :ID :SSH-RSA :IS-CERT NIL)
CL-USER> (ssh-keys:key-comment *private-key*)
"john.doe@localhost"
CL-USER> (ssh-keys:key-bits *private-key*)
3072
“‘

OpenSSH private keys embed the public key within the binary blob of
the private key. From a private key you can get the embedded public
key using ‘SSH-KEYS:EMBEDDED-PUBLIC-KEY‘, e.g.

“‘ common-lisp
CL-USER> (ssh-keys:embedded-public-key *private-key*)
#<CL-SSH-KEYS:RSA-PUBLIC-KEY {100619EAB3}>
“‘

You can also use the ‘SSH-KEYS:WITH-PRIVATE-KEY‘ and
‘SSH-KEYS:WITH-PRIVATE-KEY-FILE‘ macros when working with private
keys.

“‘ common-lisp
CL-USER> (ssh-keys:with-private-key-file (key #P"~/.ssh/id_rsa")
(format t "Comment: ~a~%" (ssh-keys:key-comment key))
(format t "MD5 fingerprint: ~a~%" (ssh-keys:fingerprint :md5 key)))
Comment: john.doe@localhost
MD5 fingerprint: 04:02:4b:b2:43:39:a4:8e:89:47:49:6f:30:78:94:1e
“‘

### Encrypted keys

In order to parse an encrypted private key you need to provide a
passphrase, e.g.

“‘ common-lisp
CL-USER> (ssh-keys:with-private-key-file (key #P"~/.ssh/id_rsa" :passphrase "my-secret-password")
(ssh-keys:key-cipher-name key))
"aes256-ctr"
“‘

### Changing passphrase of an encrypted key

The passphrase for an encrypted private key can be changed by setting
a new value for the passphrase using the ‘SSH-KEYS:KEY-PASSPHRASE‘
accessor.

This example changes the passphrase for a given key and saves it on
the filesystem.

“‘ common-lisp
CL-USER> (ssh-keys:with-private-key-file (key #P"~/.ssh/id_rsa" :passphrase "OLD-PASSPHRASE")
(setf (ssh-keys:key-passphrase key) "MY-NEW-PASSPHRASE")
(ssh-keys:write-key-to-path key #P"~/.id_rsa-new-passphrase"))
“‘

### Setting passphrase for an existing un-encrypted key

In order to set a passphrase for an existing un-encrypted private key,
simply set a passphrase using the ‘SSH-KEYS:KEY-PASSPHRASE‘ accessor,
e.g.

“‘ common-lisp
CL-USER> (ssh-keys:with-private-key-file (key #P"~/.ssh/id_rsa")
(setf (ssh-keys:key-passphrase key) "my-secret-password")
(ssh-keys:write-key-to-path key #P"~/.id_rsa-encrypted"))
“‘

### Removing passphrase of an encrypted key

You can remove the passphrase of a private key and make it
un-encrypted by setting the passphrase to ‘nil‘.

“‘ common-lisp
CL-USER> (ssh-keys:with-private-key-file (key #P"~/.ssh/id_rsa" :passphrase "PASSPHRASE")
(setf (ssh-keys:key-passphrase key) nil)
(ssh-keys:write-key-to-path key #P"~/.id_rsa-unencrypted"))
“‘

### Changing the cipher of an encrypted key

The cipher to be used for encryption of a private key can be set by
using the ‘SSH-KEYS:KEY-CIPHER-NAME‘ accessor. The value should be one
of the known and supported ciphers as returned by
‘SSH-KEYS:GET-ALL-CIPHER-NAMES‘.

First, list the known cipher names.

“‘ common-lisp
CL-USER> (ssh-keys:get-all-cipher-names)
("3des-cbc" "aes128-cbc" "aes192-cbc" "aes256-cbc" "aes128-ctr" "aes192-ctr" "aes256-ctr" "none")
“‘

Then set a new cipher.

“‘ common-lisp
CL-USER> (ssh-keys:with-private-key-file (key #P"~/.ssh/id_rsa" :passphrase "PASSPHRASE")
(setf (ssh-keys:key-cipher-name key) "3des-cbc")
(ssh-keys:write-key-to-path key #P"~/.id_rsa-3des-cbc"))
“‘

### Changing the KDF number of iterations

By default ‘ssh-keygen(1)‘ and ‘cl-ssh-keys‘ will use ‘16‘ rounds of
iterations in order to produce an encryption key. You can set this to
a higher value, if needed, which would help against brute-force
attacks.

“‘ common-lisp
CL-USER> (ssh-keys:with-private-key-file (key #P"~/.ssh/id_rsa" :passphrase "PASSPHRASE")
(setf (ssh-keys:key-kdf-rounds key) 32)
(ssh-keys:write-key-to-path key #P"~/.id_rsa-stronger"))
“‘

### Fingerprints

Key fingerprints can be generated using the ‘SSH-KEYS:FINGERPRINT‘
generic function.

The following examples show how to generate the SHA-256, SHA-1 and MD5
fingerprints of a given public key.

“‘ common-lisp
CL-USER> (ssh-keys:fingerprint :sha256 *public-key*)
"VmYpd+5gvA5Cj57ZZcI8lnFMNNic6jpnnBd0WoNG1F8"
CL-USER> (ssh-keys:fingerprint :sha1 *public-key*)
"RnLPLG93GrABjOqc6xOvVFpQXsc"
CL-USER> (ssh-keys:fingerprint :md5 *public-key*)
"04:02:4b:b2:43:39:a4:8e:89:47:49:6f:30:78:94:1e"
“‘

Fingerprints of private keys are computed against the embedded public
key.

### Writing Keys

A public and private key can be written in its text representation
using the ‘SSH-KEYS:WRITE-KEY‘ generic function.

“‘ common-lisp
CL-USER> (ssh-keys:write-key *public-key*)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCsngzCcay+lQ+34qUeUSH2m1ZYW9B0a2rxpMmvYFcOyL/hRPJwv8XO89T0+HQIZRC+xlM3BSqdFGs+B58MYXPvo3H+p00CJN8tUjvC3VD74kiXSNxIyhBpKCY1s58RxnWS/6bPQIYfnCVBiQZnkNe1T3isxND1Y71TnbSz5QN2xBkAtiGPH0dPM89yWbZpTjTCaIOfyZn2fBBsmp0zUgEJ7o9W9Lrxs1f0Pn+bZ4PqFSEUzlub7mAQ+RpwgGeLeWIFz+o6KQJPFiuRgzQU6ZsY+wjorVefzgeqpRiWGw/bEyUDck09B4B0IWoTtIiKRzd635nOo7Lz/1XgaMZ60WZD9T/labEWcKmtp4Y7NoCkep0DyYyoAgWrco4FD1r0g4WcVbsJQt8HzRy9UaHlh6YPY/xkk0bSiljpygEiT48FxniqE+6HY+7SbC1wz5QThY+UsIiDgFcg3BljskfT8Il3hateXI2wEXqww4+a+DxcHzypclYorbQKUzdzNLZRBNk= john.doe@localhost NIL
“‘

Another example, this time using a private key.

“‘ common-lisp
CL-USER> (ssh-keys:write-key *private-key*)
—–BEGIN OPENSSH PRIVATE KEY—–
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEArJ4MwnGsvpUPt+KlHlEh9ptWWFvQdGtq8aTJr2BXDsi/4UTycL/F
zvPU9Ph0CGUQvsZTNwUqnRRrPgefDGFz76Nx/qdNAiTfLVI7wt1Q++JIl0jcSMoQaSgmNb
OfEcZ1kv+mz0CGH5wlQYkGZ5DXtU94rMTQ9WO9U520s+UDdsQZALYhjx9HTzPPclm2aU40
wmiDn8mZ9nwQbJqdM1IBCe6PVvS68bNX9D5/m2eD6hUhFM5bm+5gEPkacIBni3liBc/qOi
kCTxYrkYM0FOmbGPsI6K1Xn84HqqUYlhsP2xMlA3JNPQeAdCFqE7SIikc3et+ZzqOy8/9V
4GjGetFmQ/U/5WmxFnCpraeGOzaApHqdA8mMqAIFq3KOBQ9a9IOFnFW7CULfB80cvVGh5Y
emD2P8ZJNG0opY6coBIk+PBcZ4qhPuh2Pu0mwtcM+UE4WPlLCIg4BXINwZY7JH0/CJd4Wr
XlyNsBF6sMOPmvg8XB88qXJWKK20ClM3czS2UQTZAAAFkJkcYpSZHGKUAAAAB3NzaC1yc2
EAAAGBAKyeDMJxrL6VD7fipR5RIfabVlhb0HRravGkya9gVw7Iv+FE8nC/xc7z1PT4dAhl
EL7GUzcFKp0Uaz4Hnwxhc++jcf6nTQIk3y1SO8LdUPviSJdI3EjKEGkoJjWznxHGdZL/ps
9Ahh+cJUGJBmeQ17VPeKzE0PVjvVOdtLPlA3bEGQC2IY8fR08zz3JZtmlONMJog5/JmfZ8
EGyanTNSAQnuj1b0uvGzV/Q+f5tng+oVIRTOW5vuYBD5GnCAZ4t5YgXP6jopAk8WK5GDNB
Tpmxj7COitV5/OB6qlGJYbD9sTJQNyTT0HgHQhahO0iIpHN3rfmc6jsvP/VeBoxnrRZkP1
P+VpsRZwqa2nhjs2gKR6nQPJjKgCBatyjgUPWvSDhZxVuwlC3wfNHL1RoeWHpg9j/GSTRt
KKWOnKASJPjwXGeKoT7odj7tJsLXDPlBOFj5SwiIOAVyDcGWOyR9PwiXeFq15cjbARerDD
j5r4PFwfPKlyViittApTN3M0tlEE2QAAAAMBAAEAAAGBAJT3DFHdYdNSti7d09sW7zVvlp
NIINvnO3Jv4HGNtXOXwSd5pbOxe9Z+TEBgDVqVRV8trfCkb8MBNQ9h6lr32uJqbdzyqh14
jnUBK3ueHN5SyIxuH1RdtM3bDSZ47YScfSivoVfn+hdbXDdzNei4cb8RZzXJ3/505ZU8Ww
6IS3X6Aw2/H7TwrExojNTFIQs9p4BCS5zgkRLKvC3NPG5mjWjxzBehuZcOS5AHQ35sVcX0
GAlpkFs/2v2qy6tc1H7j703RsrlJtXvLQ2fUGVXdZflMSlX1te+T+KM5T1unUS5fPFWfLj
U+bQK7KkY48ILVQkrFLGg+8Wj77MTS3AGmQ2MnHzaK0+Cd+HAqUfRIDZZgG/5/T8nIsra/
9AG2ZIvOTSZsLqht4TkfZnp6hJm+MKmpJ9F40NnzGtYNso6GD/aqkDxubKf4uoOEW9cbOO
s5i5bvvZSgxQ1sNees0/nBBYsRhLfYkC41EcCRlhQIcvHA1IFRj5Un0gowA8vtCGyRJQAA
AMEAuPkxyvsmPYIi0SbVNVMdEpaJ3UHTJOLL6b8QDPYsiuYG0DZfHgL1MSbgIrxUKI4Xi1
oEROgfGHnhnUd7mGbwUF/K0KnYJUMlV0W8Jfz94E7+cQiqgvvWD2JZcuvXP5Dg89whsFFy
pinpkrWe8gDmqo/LKzAEBIFAuNVarD7/cIKTpW+pdo7WfnYsXqTgyZ5NO8IwkTXho6NTRI
s/Z7o7UCXX2XnUcQxWOv+L5aw7w4dBdNZpN7XBQCOfOo32SDpQAAAAwQDYmJZrTrb5w5N+
o/j9nhcrY1ZbJNUbpx1lrV/r1GCGX0f3l2ztjjzyttP+WEggPypMB5BC+S6d67PEJeI988
OanzMx/r37tfFbMMtE5YNx1BwyL1Z1x/KYugReibWclHBAa+b+TCFSfJyf1I5NABsgjQ2h
4uVy1pRWcly4Cfu0NWRJo23waTzvODPWjUz1EFIcytpKvYxwbcvYOVEY5ie9+oXhVxNm6U
ZQTLMtPWNUZGHt3xOrGhrf4M7EJRLUBe8AAADBAMwFRHMyDsyjzlFZA1gL42xO4gCGwjJq
IZu+X6h1PV71IYyyY2XV9p6Ir9UZFeFs73wvO7I+OWW6POIKMKVOjjWTU5KD3+kSI2THWq
j/Cf8gr/aLqHOKa6X63meJCPSKC5CtHFchvAPvcUhfLLv7MfHJfwFU4vrBJh5w4h0TXKCU
8hIzudC5tinyYsDgv0i0keWxWAmKMxSxsfIQkqYtqMHc4E9EZ1baUsvAj8VolJcKn0Ocj9
tvLra3KkT8SoqptwAAABJqb2huLmRvZUBsb2NhbGhvc3QBAgMEBQYH
—–END OPENSSH PRIVATE KEY—–
NIL
“‘

The ‘SSH-KEYS:WRITE-KEY‘ generic function takes an optional stream
parameter, so you can write your keys to a given stream, if needed.

“‘ common-lisp
CL-USER> (with-open-file (out #P"my-rsa-public-key" :direction :output)
(ssh-keys:write-key *public-key* out))
NIL
“‘

‘SSH-KEYS:WRITE-KEY-TO-PATH‘ is a convenience function you can use to
write keys to a given path, e.g.

“‘ common-lisp
CL-USER> (ssh-keys:write-key-to-path (key #P"my-rsa-public-key")
“‘

### Generating new private/public key pairs

The ‘SSH-KEYS:GENERATE-KEY-PAIR‘ generic function creates a new
private/public key pair of a given kind.

The generated keys are identical with what ‘ssh-keygen(1)‘ would
produce and you can use them to authenticate to remote systems.

The following example creates an RSA private/public key pair, and
saves the keys on the file system.

“‘ common-lisp
CL-USER> (multiple-value-bind (priv-key pub-key) (ssh-keys:generate-key-pair :rsa)
(ssh-keys:write-key-to-path priv-key #P"~/.ssh/my-priv-rsa-key")
(ssh-keys:write-key-to-path pub-key #P"~/.ssh/my-pub-rsa-key.pub"))
NIL
“‘

The following example generates DSA private/public key pairs.

“‘ common-lisp
CL-USER> (ssh-keys:generate-key-pair :dsa)
“‘

This example shows how to generate Ed25519 private/public key pairs.

“‘ common-lisp
CL-USER> (ssh-keys:generate-key-pair :ed25519)
“‘

ECDSA keys can be generated using NIST P-256, NIST P-384 or NIST P-521
curves. The following examples show how to create 256, 384 and 521 bit
ECDSA keys.

“‘ common-lisp
CL-USER> (ssh-keys:generate-key-pair :ecdsa-nistp256)
CL-USER> (ssh-keys:generate-key-pair :ecdsa-nistp384)
CL-USER> (ssh-keys:generate-key-pair :ecdsa-nistp521)
“‘

## Tests

Tests are provided as part of the ‘cl-ssh-keys.test‘ system.

The following Common Lisp implementations have been tested and are
known to work.

* [SBCL](http://www.sbcl.org)
* [CCL](https://ccl.clozure.com)

In order to run the tests you can evaluate the following expressions.

“‘ common-lisp
CL-USER> (ql:quickload :cl-ssh-keys.test)
CL-USER> (asdf:test-system :cl-ssh-keys.test)
“‘

Or you can run the tests in a Docker container instead.

First, build the Docker image.

“‘ shell
docker build -t cl-ssh-keys .
“‘

Run the tests.

“‘ shell
docker run –rm cl-ssh-keys
“‘

## Contributing

‘cl-ssh-keys‘ is hosted on [Github][cl-ssh-keys]. Please contribute by
reporting issues, suggesting features or by sending patches using pull
requests.

## Authors

* Marin Atanasov Nikolov (dnaeon@gmail.com)

## License

This project is Open Source and licensed under the [BSD
License][BSD License].

[RFC 4253]: https://tools.ietf.org/html/rfc4253
[PROTOCOL.key]: https://cvsweb.openbsd.org/src/usr.bin/ssh/PROTOCOL.key?annotate=HEAD
[Quicklisp]: https://www.quicklisp.org/beta/
[Quicklisp FAQ]: https://www.quicklisp.org/beta/faq.html
[cl-ssh-keys]: https://github.com/dnaeon/cl-ssh-keys
[BSD License]: http://opensource.org/licenses/BSD-2-Clause

Version

0.7.0

Dependencies
  • cl-rfc4251 (system).
  • ironclad (system).
  • uiop (system).
  • alexandria (system).
  • cl-base64 (system).
Source

cl-ssh-keys.asd.

Child Components

3 Modules

Modules are listed depth-first from the system components tree.


3.1 cl-ssh-keys/core

Source

cl-ssh-keys.asd.

Parent Component

cl-ssh-keys (system).

Child Components

3.2 cl-ssh-keys/keys

Dependency

core (module).

Source

cl-ssh-keys.asd.

Parent Component

cl-ssh-keys (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


4.1 Lisp


4.1.1 cl-ssh-keys/cl-ssh-keys.asd

Source

cl-ssh-keys.asd.

Parent Component

cl-ssh-keys (system).

ASDF Systems

cl-ssh-keys.

Packages

cl-ssh-keys-system.


4.1.2 cl-ssh-keys/core/package.lisp

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Packages

cl-ssh-keys.


4.1.3 cl-ssh-keys/core/base.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface

4.1.4 cl-ssh-keys/core/rfc8017.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface

4.1.5 cl-ssh-keys/core/generics.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface

4.1.6 cl-ssh-keys/core/public-key.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface

4.1.7 cl-ssh-keys/core/private-key.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.8 cl-ssh-keys/core/conditions.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface
Internals

4.1.9 cl-ssh-keys/core/key-types.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface

4.1.10 cl-ssh-keys/core/signature.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface
Internals

*signature-types* (special variable).


4.1.11 cl-ssh-keys/core/ciphers.lisp

Dependency

package.lisp (file).

Source

cl-ssh-keys.asd.

Parent Component

core (module).

Public Interface
Internals

get-cipher-for-encryption/decryption (function).


4.1.12 cl-ssh-keys/keys/rsa.lisp

Source

cl-ssh-keys.asd.

Parent Component

keys (module).

Public Interface

4.1.13 cl-ssh-keys/keys/dsa.lisp

Source

cl-ssh-keys.asd.

Parent Component

keys (module).

Public Interface

4.1.14 cl-ssh-keys/keys/ed25519.lisp

Source

cl-ssh-keys.asd.

Parent Component

keys (module).

Public Interface
Internals

4.1.15 cl-ssh-keys/keys/ecdsa-nistp256.lisp

Source

cl-ssh-keys.asd.

Parent Component

keys (module).

Public Interface

4.1.16 cl-ssh-keys/keys/ecdsa-nistp384.lisp

Source

cl-ssh-keys.asd.

Parent Component

keys (module).

Public Interface

4.1.17 cl-ssh-keys/keys/ecdsa-nistp521.lisp

Source

cl-ssh-keys.asd.

Parent Component

keys (module).

Public Interface

4.1.18 cl-ssh-keys/keys/cert-key.lisp

Source

cl-ssh-keys.asd.

Parent Component

keys (module).

Public Interface
Internals

*ssh-cert-options* (special variable).


5 Packages

Packages are listed by definition order.


5.1 cl-ssh-keys

Source

package.lisp.

Nickname

ssh-keys

Use List

common-lisp.

Public Interface
Internals

5.2 cl-ssh-keys-system

Source

cl-ssh-keys.asd.

Use List
  • asdf/interface.
  • common-lisp.

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Public Interface


6.1.1 Constants

Constant: +kdf-salt-size+

Salt size in bytes

Package

cl-ssh-keys.

Source

private-key.lisp.

Constant: +nistp256-identifier+

NIST name of the curve

Package

cl-ssh-keys.

Source

ecdsa-nistp256.lisp.

Constant: +nistp384-identifier+

NIST name of the curve

Package

cl-ssh-keys.

Source

ecdsa-nistp384.lisp.

Constant: +nistp521-identifier+

NIST name of the curve

Package

cl-ssh-keys.

Source

ecdsa-nistp521.lisp.

Constant: +private-key-auth-magic+

OpenSSH private key AUTH_MAGIC header

Package

cl-ssh-keys.

Source

private-key.lisp.

Constant: +private-key-mark-begin+

Beginning marker for OpenSSH private keys

Package

cl-ssh-keys.

Source

private-key.lisp.

Constant: +private-key-mark-end+

Ending marker for OpenSSH private keys

Package

cl-ssh-keys.

Source

private-key.lisp.

Constant: +ssh-cert-max-valid-to+

Max expiry date for a certificate

Package

cl-ssh-keys.

Source

cert-key.lisp.

Constant: +ssh-cert-type-host+

Indicates a host certificate

Package

cl-ssh-keys.

Source

cert-key.lisp.

Constant: +ssh-cert-type-user+

Indicates a user certificate

Package

cl-ssh-keys.

Source

cert-key.lisp.


6.1.2 Special variables

Special Variable: *ciphers*

Various ciphers used by OpenSSH that are supported

Package

cl-ssh-keys.

Source

ciphers.lisp.

Special Variable: *default-cipher-name*

Default cipher to use when encrypting a private key

Package

cl-ssh-keys.

Source

ciphers.lisp.

Special Variable: *default-kdf-rounds*

Default number of iterations to use when deriving a key

Package

cl-ssh-keys.

Source

private-key.lisp.

Special Variable: *emsa-pkcs1-v1_5-digest-info*

DigestInfo DER encoding of the known hash functions. See RFC 8017, section 9.2, notes 1.

Package

cl-ssh-keys.

Source

rfc8017.lisp.

Special Variable: *key-types*

OpenSSH key types

Package

cl-ssh-keys.

Source

key-types.lisp.


6.1.3 Macros

Macro: with-private-key ((var text &key passphrase) &body body)

Parses a private key from the given TEXT and evaluates the BODY with VAR bound to the decoded private key

Package

cl-ssh-keys.

Source

private-key.lisp.

Macro: with-private-key-file ((var path &key passphrase) &body body)

Parses a private key from the given PATH and evaluates the BODY with VAR bound to the decoded private key

Package

cl-ssh-keys.

Source

private-key.lisp.

Macro: with-public-key ((var text) &body body)

Parses a public key from the given TEXT and evaluates the BODY with VAR bound to the decoded public key

Package

cl-ssh-keys.

Source

public-key.lisp.

Macro: with-public-key-file ((var path) &body body)

Parses a public key from the given PATH and evaluates the BODY with VAR bound to the decoded public key

Package

cl-ssh-keys.

Source

public-key.lisp.


6.1.4 Ordinary functions

Function: describe-cert-option (name)

Describe the OpenSSH certificate option with the given NAME

Package

cl-ssh-keys.

Source

cert-key.lisp.

Function: emsa-pkcs1-v1_5-encode (digest-spec message em-len)

EMSA-PKCS1-v1_5 encoding method. See RFC 8017, section 9.2

Package

cl-ssh-keys.

Source

rfc8017.lisp.

Function: extract-private-key (stream)

Extracts the private key contents from the given stream

Package

cl-ssh-keys.

Source

private-key.lisp.

Function: extract-private-key-from-file (path)

Extracts the private key contents from the given path

Package

cl-ssh-keys.

Source

private-key.lisp.

Function: get-all-cipher-names ()

Returns a list of all supported cipher names

Package

cl-ssh-keys.

Source

ciphers.lisp.

Function: get-cert-critical-options ()

Returns the list of certificate critical options

Package

cl-ssh-keys.

Source

cert-key.lisp.

Function: get-cipher-by-name (name)

Get a cipher by its name

Package

cl-ssh-keys.

Source

ciphers.lisp.

Function: get-cipher-by-name-or-lose (name)
Package

cl-ssh-keys.

Source

ciphers.lisp.

Function: get-key-type (value &key by)

Get the key type identified by the given value and property

Package

cl-ssh-keys.

Source

key-types.lisp.

Function: get-key-type-or-lose (value &key by)
Package

cl-ssh-keys.

Source

key-types.lisp.

Function: get-signature-type (value)

Get the signature type with name identified by VALUE

Package

cl-ssh-keys.

Source

signature.lisp.

Function: get-signature-type-or-lose (value)
Package

cl-ssh-keys.

Source

signature.lisp.

Function: get-supported-cert-options ()

Returns a list of the supported certificate options

Package

cl-ssh-keys.

Source

cert-key.lisp.

Function: i2osp (n &key n-bits)

Integer-to-Octet-String primitive. See RFC 8017, section 4.1

Package

cl-ssh-keys.

Source

rfc8017.lisp.

Function: os2ip (octet-vec)

Octet-String-to-Integer primitive. See RFC 8017, section 4.2

Package

cl-ssh-keys.

Source

rfc8017.lisp.

Function: parse-private-key (text &key passphrase)

Parses an OpenSSH private key from the given plain-text string

Package

cl-ssh-keys.

Source

private-key.lisp.

Function: parse-private-key-file (path &key passphrase)

Parses an OpenSSH private key from the given path

Package

cl-ssh-keys.

Source

private-key.lisp.

Function: parse-public-key (text)

Parses an OpenSSH public key from the given plain-text string

Package

cl-ssh-keys.

Source

public-key.lisp.

Function: parse-public-key-file (path)

Parses an OpenSSH public key from the given path

Package

cl-ssh-keys.

Source

public-key.lisp.

Function: private-key-padding-is-correct-p (stream)

Predicate for deterministic check of padding after private key

Package

cl-ssh-keys.

Source

private-key.lisp.

Function: rsasp1 (priv-key message)

RSA signature primitive. See RFC 8017, section 5.2.1

Package

cl-ssh-keys.

Source

rfc8017.lisp.

Function: rsassa-pkcs1-v1_5-sign (priv-key message digest-spec)

RSASSA-PKCS1-v1_5 signature generation. See RFC 8017, section 8.2.1

Package

cl-ssh-keys.

Source

rfc8017.lisp.

Function: rsassa-pkcs1-v1_5-verify (public-key message signature digest-spec)

RSASSA-PKCS1-v1_5 signature verification. See RFC 8017, section 8.2.2

Package

cl-ssh-keys.

Source

rfc8017.lisp.

Function: rsavp1 (public-key signature)

RSA verification primitive. See RFC 8017, section 5.2.2

Package

cl-ssh-keys.

Source

rfc8017.lisp.

Function: write-key-to-path (key path)

Writes the given KEY to the destination PATH

Package

cl-ssh-keys.

Source

base.lisp.


6.1.5 Generic functions

Generic Reader: cert-critical-options (object)
Generic Writer: (setf cert-critical-options) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-critical-options ((certificate certificate))
Writer Method: (setf cert-critical-options) ((certificate certificate))

Certificate critical options

Source

cert-key.lisp.

Target Slot

critical-options.

Generic Reader: cert-extensions (object)
Generic Writer: (setf cert-extensions) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-extensions ((certificate certificate))
Writer Method: (setf cert-extensions) ((certificate certificate))

Certificate extensions

Source

cert-key.lisp.

Target Slot

extensions.

Generic Reader: cert-key (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-key ((certificate certificate))

The public key of the user/host

Source

cert-key.lisp.

Target Slot

key.

Generic Reader: cert-key-id (object)
Generic Writer: (setf cert-key-id) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-key-id ((certificate certificate))
Writer Method: (setf cert-key-id) ((certificate certificate))

Key identity filled in by the CA at the time of signing

Source

cert-key.lisp.

Target Slot

key-id.

Generic Reader: cert-nonce (object)
Generic Writer: (setf cert-nonce) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-nonce ((certificate certificate))
Writer Method: (setf cert-nonce) ((certificate certificate))

CA-provided nonce

Source

cert-key.lisp.

Target Slot

nonce.

Generic Reader: cert-reserved (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-reserved ((certificate certificate))

Currently unused and ignored in this version of the protocol

Source

cert-key.lisp.

Target Slot

reserved.

Generic Reader: cert-serial (object)
Generic Writer: (setf cert-serial) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-serial ((certificate certificate))
Writer Method: (setf cert-serial) ((certificate certificate))

Optional certificate serial number set by the CA

Source

cert-key.lisp.

Target Slot

serial.

Generic Reader: cert-signature (object)
Generic Writer: (setf cert-signature) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-signature ((certificate certificate))
Writer Method: (setf cert-signature) ((certificate certificate))

The certificate signature

Source

cert-key.lisp.

Target Slot

signature.

Generic Reader: cert-signature-key (object)
Generic Writer: (setf cert-signature-key) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-signature-key ((certificate certificate))
Writer Method: (setf cert-signature-key) ((certificate certificate))

The public key of the CA that signed the certificate

Source

cert-key.lisp.

Target Slot

signature-key.

Generic Reader: cert-type (object)
Generic Writer: (setf cert-type) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-type ((certificate certificate))
Writer Method: (setf cert-type) ((certificate certificate))

Certificate type. Must be either +SSH-CERT-TYPE-USER+ or +SSH-CERT-TYPE-HOST+

Source

cert-key.lisp.

Target Slot

type.

Generic Reader: cert-valid-after (object)
Generic Writer: (setf cert-valid-after) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-valid-after ((certificate certificate))
Writer Method: (setf cert-valid-after) ((certificate certificate))

The validity period after which the certificate is valid

Source

cert-key.lisp.

Target Slot

valid-after.

Generic Reader: cert-valid-before (object)
Generic Writer: (setf cert-valid-before) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-valid-before ((certificate certificate))
Writer Method: (setf cert-valid-before) ((certificate certificate))

The validity period before which the certificate is valid

Source

cert-key.lisp.

Target Slot

valid-before.

Generic Reader: cert-valid-principals (object)
Generic Writer: (setf cert-valid-principals) (object)
Package

cl-ssh-keys.

Methods
Reader Method: cert-valid-principals ((certificate certificate))
Writer Method: (setf cert-valid-principals) ((certificate certificate))

List of usernames/hostnames for which this certificate is valid

Source

cert-key.lisp.

Target Slot

valid-principals.

Generic Reader: ecdsa-curve-identifier (object)
Package

cl-ssh-keys.

Methods
Reader Method: ecdsa-curve-identifier ((base-ecdsa-nistp-key base-ecdsa-nistp-key))

Identifier of the elliptic curve domain parameters

Source

base.lisp.

Target Slot

identifier.

Generic Reader: embedded-public-key (object)
Package

cl-ssh-keys.

Methods
Reader Method: embedded-public-key ((base-private-key base-private-key))

Public key embedded in the private key

Source

private-key.lisp.

Target Slot

public-key.

Generic Function: fingerprint (hash-spec key &key)

Computes the fingerprint of the given KEY using the HASH-SPEC

Package

cl-ssh-keys.

Source

generics.lisp.

Methods
Method: fingerprint ((hash-spec (eql :sha256)) (key certificate) &key)

Computes the SHA256 fingerprint of the embedded client public key

Source

cert-key.lisp.

Method: fingerprint ((hash-spec (eql :sha1)) (key certificate) &key)

Computes the SHA1 fingerprint of the embedded client public key

Source

cert-key.lisp.

Method: fingerprint ((hash-spec (eql :md5)) (key certificate) &key)

Computes the MD5 fingerprint of the embedded client public key

Source

cert-key.lisp.

Method: fingerprint ((hash-spec (eql :sha256)) (key base-private-key) &key)

Computes the SHA-256 fingerprint of the embedded public key

Source

private-key.lisp.

Method: fingerprint ((hash-spec (eql :sha1)) (key base-private-key) &key)

Computes the SHA-1 fingerprint of the embedded public key

Source

private-key.lisp.

Method: fingerprint ((hash-spec (eql :md5)) (key base-private-key) &key)

Computes the MD5 fingerprint of the embedded public key

Source

private-key.lisp.

Method: fingerprint ((hash-spec (eql :sha256)) (key base-public-key) &key)

Computes the SHA-256 fingerprint of the given public key

Source

public-key.lisp.

Method: fingerprint ((hash-spec (eql :sha1)) (key base-public-key) &key)

Computes the SHA-1 fingerprint of the given public key

Source

public-key.lisp.

Method: fingerprint ((hash-spec (eql :md5)) (key base-public-key) &key)

Computes the MD5 fingerprint of the given public key

Source

public-key.lisp.

Generic Function: generate-key-pair (kind &key comment passphrase num-bits)

Generates a new pair of public and private keys

Package

cl-ssh-keys.

Source

generics.lisp.

Methods
Method: generate-key-pair ((kind (eql :ecdsa-nistp521)) &key comment passphrase)

Generates a new pair of ECDSA NIST P-521 public and private keys

Source

ecdsa-nistp521.lisp.

Method: generate-key-pair ((kind (eql :ecdsa-nistp384)) &key comment passphrase)

Generates a new pair of ECDSA NIST P-384 public and private keys

Source

ecdsa-nistp384.lisp.

Method: generate-key-pair ((kind (eql :ecdsa-nistp256)) &key comment passphrase)

Generates a new pair of ECDSA NIST P-256 public and private keys

Source

ecdsa-nistp256.lisp.

Method: generate-key-pair ((kind (eql :ed25519)) &key comment passphrase)

Generates a new pair of Ed25519 public and private keys

Source

ed25519.lisp.

Method: generate-key-pair ((kind (eql :dsa)) &key comment passphrase)

Generates a new pair of DSA public and private keys

Source

dsa.lisp.

Method: generate-key-pair ((kind (eql :rsa)) &key num-bits comment passphrase)

Generates a new pair of RSA public and private keys

Source

rsa.lisp.

Generic Function: get-bytes-for-signing (key &key)

Returns the bytes of the key which will be signed

Package

cl-ssh-keys.

Source

generics.lisp.

Methods
Method: get-bytes-for-signing ((cert certificate) &key)

Returns the portion of the certificate key which will be signed. The bytes for signing represent everything up to the signature.

Source

cert-key.lisp.

Generic Function: key-bits (key)

Returns the number of bits for the key

Package

cl-ssh-keys.

Source

generics.lisp.

Methods
Method: key-bits ((key ecdsa-nistp521-private-key))

Returns the number of bits of the embedded public key

Source

ecdsa-nistp521.lisp.

Method: key-bits ((key ecdsa-nistp521-public-key))

Returns the number of bits for the ECDSA NIST P-521 public key

Source

ecdsa-nistp521.lisp.

Method: key-bits ((key ecdsa-nistp384-private-key))

Returns the number of bits of the embedded public key

Source

ecdsa-nistp384.lisp.

Method: key-bits ((key ecdsa-nistp384-public-key))

Returns the number of bits for the ECDSA NIST P-384 public key

Source

ecdsa-nistp384.lisp.

Method: key-bits ((key ecdsa-nistp256-private-key))

Returns the number of bits of the embedded public key

Source

ecdsa-nistp256.lisp.

Method: key-bits ((key ecdsa-nistp256-public-key))

Returns the number of bits for the ECDSA NIST P-256 public key

Source

ecdsa-nistp256.lisp.

Method: key-bits ((key ed25519-private-key))

Returns the number of bits of the embedded public key

Source

ed25519.lisp.

Method: key-bits ((key ed25519-public-key))

Returns the number of bits for the Ed25519 public key

Source

ed25519.lisp.

Method: key-bits ((key dsa-private-key))

Returns the number of bits of the embedded public key

Source

dsa.lisp.

Method: key-bits ((key dsa-public-key))

Returns the number of bits for the DSA public key

Source

dsa.lisp.

Method: key-bits ((key rsa-private-key))

Returns the number of bits of the embedded public key

Source

rsa.lisp.

Method: key-bits ((key rsa-public-key))

Returns the number of bits for the RSA public key

Source

rsa.lisp.

Generic Reader: key-checksum-int (object)
Package

cl-ssh-keys.

Methods
Reader Method: key-checksum-int ((base-private-key base-private-key))

Checksum integer for private keys

Source

private-key.lisp.

Target Slot

checksum-int.

Generic Reader: key-cipher-name (object)
Package

cl-ssh-keys.

Methods
Reader Method: key-cipher-name ((base-private-key base-private-key))

Private key cipher name

Source

private-key.lisp.

Target Slot

cipher-name.

Generic Function: (setf key-cipher-name) (object)
Package

cl-ssh-keys.

Methods
Writer Method: (setf key-cipher-name) :before ((key base-private-key))

Set cipher name to use for encryption of the private key

Source

private-key.lisp.

Target Slot

cipher-name.

Method: (setf key-cipher-name) ((base-private-key base-private-key))

Private key cipher name

Source

private-key.lisp.

Generic Reader: key-comment (object)
Generic Writer: (setf key-comment) (object)
Package

cl-ssh-keys.

Methods
Reader Method: key-comment ((base-key base-key))
Writer Method: (setf key-comment) ((base-key base-key))

Comment associated with the key

Source

base.lisp.

Target Slot

comment.

Generic Reader: key-kdf-name (object)
Package

cl-ssh-keys.

Methods
Reader Method: key-kdf-name ((base-private-key base-private-key))

Private key KDF name

Source

private-key.lisp.

Target Slot

kdf-name.

Generic Function: (setf key-kdf-name) (object)
Package

cl-ssh-keys.

Methods
Writer Method: (setf key-kdf-name) :before ((key base-private-key))

Set KDF name for the private key

Source

private-key.lisp.

Target Slot

kdf-name.

Method: (setf key-kdf-name) ((base-private-key base-private-key))

Private key KDF name

Source

private-key.lisp.

Generic Reader: key-kdf-rounds (object)
Generic Writer: (setf key-kdf-rounds) (object)
Package

cl-ssh-keys.

Methods
Reader Method: key-kdf-rounds ((base-private-key base-private-key))
Writer Method: (setf key-kdf-rounds) ((base-private-key base-private-key))

Number of iterations used to derive the key

Source

private-key.lisp.

Target Slot

kdf-rounds.

Generic Reader: key-kdf-salt (object)
Package

cl-ssh-keys.

Methods
Reader Method: key-kdf-salt ((base-private-key base-private-key))

Salt used by the KDF function

Source

private-key.lisp.

Target Slot

kdf-salt.

Generic Reader: key-kind (object)
Package

cl-ssh-keys.

Methods
Reader Method: key-kind ((base-key base-key))

SSH key kind

Source

base.lisp.

Target Slot

kind.

Generic Reader: key-passphrase (object)
Package

cl-ssh-keys.

Methods
Reader Method: key-passphrase ((base-private-key base-private-key))

Passphrase used to encrypt the private key

Source

private-key.lisp.

Target Slot

passphrase.

Generic Function: (setf key-passphrase) (object)
Package

cl-ssh-keys.

Methods
Writer Method: (setf key-passphrase) :before ((key base-private-key))

Reset or remove passphrase for the private key.
If NIL is provided then encryption will be removed for the private key.

Source

private-key.lisp.

Target Slot

passphrase.

Method: (setf key-passphrase) ((base-private-key base-private-key))

Passphrase used to encrypt the private key

Source

private-key.lisp.

Generic Reader: signature-blob (object)
Package

cl-ssh-keys.

Methods
Reader Method: signature-blob ((signature signature))

Computed signature blob

Source

signature.lisp.

Target Slot

blob.

Generic Reader: signature-type (object)
Package

cl-ssh-keys.

Methods
Reader Method: signature-type ((signature signature))

Signature type

Source

signature.lisp.

Target Slot

type.

Generic Function: verify-signature (key message signature &key)

Verifies the signature of the given message using the public key

Package

cl-ssh-keys.

Source

generics.lisp.

Methods
Method: verify-signature ((key base-ecdsa-nistp-public-key) message (signature signature) &key)

Verifies the signature of the message according to RFC 5656

Source

ecdsa-nistp256.lisp.

Method: verify-signature ((key ed25519-public-key) message (signature signature) &key)

Verifies the SIGNATURE of MESSAGE according to RFC 8032, section 5.1.7

Source

ed25519.lisp.

Method: verify-signature ((key dsa-public-key) message (signature signature) &key)

Verifies the SIGNATURE of MESSAGE according to RFC 4253, section 6.6

Source

dsa.lisp.

Method: verify-signature ((key rsa-public-key) message (signature signature) &key)

Verifies the message using the signature as described in RFC 4253, section 6.6

Source

rsa.lisp.

Generic Function: write-key (key &optional stream)

Writes the key to the given stream in its text representation

Package

cl-ssh-keys.

Source

generics.lisp.

Methods
Method: write-key ((key base-private-key) &optional stream)

Writes the private key in its text representation

Source

private-key.lisp.

Method: write-key ((key base-public-key) &optional stream)

Writes the public key in its text representation

Source

public-key.lisp.


6.1.6 Standalone methods

Method: encode ((type (eql :ssh-cert-key)) (cert certificate) stream &key)

Encodes the OpenSSH certificate key into the given binary stream

Package

cl-rfc4251.encoder.

Source

cert-key.lisp.

Method: encode ((type (eql :cert-signature)) (value signature) stream &key)

Encode certificate signature into the given stream

Package

cl-rfc4251.encoder.

Source

signature.lisp.

Method: encode ((type (eql :ecdsa-nistp256-public-key)) (key ecdsa-nistp256-public-key) stream &key)

Encodes the ECDSA NIST P-256 public key into the given binary stream.

Package

cl-rfc4251.encoder.

Source

ecdsa-nistp256.lisp.

Method: encode ((type (eql :ecdsa-nistp521-private-key)) (key ecdsa-nistp521-private-key) stream &key)

Encodes the ECDSA NIST P-521 private key into the given binary stream

Package

cl-rfc4251.encoder.

Source

ecdsa-nistp521.lisp.

Method: encode ((type (eql :dsa-public-key)) (key dsa-public-key) stream &key)

Encodes the DSA public key into the given binary stream.

Package

cl-rfc4251.encoder.

Source

dsa.lisp.

Method: encode ((type (eql :ecdsa-nistp384-private-key)) (key ecdsa-nistp384-private-key) stream &key)

Encodes the ECDSA NIST P-384 private key into the given binary stream

Package

cl-rfc4251.encoder.

Source

ecdsa-nistp384.lisp.

Method: encode ((type (eql :rsa-private-key)) (key rsa-private-key) stream &key)

Encodes the RSA private key into the given binary stream

Package

cl-rfc4251.encoder.

Source

rsa.lisp.

Method: encode ((type (eql :ecdsa-nistp384-public-key)) (key ecdsa-nistp384-public-key) stream &key)

Encodes the ECDSA NIST P-384 public key into the given binary stream.

Package

cl-rfc4251.encoder.

Source

ecdsa-nistp384.lisp.

Method: encode ((type (eql :ecdsa-nistp521-public-key)) (key ecdsa-nistp521-public-key) stream &key)

Encodes the ECDSA NIST P-521 public key into the given binary stream.

Package

cl-rfc4251.encoder.

Source

ecdsa-nistp521.lisp.

Method: encode ((type (eql :rsa-public-key)) (key rsa-public-key) stream &key)

Encodes the RSA public key into the given binary stream.

Package

cl-rfc4251.encoder.

Source

rsa.lisp.

Method: encode ((type (eql :ecdsa-nistp256-private-key)) (key ecdsa-nistp256-private-key) stream &key)

Encodes the ECDSA NIST P-256 private key into the given binary stream

Package

cl-rfc4251.encoder.

Source

ecdsa-nistp256.lisp.

Method: encode ((type (eql :public-key)) (key base-public-key) stream &key encode-key-type-p)

Encodes the public key into the binary stream according to RFC 4253, section 6.6. If ENCODE-KEY-TYPE-P is T, then the key type name (e.g. ssh-rsa) is
encoded in the stream as well, before the actual public key components.
Some key types (e.g. OpenSSH certificate keys) do not encode the key
type name, when being embedded within a certificate.

Package

cl-rfc4251.encoder.

Source

public-key.lisp.

Method: encode ((type (eql :ed25519-private-key)) (key ed25519-private-key) stream &key)

Encodes the Ed25519 private key into the given binary stream

Package

cl-rfc4251.encoder.

Source

ed25519.lisp.

Method: encode ((type (eql :ed25519-public-key)) (key ed25519-public-key) stream &key)

Encodes the Ed25519 public key into the given binary stream.

Package

cl-rfc4251.encoder.

Source

ed25519.lisp.

Method: encode ((type (eql :private-key)) (key base-private-key) stream &key)

Encodes the private key in OpenSSH private key format

Package

cl-rfc4251.encoder.

Source

private-key.lisp.

Method: encode ((type (eql :dsa-private-key)) (key dsa-private-key) stream &key)

Encodes the DSA private key into the given binary stream

Package

cl-rfc4251.encoder.

Source

dsa.lisp.


6.1.7 Conditions

Condition: key-type-mismatch-error

Signaled when there is a mismatch between the known key type and the encoded key type

Package

cl-ssh-keys.

Source

conditions.lisp.

Direct superclasses

base-error.

Direct methods
Direct slots
Slot: expected
Initargs

:expected

Readers

error-expected-key-type.

Writers

This slot is read-only.

Slot: found
Initargs

:found

Readers

error-found-key-type.

Writers

This slot is read-only.

Condition: unsupported-key-error

Signaled when attempting to perform an operation on keys that are not supported

Package

cl-ssh-keys.

Source

conditions.lisp.

Direct superclasses

base-error.


6.1.8 Classes

Class: base-ecdsa-nistp-key

Base class for representing an OpenSSH ECDSA key

Package

cl-ssh-keys.

Source

base.lisp.

Direct superclasses

base-key.

Direct subclasses
Direct methods

ecdsa-curve-identifier.

Direct slots
Slot: identifier

Identifier of the elliptic curve domain parameters

Initform

(error "must specify curve identifier")

Initargs

:identifier

Readers

ecdsa-curve-identifier.

Writers

This slot is read-only.

Class: base-ecdsa-nistp-private-key

Base class for representing an OpenSSH ECDSA private key

Package

cl-ssh-keys.

Source

private-key.lisp.

Direct superclasses
Direct subclasses
Class: base-ecdsa-nistp-public-key

Base class for representing an OpenSSH ECDSA public key

Package

cl-ssh-keys.

Source

public-key.lisp.

Direct superclasses
Direct subclasses
Direct methods

verify-signature.

Class: base-key

Base class for representing an OpenSSH key

Package

cl-ssh-keys.

Source

base.lisp.

Direct subclasses
Direct methods
Direct slots
Slot: kind

SSH key kind

Initform

(error "must specify key kind")

Initargs

:kind

Readers

key-kind.

Writers

This slot is read-only.

Slot: comment

Comment associated with the key

Initargs

:comment

Readers

key-comment.

Writers

(setf key-comment).

Class: base-private-key

Base class for representing an OpenSSH private key

Package

cl-ssh-keys.

Source

private-key.lisp.

Direct superclasses

base-key.

Direct subclasses
Direct methods
Direct slots
Slot: public-key

Public key embedded in the private key

Initform

(error "must specify public key")

Initargs

:public-key

Readers

embedded-public-key.

Writers

This slot is read-only.

Slot: cipher-name

Private key cipher name

Initform

(error "must specify cipher name")

Initargs

:cipher-name

Readers

key-cipher-name.

Writers

(setf key-cipher-name).

Slot: kdf-name

Private key KDF name

Initform

(error "must specify kdf name")

Initargs

:kdf-name

Readers

key-kdf-name.

Writers

(setf key-kdf-name).

Slot: kdf-salt

Salt used by the KDF function

Initform

(ironclad:random-data cl-ssh-keys:+kdf-salt-size+)

Initargs

:kdf-salt

Readers

key-kdf-salt.

Writers

This slot is read-only.

Slot: kdf-rounds

Number of iterations used to derive the key

Initform

cl-ssh-keys:*default-kdf-rounds*

Initargs

:kdf-rounds

Readers

key-kdf-rounds.

Writers

(setf key-kdf-rounds).

Slot: checksum-int

Checksum integer for private keys

Initform

(error "must specify checksum integer")

Initargs

:checksum-int

Readers

key-checksum-int.

Writers

This slot is read-only.

Slot: passphrase

Passphrase used to encrypt the private key

Initargs

:passphrase

Readers

key-passphrase.

Writers

(setf key-passphrase).

Class: base-public-key

Base class for representing an OpenSSH public key

Package

cl-ssh-keys.

Source

public-key.lisp.

Direct superclasses

base-key.

Direct subclasses
Direct methods
Class: certificate

An OpenSSH certificate key

Package

cl-ssh-keys.

Source

cert-key.lisp.

Direct superclasses

base-public-key.

Direct methods
Direct slots
Slot: nonce

CA-provided nonce

Initform

(error "must provide nonce")

Initargs

:nonce

Readers

cert-nonce.

Writers

(setf cert-nonce).

Slot: key

The public key of the user/host

Initform

(error "must specify certificate public key")

Initargs

:key

Readers

cert-key.

Writers

This slot is read-only.

Slot: serial

Optional certificate serial number set by the CA

Initform

0

Initargs

:serial

Readers

cert-serial.

Writers

(setf cert-serial).

Slot: type

Certificate type. Must be either +SSH-CERT-TYPE-USER+ or +SSH-CERT-TYPE-HOST+

Package

common-lisp.

Initform

(error "must specify certificate type")

Initargs

:type

Readers

cert-type.

Writers

(setf cert-type).

Slot: key-id

Key identity filled in by the CA at the time of signing

Initargs

:key-id

Readers

cert-key-id.

Writers

(setf cert-key-id).

Slot: valid-principals

List of usernames/hostnames for which this certificate is valid

Initargs

:valid-principals

Readers

cert-valid-principals.

Writers

(setf cert-valid-principals).

Slot: valid-after

The validity period after which the certificate is valid

Initform

0

Initargs

:valid-after

Readers

cert-valid-after.

Writers

(setf cert-valid-after).

Slot: valid-before

The validity period before which the certificate is valid

Initform

cl-ssh-keys:+ssh-cert-max-valid-to+

Initargs

:valid-before

Readers

cert-valid-before.

Writers

(setf cert-valid-before).

Slot: critical-options

Certificate critical options

Initargs

:critical-options

Readers

cert-critical-options.

Writers

(setf cert-critical-options).

Slot: extensions

Certificate extensions

Initargs

:extensions

Readers

cert-extensions.

Writers

(setf cert-extensions).

Slot: reserved

Currently unused and ignored in this version of the protocol

Initargs

:reserved

Readers

cert-reserved.

Writers

This slot is read-only.

Slot: signature-key

The public key of the CA that signed the certificate

Initform

(error "must specify signature key")

Initargs

:signature-key

Readers

cert-signature-key.

Writers

(setf cert-signature-key).

Slot: signature

The certificate signature

Initform

(error "must specify signature")

Initargs

:signature

Readers

cert-signature.

Writers

(setf cert-signature).

Class: dsa-private-key

Represents an OpenSSH DSA private key

Package

cl-ssh-keys.

Source

dsa.lisp.

Direct superclasses
Direct methods
Class: dsa-public-key

Represents an OpenSSH DSA public key

Package

cl-ssh-keys.

Source

dsa.lisp.

Direct superclasses
Direct methods
Class: ecdsa-nistp256-private-key

Represents an OpenSSH ECDSA NIST P-256 private key

Package

cl-ssh-keys.

Source

ecdsa-nistp256.lisp.

Direct superclasses
Direct methods
Class: ecdsa-nistp256-public-key

Represents an OpenSSH ECDSA NIST P-256 public key

Package

cl-ssh-keys.

Source

ecdsa-nistp256.lisp.

Direct superclasses
Direct methods
Class: ecdsa-nistp384-private-key

Represents an OpenSSH ECDSA NIST P-384 private key

Package

cl-ssh-keys.

Source

ecdsa-nistp384.lisp.

Direct superclasses
Direct methods
Class: ecdsa-nistp384-public-key

Represents an OpenSSH ECDSA NIST P-384 public key

Package

cl-ssh-keys.

Source

ecdsa-nistp384.lisp.

Direct superclasses
Direct methods
Class: ecdsa-nistp521-private-key

Represents an OpenSSH ECDSA NIST P-521 private key

Package

cl-ssh-keys.

Source

ecdsa-nistp521.lisp.

Direct superclasses
Direct methods
Class: ecdsa-nistp521-public-key

Represents an OpenSSH ECDSA NIST P-521 public key

Package

cl-ssh-keys.

Source

ecdsa-nistp521.lisp.

Direct superclasses
Direct methods
Class: ed25519-private-key

Represents an OpenSSH Ed25519 private key

Package

cl-ssh-keys.

Source

ed25519.lisp.

Direct superclasses
Direct methods
Class: ed25519-public-key

Represents an OpenSSH Ed25519 public key

Package

cl-ssh-keys.

Source

ed25519.lisp.

Direct superclasses
Direct methods
Class: rsa-private-key

Represents an OpenSSH RSA private key

Package

cl-ssh-keys.

Source

rsa.lisp.

Direct superclasses
Direct methods
Class: rsa-public-key

Represents an OpenSSH RSA public key

Package

cl-ssh-keys.

Source

rsa.lisp.

Direct superclasses
Direct methods
Class: signature

Certificate signature

Package

cl-ssh-keys.

Source

signature.lisp.

Direct methods
Direct slots
Slot: type

Signature type

Package

common-lisp.

Initform

(error "must specify signature type")

Initargs

:type

Readers

signature-type.

Writers

This slot is read-only.

Slot: blob

Computed signature blob

Initform

(error "must specify signature blob")

Initargs

:blob

Readers

signature-blob.

Writers

This slot is read-only.


6.2 Internals


6.2.1 Constants

Constant: +ed25519-public-key-bytes+

Number of bytes for an Ed25519 public key

Package

cl-ssh-keys.

Source

ed25519.lisp.

Constant: +ed25519-secret-key-bytes+

Number of bytes for an Ed25519 secret key

Package

cl-ssh-keys.

Source

ed25519.lisp.


6.2.2 Special variables

Special Variable: *signature-types*

OpenSSH certificate signature types

Package

cl-ssh-keys.

Source

signature.lisp.

Special Variable: *ssh-cert-options*

Supported OpenSSH certificate options

Package

cl-ssh-keys.

Source

cert-key.lisp.

Special Variable: *supported-kdf-names*

Known and supported KDF names

Package

cl-ssh-keys.

Source

private-key.lisp.


6.2.3 Ordinary functions

Function: decrypt-private-key (encrypted cipher-name passphrase salt rounds)
Package

cl-ssh-keys.

Source

private-key.lisp.

Function: encrypt-private-key (text cipher-name passphrase salt rounds)
Package

cl-ssh-keys.

Source

private-key.lisp.

Function: get-cipher-for-encryption/decryption (cipher-name passphrase salt rounds)

Returns a cipher that can be used for encryption/decryption of a private key

Package

cl-ssh-keys.

Source

ciphers.lisp.


6.2.4 Generic functions

Generic Reader: error-description (condition)
Package

cl-ssh-keys.

Methods
Reader Method: error-description ((condition base-error))
Source

conditions.lisp.

Target Slot

description.

Generic Reader: error-expected-key-type (condition)
Package

cl-ssh-keys.

Methods
Reader Method: error-expected-key-type ((condition key-type-mismatch-error))
Source

conditions.lisp.

Target Slot

expected.

Generic Reader: error-found-key-type (condition)
Package

cl-ssh-keys.

Methods
Reader Method: error-found-key-type ((condition key-type-mismatch-error))
Source

conditions.lisp.

Target Slot

found.


6.2.5 Conditions

Condition: base-error

Base error condition

Package

cl-ssh-keys.

Source

conditions.lisp.

Direct superclasses

simple-error.

Direct subclasses
Direct methods

error-description.

Direct slots
Slot: description
Initargs

:description

Readers

error-description.

Writers

This slot is read-only.

Condition: invalid-key-error

Signaled when a key is detected as invalid

Package

cl-ssh-keys.

Source

conditions.lisp.

Direct superclasses

base-error.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   (  
C   D   E   F   G   I   K   M   O   P   R   S   V   W  
Index Entry  Section

(
(setf cert-critical-options): Public generic functions
(setf cert-critical-options): Public generic functions
(setf cert-extensions): Public generic functions
(setf cert-extensions): Public generic functions
(setf cert-key-id): Public generic functions
(setf cert-key-id): Public generic functions
(setf cert-nonce): Public generic functions
(setf cert-nonce): Public generic functions
(setf cert-serial): Public generic functions
(setf cert-serial): Public generic functions
(setf cert-signature): Public generic functions
(setf cert-signature): Public generic functions
(setf cert-signature-key): Public generic functions
(setf cert-signature-key): Public generic functions
(setf cert-type): Public generic functions
(setf cert-type): Public generic functions
(setf cert-valid-after): Public generic functions
(setf cert-valid-after): Public generic functions
(setf cert-valid-before): Public generic functions
(setf cert-valid-before): Public generic functions
(setf cert-valid-principals): Public generic functions
(setf cert-valid-principals): Public generic functions
(setf key-cipher-name): Public generic functions
(setf key-cipher-name): Public generic functions
(setf key-cipher-name): Public generic functions
(setf key-comment): Public generic functions
(setf key-comment): Public generic functions
(setf key-kdf-name): Public generic functions
(setf key-kdf-name): Public generic functions
(setf key-kdf-name): Public generic functions
(setf key-kdf-rounds): Public generic functions
(setf key-kdf-rounds): Public generic functions
(setf key-passphrase): Public generic functions
(setf key-passphrase): Public generic functions
(setf key-passphrase): Public generic functions

C
cert-critical-options: Public generic functions
cert-critical-options: Public generic functions
cert-extensions: Public generic functions
cert-extensions: Public generic functions
cert-key: Public generic functions
cert-key: Public generic functions
cert-key-id: Public generic functions
cert-key-id: Public generic functions
cert-nonce: Public generic functions
cert-nonce: Public generic functions
cert-reserved: Public generic functions
cert-reserved: Public generic functions
cert-serial: Public generic functions
cert-serial: Public generic functions
cert-signature: Public generic functions
cert-signature: Public generic functions
cert-signature-key: Public generic functions
cert-signature-key: Public generic functions
cert-type: Public generic functions
cert-type: Public generic functions
cert-valid-after: Public generic functions
cert-valid-after: Public generic functions
cert-valid-before: Public generic functions
cert-valid-before: Public generic functions
cert-valid-principals: Public generic functions
cert-valid-principals: Public generic functions

D
decrypt-private-key: Private ordinary functions
describe-cert-option: Public ordinary functions

E
ecdsa-curve-identifier: Public generic functions
ecdsa-curve-identifier: Public generic functions
embedded-public-key: Public generic functions
embedded-public-key: Public generic functions
emsa-pkcs1-v1_5-encode: Public ordinary functions
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encode: Public standalone methods
encrypt-private-key: Private ordinary functions
error-description: Private generic functions
error-description: Private generic functions
error-expected-key-type: Private generic functions
error-expected-key-type: Private generic functions
error-found-key-type: Private generic functions
error-found-key-type: Private generic functions
extract-private-key: Public ordinary functions
extract-private-key-from-file: Public ordinary functions

F
fingerprint: Public generic functions
fingerprint: Public generic functions
fingerprint: Public generic functions
fingerprint: Public generic functions
fingerprint: Public generic functions
fingerprint: Public generic functions
fingerprint: Public generic functions
fingerprint: Public generic functions
fingerprint: Public generic functions
fingerprint: Public generic functions
Function, decrypt-private-key: Private ordinary functions
Function, describe-cert-option: Public ordinary functions
Function, emsa-pkcs1-v1_5-encode: Public ordinary functions
Function, encrypt-private-key: Private ordinary functions
Function, extract-private-key: Public ordinary functions
Function, extract-private-key-from-file: Public ordinary functions
Function, get-all-cipher-names: Public ordinary functions
Function, get-cert-critical-options: Public ordinary functions
Function, get-cipher-by-name: Public ordinary functions
Function, get-cipher-by-name-or-lose: Public ordinary functions
Function, get-cipher-for-encryption/decryption: Private ordinary functions
Function, get-key-type: Public ordinary functions
Function, get-key-type-or-lose: Public ordinary functions
Function, get-signature-type: Public ordinary functions
Function, get-signature-type-or-lose: Public ordinary functions
Function, get-supported-cert-options: Public ordinary functions
Function, i2osp: Public ordinary functions
Function, os2ip: Public ordinary functions
Function, parse-private-key: Public ordinary functions
Function, parse-private-key-file: Public ordinary functions
Function, parse-public-key: Public ordinary functions
Function, parse-public-key-file: Public ordinary functions
Function, private-key-padding-is-correct-p: Public ordinary functions
Function, rsasp1: Public ordinary functions
Function, rsassa-pkcs1-v1_5-sign: Public ordinary functions
Function, rsassa-pkcs1-v1_5-verify: Public ordinary functions
Function, rsavp1: Public ordinary functions
Function, write-key-to-path: Public ordinary functions

G
generate-key-pair: Public generic functions
generate-key-pair: Public generic functions
generate-key-pair: Public generic functions
generate-key-pair: Public generic functions
generate-key-pair: Public generic functions
generate-key-pair: Public generic functions
generate-key-pair: Public generic functions
Generic Function, (setf cert-critical-options): Public generic functions
Generic Function, (setf cert-extensions): Public generic functions
Generic Function, (setf cert-key-id): Public generic functions
Generic Function, (setf cert-nonce): Public generic functions
Generic Function, (setf cert-serial): Public generic functions
Generic Function, (setf cert-signature): Public generic functions
Generic Function, (setf cert-signature-key): Public generic functions
Generic Function, (setf cert-type): Public generic functions
Generic Function, (setf cert-valid-after): Public generic functions
Generic Function, (setf cert-valid-before): Public generic functions
Generic Function, (setf cert-valid-principals): Public generic functions
Generic Function, (setf key-cipher-name): Public generic functions
Generic Function, (setf key-comment): Public generic functions
Generic Function, (setf key-kdf-name): Public generic functions
Generic Function, (setf key-kdf-rounds): Public generic functions
Generic Function, (setf key-passphrase): Public generic functions
Generic Function, cert-critical-options: Public generic functions
Generic Function, cert-extensions: Public generic functions
Generic Function, cert-key: Public generic functions
Generic Function, cert-key-id: Public generic functions
Generic Function, cert-nonce: Public generic functions
Generic Function, cert-reserved: Public generic functions
Generic Function, cert-serial: Public generic functions
Generic Function, cert-signature: Public generic functions
Generic Function, cert-signature-key: Public generic functions
Generic Function, cert-type: Public generic functions
Generic Function, cert-valid-after: Public generic functions
Generic Function, cert-valid-before: Public generic functions
Generic Function, cert-valid-principals: Public generic functions
Generic Function, ecdsa-curve-identifier: Public generic functions
Generic Function, embedded-public-key: Public generic functions
Generic Function, error-description: Private generic functions
Generic Function, error-expected-key-type: Private generic functions
Generic Function, error-found-key-type: Private generic functions
Generic Function, fingerprint: Public generic functions
Generic Function, generate-key-pair: Public generic functions
Generic Function, get-bytes-for-signing: Public generic functions
Generic Function, key-bits: Public generic functions
Generic Function, key-checksum-int: Public generic functions
Generic Function, key-cipher-name: Public generic functions
Generic Function, key-comment: Public generic functions
Generic Function, key-kdf-name: Public generic functions
Generic Function, key-kdf-rounds: Public generic functions
Generic Function, key-kdf-salt: Public generic functions
Generic Function, key-kind: Public generic functions
Generic Function, key-passphrase: Public generic functions
Generic Function, signature-blob: Public generic functions
Generic Function, signature-type: Public generic functions
Generic Function, verify-signature: Public generic functions
Generic Function, write-key: Public generic functions
get-all-cipher-names: Public ordinary functions
get-bytes-for-signing: Public generic functions
get-bytes-for-signing: Public generic functions
get-cert-critical-options: Public ordinary functions
get-cipher-by-name: Public ordinary functions
get-cipher-by-name-or-lose: Public ordinary functions
get-cipher-for-encryption/decryption: Private ordinary functions
get-key-type: Public ordinary functions
get-key-type-or-lose: Public ordinary functions
get-signature-type: Public ordinary functions
get-signature-type-or-lose: Public ordinary functions
get-supported-cert-options: Public ordinary functions

I
i2osp: Public ordinary functions

K
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-bits: Public generic functions
key-checksum-int: Public generic functions
key-checksum-int: Public generic functions
key-cipher-name: Public generic functions
key-cipher-name: Public generic functions
key-comment: Public generic functions
key-comment: Public generic functions
key-kdf-name: Public generic functions
key-kdf-name: Public generic functions
key-kdf-rounds: Public generic functions
key-kdf-rounds: Public generic functions
key-kdf-salt: Public generic functions
key-kdf-salt: Public generic functions
key-kind: Public generic functions
key-kind: Public generic functions
key-passphrase: Public generic functions
key-passphrase: Public generic functions

M
Macro, with-private-key: Public macros
Macro, with-private-key-file: Public macros
Macro, with-public-key: Public macros
Macro, with-public-key-file: Public macros
Method, (setf cert-critical-options): Public generic functions
Method, (setf cert-extensions): Public generic functions
Method, (setf cert-key-id): Public generic functions
Method, (setf cert-nonce): Public generic functions
Method, (setf cert-serial): Public generic functions
Method, (setf cert-signature): Public generic functions
Method, (setf cert-signature-key): Public generic functions
Method, (setf cert-type): Public generic functions
Method, (setf cert-valid-after): Public generic functions
Method, (setf cert-valid-before): Public generic functions
Method, (setf cert-valid-principals): Public generic functions
Method, (setf key-cipher-name): Public generic functions
Method, (setf key-cipher-name): Public generic functions
Method, (setf key-comment): Public generic functions
Method, (setf key-kdf-name): Public generic functions
Method, (setf key-kdf-name): Public generic functions
Method, (setf key-kdf-rounds): Public generic functions
Method, (setf key-passphrase): Public generic functions
Method, (setf key-passphrase): Public generic functions
Method, cert-critical-options: Public generic functions
Method, cert-extensions: Public generic functions
Method, cert-key: Public generic functions
Method, cert-key-id: Public generic functions
Method, cert-nonce: Public generic functions
Method, cert-reserved: Public generic functions
Method, cert-serial: Public generic functions
Method, cert-signature: Public generic functions
Method, cert-signature-key: Public generic functions
Method, cert-type: Public generic functions
Method, cert-valid-after: Public generic functions
Method, cert-valid-before: Public generic functions
Method, cert-valid-principals: Public generic functions
Method, ecdsa-curve-identifier: Public generic functions
Method, embedded-public-key: Public generic functions
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, encode: Public standalone methods
Method, error-description: Private generic functions
Method, error-expected-key-type: Private generic functions
Method, error-found-key-type: Private generic functions
Method, fingerprint: Public generic functions
Method, fingerprint: Public generic functions
Method, fingerprint: Public generic functions
Method, fingerprint: Public generic functions
Method, fingerprint: Public generic functions
Method, fingerprint: Public generic functions
Method, fingerprint: Public generic functions
Method, fingerprint: Public generic functions
Method, fingerprint: Public generic functions
Method, generate-key-pair: Public generic functions
Method, generate-key-pair: Public generic functions
Method, generate-key-pair: Public generic functions
Method, generate-key-pair: Public generic functions
Method, generate-key-pair: Public generic functions
Method, generate-key-pair: Public generic functions
Method, get-bytes-for-signing: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-bits: Public generic functions
Method, key-checksum-int: Public generic functions
Method, key-cipher-name: Public generic functions
Method, key-comment: Public generic functions
Method, key-kdf-name: Public generic functions
Method, key-kdf-rounds: Public generic functions
Method, key-kdf-salt: Public generic functions
Method, key-kind: Public generic functions
Method, key-passphrase: Public generic functions
Method, signature-blob: Public generic functions
Method, signature-type: Public generic functions
Method, verify-signature: Public generic functions
Method, verify-signature: Public generic functions
Method, verify-signature: Public generic functions
Method, verify-signature: Public generic functions
Method, write-key: Public generic functions
Method, write-key: Public generic functions

O
os2ip: Public ordinary functions

P
parse-private-key: Public ordinary functions
parse-private-key-file: Public ordinary functions
parse-public-key: Public ordinary functions
parse-public-key-file: Public ordinary functions
private-key-padding-is-correct-p: Public ordinary functions

R
rsasp1: Public ordinary functions
rsassa-pkcs1-v1_5-sign: Public ordinary functions
rsassa-pkcs1-v1_5-verify: Public ordinary functions
rsavp1: Public ordinary functions

S
signature-blob: Public generic functions
signature-blob: Public generic functions
signature-type: Public generic functions
signature-type: Public generic functions

V
verify-signature: Public generic functions
verify-signature: Public generic functions
verify-signature: Public generic functions
verify-signature: Public generic functions
verify-signature: Public generic functions

W
with-private-key: Public macros
with-private-key-file: Public macros
with-public-key: Public macros
with-public-key-file: Public macros
write-key: Public generic functions
write-key: Public generic functions
write-key: Public generic functions
write-key-to-path: Public ordinary functions


A.3 Variables

Jump to:   *   +  
B   C   D   E   F   I   K   N   P   R   S   T   V  
Index Entry  Section

*
*ciphers*: Public special variables
*default-cipher-name*: Public special variables
*default-kdf-rounds*: Public special variables
*emsa-pkcs1-v1_5-digest-info*: Public special variables
*key-types*: Public special variables
*signature-types*: Private special variables
*ssh-cert-options*: Private special variables
*supported-kdf-names*: Private special variables

+
+ed25519-public-key-bytes+: Private constants
+ed25519-secret-key-bytes+: Private constants
+kdf-salt-size+: Public constants
+nistp256-identifier+: Public constants
+nistp384-identifier+: Public constants
+nistp521-identifier+: Public constants
+private-key-auth-magic+: Public constants
+private-key-mark-begin+: Public constants
+private-key-mark-end+: Public constants
+ssh-cert-max-valid-to+: Public constants
+ssh-cert-type-host+: Public constants
+ssh-cert-type-user+: Public constants

B
blob: Public classes

C
checksum-int: Public classes
cipher-name: Public classes
comment: Public classes
Constant, +ed25519-public-key-bytes+: Private constants
Constant, +ed25519-secret-key-bytes+: Private constants
Constant, +kdf-salt-size+: Public constants
Constant, +nistp256-identifier+: Public constants
Constant, +nistp384-identifier+: Public constants
Constant, +nistp521-identifier+: Public constants
Constant, +private-key-auth-magic+: Public constants
Constant, +private-key-mark-begin+: Public constants
Constant, +private-key-mark-end+: Public constants
Constant, +ssh-cert-max-valid-to+: Public constants
Constant, +ssh-cert-type-host+: Public constants
Constant, +ssh-cert-type-user+: Public constants
critical-options: Public classes

D
description: Private conditions

E
expected: Public conditions
extensions: Public classes

F
found: Public conditions

I
identifier: Public classes

K
kdf-name: Public classes
kdf-rounds: Public classes
kdf-salt: Public classes
key: Public classes
key-id: Public classes
kind: Public classes

N
nonce: Public classes

P
passphrase: Public classes
public-key: Public classes

R
reserved: Public classes

S
serial: Public classes
signature: Public classes
signature-key: Public classes
Slot, blob: Public classes
Slot, checksum-int: Public classes
Slot, cipher-name: Public classes
Slot, comment: Public classes
Slot, critical-options: Public classes
Slot, description: Private conditions
Slot, expected: Public conditions
Slot, extensions: Public classes
Slot, found: Public conditions
Slot, identifier: Public classes
Slot, kdf-name: Public classes
Slot, kdf-rounds: Public classes
Slot, kdf-salt: Public classes
Slot, key: Public classes
Slot, key-id: Public classes
Slot, kind: Public classes
Slot, nonce: Public classes
Slot, passphrase: Public classes
Slot, public-key: Public classes
Slot, reserved: Public classes
Slot, serial: Public classes
Slot, signature: Public classes
Slot, signature-key: Public classes
Slot, type: Public classes
Slot, type: Public classes
Slot, valid-after: Public classes
Slot, valid-before: Public classes
Slot, valid-principals: Public classes
Special Variable, *ciphers*: Public special variables
Special Variable, *default-cipher-name*: Public special variables
Special Variable, *default-kdf-rounds*: Public special variables
Special Variable, *emsa-pkcs1-v1_5-digest-info*: Public special variables
Special Variable, *key-types*: Public special variables
Special Variable, *signature-types*: Private special variables
Special Variable, *ssh-cert-options*: Private special variables
Special Variable, *supported-kdf-names*: Private special variables

T
type: Public classes
type: Public classes

V
valid-after: Public classes
valid-before: Public classes
valid-principals: Public classes


A.4 Data types

Jump to:   B   C   D   E   F   G   I   K   M   P   R   S   U  
Index Entry  Section

B
base-ecdsa-nistp-key: Public classes
base-ecdsa-nistp-private-key: Public classes
base-ecdsa-nistp-public-key: Public classes
base-error: Private conditions
base-key: Public classes
base-private-key: Public classes
base-public-key: Public classes
base.lisp: The cl-ssh-keys/core/base․lisp file

C
cert-key.lisp: The cl-ssh-keys/keys/cert-key․lisp file
certificate: Public classes
ciphers.lisp: The cl-ssh-keys/core/ciphers․lisp file
cl-ssh-keys: The cl-ssh-keys system
cl-ssh-keys: The cl-ssh-keys package
cl-ssh-keys-system: The cl-ssh-keys-system package
cl-ssh-keys.asd: The cl-ssh-keys/cl-ssh-keys․asd file
Class, base-ecdsa-nistp-key: Public classes
Class, base-ecdsa-nistp-private-key: Public classes
Class, base-ecdsa-nistp-public-key: Public classes
Class, base-key: Public classes
Class, base-private-key: Public classes
Class, base-public-key: Public classes
Class, certificate: Public classes
Class, dsa-private-key: Public classes
Class, dsa-public-key: Public classes
Class, ecdsa-nistp256-private-key: Public classes
Class, ecdsa-nistp256-public-key: Public classes
Class, ecdsa-nistp384-private-key: Public classes
Class, ecdsa-nistp384-public-key: Public classes
Class, ecdsa-nistp521-private-key: Public classes
Class, ecdsa-nistp521-public-key: Public classes
Class, ed25519-private-key: Public classes
Class, ed25519-public-key: Public classes
Class, rsa-private-key: Public classes
Class, rsa-public-key: Public classes
Class, signature: Public classes
Condition, base-error: Private conditions
Condition, invalid-key-error: Private conditions
Condition, key-type-mismatch-error: Public conditions
Condition, unsupported-key-error: Public conditions
conditions.lisp: The cl-ssh-keys/core/conditions․lisp file
core: The cl-ssh-keys/core module

D
dsa-private-key: Public classes
dsa-public-key: Public classes
dsa.lisp: The cl-ssh-keys/keys/dsa․lisp file

E
ecdsa-nistp256-private-key: Public classes
ecdsa-nistp256-public-key: Public classes
ecdsa-nistp256.lisp: The cl-ssh-keys/keys/ecdsa-nistp256․lisp file
ecdsa-nistp384-private-key: Public classes
ecdsa-nistp384-public-key: Public classes
ecdsa-nistp384.lisp: The cl-ssh-keys/keys/ecdsa-nistp384․lisp file
ecdsa-nistp521-private-key: Public classes
ecdsa-nistp521-public-key: Public classes
ecdsa-nistp521.lisp: The cl-ssh-keys/keys/ecdsa-nistp521․lisp file
ed25519-private-key: Public classes
ed25519-public-key: Public classes
ed25519.lisp: The cl-ssh-keys/keys/ed25519․lisp file

F
File, base.lisp: The cl-ssh-keys/core/base․lisp file
File, cert-key.lisp: The cl-ssh-keys/keys/cert-key․lisp file
File, ciphers.lisp: The cl-ssh-keys/core/ciphers․lisp file
File, cl-ssh-keys.asd: The cl-ssh-keys/cl-ssh-keys․asd file
File, conditions.lisp: The cl-ssh-keys/core/conditions․lisp file
File, dsa.lisp: The cl-ssh-keys/keys/dsa․lisp file
File, ecdsa-nistp256.lisp: The cl-ssh-keys/keys/ecdsa-nistp256․lisp file
File, ecdsa-nistp384.lisp: The cl-ssh-keys/keys/ecdsa-nistp384․lisp file
File, ecdsa-nistp521.lisp: The cl-ssh-keys/keys/ecdsa-nistp521․lisp file
File, ed25519.lisp: The cl-ssh-keys/keys/ed25519․lisp file
File, generics.lisp: The cl-ssh-keys/core/generics․lisp file
File, key-types.lisp: The cl-ssh-keys/core/key-types․lisp file
File, package.lisp: The cl-ssh-keys/core/package․lisp file
File, private-key.lisp: The cl-ssh-keys/core/private-key․lisp file
File, public-key.lisp: The cl-ssh-keys/core/public-key․lisp file
File, rfc8017.lisp: The cl-ssh-keys/core/rfc8017․lisp file
File, rsa.lisp: The cl-ssh-keys/keys/rsa․lisp file
File, signature.lisp: The cl-ssh-keys/core/signature․lisp file

G
generics.lisp: The cl-ssh-keys/core/generics․lisp file

I
invalid-key-error: Private conditions

K
key-type-mismatch-error: Public conditions
key-types.lisp: The cl-ssh-keys/core/key-types․lisp file
keys: The cl-ssh-keys/keys module

M
Module, core: The cl-ssh-keys/core module
Module, keys: The cl-ssh-keys/keys module

P
Package, cl-ssh-keys: The cl-ssh-keys package
Package, cl-ssh-keys-system: The cl-ssh-keys-system package
package.lisp: The cl-ssh-keys/core/package․lisp file
private-key.lisp: The cl-ssh-keys/core/private-key․lisp file
public-key.lisp: The cl-ssh-keys/core/public-key․lisp file

R
rfc8017.lisp: The cl-ssh-keys/core/rfc8017․lisp file
rsa-private-key: Public classes
rsa-public-key: Public classes
rsa.lisp: The cl-ssh-keys/keys/rsa․lisp file

S
signature: Public classes
signature.lisp: The cl-ssh-keys/core/signature․lisp file
System, cl-ssh-keys: The cl-ssh-keys system

U
unsupported-key-error: Public conditions