| Signature / vérification Ed25519 | sgcEd25519_Sign / sgcEd25519_Verify, sgcEd25519_PublicKey | RFC 8032. Clé publique de 32 octets, signature de 64 octets. La vérification rejette les points non canoniques et S >= L selon la section 5.1.7. La signature est en temps constant vis-à-vis du scalaire secret et du nonce propre à chaque message : fenêtres fixes de quatre bits, l'entrée de la table choisie en balayant les seize sous un masque, et la formule d'addition complète de la section 5.1.4. La clé publique est dérivée de la graine de 32 octets. |
| Échange de clés X25519 | sgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecret | Diffie-Hellman RFC 7748 sur Curve25519. |
| Ed448 signer / vérifier | sgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_Verify | RFC 8032, la courbe EdDSA 448 bits (Goldilocks). |
| Échange de clés X448 | sgcX448, sgcX448_PublicKey, sgcX448_SharedSecret | Diffie-Hellman RFC 7748 sur Curve448. |
| secp256k1 | sgcECDSA_SignHash / VerifyHash avec eccSecp256k1 | La courbe Bitcoin/Ethereum, SEC 2, dans sgcCrypto_ECCurves. |
| Brainpool P256r1 / P384r1 / P512r1 | mêmes fonctions avec eccBrainpoolP256r1 / P384r1 / P512r1 | RFC 5639, courante dans eIDAS UE et les profils gouvernementaux. |
| NIST P-256 / P-384 / P-521 | mêmes fonctions avec eccP256 / eccP384 / eccP521 | TsgcECCurve nomme désormais sept courbes, si bien que la génération de clé, la signature, la vérification, l'ECDH et la compression de point atteignent toutes les courbes premières NIST à partir d'octets de clé bruts, pas seulement depuis un fichier PEM. |
| Nonce ECDSA déterministe | intégré dans sgcECDSA_SignHash | RFC 6979 : le nonce est dérivé de la clé privée et du message, aucun mode d'échec du générateur aléatoire. |
| Multiplication scalaire en temps constant | dans sgcECDSA_SignHash, sgcECDH_SharedSecret et la génération de clés EC | Chaque courbe de sgcCrypto_ECCurves exécute le même moteur : la réduction de Montgomery, qui n'a aucune étape dépendante des données, une fenêtre fixe dont le nombre vient de la courbe, des entrées de table choisies en balayant toutes sous un masque, et une formule d'addition complète qui ne regarde jamais une coordonnée pour décider quel cas s'applique. Les chemins JOSE, WebAuthn et E2EE de sgcCrypto_EC exécutent le même code. |
| ECDH (secp256k1 / Brainpool) | sgcECDH_SharedSecret | Secret partagé sur les quatre mêmes courbes. |
| Compression de point | sgcEC_Compress / sgcEC_Decompress | Stocke ou transmet la forme compressée, plus courte, de la clé publique. |
| EC en JWS (ES256/384/512) | sgcECDSA_SignJWS / sgcECDSA_VerifyJWS | Courbe sélectionnée automatiquement selon la longueur de bit demandée, signature/vérification directement depuis une clé PEM, variante orientée JOSE de ECCurves. |
| ECDH générique | sgcECDH | Secret partagé à partir d'une clé privée brute et du point public du pair. |
| Vérification ECDSA brute / DER | sgcECDSA_VerifyRaw / sgcECDSA_VerifyDER | Vérifie contre un tuple brut (Qx, Qy, r, s) ou une signature encodée en DER. |
| Signature ECDSA DER et conversion | sgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRaw | X.509, CMS et TLS transportent l'ECDSA-Sig-Value au format DER, une SEQUENCE d'un INTEGER r suivi d'un INTEGER s. JOSE et WebAuthn transportent à la place la paire brute R || S. Signe directement dans l'une ou l'autre forme, ou convertis une signature existante entre les deux. |
| Signatures Schnorr (BIP-340) | sgcSchnorr_PublicKey, sgcSchnorr_Sign, sgcSchnorr_Verify | secp256k1 uniquement, avec des clés publiques x-only de 32 octets et des signatures de 64 octets : ce qu'utilisent Taproot, Nostr et Lightning. sgcSchnorr_TaggedHash est exposée pour que les tags BIP-341 et BIP-342 puissent être construits sur la même base. |
| Signature RSA (PKCS#1 v1.5) | sgcRSA_SignPKCS1 | Depuis une clé privée PEM, condensé SHA-1/256/384/512. |
| Opérations RSA à clé privée | sgcRSA_SignPKCS1 et les autres appels de signature et de déchiffrement de sgcCrypto_RSA_Keys | Chaque opération est aveuglée avec une paire aléatoire fraîche, exécutée par une exponentiation à fenêtre fixe et une recombinaison CRT dont la durée ne dépend ni des facteurs ni des données, puis vérifiée par rapport à l'exposant public avant que le résultat ne soit renvoyé. Une faute dans une moitié CRT révélerait autrement un facteur dès une seule signature, donc en cas de non-concordance rien n'est renvoyé. |
| Vérification RSA (PKCS#1 v1.5 / PSS) | sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS, et variantes _Raw sur un module/exposant | RFC 8017. La vérification fonctionne depuis une clé PEM ou un module et exposant bruts, sans construction d'objet clé. |
| Génération de clé RSA | sgcRSA_GenerateKey | N'importe quelle longueur de bit demandée, test de primalité de Miller-Rabin. |
| Chiffrement RSA-OAEP | sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | Padding de chiffrement asymétrique optimal RFC 8017. |
| RSA-OAEP avec un hachage MGF1 indépendant | les surcharges à cinq paramètres de sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | Fixe le hachage du label et le hachage MGF1 séparément. OAEPWithSHA256AndMGF1Padding signifie SHA-256 pour les deux dans Bouncy Castle, mais SHA-256 avec MGF1-SHA1 dans SunJCE, et cette discordance est la cause habituelle des échecs d'interopérabilité avec Java. |
| Chiffrement RSA PKCS#1 v1.5 | sgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_Decrypt | RFC 8017 section 7.2, le mode que Java nomme RSA/ECB/PKCS1Padding. Le déchiffrement emprunte le même chemin pour chaque échec, ce qui ne donne rien à exploiter à un oracle de remplissage. Préfère OAEP pour tout ce qui est nouveau. |
| Signature RSA-PSS / PKCS#1 | sgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / Verify | Signe directement depuis une TsgcRSAPrivateKey générée. |
| Export de clé RSA | sgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, appels DER équivalents | Encodages PKCS#1 et SubjectPublicKeyInfo. |
| Export de clé PKCS#8 et SEC 1 | sgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEM | Le conteneur BEGIN PRIVATE KEY qu'attendent Java, .NET et la plupart des outils modernes, ainsi que la forme SEC 1 BEGIN EC PRIVATE KEY et le SubjectPublicKeyInfo qu'intègre un certificat. Non chiffré, ce qui revient donc n'est que du matériel de clé nu. |
| Import de clé RSA et EC | sgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEM | Cela n'existait pas auparavant : une clé générée pouvait être écrite mais jamais relue. L'import accepte PKCS#1, PKCS#8, SEC 1 et SubjectPublicKeyInfo, en DER ou en PEM, recalcule les paramètres CRT ou le point public quand le fichier les omet, et renvoie False sur une entrée malformée plutôt que de lever une exception, si bien que des fichiers non fiables peuvent lui être confiés sans risque. |
| ECIES seal / open | sgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_Open | Chiffrement hybride vers une clé publique X25519 : ECDH éphémère plus un AEAD, un appel dans chaque sens. |