| Ed25519 signieren / verifizieren | sgcEd25519_Sign / sgcEd25519_Verify | RFC 8032. 32-Byte-Public-Key, 64-Byte-Signatur. Verify weist nicht-kanonische Punkte und S >= L gemäß Abschnitt 5.1.7 zurück. |
| X25519-Schlüsselaustausch | sgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecret | RFC 7748 Diffie-Hellman über Curve25519. |
| Ed448 signieren / verifizieren | sgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_Verify | RFC 8032, die 448-Bit-EdDSA-Kurve (Goldilocks). |
| X448-Schlüsselaustausch | sgcX448, sgcX448_PublicKey, sgcX448_SharedSecret | RFC 7748 Diffie-Hellman über Curve448. |
| secp256k1 | sgcECDSA_SignHash / VerifyHash mit eccSecp256k1 | Die Bitcoin-/Ethereum-Kurve, SEC 2, in sgcCrypto_ECCurves. |
| Brainpool P256r1 / P384r1 / P512r1 | dieselben Funktionen mit eccBrainpoolP256r1 / P384r1 / P512r1 | RFC 5639, verbreitet in EU-eIDAS- und Behördenprofilen. |
| NIST P-256 / P-384 / P-521 | dieselben Funktionen mit eccP256 / eccP384 / eccP521 | TsgcECCurve benennt jetzt sieben Kurven, sodass Schlüsselerzeugung, Signieren, Verifizieren, ECDH und Punktkompression alle die NIST-Primkurven aus rohen Schlüssel-Bytes erreichen, nicht nur aus einer PEM-Datei. |
| Deterministische ECDSA-Nonce | eingebaut in sgcECDSA_SignHash | RFC 6979: Die Nonce wird aus dem privaten Schlüssel und der Nachricht abgeleitet, kein RNG-Fehlermodus. |
| ECDH (secp256k1 / Brainpool) | sgcECDH_SharedSecret | Gemeinsames Geheimnis über dieselben vier Kurven. |
| Punktkompression | sgcEC_Compress / sgcEC_Decompress | Speichere oder übertrage die kürzere komprimierte Public-Key-Form. |
| EC als JWS (ES256/384/512) | sgcECDSA_SignJWS / sgcECDSA_VerifyJWS | Kurve automatisch aus der angeforderten Bitlänge gewählt, direkt aus einem PEM-Schlüssel signieren/verifizieren, JOSE-orientiertes Gegenstück zu ECCurves. |
| Generisches ECDH | sgcECDH | Gemeinsames Geheimnis aus einem rohen privaten Schlüssel und dem öffentlichen Punkt der Gegenseite. |
| Rohes / DER-ECDSA-Verify | sgcECDSA_VerifyRaw / sgcECDSA_VerifyDER | Verifiziert gegen ein rohes (Qx, Qy, r, s)-Tupel oder eine DER-kodierte Signatur. |
| DER-ECDSA-Signieren & -Konvertierung | sgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRaw | X.509, CMS und TLS tragen den DER-ECDSA-Sig-Value, eine SEQUENCE aus INTEGER r gefolgt von INTEGER s. JOSE und WebAuthn tragen stattdessen das rohe Paar R || S. Signiere direkt in eine der beiden Formen, oder konvertiere eine bestehende Signatur zwischen ihnen. |
| Schnorr-Signaturen (BIP-340) | sgcSchnorr_PublicKey, sgcSchnorr_Sign, sgcSchnorr_Verify | Nur secp256k1, mit x-only 32-Byte-Public-Keys und 64-Byte-Signaturen: was Taproot, Nostr und Lightning verwenden. sgcSchnorr_TaggedHash ist freigelegt, damit sich die BIP-341- und BIP-342-Tags auf derselben Konstruktion aufbauen lassen. |
| RSA signieren (PKCS#1 v1.5) | sgcRSA_SignPKCS1 | Aus einem PEM-Private-Key, SHA-1/256/384/512-Digest. |
| RSA verifizieren (PKCS#1 v1.5 / PSS) | sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS, sowie _Raw-Varianten über Modulus/Exponent | RFC 8017. Verify funktioniert aus einem PEM-Schlüssel oder rohem Modulus und Exponent, ohne Konstruktion eines Key-Objekts. |
| RSA-Schlüsselerzeugung | sgcRSA_GenerateKey | Jede angeforderte Bitlänge, Miller-Rabin-Primzahltest. |
| RSA-OAEP-Verschlüsselung | sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | RFC 8017 Optimal Asymmetric Encryption Padding. |
| RSA-OAEP mit unabhängigem MGF1-Hash | die fünf-Parameter-Überladungen von sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | Lege den Label-Hash und den MGF1-Hash getrennt fest. OAEPWithSHA256AndMGF1Padding bedeutet in Bouncy Castle SHA-256 für beide, aber in SunJCE SHA-256 mit MGF1-SHA1, und genau dieser Fehlabgleich ist der übliche Grund, warum die Java-Interoperabilität scheitert. |
| RSA-PKCS#1-v1.5-Verschlüsselung | sgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_Decrypt | RFC 8017 Abschnitt 7.2, der Modus, den Java RSA/ECB/PKCS1Padding nennt. Decrypt nimmt für jeden Fehler denselben Pfad, sodass es einem Padding-Oracle nichts liefert, womit es arbeiten könnte. Bevorzuge OAEP für alles Neue. |
| RSA-PSS-/PKCS#1-Signierung | sgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / Verify | Signiere direkt aus einem erzeugten TsgcRSAPrivateKey. |
| RSA-Schlüsselexport | sgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, entsprechende DER-Aufrufe | PKCS#1- und SubjectPublicKeyInfo-Kodierungen. |
| PKCS#8- und SEC-1-Schlüsselexport | sgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEM | Der Container BEGIN PRIVATE KEY, den Java, .NET und die meisten modernen Tools erwarten, neben der SEC-1-Form BEGIN EC PRIVATE KEY und dem SubjectPublicKeyInfo, das ein Zertifikat einbettet. Unverschlüsselt, das Ergebnis ist also blankes Schlüsselmaterial. |
| RSA- und EC-Schlüsselimport | sgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEM | Das gab es vorher nicht: Ein erzeugter Schlüssel ließ sich schreiben, aber nie wieder einlesen. Der Import akzeptiert PKCS#1, PKCS#8, SEC 1 und SubjectPublicKeyInfo, DER oder PEM, berechnet die CRT-Parameter oder den öffentlichen Punkt neu, wenn die Datei sie auslässt, und gibt bei fehlerhafter Eingabe False zurück, statt eine Exception auszulösen, sodass sich nicht vertrauenswürdige Dateien gefahrlos übergeben lassen. |
| ECIES Seal / Open | sgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_Open | Hybridverschlüsselung an einen X25519-Public-Key: ephemeres ECDH plus ein AEAD, ein Aufruf pro Richtung. |