DER
Acronyme de Distinguished Encoding Rules. C’est un sous-ensemble strict des règles d’encodage ASN.1 définies dans la spécification ITU-T X.690, 2002 et utilisé pour encoder n’importe quel type de données dans une séquence binaire. DER est surtout utilisé dans des domaines spécifiques, comme en cryptographie, où les données doivent être encodées de manière standard et prédictible.
Sur Bitcoin, les signatures ECDSA sont encodées au format DER. Elles se composent de deux nombres (r,s) encodés. Le format de signature se compose des éléments suivants :
0x30 | length | 0x02 | r-length | r | 0x02 | s-length | s
Avec :
0x30(1 octet) : identifiant d’une structure composée ;length(1 octet) : longueur des données suivantes ;0x02(1 octet) : identifiant de donnée typeINTEGER(nombre entier) ;r-length(1 octet) : longueur de la valeurrsuivante (généralement 32 ou 33 octets) ;r(variable) : valeurren tant qu’entier gros-boutiste (big-endian) ;0x02(1 octet) : identifiant de donnée typeINTEGER(nombre entier) ;s-length(1 octet) : longueur de la valeurssuivante (généralement 32 ou 33 octets) ;s(variable) : valeursen tant qu’entier gros-boutiste (big-endian).
Dans une transaction Bitcoin, un octet est ajouté à la fin d’une signature DER pour indiquer le type de SigHash utilisé.