ena.4: Add a missing space.
[dragonfly.git] / crypto / openssh / PROTOCOL.key
blob959bd7aeec22dd19696e48079ce2dd6979286acd
1 This document describes the private key format for OpenSSH.
3 1. Overall format
5 The key consists of a header, a list of public keys, and
6 an encrypted list of matching private keys.
8 #define AUTH_MAGIC      "openssh-key-v1"
10         byte[]  AUTH_MAGIC
11         string  ciphername
12         string  kdfname
13         string  kdfoptions
14         int     number of keys N
15         string  publickey1
16         string  publickey2
17         ...
18         string  publickeyN
19         string  encrypted, padded list of private keys
21 2. KDF options for kdfname "bcrypt"
23 The options:
25         string salt
26         uint32 rounds
28 are concatenated and represented as a string.
30 3. Unencrypted list of N private keys
32 The list of privatekey/comment pairs is padded with the
33 bytes 1, 2, 3, ... until the total length is a multiple
34 of the cipher block size.
36         uint32  checkint
37         uint32  checkint
38         string  privatekey1
39         string  comment1
40         string  privatekey2
41         string  comment2
42         ...
43         string  privatekeyN
44         string  commentN
45         char    1
46         char    2
47         char    3
48         ...
49         char    padlen % 255
51 Before the key is encrypted, a random integer is assigned
52 to both checkint fields so successful decryption can be
53 quickly checked by verifying that both checkint fields
54 hold the same value.
56 4. Encryption
58 The KDF is used to derive a key, IV (and other values required by
59 the cipher) from the passphrase. These values are then used to
60 encrypt the unencrypted list of private keys.
62 5. No encryption
64 For unencrypted keys the cipher "none" and the KDF "none"
65 are used with empty passphrases. The options if the KDF "none"
66 are the empty string.
68 $OpenBSD: PROTOCOL.key,v 1.1 2013/12/06 13:34:54 markus Exp $