| Assinatura / verificação Ed25519 | sgcEd25519_Sign / sgcEd25519_Verify | RFC 8032. Chave pública de 32 bytes, assinatura de 64 bytes. A verificação rejeita pontos não canônicos e S >= L conforme a seção 5.1.7. |
| Troca de chaves X25519 | sgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecret | Diffie-Hellman RFC 7748 sobre a Curve25519. |
| Assinatura / verificação Ed448 | sgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_Verify | RFC 8032, a curva EdDSA de 448 bits (Goldilocks). |
| Troca de chaves X448 | sgcX448, sgcX448_PublicKey, sgcX448_SharedSecret | Diffie-Hellman RFC 7748 sobre a Curve448. |
| secp256k1 | sgcECDSA_SignHash / VerifyHash com eccSecp256k1 | A curva do Bitcoin/Ethereum, SEC 2, em sgcCrypto_ECCurves. |
| Brainpool P256r1 / P384r1 / P512r1 | mesmas funções com eccBrainpoolP256r1 / P384r1 / P512r1 | RFC 5639, comum em perfis eIDAS e governamentais da UE. |
| NIST P-256 / P-384 / P-521 | mesmas funções com eccP256 / eccP384 / eccP521 | TsgcECCurve agora nomeia sete curvas, então geração de chave, assinatura, verificação, ECDH e compressão de ponto alcançam as curvas primas do NIST a partir de bytes de chave brutos, não apenas de um arquivo PEM. |
| Nonce ECDSA determinístico | embutido em sgcECDSA_SignHash | RFC 6979: o nonce é derivado da chave privada e da mensagem, sem modo de falha por RNG. |
| ECDH (secp256k1 / Brainpool) | sgcECDH_SharedSecret | Segredo compartilhado sobre as mesmas quatro curvas. |
| Compressão de ponto | sgcEC_Compress / sgcEC_Decompress | Armazene ou transmita a forma comprimida mais curta da chave pública. |
| EC como JWS (ES256/384/512) | sgcECDSA_SignJWS / sgcECDSA_VerifyJWS | Curva selecionada automaticamente pelo comprimento de bits solicitado, assina/verifica diretamente a partir de uma chave PEM, irmã voltada para JOSE do ECCurves. |
| ECDH genérico | sgcECDH | Segredo compartilhado a partir de uma chave privada bruta e o ponto público do par. |
| Verificação ECDSA bruta / DER | sgcECDSA_VerifyRaw / sgcECDSA_VerifyDER | Verifica contra uma tupla bruta (Qx, Qy, r, s) ou uma assinatura codificada em DER. |
| Assinatura ECDSA DER & conversão | sgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRaw | X.509, CMS e TLS transportam o DER ECDSA-Sig-Value, um SEQUENCE de INTEGER r seguido de INTEGER s. JOSE e WebAuthn transportam em vez disso o par bruto R || S. Assine diretamente em qualquer uma das duas formas, ou converta uma assinatura existente entre elas. |
| Assinaturas Schnorr (BIP-340) | sgcSchnorr_PublicKey, sgcSchnorr_Sign, sgcSchnorr_Verify | Somente secp256k1, com chaves públicas x-only de 32 bytes e assinaturas de 64 bytes: o que Taproot, Nostr e Lightning usam. sgcSchnorr_TaggedHash é exposta para que as tags do BIP-341 e do BIP-342 possam ser construídas sobre a mesma construção. |
| Assinatura RSA (PKCS#1 v1.5) | sgcRSA_SignPKCS1 | A partir de uma chave privada PEM, digest SHA-1/256/384/512. |
| Verificação RSA (PKCS#1 v1.5 / PSS) | sgcRSA_VerifyPKCS1, sgcRSA_VerifyPSS, e variantes _Raw sobre um módulo/expoente | RFC 8017. A verificação funciona a partir de uma chave PEM ou de módulo e expoente brutos, sem necessidade de construir um objeto de chave. |
| Geração de chave RSA | sgcRSA_GenerateKey | Qualquer comprimento de bits solicitado, teste de primalidade de Miller-Rabin. |
| Criptografia RSA-OAEP | sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | Padding de criptografia assimétrica ótima RFC 8017. |
| RSA-OAEP com hash MGF1 independente | as sobrecargas de cinco parâmetros sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | Fixe o hash do label e o hash do MGF1 separadamente. OAEPWithSHA256AndMGF1Padding significa SHA-256 para ambos no Bouncy Castle, mas SHA-256 com MGF1-SHA1 no SunJCE, e essa incompatibilidade é o motivo mais comum de falha de interoperabilidade com Java. |
| Criptografia RSA PKCS#1 v1.5 | sgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_Decrypt | RFC 8017 seção 7.2, o modo que o Java chama de RSA/ECB/PKCS1Padding. A descriptografia segue o mesmo caminho para toda falha, então não dá a um padding oracle nada com que trabalhar. Prefira o OAEP para qualquer coisa nova. |
| Assinatura RSA-PSS / PKCS#1 | sgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / Verify | Assina diretamente a partir de um TsgcRSAPrivateKey gerado. |
| Exportação de chave RSA | sgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, chamadas DER equivalentes | Codificações PKCS#1 e SubjectPublicKeyInfo. |
| Exportação de chave PKCS#8 e SEC 1 | sgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEM | O contêiner BEGIN PRIVATE KEY que Java, .NET e a maioria das ferramentas modernas esperam, junto com a forma SEC 1 BEGIN EC PRIVATE KEY e o SubjectPublicKeyInfo que um certificado embute. Não criptografado, então o que volta é material de chave em estado bruto. |
| Importação de chave RSA e EC | sgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEM | Isso não existia antes: uma chave gerada podia ser exportada, mas nunca lida de volta. A importação aceita PKCS#1, PKCS#8, SEC 1 e SubjectPublicKeyInfo, em DER ou PEM, recalcula os parâmetros CRT ou o ponto público quando o arquivo os omite, e retorna False em uma entrada malformada em vez de gerar uma exceção, então é seguro entregar a ela arquivos não confiáveis. |
| ECIES seal / open | sgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_Open | Criptografia híbrida para uma chave pública X25519: ECDH efêmero mais um AEAD, uma chamada em cada sentido. |