Paso 11: Crear una firma
¿Cómo firmar un mensaje de archivo?
En primer lugar, usted necesita saber que la firma es de 40 bytes y se representa por dos valores de 20 bytes, el primero de ellos se llama R y la segunda se llama S... así que el par (R, S) juntos es la firma ECDSA... ahora aquí es cómo se pueden crear esos dos valores para firmar un archivo... primero debe generar un valor aleatorio 'k' (de 20 bytes) y usar punto de multiplicación para calcular el punto P = k * G. Valor de x de ese punto representará 'R'. Desde el punto de la curva que p es representado por su (x, y) coordenadas (cada uno es 20 bytes de longitud), sólo necesita el valor de 'x' (20 bytes) para la firma, y ese valor se llamará 'R'. Ahora todo lo que necesita es el valor de 'S'.
Para calcular S, debe hacer un hash SHA1 del mensaje, este da 20 bytes que valor tendrá en cuenta como un número entero muy grande y lo llamamos 'z'. Ahora puede calcular S mediante la ecuación:
S = k ^ -1 (z + dA * R) mod p
Aquí el k ^ -1 que es el "inverso multiplicativo modular' de k... es básicamente lo contrario de k, pero ya que estamos tratando con números enteros, entonces eso no es posible, por lo que es un número tal que (k ^ -1 * k) mod p es igual a 1. Y otra vez, les recuerdo que k es el número al azar para generar R, z es el hash del mensaje a firmar, dA es la clave privada y R es la coordenada x del k * G (donde G es el punto de origen de los parámetros de la curva).