diff --git a/bip-0085.mediawiki b/bip-0085.mediawiki index 174ba816b2..914d8a2c68 100644 --- a/bip-0085.mediawiki +++ b/bip-0085.mediawiki @@ -360,31 +360,52 @@ OUTPUT * DERIVED ENTROPY=f7cfe56f63dca2490f65fcbf9ee63dcd85d18f751b6b5e1c1b8733af6459c904a75e82b4a22efff9b9e69de2144b293aa8714319a054b6cb55826a8e51425209 * DERIVED PWD=_s`{TW89)i4` -===RSA=== +===GPG Keys=== -Application number: 828365' +Application number is dependant on the key type. -The derivation path format is: m/83696968'/828365'/{key_bits}'/{key_index}' +{| +!OpenGPG Key Type +!Application Number +|- +| RSA +| 828365' +|- +| ECC(Curve25519) +| 828366' +|- +| ECC(secp256k1) +| 828367' +|- +| ECC(NIST) +| 828368' +|- +| ECC(Brainpool) +| 828369' +|- +|} -The RSA key generator should use BIP85-DRNG as the input RNG function. +The RSA key generator should use BIP85-DRNG as the input RNG function. Likewise, any ECC key types over 256 bits should use BIP85-DRNG. -===RSA GPG=== +====Primary Keys and Subkeys==== -Keys allocated for RSA-GPG purposes use the following scheme: +Keys allocated for GPG purposes use the following scheme: - - Main key m/83696968'/828365'/{key_bits}'/{key_index}' - - Sub keys: m/83696968'/828365'/{key_bits}'/{key_index}'/{sub_key}' + - Primary key m/83696968'/{key_type}'/{key_bits}'/{key_index}' + - Sub keys: m/83696968'/{key_type}'/{key_bits}'/{key_index}'/{sub_key}' - key_index is the parent key for CERTIFY capability - sub_key 0' is used as the ENCRYPTION key - sub_key 1' is used as the AUTHENTICATION key - sub_key 2' is usually used as SIGNATURE key -Note on timestamps: +Additional subkeys can be added to a primary key, including keys of a different key type, following the role pattern defined above, but the key_index MUST be incremented with each subkey. + +Note on timestamps: The resulting RSA key can be used to create a GPG key where the creation date MUST be fixed to unix Epoch timestamp 1231006505 (the Bitcoin genesis block time '2009-01-03 18:05:05' UTC) because the key fingerprint is affected by the creation date (Epoch timestamp 0 was not chosen because of legacy behavior in GNUPG implementations for older keys). Additionally, when importing sub-keys under a key in GNUPG, the system time must be frozen to the same timestamp before importing (e.g. by use of faketime). -Note on GPG key capabilities on smartcard/hardware devices: +Note on GPG key capabilities on smartcard/hardware devices: GPG capable smart-cards SHOULD be loaded as follows: The encryption slot SHOULD be loaded with the ENCRYPTION capable key; the authentication slot SHOULD be loaded with the AUTHENTICATION capable key. The signature capable slot SHOULD be loaded with the SIGNATURE capable key.