Creating key certificates
Key certificates consist of the following items:
"dir-key-certificate-version" version NL
[At start, exactly once.]
Determines the version of the key certificate. MUST be "3" for the protocol described in this document. Implementations MUST reject formats they don't understand.
"dir-address" IPPort NL
[At most once]
An IP:Port for this authority's directory port.
"fingerprint" fingerprint NL
[Exactly once.]
Hexadecimal encoding without spaces based on the authority's identity key.
"dir-identity-key" NL a public key in PEM format
[Exactly once.] [No extra arguments]
The long-term authority identity key KP_auth_id_rsa
for this authority.
This key
SHOULD be at least 2048 bits long; it MUST NOT be shorter than
1024 bits.
"dir-key-published" YYYY-MM-DD HH:MM:SS NL
[Exactly once.]
The time (in UTC) when this document and corresponding key were last generated.
Implementations SHOULD reject certificates that are published too far in the future, though they MAY tolerate some clock skew.
"dir-key-expires" YYYY-MM-DD HH:MM:SS NL
[Exactly once.]
A time (in UTC) after which this key is no longer valid.
Implementations SHOULD reject expired certificates, though they MAY tolerate some clock skew.
"dir-signing-key" NL a key in PEM format
[Exactly once.] [No extra arguments]
The directory server's public signing key KP_auth_sign_rsa
. This key MUST be at
least 1024 bits, and MAY be longer.
"dir-key-crosscert" NL CrossSignature NL
[Exactly once.] [No extra arguments]
CrossSignature is a signature, made using the certificate's signing
key KP_auth_sign_rsa
, of the PKCS1-padded hash of the certificate's
identity key: SHA1(DER(KP_auth_id_rsa))
.
For backward compatibility with broken versions of the
parser, we wrap the base64-encoded signature in
-----BEGIN ID SIGNATURE----
and -----END ID SIGNATURE-----
tags.
Implementations
MUST allow the "ID " portion to be omitted, however.
Implementations MUST verify that the signature is a correct signature of the hash of the identity key using the signing key.
"dir-key-certification" NL Signature NL
[At end, exactly once.] [No extra arguments]
A document signature as documented in section 1.3, using the
initial item "dir-key-certificate-version" and the final item
"dir-key-certification", signed with the authority identity key
KP_auth_id_rsa
.
Authorities MUST generate a new signing key and corresponding certificate before the key expires.