Bene, per uno, ECDSA non è uno schema di crittografia , ma un algoritmo di firma digitale.
Lo scopo generico di un'API crittografica come window.crypto è di fornire accesso a implementazioni di alcuni algoritmi crittografici. Queste implementazioni possono essere basate su software o hardware. In particolare, un'implementazione può essere un hardware a prova di manomissione (un HSM o una smart card) in grado di generare chiavi per alcuni algoritmi e memorizzarli, senza mai lasciare che la chiave esista al di fuori dell'hardware. generateKey()
gestisce tali casi. Con getRandomValues()
, puoi generare solo un mucchio di byte nella RAM del computer.
Inoltre, le chiavi private hanno spesso bisogno di una struttura matematica. Nel caso di un ECDSA, una chiave privata è un numero intero grande in un intervallo definito ( 1 a n-1 , dove n è il ordine del generatore di sottogruppi di curve); se vuoi produrre una chiave del genere da te, con getRandomValues()
, allora devi utilizzare alcuni aritmetici di interi interi per assicurarti che il tuo valore si adatti all'intervallo corretto. Anche in questo caso, generateKey()
produrrà una chiave con la struttura giusta per l'algoritmo in mano.