sgcCrypto Matrice delle funzionalità

Tutto ciò che fa sgcCrypto, mappato sulle 43 unità presenti sul disco. Qui non ci sono componenti né proprietà a design-time: ogni riga qui sotto è una funzione o una procedura che chiami direttamente. Il codice sorgente completo è incluso in ogni licenza. Le ancore qui sotto ti portano alle sei famiglie di capacità in cui rientrano le unità.

sgcCrypto non ha componenti. Le 43 unità qui sotto esportano semplici funzioni, non esiste una classe Tsgc* e non esiste un sgcCrypto_Reg.pas. Aggiungi un'unità alla tua clausola uses e chiama la funzione.

Già incluso. sgcCrypto viene distribuito gratuitamente all'interno di sgcWebSockets Standard, Professional ed Enterprise, e di All-Access. È anche venduto in autonomo (con il runtime sgcWebSockets Core incluso) per i clienti che possiedono solo Core. Vedi Prezzi.

Simmetrica

AES, CCM, ChaCha20, Poly1305, 5 unità

Hashing e KDF

SHA-2/3, BLAKE2, Argon2, 11 unità

Firme e scambio di chiavi

Ed25519, X25519, Schnorr, RSA, 10 unità

PKI

X.509, ASN.1, CSR RSA e EC, 5 unità

Post-quantum

ML-KEM, ML-DSA, SLH-DSA, 6 unità

OTP e varie

HOTP/TOTP, codifica, ZIP AES, 6 unità

43 unità sorgente

Ogni unità sgcCrypto_*.pas sotto sgcWebSockets/delphi/Source/, raggruppata per famiglia.

UnitàFamigliaCosa fa
sgcCrypto_AESSimmetricaAES-CBC, AES-GCM (AEAD), AES-CTR.
sgcCrypto_ModesSimmetricaAES-ECB, OFB, CFB, CTS, CCM (AEAD), Key Wrap / Key Wrap with Padding, e i sette schemi di padding.
sgcCrypto_CMACSimmetricaAutenticazione dei messaggi AES-CMAC e AES-GMAC.
sgcCrypto_ChaChaSimmetricaChaCha20, XChaCha20, Salsa20, XSalsa20.
sgcCrypto_Poly1305SimmetricaMAC Poly1305, AEAD ChaCha20-Poly1305 e XChaCha20-Poly1305.
sgcCrypto_SHA2Hashing e KDFSHA-1, SHA-224, SHA-256, SHA-384, SHA-512.
sgcCrypto_KeccakHashing e KDFSHA-3, SHAKE128/256, cSHAKE, KMAC.
sgcCrypto_Blake2bHashing e KDFBLAKE2b, con o senza chiave.
sgcCrypto_Blake2sHashing e KDFBLAKE2s, con o senza chiave.
sgcCrypto_HMACHashing e KDFHMAC-SHA1/256/384/512.
sgcCrypto_KDFHashing e KDFPBKDF2, KDF1, KDF2 e X9.63, hash selezionabile.
sgcCrypto_HKDFHashing e KDFHKDF extract-and-expand.
sgcCrypto_ScryptHashing e KDFKDF memory-hard scrypt.
sgcCrypto_Argon2Hashing e KDFArgon2d, Argon2i, Argon2id.
sgcCrypto_SipHashHashing e KDFHash con chiave SipHash-2-4.
sgcCrypto_TLSHHashing e KDFFuzzy hash TLSH e diff di similarità.
sgcCrypto_Ed25519Firme e scambio di chiaviEd25519 firma / verifica.
sgcCrypto_X25519Firme e scambio di chiaviDiffie-Hellman X25519.
sgcCrypto_Ed448Firme e scambio di chiaviEd448 firma / verifica.
sgcCrypto_X448Firme e scambio di chiaviDiffie-Hellman X448.
sgcCrypto_GF448Firme e scambio di chiaviAritmetica interna del campo GF(2^448-2^224-1) per Ed448/X448.
sgcCrypto_ECCurvesFirme e scambio di chiaviECDSA / ECDH su secp256k1, Brainpool P256r1/P384r1/P512r1 e NIST P-256/P-384/P-521, firme DER, esportazione/importazione di chiavi, e Schnorr BIP-340.
sgcCrypto_ECFirme e scambio di chiaviFirma/verifica EC generica come JWS (ES256/384/512), ECDH.
sgcCrypto_RSAFirme e scambio di chiaviFirma RSA PKCS#1 v1.5, verifica PKCS#1 v1.5 / PSS, da PEM o raw.
sgcCrypto_RSA_KeysFirme e scambio di chiaviGenerazione chiavi RSA, OAEP (con hash MGF1 indipendente), PSS, firma/verifica/cifratura/decifratura PKCS#1 v1.5, esportazione e importazione DER/PEM PKCS#1 e PKCS#8.
sgcCrypto_ECIESFirme e scambio di chiaviCrittografia ibrida seal / open ECIES su X25519.
sgcCrypto_ASN1PKILettore DER, codec PEM, analisi chiavi PKCS#1/SEC 1.
sgcCrypto_DERPKIPrimitive di scrittura DER.
sgcCrypto_BigIntegerPKIAritmetica interna a precisione arbitraria.
sgcCrypto_X509PKIAnalisi, verifica, catena e CRL X.509, revoca.
sgcCrypto_X509_GenPKIGenerazione di certificati autofirmati e CSR PKCS#10, firmati con RSA o EC, con subject alternative name di tipo URI.
sgcCrypto_MLKEMPost-quantumIncapsulamento di chiavi ML-KEM (FIPS 203), 3 parameter set.
sgcCrypto_MLKEM_PolyPost-quantumAritmetica interna dell'anello polinomiale dietro ML-KEM.
sgcCrypto_MLKEM_HybridPost-quantumIncapsulamento di chiavi ibrido X25519 + ML-KEM.
sgcCrypto_MLDSAPost-quantumFirme digitali ML-DSA (FIPS 204), 3 parameter set.
sgcCrypto_MLDSA_PolyPost-quantumAritmetica interna dell'anello polinomiale dietro ML-DSA.
sgcCrypto_SLHDSAPost-quantumFirme SLH-DSA (FIPS 205), 6 parameter set SHAKE.
sgcCrypto_OTPOTP e varieHOTP, TOTP, finestra di verifica in tempo costante.
sgcCrypto_EncodingOTP e varieConfronto in tempo costante, azzeramento sicuro, hex/Base64url/Base32.
sgcCrypto_Zip_AE2OTP e varieCrittografia AES di WinZip per le voci ZIP, AE-1 / AE-2.
sgcCrypto_LegacyOTP e varieMD4, MD5, HMAC-MD5, DES-ECB, RIPEMD-160 e HMAC-RIPEMD160, solo per interoperabilità.
sgcCrypto_RandomOTP e varieCSPRNG multipiattaforma.
sgcCrypto_Int64OTP e varieEmulazione interna di interi a 64 bit per Delphi 7.

Crittografia e MAC

AES nelle modalità che il codice di produzione usa davvero, più la famiglia AEAD ChaCha20/Poly1305.

CapacitàFunzioneNote
AES-CBCsgcAES_CBC_Encrypt / sgcAES_CBC_DecryptPadding PKCS#7, IV a 16 byte. La lunghezza della chiave seleziona il cifrario: 16/24/32 byte = AES-128/192/256.
AES-CBC, senza paddingsgcAES_CBC_Encrypt_NoPad / sgcAES_CBC_Decrypt_NoPadLa modalità che Java scrive come AES/CBC/NoPadding. L'input deve essere già un multiplo di 16 byte; un input non allineato solleva un'eccezione anziché essere sottoposto silenziosamente a padding producendo qualcosa che l'altra parte non può leggere.
AES-GCM (AEAD)sgcAES_GCM_Encrypt / sgcAES_GCM_DecryptIV consigliato a 12 byte. Tag a 16 byte, confrontato in tempo costante; la decrittazione restituisce False e testo in chiaro vuoto in caso di tag non valido.
AES-CCM (AEAD)sgcAES_CCM_Encrypt / sgcAES_CCM_DecryptL'AEAD specificato dagli stack constrained e IoT, Zigbee, 802.15.4, Bluetooth e le cipher suite TLS CCM, perché richiede solo il block cipher e nessuna tabella GHASH. Nonce da 7 a 13 byte, tag da 4 a 16 byte, verificato in tempo costante.
AES-CTRsgcAES_CTRAES-CM in stile SRTP (RFC 3711). Chiamata simmetrica, nessun padding, contatore a 128 bit big-endian.
AES-ECBsgcAES_ECB_Encrypt / sgcAES_ECB_DecryptNessun IV, nessun concatenamento. Incluso per interoperabilità con formati che lo richiedono.
Schemi di paddingsgcPad_Add / sgcPad_Remove, sgcAES_CBC_EncryptPad / DecryptPad, sgcAES_ECB_EncryptPad / DecryptPadTsgcPadding copre None, PKCS#7, Zero, ANSI X9.23, ISO 7816-4, ISO 10126-2 e TBC, così CBC ed ECB possono leggere e scrivere dati da un sistema che non ha scelto PKCS#7. sgcPad_Remove restituisce False seguendo lo stesso percorso per ogni tipo di pad non valido.
AES-OFB / AES-CFBsgcAES_OFB, sgcAES_CFB_Encrypt / sgcAES_CFB_DecryptModalità a retroazione in stile stream cipher.
AES-CTSsgcAES_CTS_Encrypt / sgcAES_CTS_DecryptCiphertext stealing: cripta dati non multipli della dimensione del blocco senza overhead di padding.
AES Key WrapsgcAES_KeyWrap / sgcAES_KeyUnwrapRFC 3394, per avvolgere una chiave sotto un'altra.
AES Key Wrap with PaddingsgcAES_KeyWrapPad / sgcAES_KeyUnwrapPadRFC 5649, per materiale di chiave non multiplo di 8 byte.
AES-CMACsgcAES_CMAC / sgcAES_CMAC_VerifyCodice di autenticazione dei messaggi RFC 4493.
AES-GMACsgcAES_GMAC / sgcAES_GMAC_VerifyLa modalità di sola autenticazione di GCM: l'intero messaggio viaggia come additional data, nulla viene cifrato. L'IV non deve mai ripetersi con la stessa chiave, e il tag a 16 byte è confrontato in tempo costante.
Primitive di blocco a basso livellosgcAES_ExpandKey, sgcAES_EncryptBlock, sgcAES_DecryptBlockEsposte per le unità di modalità e MAC sopra; chiamale direttamente solo per costruire una modalità non già fornita.
ChaCha20sgcChaCha20RFC 8439, nonce a 96 bit, contatore a 32 bit.
XChaCha20sgcXChaCha20Nonce esteso a 192 bit, sicuro per la generazione casuale di nonce su larga scala.
Salsa20 / XSalsa20sgcSalsa20 / sgcXSalsa20La famiglia di stream cipher predecessore, entrambe le dimensioni di nonce.
Derivazione di sottochiavesgcHChaCha20 / sgcHSalsa20Ciò che le varianti X usano internamente per derivare una sottochiave dai primi 16 byte del nonce.
MAC Poly1305sgcPoly1305 / sgcPoly1305_VerifyAutenticatore monouso, RFC 8439. Non riutilizzare mai una chiave Poly1305.
AEAD ChaCha20-Poly1305sgcChaCha20Poly1305_Encrypt / _DecryptIl cifrario AEAD dietro la seconda cipher suite di TLS 1.3 e SSH.
AEAD XChaCha20-Poly1305sgcXChaCha20Poly1305_Encrypt / _DecryptStesso AEAD, nonce a 192 bit, la costruzione che libsodium chiama crypto_aead_xchacha20poly1305_ietf.

Digest, MAC e hashing delle password

Ogni famiglia di hash di uso comune, più PBKDF2, HKDF, scrypt e tutte e tre le varianti di Argon2.

CapacitàFunzioneNote
SHA-1 / SHA-2sgcSHA1, sgcSHA224, sgcSHA256, sgcSHA384, sgcSHA512FIPS 180-4. SHA-1 è mantenuto per interoperabilità, non consigliato per nuove firme.
SHA-3sgcSHA3_224 / _256 / _384 / _512FIPS 202, la spugna Keccak, strutturalmente indipendente da SHA-2.
SHAKE128 / SHAKE256sgcSHAKE128 / sgcSHAKE256Funzioni a output estendibile: richiedi qualsiasi lunghezza di digest.
cSHAKE128 / cSHAKE256sgcCSHAKE128 / sgcCSHAKE256SHAKE con separazione di dominio, NIST SP 800-185, la base di KMAC.
KMAC128 / KMAC256sgcKMAC128 / sgcKMAC256MAC basato su Keccak con lunghezza di output variabile.
BLAKE2bsgcBlake2b / sgcBlake2b_KeyedRFC 7693, digest fino a 64 byte, keying integrato (nessun HMAC separato necessario).
BLAKE2ssgcBlake2s / sgcBlake2s_KeyedRFC 7693, digest fino a 32 byte, ottimizzato per piattaforme a 32 bit.
Digest in streamingsgcBlake2b_Init/_Update/_Final, chiamate corrispondenti su Keccak/Blake2sPer l'hashing di dati troppo grandi per stare in memoria in un colpo solo.
HMACsgcHMAC_SHA1 / _SHA256 / _SHA384 / _SHA512Hashing con chiave RFC 2104 sulla famiglia SHA-1/2.
RIPEMD-160 / HMAC-RIPEMD160sgcRIPEMD160, sgcHMAC_RIPEMD160ISO/IEC 10118-3 e RFC 2286. Il digest a 160 bit che gli indirizzi Bitcoin sovrappongono a SHA-256, e quello indicato per nome da OpenPGP.
PBKDF2sgcPBKDF2, sgcPBKDF2_SHA1 / _SHA256 / _SHA512RFC 8018. Solo lievemente memory-hard; preferisci Argon2id o scrypt quando puoi scegliere.
HKDFsgcHKDF_Extract_SHA256 / _SHA384, sgcHKDF_Expand_SHA256 / _SHA384, sgcHKDF_SHA256 / _SHA384RFC 5869, derivazione della chiave extract-then-expand, il modo standard per trasformare un segreto condiviso in più chiavi.
KDF1 / KDF2 / X9.63sgcKDF1, sgcKDF2, sgcKDF_X963Le derivazioni in modalità contatore definite da ISO 18033-2, IEEE 1363a e ANSI X9.63, che è ciò che RSA-KEM ed ECIES indicano per nome. KDF1 conta da 0 e KDF2 da 1, una differenza che ha causato veri bug di interoperabilità, quindi verificare quale dei due intende la propria specifica.
scryptsgcScryptRFC 7914, memory-hard, resiste molto meglio di PBKDF2 agli attacchi GPU/ASIC.
Argon2sgcArgon2 (d / i / id), wrapper di convenienza sgcArgon2idRFC 9106, vincitore della Password Hashing Competition. Interfaccia completa con secret opzionale (pepe) e dati associati.
SipHash-2-4sgcSipHash24 / sgcSipHash24_ValuePRF veloce con chiave per le chiavi di hash-table, resiste al denial of service da hash-flooding.
Fuzzy hash TLSHsgcTLSH, sgcTLSH_Init/_Update/_FinalHash locality-sensitive per il rilevamento di quasi-duplicati, non un digest crittografico.
Punteggio di similarità TLSHsgcTLSH_DiffDistanza tra due digest TLSH; più basso significa più simile.

Ed25519/Ed448, X25519/X448, secp256k1, Brainpool e RSA

Firma, verifica e deriva segreti condivisi su cinque distinte famiglie di curve più RSA.

CapacitàFunzioneNote
Ed25519 firma / verificasgcEd25519_Sign / sgcEd25519_VerifyRFC 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 X25519sgcX25519, sgcX25519_PublicKey, sgcX25519_SharedSecretDiffie-Hellman RFC 7748 su Curve25519.
Ed448 firma / verificasgcEd448_GenerateKeyPair, sgcEd448_Sign, sgcEd448_VerifyRFC 8032, la curva EdDSA a 448 bit (Goldilocks).
Scambio di chiavi X448sgcX448, sgcX448_PublicKey, sgcX448_SharedSecretDiffie-Hellman RFC 7748 su Curve448.
secp256k1sgcECDSA_SignHash / VerifyHash con eccSecp256k1La curva Bitcoin/Ethereum, SEC 2, in sgcCrypto_ECCurves.
Brainpool P256r1 / P384r1 / P512r1stesse funzioni con eccBrainpoolP256r1 / P384r1 / P512r1RFC 5639, comune nei profili eIDAS e governativi UE.
NIST P-256 / P-384 / P-521stesse funzioni con eccP256 / eccP384 / eccP521TsgcECCurve 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 deterministicointegrato in sgcECDSA_SignHashRFC 6979: il nonce è derivato dalla chiave privata e dal messaggio, nessuna modalità di fallimento dell'RNG.
ECDH (secp256k1 / Brainpool)sgcECDH_SharedSecretSegreto condiviso sulle stesse quattro curve.
Compressione dei puntisgcEC_Compress / sgcEC_DecompressMemorizza o trasmetti la forma compressa più corta della chiave pubblica.
EC come JWS (ES256/384/512)sgcECDSA_SignJWS / sgcECDSA_VerifyJWSCurva selezionata automaticamente dalla lunghezza in bit richiesta, firma/verifica direttamente da una chiave PEM, sorella orientata a JOSE di ECCurves.
ECDH genericosgcECDHSegreto condiviso da una chiave privata raw e dal punto pubblico del peer.
Verifica ECDSA raw / DERsgcECDSA_VerifyRaw / sgcECDSA_VerifyDERVerifica contro una tupla raw (Qx, Qy, r, s) o una firma codificata DER.
Firma DER ECDSA e conversionesgcECDSA_SignDER / sgcECDSA_VerifyDER, sgcECDSA_RawToDER / sgcECDSA_DERToRawX.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_VerifySolo 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_SignPKCS1Da 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/esponenteRFC 8017. La verifica funziona da una chiave PEM o da modulo ed esponente raw, senza costruzione di un key-object.
Generazione di chiavi RSAsgcRSA_GenerateKeyQualsiasi lunghezza in bit richiesta, test di primalità Miller-Rabin.
Crittografia RSA-OAEPsgcRSA_OAEP_Encrypt / sgcRSA_OAEP_DecryptPadding di crittografia asimmetrica ottimale RFC 8017.
RSA-OAEP con hash MGF1 indipendentegli overload a cinque parametri di sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_DecryptFissa 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.5sgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_DecryptRFC 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#1sgcRSA_PSS_Sign / Verify, sgcRSA_PKCS1_Sign / VerifyFirma direttamente da una TsgcRSAPrivateKey generata.
Esportazione chiavi RSAsgcRSA_ExportPrivateKeyPEM, sgcRSA_ExportPublicKeyPEM, chiamate DER corrispondentiCodifiche PKCS#1 e SubjectPublicKeyInfo.
Esportazione chiavi PKCS#8 e SEC 1sgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEM, sgcEC_ExportPrivateKeySEC1DER / SEC1PEM, sgcEC_ExportSubjectPublicKeyInfo, sgcEC_ExportPublicKeyPEMIl 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 ECsgcRSA_ImportPrivateKeyDER / PEM, sgcRSA_ImportPublicKeyDER / PEM, sgcEC_ImportPrivateKeyDER / PEM, sgcEC_ImportPublicKeyDER / PEMQuesto 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 / opensgcECIES_GenerateKeyPair, sgcECIES_Seal, sgcECIES_OpenCrittografia ibrida verso una chiave pubblica X25519: ECDH effimero più un AEAD, una chiamata per ogni direzione.

Certificati X.509 e ASN.1

Leggi un certificato che qualcun altro ha emesso, o generane uno tu stesso, con un encoder e un decoder DER sotto entrambi.

CapacitàFunzioneNote
Lettore DERsgcASN1_Read, sgcASN1_Next, sgcASN1_ContentPercorre una struttura DER nodo per nodo.
Codec PEMsgcPEM_Decode / sgcPEM_EncodeRFC 7468, il wrapper -----BEGIN ... -----END attorno al DER.
Analisi chiavi RSAsgcASN1_ParseRSAPrivateKey / PublicKeyStrutture di chiave PKCS#1 (RFC 8017).
Analisi chiavi ECsgcASN1_ParseECPrivateKey / PublicKeyStrutture di chiave SEC 1.
Scrittore DER, strutturalesgcDER_Sequence, sgcDER_Set, sgcDER_Tagged, sgcDER_ContextExplicit / ImplicitI mattoncini da cui è assemblato ogni campo di un certificato.
Scrittore DER, valorisgcDER_Integer, sgcDER_OctetString, sgcDER_BitString, sgcDER_Boolean, sgcDER_NullEncoder di valori primitivi.
Scrittore DER, stringhe e identificatorisgcDER_OID, sgcDER_UTF8String, sgcDER_PrintableString, sgcDER_IA5String, sgcDER_TimeObject identifier, i tre tipi di stringa che X.509 usa, e UTCTime/GeneralizedTime.
Analisi del certificatosgcX509_ParseStruttura completa del certificato: soggetto, emittente, validità, chiave pubblica, estensioni.
Verifica firma / catenasgcX509_VerifySignedBy, sgcX509_VerifyChainVerifica un certificato contro un emittente, o percorre e verifica un array di certificati DER.
Analisi CRL e revocasgcX509_CRL_Parse, sgcX509_IsRevoked, sgcX509_CRL_VerifySignedByAnalizza una Certificate Revocation List e controlla un numero di serie contro di essa.
Formattazione dei nomisgcX509_SubjectRFC2253, sgcX509_IssuerRFC2253, sgcX509_SubjectOneLineStringhe distinguished-name RFC 2253, per log e visualizzazione.
Estensioni e SANsgcX509_GetExtension, sgcX509_GetCRLDistributionURIsLegge OID di estensione arbitrari e URI dei punti di distribuzione CRL.
Generazione di certificati autofirmatisgcX509_CreateSelfSignedTsgcX509Options completo: DN di soggetto, finestra di validità, numero di serie, flag CA con vincolo di lunghezza del percorso, key usage, extended key usage, subject alternative name (inclusi i SAN IPv4).
Subject alternative name di tipo URITsgcX509Options.URIsSAN uniformResourceIdentifier, per un'identità di servizio in stile SPIFFE anziché un nome host. Il valore viene scritto testualmente come contenuto IA5String, quindi passare un URI completo.
Generazione CSR PKCS#10sgcX509_CreateCSRRichiesta di firma del certificato RFC 2986 dallo stesso record di opzioni.
Certificati e CSR firmati con ECsgcX509_CreateSelfSignedEx, sgcX509_CreateCSREx, sgcX509_ECKey, sgcX509_RSAKeyFirma con una chiave EC oltre che RSA, avvolgendo l'una o l'altra in una TsgcX509SignKey. Un certificato EC è all'incirca un terzo della dimensione di uno RSA e verifica molto più velocemente. TsgcX509Options.Hash continua a indicare solo lo SHA, l'algoritmo segue la chiave, quindi rhSHA256 con una chiave EC significa ecdsa-with-SHA256.
Output PEMsgcX509_ToPEMAvvolge il DER generato come file PEM pronto da salvare.

ML-KEM, ML-DSA e SLH-DSA

I tre algoritmi che il NIST ha finalizzato nell'agosto 2024 come FIPS 203, 204 e 205, più un combinatore ibrido per il periodo di migrazione.

CapacitàFunzioneNote
Generazione di chiavi ML-KEMsgcMLKEM_GenerateKeyPair, sgcMLKEM_GenerateKeyPairFromSeedFIPS 203, in precedenza Kyber. Tre parameter set: mlkem512, mlkem768, mlkem1024.
Incapsulamento ML-KEMsgcMLKEM_Encapsulate, sgcMLKEM_EncapsulateWithSeedProduce un nuovo segreto condiviso a 32 byte e il ciphertext che lo trasporta.
Decapsulamento ML-KEMsgcMLKEM_DecapsulateNon fallisce mai: un ciphertext malformato produce un segreto pseudocasuale (rifiuto implicito) invece di un errore, così tempistica e comportamento d'errore non rivelano nulla.
Dimensioni ML-KEMsgcMLKEM_PublicKeySize, PrivateKeySize, CiphertextSize, SharedSecretSizeLunghezze in byte per parameter set, per dimensionare i buffer.
Ibrido X25519 + ML-KEMsgcHybrid_GenerateKeyPair, sgcHybrid_Encapsulate, sgcHybrid_DecapsulateCombina un segreto condiviso classico e uno post-quantum tramite una KDF, così il risultato non è mai più debole del solo X25519. Il modo consigliato per usare ML-KEM oggi.
Generazione di chiavi ML-DSAsgcMLDSA_GenerateKeyPair, sgcMLDSA_GenerateKeyPairFromSeedFIPS 204, in precedenza Dilithium. Tre parameter set: mldsa44, mldsa65, mldsa87.
Firma / verifica ML-DSAsgcMLDSA_Sign / sgcMLDSA_VerifyFirma deterministica o randomizzata secondo l'interfaccia FIPS 204, più una stringa di contesto.
Dimensioni ML-DSAsgcMLDSA_PublicKeySize, PrivateKeySize, SignatureSizeLunghezze in byte per parameter set.
Generazione di chiavi SLH-DSAsgcSLHDSA_GenerateKeyPair, sgcSLHDSA_GenerateKeyPairFromSeedFIPS 205, in precedenza SPHINCS+. Firme hash-based stateless: la sicurezza si basa solo sulla funzione hash, non su un'ipotesi reticolare o su una curva.
Firma / verifica SLH-DSAsgcSLHDSA_Sign / sgcSLHDSA_VerifySei parameter set SHAKE: slhShake128s, slhShake128f, slhShake192s, slhShake192f, slhShake256s, slhShake256f. I set s favoriscono firme piccole, i set f favoriscono la firma veloce.
Dimensioni e nomi SLH-DSAsgcSLHDSA_PublicKeySize, PrivateKeySize, SignatureSize, sgcSLHDSA_ParamsNameLe firme SLH-DSA sono grandi (da 7,8 KB a 49 KB a seconda del set); dimensiona il buffer prima di firmare.

sgcCrypto non pretende di implementare ed25519187 o SPECK. ed25519187 non ha una specifica pubblicata, e SPECK è stato ritirato dalla standardizzazione ISO nel 2018; nessuno dei due è implementato qui.

Password monouso, codec e ZIP crittografati

Lo strato di utilità: codici monouso, le codifiche su cui si appoggiano tutte le altre famiglie, e la crittografia AES di WinZip.

CapacitàFunzioneNote
HOTPsgcHOTPRFC 4226, password monouso basata su contatore.
TOTPsgcTOTP, sgcTOTP_FromBase32RFC 6238, password monouso basata sul tempo; la variante Base32 accetta il secret esattamente come lo mostra un'app di autenticazione.
Verifica TOTPsgcTOTP_VerifyControlla un codice inviato su una finestra di passi in tempo costante, così né il risultato né la sua posizione trapelano tramite la tempistica. Non impedisce da sola il replay; è il chiamante a tracciare i codici già usati.
Confronto in tempo costantesgcConstantTimeEqualsUsato in tutta la libreria per i confronti di tag e MAC.
Azzeramento sicurosgcSecureZeroSovrascrive un buffer di byte così il materiale di chiave non resta in memoria.
HexsgcHexEncode / sgcHexDecodeHex minuscolo, decodifica case-insensitive.
Base64urlsgcBase64UrlEncode / sgcBase64UrlDecodeRFC 4648 sezione 5, senza padding, la codifica usata da JWT e JOSE.
Base32sgcBase32Encode / sgcBase32DecodeRFC 4648 sezione 6, la codifica usata dai secret TOTP e dalle app di autenticazione.
Derivazione chiavi AES di WinZipsgcZipAE2_DeriveKeysChiave basata su PBKDF2, chiave di autenticazione e verificatore della password a partire da una password e un salt.
Crittografia / decrittazione AES di WinZipsgcZipAE2_Encrypt / sgcZipAE2_DecryptAE-1 e AE-2, AES-128/192/256, dimensionamento del salt per voce tramite TsgcZipAESStrength.
Impacchettamento voce WinZipsgcZipAE2_PackEntry / sgcZipAE2_UnpackEntryCombina salt, verificatore, ciphertext e codice di autenticazione nel layout su disco.
Extra field WinZipsgcZipAE2_BuildExtraField / sgcZipAE2_ParseExtraFieldL'extra field 0x9901 che marca una voce ZIP come crittografata AES.
Hash legacy (solo interoperabilità)sgcMD4, sgcMD5, sgcHMAC_MD5Mantenuti per leggere formati e protocolli più vecchi; non usarli in un nuovo progetto.
Cifrario legacy (solo interoperabilità)sgcDES_EncryptECB / sgcDES_DecryptECB, sgcDES_NTLM7to8DES-ECB e il passo di espansione di chiave DES-based di NTLM, entrambi ritirati (FIPS 46-3), mantenuti per interoperabilità legacy.
Byte casuali sicurisgcRandomBytes / sgcRandomFillCryptoAPI di Windows sotto MSWINDOWS, /dev/urandom altrove, una sola chiamata in entrambi i casi.

Dove funziona sgcCrypto

Cosa è supportato, dichiarato con precisione.

AreaDettaglio
Sistema operativoNessuna guardia MSWINDOWS, né alcun'altra guardia di piattaforma, avvolge SGC_CRYPTO in sgcVer.inc. Tutte le 43 unità compilano per Win32, Win64, Linux64, macOS, iOS e Android.
Sorgente dei numeri casualiL'unica unità sensibile alla piattaforma, sgcCrypto_Random, seleziona un CSPRNG per ogni target: la CryptoAPI di Windows sotto MSWINDOWS, /dev/urandom sui target POSIX, dietro la stessa chiamata sgcRandomBytes.
DelphiDa Delphi 7 a RAD Studio 13 Florence. Non si assume da nessuna parte un tipo intero nativo a 64 bit: sgcCrypto_Int64 e il tipo TsgcBigInt in sgcCrypto_BigInteger emulano l'aritmetica di cui hanno bisogno gli hash, le curve e le unità post-quantum.
C++ BuilderC++ Builder tramite gli header generati, stesso albero sorgente.
Impronta a design-timeNessuna. Non esiste un sgcCrypto_Reg.pas, niente viene registrato con RegisterComponents, e nessuna unità compare in una pagina della palette dei componenti.
DipendenzeNessun binding OpenSSL, nessuna DLL esterna. Ogni primitiva è implementata direttamente in Object Pascal dentro l'unità che referenzi.
Codice sorgenteSorgente Object Pascal completo in ogni livello a pagamento, e nei pacchetti edizione che già includono sgcCrypto.
RidistribuzioneI binari che compili sono esenti da royalty, senza alcuna tariffa di runtime per postazione o per server.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Sviluppa con sgcCrypto

Scarica la versione di prova gratuita e chiama una funzione, nessun componente richiesto.