| Ed25519 firma / verifica | sgcEd25519_Sign / sgcEd25519_Verify | RFC 8032. Chiave pubblica a 32 byte, firma a 64 byte. La verifica rifiuta punti non canonici e S >= L come da sezione 5.1.7. |
| 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. |
| 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. |
| 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. |