| Firma / verifica Ed25519 | sgcEd25519_Sign / sgcEd25519_Verify, sgcEd25519_PublicKey | RFC 8032. Chiave pubblica di 32 byte, firma di 64 byte. Verify rifiuta i punti non canonici e S >= L secondo la sezione 5.1.7. La firma avviene in tempo costante nello scalare segreto e nel nonce per messaggio: finestre fisse di quattro bit, la voce di tabella scelta scorrendole tutte e sedici sotto una maschera, e la formula di addizione completa della sezione 5.1.4. La chiave pubblica deriva dal seed di 32 byte. |
| Scambio di chiavi X25519 | sgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecret | Diffie-Hellman RFC 7748 su Curve25519. |
| Ed448 firma / verifica | sgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_Verify | RFC 8032, la curva EdDSA a 448 bit (Goldilocks). |
| Scambio di chiavi X448 | sgcX448, sgcX448_PublicKey, sgcX448_SharedSecret | Diffie-Hellman RFC 7748 su Curve448. |
| secp256k1 | sgcECDSA_SignHash / VerifyHash con eccSecp256k1 | La curva Bitcoin/Ethereum, SEC 2, in sgcCrypto_ECCurves. |
| Brainpool P256r1 / P384r1 / P512r1 | stesse funzioni con eccBrainpoolP256r1 / P384r1 / P512r1 | RFC 5639, comune nei profili eIDAS e governativi UE. |
| NIST P-256 / P-384 / P-521 | stesse funzioni con eccP256 / eccP384 / eccP521 | TsgcECCurve ora nomina sette curve, quindi la generazione delle chiavi, la firma, la verifica, l'ECDH e la compressione dei punti raggiungono tutte le curve prime NIST a partire da byte di chiave grezzi, non solo da un file PEM. |
| Nonce ECDSA deterministico | integrato in sgcECDSA_SignHash | RFC 6979: il nonce è derivato dalla chiave privata e dal messaggio, nessuna modalità di fallimento dell'RNG. |
| Moltiplicazione scalare in tempo costante | all'interno di sgcECDSA_SignHash, sgcECDH_SharedSecret e della generazione di chiavi EC | Ogni curva in sgcCrypto_ECCurves esegue lo stesso motore: riduzione di Montgomery, che non ha alcun passo dipendente dai dati, una finestra fissa il cui numero deriva dalla curva, voci di tabella scelte scorrendole tutte sotto una maschera, e una formula di addizione completa che non guarda mai una coordinata per decidere quale caso si applica. I percorsi JOSE, WebAuthn ed E2EE di sgcCrypto_EC eseguono lo stesso codice. |
| ECDH (secp256k1 / Brainpool) | sgcECDH_SharedSecret | Segreto condiviso sulle stesse quattro curve. |
| Compressione dei punti | sgcEC_Compress / sgcEC_Decompress | Memorizza o trasmetti la forma compressa più corta della chiave pubblica. |
| EC come JWS (ES256/384/512) | sgcECDSA_SignJWS / sgcECDSA_VerifyJWS | Curva selezionata automaticamente dalla lunghezza in bit richiesta, firma/verifica direttamente da una chiave PEM, sorella orientata a JOSE di ECCurves. |
| ECDH generico | sgcECDH | Segreto condiviso da una chiave privata raw e dal punto pubblico del peer. |
| Verifica ECDSA raw / DER | sgcECDSA_VerifyRaw / sgcECDSA_VerifyDER | Verifica contro una tupla raw (Qx, Qy, r, s) o una firma codificata DER. |
| Firma DER ECDSA e conversione | sgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRaw | X.509, CMS e TLS trasportano il DER ECDSA-Sig-Value, una SEQUENCE di INTEGER r seguito da INTEGER s. JOSE e WebAuthn trasportano invece la coppia raw R || S. Firma direttamente nell'una o nell'altra forma, oppure converte una firma esistente tra le due. |
| Firme Schnorr (BIP-340) | sgcSchnorr_PublicKey, sgcSchnorr_Sign, sgcSchnorr_Verify | Solo secp256k1, con chiavi pubbliche x-only a 32 byte e firme a 64 byte: ciò che utilizzano Taproot, Nostr e Lightning. sgcSchnorr_TaggedHash è esposta in modo che i tag BIP-341 e BIP-342 possano essere costruiti sulla stessa costruzione. |
| Firma RSA (PKCS#1 v1.5) | sgcRSA_SignPKCS1 | Da una chiave privata PEM, digest SHA-1/256/384/512. |
| Operazioni con la chiave privata RSA | sgcRSA_SignPKCS1 e le altre chiamate di firma e decifratura di sgcCrypto_RSA_Keys | Ogni operazione viene accecata con una coppia casuale nuova, eseguita tramite un'esponenziazione a finestra fissa e una ricombinazione CRT il cui tempo non dipende dai fattori né dai dati, e verificata rispetto all'esponente pubblico prima che il risultato venga restituito. Un guasto in una metà CRT rivelerebbe altrimenti un fattore in una singola firma, quindi in caso di discrepanza non viene restituito nulla. |
| Verifica RSA (PKCS#1 v1.5 / PSS) | sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS, e varianti _Raw su modulo/esponente | RFC 8017. La verifica funziona da una chiave PEM o da modulo ed esponente raw, senza costruzione di un key-object. |
| Generazione di chiavi RSA | sgcRSA_GenerateKey | Qualsiasi lunghezza in bit richiesta, test di primalità Miller-Rabin. |
| Crittografia RSA-OAEP | sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | Padding di crittografia asimmetrica ottimale RFC 8017. |
| RSA-OAEP con hash MGF1 indipendente | gli overload a cinque parametri di sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | Fissa separatamente l'hash dell'etichetta e l'hash MGF1. OAEPWithSHA256AndMGF1Padding significa SHA-256 per entrambi in Bouncy Castle ma SHA-256 con MGF1-SHA1 in SunJCE, e questa discrepanza è il motivo abituale per cui fallisce l'interoperabilità con Java. |
| Cifratura RSA PKCS#1 v1.5 | sgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_Decrypt | RFC 8017 sezione 7.2, la modalità che Java chiama RSA/ECB/PKCS1Padding. La decifratura segue lo stesso percorso per ogni errore, così non offre nulla su cui lavorare a un oracolo di padding. Preferire OAEP per qualsiasi cosa nuova. |
| Firma RSA-PSS / PKCS#1 | sgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / Verify | Firma direttamente da una TsgcRSAPrivateKey generata. |
| Esportazione chiavi RSA | sgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, chiamate DER corrispondenti | Codifiche PKCS#1 e SubjectPublicKeyInfo. |
| Esportazione chiavi PKCS#8 e SEC 1 | sgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEM | Il contenitore BEGIN PRIVATE KEY che Java, .NET e la maggior parte degli strumenti moderni si aspettano, accanto alla forma SEC 1 BEGIN EC PRIVATE KEY e al SubjectPublicKeyInfo che un certificato incorpora. Non cifrato, quindi ciò che si ottiene è materiale di chiave allo stato grezzo. |
| Importazione chiavi RSA ed EC | sgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEM | Questo prima non esisteva: una chiave generata poteva essere scritta ma mai riletta. L'importazione accetta PKCS#1, PKCS#8, SEC 1 e SubjectPublicKeyInfo, DER o PEM, ricalcola i parametri CRT o il punto pubblico quando il file li omette, e restituisce False su input malformato anziché sollevare un'eccezione, quindi è sicuro passarle file non fidati. |
| ECIES seal / open | sgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_Open | Crittografia ibrida verso una chiave pubblica X25519: ECDH effimero più un AEAD, una chiamata per ogni direzione. |