| Ed25519 ondertekenen / verifiëren | sgcEd25519_Sign / sgcEd25519_Verify, sgcEd25519_PublicKey | RFC 8032. Publieke sleutel van 32 byte, handtekening van 64 byte. De verificatie weigert niet-canonieke punten en S >= L volgens sectie 5.1.7. Ondertekenen gebeurt in constante tijd in de geheime scalar en in de nonce per bericht: vaste vensters van vier bit, de tabelinvoer gekozen door alle zestien onder een masker te scannen, en de volledige optelformule van sectie 5.1.4. De publieke sleutel komt uit de seed van 32 byte. |
| X25519-sleuteluitwisseling | sgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecret | RFC 7748 Diffie-Hellman over Curve25519. |
| Ed448 ondertekenen / verifiëren | sgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_Verify | RFC 8032, de 448-bit (Goldilocks) EdDSA-curve. |
| X448-sleuteluitwisseling | sgcX448, sgcX448_PublicKey, sgcX448_SharedSecret | RFC 7748 Diffie-Hellman over Curve448. |
| secp256k1 | sgcECDSA_SignHash / VerifyHash met eccSecp256k1 | De Bitcoin/Ethereum-curve, SEC 2, in sgcCrypto_ECCurves. |
| Brainpool P256r1 / P384r1 / P512r1 | dezelfde functies met eccBrainpoolP256r1 / P384r1 / P512r1 | RFC 5639, gangbaar in EU-eIDAS- en overheidsprofielen. |
| NIST P-256 / P-384 / P-521 | dezelfde functies met eccP256 / eccP384 / eccP521 | TsgcECCurve noemt nu zeven curves, zodat sleutelgeneratie, ondertekenen, verifiëren, ECDH en puntcompressie allemaal de NIST-priemcurves bereiken vanuit raw sleutelbytes, niet alleen vanuit een PEM-bestand. |
| Deterministische ECDSA-nonce | ingebouwd in sgcECDSA_SignHash | RFC 6979: de nonce wordt afgeleid van de private sleutel en het bericht, geen RNG-faalmodus. |
| Scalaire vermenigvuldiging in constante tijd | binnen sgcECDSA_SignHash, sgcECDH_SharedSecret en EC-sleutelgeneratie | Elke curve in sgcCrypto_ECCurves draait dezelfde engine: Montgomery-reductie, die geen datagevoelige stap kent, een vast venster waarvan het aantal uit de curve komt, tabelinvoer gekozen door ze allemaal onder een masker te scannen, en een volledige optelformule die nooit naar een coördinaat kijkt om te bepalen welk geval van toepassing is. De JOSE-, WebAuthn- en E2EE-paden van sgcCrypto_EC draaien dezelfde code. |
| ECDH (secp256k1 / Brainpool) | sgcECDH_SharedSecret | Gedeeld geheim over dezelfde vier curves. |
| Puntcompressie | sgcEC_Compress / sgcEC_Decompress | Sla de kortere gecomprimeerde publieke-sleutelvorm op of verstuur die. |
| EC als JWS (ES256/384/512) | sgcECDSA_SignJWS / sgcECDSA_VerifyJWS | Curve automatisch gekozen op basis van de gevraagde bitlengte, ondertekenen/verifiëren rechtstreeks vanuit een PEM-sleutel, JOSE-georiënteerde tegenhanger van ECCurves. |
| Generieke ECDH | sgcECDH | Gedeeld geheim uit een raw private sleutel en een remote publiek punt. |
| Raw / DER ECDSA-verificatie | sgcECDSA_VerifyRaw / sgcECDSA_VerifyDER | Verifieer tegen een raw (Qx, Qy, r, s)-tuple of een DER-gecodeerde handtekening. |
| ECDSA DER-ondertekening & -conversie | sgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRaw | X.509, CMS en TLS dragen de DER ECDSA-Sig-Value, een SEQUENCE van INTEGER r gevolgd door INTEGER s. JOSE en WebAuthn dragen in plaats daarvan het raw paar R || S. Onderteken rechtstreeks in beide vormen, of converteer een bestaande handtekening ertussen. |
| Schnorr-handtekeningen (BIP-340) | sgcSchnorr_PublicKey, sgcSchnorr_Sign, sgcSchnorr_Verify | Alleen secp256k1, met x-only publieke sleutels van 32 bytes en handtekeningen van 64 bytes: wat Taproot, Nostr en Lightning gebruiken. sgcSchnorr_TaggedHash wordt blootgesteld zodat de BIP-341- en BIP-342-tags op dezelfde constructie kunnen worden gebouwd. |
| RSA-ondertekening (PKCS#1 v1.5) | sgcRSA_SignPKCS1 | Vanuit een PEM private sleutel, SHA-1/256/384/512-digest. |
| RSA-bewerkingen met privésleutel | sgcRSA_SignPKCS1 en de andere ondertekenings- en decryptieaanroepen van sgcCrypto_RSA_Keys | Elke bewerking wordt geblindeerd met een vers willekeurig paar, uitgevoerd via een machtsverheffing met vast venster en een CRT-hercombinatie waarvan de timing niet afhangt van de factoren of de data, en gecontroleerd tegen de publieke exponent voordat het resultaat wordt teruggegeven. Een fout in één CRT-helft zou anders in één enkele handtekening een factor prijsgeven, dus bij een afwijking wordt niets teruggegeven. |
| RSA-verificatie (PKCS#1 v1.5 / PSS) | sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS, en _Raw-varianten over een modulus/exponent | RFC 8017. Verify werkt vanuit een PEM-sleutel of raw modulus en exponent, geen key-object-constructie nodig. |
| RSA-sleutelgeneratie | sgcRSA_GenerateKey | Elke gevraagde bitlengte, Miller-Rabin-priemtest. |
| RSA-OAEP-versleuteling | sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | RFC 8017 optimal asymmetric encryption padding. |
| RSA-OAEP met een onafhankelijke MGF1-hash | de vijf-parameteroverloads van sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | Leg de labelhash en de MGF1-hash apart vast. OAEPWithSHA256AndMGF1Padding betekent SHA-256 voor beide in Bouncy Castle maar SHA-256 met MGF1-SHA1 in SunJCE, en die mismatch is meestal de reden waarom Java-interoperabiliteit faalt. |
| RSA PKCS#1 v1.5-versleuteling | sgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_Decrypt | RFC 8017 sectie 7.2, de modus die Java RSA/ECB/PKCS1Padding noemt. Decrypt doorloopt voor elke fout hetzelfde pad, zodat een padding-oracle er niets aan heeft. Geef de voorkeur aan OAEP voor iets nieuws. |
| RSA-PSS / PKCS#1-ondertekening | sgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / Verify | Onderteken rechtstreeks vanuit een gegenereerde TsgcRSAPrivateKey. |
| RSA-sleutelexport | sgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, overeenkomende DER-aanroepen | PKCS#1- en SubjectPublicKeyInfo-encoderingen. |
| PKCS#8- en SEC 1-sleutelexport | sgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEM | De container BEGIN PRIVATE KEY die Java, .NET en de meeste moderne tools verwachten, naast de SEC 1-vorm BEGIN EC PRIVATE KEY en de SubjectPublicKeyInfo die een certificaat insluit. Onversleuteld, dus wat terugkomt is kaal sleutelmateriaal. |
| RSA- en EC-sleutelimport | sgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEM | Dit bestond eerder niet: een gegenereerde sleutel kon worden weggeschreven maar nooit worden teruggelezen. Import accepteert PKCS#1, PKCS#8, SEC 1 en SubjectPublicKeyInfo, DER of PEM, herberekent de CRT-parameters of het publieke punt wanneer het bestand ze weglaat, en geeft False terug bij misvormde invoer in plaats van een exception te gooien, zodat niet-vertrouwde bestanden er veilig aan kunnen worden meegegeven. |
| ECIES seal / open | sgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_Open | Hybride versleuteling naar een X25519-publieke sleutel: ephemere ECDH plus een AEAD, één aanroep per richting. |