sgcCrypto 機能マトリックス

sgcCrypto ができることすべてを、ディスク上の 43 ユニットにマッピングしています。ここにはコンポーネントも設計時プロパティもありません。以下の各行は、直接呼び出す関数またはプロシージャです。完全なソースコードはすべてのライセンスに付属します。下のアンカーから、ユニットが属する 6 つの機能ファミリーへ移動できます。

sgcCrypto にコンポーネントはありません。 以下の 43 ユニットは単なる関数をエクスポートします。Tsgc* クラスも sgcCrypto_Reg.pas もありません。ユニットを uses 句に追加し、関数を呼び出すだけです。

すでに同梱されています。 sgcCrypto は sgcWebSockets Standard、Professional、Enterprise、そして All-Access に無料で同梱されています。Core のみをお持ちのお客様向けに単体でも販売されています(sgcWebSockets Core ランタイムを同梱)。詳しくは価格ページをご覧ください。

対称暗号

AES、CCM、ChaCha20、Poly1305、5 ユニット

ハッシュ & KDF

SHA-2/3、BLAKE2、Argon2、11 ユニット

署名 & 鍵交換

Ed25519、X25519、Schnorr、RSA、10 ユニット

PKI

X.509、ASN.1、RSA & EC CSR、5 ユニット

耐量子

ML-KEM、ML-DSA、SLH-DSA、6 ユニット

OTP & その他

HOTP/TOTP、エンコーディング、ZIP AES、6 ユニット

43 のソースユニット

sgcWebSockets/delphi/Source/ 配下のすべての sgcCrypto_*.pas ユニットを、ファミリーごとにグループ分けしています。

ユニットファミリーできること
sgcCrypto_AES対称暗号AES-CBC、AES-GCM(AEAD)、AES-CTR。
sgcCrypto_Modes対称暗号AES-ECB、OFB、CFB、CTS、CCM(AEAD)、Key Wrap / Padding 付き Key Wrap、そして7種類のパディング方式。
sgcCrypto_CMAC対称暗号AES-CMAC と AES-GMAC のメッセージ認証。
sgcCrypto_ChaCha対称暗号ChaCha20、XChaCha20、Salsa20、XSalsa20。
sgcCrypto_Poly1305対称暗号Poly1305 MAC、ChaCha20-Poly1305、XChaCha20-Poly1305 AEAD。
sgcCrypto_SHA2ハッシュ & KDFSHA-1、SHA-224、SHA-256、SHA-384、SHA-512。
sgcCrypto_Keccakハッシュ & KDFSHA-3、SHAKE128/256、cSHAKE、KMAC。
sgcCrypto_Blake2bハッシュ & KDFBLAKE2b、鍵付き/鍵なし。
sgcCrypto_Blake2sハッシュ & KDFBLAKE2s、鍵付き/鍵なし。
sgcCrypto_HMACハッシュ & KDFHMAC-SHA1/256/384/512。
sgcCrypto_KDFハッシュ & KDFPBKDF2、KDF1、KDF2、X9.63、ハッシュ関数を選択可能。
sgcCrypto_HKDFハッシュ & KDFHKDF の extract-and-expand。
sgcCrypto_Scryptハッシュ & KDFscrypt メモリハード KDF。
sgcCrypto_Argon2ハッシュ & KDFArgon2d、Argon2i、Argon2id。
sgcCrypto_SipHashハッシュ & KDFSipHash-2-4 鍵付きハッシュ。
sgcCrypto_TLSHハッシュ & KDFTLSH ファジーハッシュと類似度診断。
sgcCrypto_Ed25519署名 & 鍵交換Ed25519 の署名/検証。
sgcCrypto_X25519署名 & 鍵交換X25519 Diffie-Hellman。
sgcCrypto_Ed448署名 & 鍵交換Ed448 の署名/検証。
sgcCrypto_X448署名 & 鍵交換X448 Diffie-Hellman。
sgcCrypto_GF448署名 & 鍵交換Ed448/X448 向けの内部 GF(2^448-2^224-1) 体演算。
sgcCrypto_ECCurves署名 & 鍵交換secp256k1、Brainpool P256r1/P384r1/P512r1、NIST P-256/P-384/P-521 上の ECDSA / ECDH、DER 署名、鍵のエクスポート/インポート、そして BIP-340 Schnorr。
sgcCrypto_EC署名 & 鍵交換JWS(ES256/384/512)としての汎用 EC 署名/検証、ECDH。
sgcCrypto_RSA署名 & 鍵交換PEM または raw から、RSA PKCS#1 v1.5 署名、PKCS#1 v1.5 / PSS 検証。
sgcCrypto_RSA_Keys署名 & 鍵交換RSA 鍵生成、OAEP(独立した MGF1 ハッシュ対応)、PSS、PKCS#1 v1.5 署名/検証/暗号化/復号、PKCS#1 と PKCS#8 の DER/PEM エクスポートとインポート。
sgcCrypto_ECIES署名 & 鍵交換X25519 上の ECIES seal / open ハイブリッド暗号化。
sgcCrypto_ASN1PKIDER リーダー、PEM コーデック、PKCS#1/SEC 1 鍵解析。
sgcCrypto_DERPKIDER ライタープリミティブ。
sgcCrypto_BigIntegerPKI内部の任意精度整数演算。
sgcCrypto_X509PKIX.509 の解析、検証、チェーン、CRL、失効確認。
sgcCrypto_X509_GenPKI自己署名証明書と PKCS#10 CSR の生成。RSA または EC で署名でき、URI サブジェクト代替名にも対応。
sgcCrypto_MLKEM耐量子ML-KEM 鍵カプセル化(FIPS 203)、3 種類のパラメータセット。
sgcCrypto_MLKEM_Poly耐量子ML-KEM の裏にある内部多項式環演算。
sgcCrypto_MLKEM_Hybrid耐量子ハイブリッドな X25519 + ML-KEM 鍵カプセル化。
sgcCrypto_MLDSA耐量子ML-DSA デジタル署名(FIPS 204)、3 種類のパラメータセット。
sgcCrypto_MLDSA_Poly耐量子ML-DSA の裏にある内部多項式環演算。
sgcCrypto_SLHDSA耐量子SLH-DSA 署名(FIPS 205)、6 種類の SHAKE パラメータセット。
sgcCrypto_OTPOTP & その他HOTP、TOTP、定数時間の検証ウィンドウ。
sgcCrypto_EncodingOTP & その他定数時間比較、セキュアゼロ化、hex/Base64url/Base32。
sgcCrypto_Zip_AE2OTP & その他ZIP エントリ向けの WinZip AES 暗号化、AE-1 / AE-2。
sgcCrypto_LegacyOTP & その他MD4、MD5、HMAC-MD5、DES-ECB、RIPEMD-160、HMAC-RIPEMD160。相互運用のみが目的です。
sgcCrypto_RandomOTP & その他クロスプラットフォームな CSPRNG。
sgcCrypto_Int64OTP & その他Delphi 7 向けの内部 64 ビット整数エミュレーション。

暗号化 & MAC

実運用のコードが実際に使うモードでの AES、そして ChaCha20/Poly1305 の AEAD ファミリーです。

機能関数備考
AES-CBCsgcAES_CBC_Encrypt / sgcAES_CBC_DecryptPKCS#7 パディング、16 バイト IV。鍵長が暗号を決定します。16/24/32 バイト = AES-128/192/256。
AES-CBC、パディングなしsgcAES_CBC_Encrypt_NoPad / sgcAES_CBC_Decrypt_NoPadJava が AES/CBC/NoPadding と表記するモードです。入力は既に 16 バイトの倍数でなければならず、揃っていない入力は、黙ってパディングされて相手が読めないものになるのではなく、例外を発生させます。
AES-GCM(AEAD)sgcAES_GCM_Encrypt / sgcAES_GCM_Decrypt12 バイト IV を推奨。16 バイトタグは定数時間で比較され、検証失敗時は復号は False と空の平文を返します。
AES-CCM(AEAD)sgcAES_CCM_Encrypt / sgcAES_CCM_Decrypt制約のある環境や IoT スタックが指定する AEAD で、Zigbee、802.15.4、Bluetooth、そして TLS の CCM スイートが該当します。ブロック暗号だけで済み、GHASH テーブルを必要としないためです。ノンスは 7 から 13 バイト、タグは 4 から 16 バイトで、定数時間で検証されます。
AES-CTRsgcAES_CTRSRTP スタイルの AES-CM(RFC 3711)。対称的な呼び出しで、パディングなし、128 ビットのビッグエンディアンカウンター。
AES-ECBsgcAES_ECB_Encrypt / sgcAES_ECB_DecryptIV なし、チェイニングなし。それを指定するフォーマットとの相互運用のために用意しています。
パディング方式sgcPad_Add / sgcPad_RemovesgcAES_CBC_EncryptPad / DecryptPadsgcAES_ECB_EncryptPad / DecryptPadTsgcPadding は None、PKCS#7、Zero、ANSI X9.23、ISO 7816-4、ISO 10126-2、TBC をカバーしており、CBC と ECB は PKCS#7 を選ばなかったシステムとの間でもデータを読み書きできます。sgcPad_Remove は、あらゆる種類の不正なパディングに対して同じ経路で False を返します。
AES-OFB / AES-CFBsgcAES_OFBsgcAES_CFB_Encrypt / sgcAES_CFB_Decryptストリーム暗号スタイルのフィードバックモード。
AES-CTSsgcAES_CTS_Encrypt / sgcAES_CTS_Decrypt暗号文盗用。ブロックサイズの倍数でないデータを、パディングのオーバーヘッドなしで暗号化します。
AES Key WrapsgcAES_KeyWrap / sgcAES_KeyUnwrapRFC 3394。ある鍵を別の鍵でラップします。
AES Key Wrap with PaddingsgcAES_KeyWrapPad / sgcAES_KeyUnwrapPadRFC 5649。8 バイトの倍数でない鍵材料向け。
AES-CMACsgcAES_CMAC / sgcAES_CMAC_VerifyRFC 4493 のメッセージ認証コード。
AES-GMACsgcAES_GMAC / sgcAES_GMAC_VerifyGCM の認証専用モードです。メッセージ全体が追加データとして渡され、何も暗号化されません。IV は同じ鍵の下で決して繰り返してはならず、16 バイトのタグは定数時間で比較されます。
低レベルブロックプリミティブsgcAES_ExpandKeysgcAES_EncryptBlocksgcAES_DecryptBlock上記のモードと MAC ユニットのために公開されています。まだ用意されていないモードを構築する場合にのみ直接呼び出してください。
ChaCha20sgcChaCha20RFC 8439、96 ビットナンス、32 ビットカウンター。
XChaCha20sgcXChaCha20192 ビットの拡張ナンス。大規模にランダムなナンスを生成しても安全です。
Salsa20 / XSalsa20sgcSalsa20 / sgcXSalsa20先代のストリーム暗号ファミリーで、両方のナンスサイズに対応します。
サブ鍵導出sgcHChaCha20 / sgcHSalsa20X 系バリアントが、最初の 16 バイトのナンスからサブ鍵を導出する際に内部で使う関数です。
Poly1305 MACsgcPoly1305 / sgcPoly1305_VerifyRFC 8439 の一回限りの認証子です。Poly1305 の鍵を再利用しないでください。
ChaCha20-Poly1305 AEADsgcChaCha20Poly1305_Encrypt / _DecryptTLS 1.3 の 2 番目の暗号スイートと SSH の裏にある AEAD 暗号です。
XChaCha20-Poly1305 AEADsgcXChaCha20Poly1305_Encrypt / _Decrypt同じ AEAD で 192 ビットナンス。libsodium が crypto_aead_xchacha20poly1305_ietf と呼ぶ構成です。

ダイジェスト、MAC & パスワードハッシュ

主要なハッシュファミリーすべてに加え、PBKDF2、HKDF、scrypt、Argon2 の 3 種類すべてに対応します。

機能関数備考
SHA-1 / SHA-2sgcSHA1sgcSHA224sgcSHA256sgcSHA384sgcSHA512FIPS 180-4。SHA-1 は相互運用のために残していますが、新規の署名には推奨しません。
SHA-3sgcSHA3_224 / _256 / _384 / _512FIPS 202、Keccak スポンジ構造で、SHA-2 とは構造的に独立しています。
SHAKE128 / SHAKE256sgcSHAKE128 / sgcSHAKE256拡張可能出力関数。任意のダイジェスト長を要求できます。
cSHAKE128 / cSHAKE256sgcCSHAKE128 / sgcCSHAKE256ドメイン分離された SHAKE、NIST SP 800-185、KMAC の基盤です。
KMAC128 / KMAC256sgcKMAC128 / sgcKMAC256可変長出力に対応した Keccak ベースの MAC。
BLAKE2bsgcBlake2b / sgcBlake2b_KeyedRFC 7693。最大 64 バイトのダイジェスト、組み込みの鍵指定(別途 HMAC 不要)。
BLAKE2ssgcBlake2s / sgcBlake2s_KeyedRFC 7693。最大 32 バイトのダイジェスト、32 ビットプラットフォーム向けに調整済み。
ストリーミングダイジェストsgcBlake2b_Init/_Update/_Final、Keccak/Blake2s の対応する呼び出し一度にメモリへ収まらない大きなデータをハッシュする場合に。
HMACsgcHMAC_SHA1 / _SHA256 / _SHA384 / _SHA512RFC 2104、SHA-1/2 ファミリーによる鍵付きハッシュ。
RIPEMD-160 / HMAC-RIPEMD160sgcRIPEMD160sgcHMAC_RIPEMD160ISO/IEC 10118-3 と RFC 2286。Bitcoin アドレスが SHA-256 の上に重ねる 160 ビットダイジェストであり、OpenPGP が名指しするものでもあります。
PBKDF2sgcPBKDF2sgcPBKDF2_SHA1 / _SHA256 / _SHA512RFC 8018。メモリハード性は控えめです。選べるなら Argon2id か scrypt を優先してください。
HKDFsgcHKDF_Extract_SHA256 / _SHA384sgcHKDF_Expand_SHA256 / _SHA384sgcHKDF_SHA256 / _SHA384RFC 5869、extract-then-expand 方式の鍵導出。共有秘密を複数の鍵に変換する標準的な方法です。
KDF1 / KDF2 / X9.63sgcKDF1sgcKDF2sgcKDF_X963ISO 18033-2、IEEE 1363a、ANSI X9.63 が定めるカウンターモードの導出方式で、RSA-KEM や ECIES が名指しするものです。KDF1 はカウンターを 0 から、KDF2 は 1 から数え始めるという違いがあり、これは実際に相互運用性のバグを引き起こしてきたため、仕様がどちらを意味しているかを確認してください。
scryptsgcScryptRFC 7914、メモリハードで、PBKDF2 よりも GPU/ASIC 攻撃への耐性が高くなっています。
Argon2sgcArgon2(d / i / id)、便利ラッパーの sgcArgon2idRFC 9106、Password Hashing Competition の優勝方式。オプションの秘密(ペッパー)と関連データを含む完全なインターフェースです。
SipHash-2-4sgcSipHash24 / sgcSipHash24_Valueハッシュテーブルのキー向けの高速な鍵付き PRF で、ハッシュフラッディング DoS に耐性があります。
TLSH ファジーハッシュsgcTLSHsgcTLSH_Init/_Update/_Finalほぼ重複するデータの検出向けの局所性鋭敏型ハッシュで、暗号学的ダイジェストではありません。
TLSH 類似度スコアsgcTLSH_Diff2 つの TLSH ダイジェスト間の距離。値が小さいほど類似しています。

Ed25519/Ed448、X25519/X448、secp256k1、Brainpool & RSA

5 種類の異なる曲線ファミリーと RSA にまたがって、署名、検証、共有秘密の導出を行います。

機能関数備考
Ed25519 署名 / 検証sgcEd25519_Sign / sgcEd25519_VerifyRFC 8032。32 バイトの公開鍵、64 バイトの署名。検証は非正規の点と section 5.1.7 の S >= L を拒否します。
X25519 鍵交換sgcX25519sgcX25519_PublicKeysgcX25519_SharedSecretCurve25519 上の RFC 7748 Diffie-Hellman。
Ed448 署名 / 検証sgcEd448_GenerateKeyPairsgcEd448_SignsgcEd448_VerifyRFC 8032、448 ビット(Goldilocks)の EdDSA 曲線です。
X448 鍵交換sgcX448sgcX448_PublicKeysgcX448_SharedSecretCurve448 上の RFC 7748 Diffie-Hellman。
secp256k1eccSecp256k1 を指定した sgcECDSA_SignHash / VerifyHashsgcCrypto_ECCurves にある、SEC 2 の Bitcoin/Ethereum 曲線です。
Brainpool P256r1 / P384r1 / P512r1eccBrainpoolP256r1 / P384r1 / P512r1 を指定した同じ関数群RFC 5639。EU の eIDAS や政府プロファイルで一般的です。
NIST P-256 / P-384 / P-521eccP256 / eccP384 / eccP521 を指定した同じ関数群TsgcECCurve は現在7種類の曲線を持つため、鍵生成、署名、検証、ECDH、点圧縮のすべてが、PEM ファイルからだけでなく生の鍵バイト列からも NIST 素数曲線に到達できます。
決定論的 ECDSA ナンスsgcECDSA_SignHash に組み込みRFC 6979。ナンスは秘密鍵とメッセージから導出され、乱数生成器の失敗モードがありません。
ECDH(secp256k1 / Brainpool)sgcECDH_SharedSecret同じ 4 種類の曲線上での共有秘密。
ポイント圧縮sgcEC_Compress / sgcEC_Decompressより短い圧縮形式の公開鍵を保存または送信します。
JWS としての EC(ES256/384/512)sgcECDSA_SignJWS / sgcECDSA_VerifyJWS要求されたビット長から曲線を自動選択し、PEM 鍵から直接署名/検証する、ECCurves の JOSE 向け姉妹ユニットです。
汎用 ECDHsgcECDHraw の秘密鍵と相手の公開点から共有秘密を導出します。
raw / DER の ECDSA 検証sgcECDSA_VerifyRaw / sgcECDSA_VerifyDERraw の (Qx, Qy, r, s) タプル、または DER エンコードされた署名を検証します。
DER ECDSA 署名と変換sgcECDSA_SignDER / sgcECDSA_VerifyDERsgcECDSA_RawToDER / sgcECDSA_DERToRawX.509、CMS、TLS は、INTEGER r の後に INTEGER s が続く SEQUENCE である DER の ECDSA-Sig-Value を使用します。JOSE と WebAuthn は代わりに生の R || S ペアを使用します。どちらの形式にも直接署名でき、既存の署名を両者の間で変換することもできます。
Schnorr 署名(BIP-340)sgcSchnorr_PublicKeysgcSchnorr_SignsgcSchnorr_Verifysecp256k1 専用で、x 座標のみの 32 バイト公開鍵と 64 バイトの署名を使用します。Taproot、Nostr、Lightning が使用しているものです。sgcSchnorr_TaggedHash が公開されているのは、BIP-341 と BIP-342 のタグを同じ構成の上に構築できるようにするためです。
RSA 署名(PKCS#1 v1.5)sgcRSA_SignPKCS1PEM 秘密鍵から、SHA-1/256/384/512 ダイジェストで署名します。
RSA 検証(PKCS#1 v1.5 / PSS)sgcRSA_VerifyPKCS1sgcRSA_VerifyPSS、モジュラス/指数に対する _Raw バリアントRFC 8017。PEM 鍵、または raw のモジュラスと指数のどちらからでも検証でき、鍵オブジェクトの構築は不要です。
RSA 鍵生成sgcRSA_GenerateKey任意のビット長、Miller-Rabin 素数判定。
RSA-OAEP 暗号化sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_DecryptRFC 8017 の Optimal Asymmetric Encryption Padding。
独立した MGF1 ハッシュを持つ RSA-OAEP5 パラメータの sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt オーバーロードラベルハッシュと MGF1 ハッシュを別々に固定します。OAEPWithSHA256AndMGF1Padding は、Bouncy Castle では両方とも SHA-256 を意味しますが、SunJCE では SHA-256 と MGF1-SHA1 の組み合わせを意味し、この不一致が Java との相互運用が失敗する通常の原因です。
RSA PKCS#1 v1.5 暗号化sgcRSA_PKCS1_Encrypt / sgcRSA_PKCS1_DecryptRFC 8017 section 7.2、Java が RSA/ECB/PKCS1Padding と呼ぶモードです。復号はあらゆる失敗に対して同じ経路をたどるため、パディングオラクルに手がかりを与えません。新規の用途では OAEP を優先してください。
RSA-PSS / PKCS#1 署名sgcRSA_PSS_Sign / VerifysgcRSA_PKCS1_Sign / Verify生成済みの TsgcRSAPrivateKey から直接署名します。
RSA 鍵エクスポートsgcRSA_ExportPrivateKeyPEMsgcRSA_ExportPublicKeyPEM、対応する DER 呼び出しPKCS#1 と SubjectPublicKeyInfo のエンコーディングです。
PKCS#8 と SEC 1 鍵エクスポートsgcRSA_ExportPrivateKeyPKCS8DER / PKCS8PEMsgcEC_ExportPrivateKeyPKCS8DER / PKCS8PEMsgcEC_ExportPrivateKeySEC1DER / SEC1PEMsgcEC_ExportSubjectPublicKeyInfosgcEC_ExportPublicKeyPEMJava、.NET、そしてほとんどの最新ツールが期待する BEGIN PRIVATE KEY コンテナに加え、SEC 1 の BEGIN EC PRIVATE KEY 形式、そして証明書が埋め込む SubjectPublicKeyInfo です。暗号化されていないため、返ってくるのは鍵材料そのものです。
RSA と EC の鍵インポートsgcRSA_ImportPrivateKeyDER / PEMsgcRSA_ImportPublicKeyDER / PEMsgcEC_ImportPrivateKeyDER / PEMsgcEC_ImportPublicKeyDER / PEMこれは以前は存在しませんでした。生成した鍵は書き出せても、二度と読み込むことができなかったのです。インポートは PKCS#1、PKCS#8、SEC 1、SubjectPublicKeyInfo のいずれも、DER または PEM で受け付け、ファイルに CRT パラメータや公開点が含まれていない場合はそれらを再計算し、不正な形式の入力に対しては例外を発生させるのではなく False を返すため、信頼できないファイルを渡しても安全です。
ECIES seal / opensgcECIES_GenerateKeyPairsgcECIES_SealsgcECIES_OpenX25519 公開鍵に対するハイブリッド暗号化。エフェメラル ECDH と AEAD を組み合わせ、往復とも 1 回の呼び出しです。

X.509 証明書 & ASN.1

他者が発行した証明書を読み取るか、自分で生成するか。どちらの裏にも DER エンコーダーとデコーダーがあります。

機能関数備考
DER リーダーsgcASN1_ReadsgcASN1_NextsgcASN1_ContentDER 構造をノードごとにたどります。
PEM コーデックsgcPEM_Decode / sgcPEM_EncodeRFC 7468。DER を囲む -----BEGIN ... -----END ラッパーです。
RSA 鍵解析sgcASN1_ParseRSAPrivateKey / PublicKeyPKCS#1(RFC 8017)の鍵構造です。
EC 鍵解析sgcASN1_ParseECPrivateKey / PublicKeySEC 1 の鍵構造です。
DER ライター、構造sgcDER_SequencesgcDER_SetsgcDER_TaggedsgcDER_ContextExplicit / Implicitあらゆる証明書フィールドが組み立てられる基礎部品です。
DER ライター、値sgcDER_IntegersgcDER_OctetStringsgcDER_BitStringsgcDER_BooleansgcDER_Nullプリミティブな値のエンコーダーです。
DER ライター、文字列 & 識別子sgcDER_OIDsgcDER_UTF8StringsgcDER_PrintableStringsgcDER_IA5StringsgcDER_Timeオブジェクト識別子、X.509 が使う 3 種類の文字列型、そして UTCTime/GeneralizedTime です。
証明書解析sgcX509_Parsesubject、issuer、有効期間、公開鍵、拡張を含む完全な証明書構造です。
署名 / チェーン検証sgcX509_VerifySignedBysgcX509_VerifyChain1 つの証明書を発行者に対して検証するか、DER 証明書の配列をたどって検証します。
CRL 解析 & 失効確認sgcX509_CRL_ParsesgcX509_IsRevokedsgcX509_CRL_VerifySignedBy証明書失効リストを解析し、シリアル番号を照合します。
名前のフォーマットsgcX509_SubjectRFC2253sgcX509_IssuerRFC2253sgcX509_SubjectOneLineロギングや表示向けの RFC 2253 識別名文字列です。
拡張 & SANsgcX509_GetExtensionsgcX509_GetCRLDistributionURIs任意の拡張 OID と CRL 配布ポイント URI を読み取ります。
自己署名証明書の生成sgcX509_CreateSelfSigned完全な TsgcX509Options: subject DN、有効期間、シリアル番号、パス長制約付き CA フラグ、鍵用途、拡張鍵用途、サブジェクト代替名(IPv4 SAN を含む)。
URI サブジェクト代替名TsgcX509Options.URIsホスト名ではなく SPIFFE 形式のサービス ID 向けの uniformResourceIdentifier SAN です。値は IA5String の内容としてそのまま書き込まれるため、完全な URI を渡してください。
PKCS#10 CSR の生成sgcX509_CreateCSR同じオプションレコードから作る RFC 2986 の証明書署名要求です。
EC 署名の証明書と CSRsgcX509_CreateSelfSignedExsgcX509_CreateCSRExsgcX509_ECKeysgcX509_RSAKeyどちらの鍵も TsgcX509SignKey でラップすることで、RSA だけでなく EC 鍵でも署名できます。EC 証明書は RSA 証明書のおよそ3分の1のサイズで、検証もはるかに高速です。TsgcX509Options.Hashは引き続き SHA の種類だけを指定し、アルゴリズムは鍵に従うため、rhSHA256は EC 鍵ではecdsa-with-SHA256を意味します。
PEM 出力sgcX509_ToPEM生成した DER を、すぐに保存できる PEM ファイルとしてラップします。

ML-KEM、ML-DSA & SLH-DSA

NIST が 2024 年 8 月に FIPS 203、204、205 として確定した 3 つのアルゴリズムに加え、移行期間向けのハイブリッドコンバイナーです。

機能関数備考
ML-KEM 鍵生成sgcMLKEM_GenerateKeyPairsgcMLKEM_GenerateKeyPairFromSeedFIPS 203、旧称 Kyber。3 種類のパラメータセット: mlkem512mlkem768mlkem1024
ML-KEM カプセル化sgcMLKEM_EncapsulatesgcMLKEM_EncapsulateWithSeed新しい 32 バイトの共有秘密と、それを運ぶ暗号文を生成します。
ML-KEM デカプセル化sgcMLKEM_Decapsulate失敗しません。不正な形式の暗号文はエラーではなく擬似乱数の秘密(implicit rejection)を生成するため、タイミングやエラーの挙動から何も漏れません。
ML-KEM のサイズsgcMLKEM_PublicKeySizePrivateKeySizeCiphertextSizeSharedSecretSizeバッファサイズを決めるための、パラメータセットごとのバイト長です。
ハイブリッド X25519 + ML-KEMsgcHybrid_GenerateKeyPairsgcHybrid_EncapsulatesgcHybrid_Decapsulate古典的な共有秘密と耐量子の共有秘密を KDF で組み合わせ、結果が X25519 単体より弱くなることはありません。ML-KEM を今日デプロイする際の推奨方法です。
ML-DSA 鍵生成sgcMLDSA_GenerateKeyPairsgcMLDSA_GenerateKeyPairFromSeedFIPS 204、旧称 Dilithium。3 種類のパラメータセット: mldsa44mldsa65mldsa87
ML-DSA 署名 / 検証sgcMLDSA_Sign / sgcMLDSA_VerifyFIPS 204 インターフェースに従った決定論的または確率的な署名、そしてコンテキスト文字列。
ML-DSA のサイズsgcMLDSA_PublicKeySizePrivateKeySizeSignatureSizeパラメータセットごとのバイト長です。
SLH-DSA 鍵生成sgcSLHDSA_GenerateKeyPairsgcSLHDSA_GenerateKeyPairFromSeedFIPS 205、旧称 SPHINCS+。ステートレスなハッシュベース署名で、安全性は格子や曲線の仮定ではなくハッシュ関数のみに依拠します。
SLH-DSA 署名 / 検証sgcSLHDSA_Sign / sgcSLHDSA_Verify6 種類の SHAKE パラメータセット: slhShake128sslhShake128fslhShake192sslhShake192fslhShake256sslhShake256fs 系は署名の小ささ、f 系は署名の速さを優先します。
SLH-DSA のサイズ & 命名sgcSLHDSA_PublicKeySizePrivateKeySizeSignatureSizesgcSLHDSA_ParamsNameSLH-DSA の署名は大きく(セットにより 7.8 KB から 49 KB)、署名前にバッファサイズを決めてください。

sgcCrypto は ed25519187 や SPECK を実装していません。ed25519187 には公開された仕様がなく、SPECK は 2018 年に ISO 標準化から取り下げられているため、いずれもここには実装していません。

ワンタイムパスワード、コーデック & 暗号化 ZIP

ユーティリティ層です。ワンタイムコード、他のすべてのファミリーが頼るエンコーディング、そして WinZip AES 暗号化です。

機能関数備考
HOTPsgcHOTPRFC 4226、カウンターベースのワンタイムパスワード。
TOTPsgcTOTPsgcTOTP_FromBase32RFC 6238、時刻ベースのワンタイムパスワード。Base32 版は、認証アプリが表示するそのままの形式でシークレットを受け取れます。
TOTP 検証sgcTOTP_Verify送信されたコードを、ステップのウィンドウにわたって定数時間でチェックするため、結果もその位置もタイミングから漏れません。リプレイ自体は防がないため、使用済みコードの追跡は呼び出し側で行います。
定数時間比較sgcConstantTimeEqualsライブラリ全体で、タグや MAC の比較に使われます。
セキュアゼロ化sgcSecureZero鍵材料がメモリに残らないよう、バイトバッファを上書きします。
HexsgcHexEncode / sgcHexDecode小文字の hex で、デコードは大文字小文字を区別しません。
Base64urlsgcBase64UrlEncode / sgcBase64UrlDecodeRFC 4648 section 5、パディングなし。JWT と JOSE が使うエンコーディングです。
Base32sgcBase32Encode / sgcBase32DecodeRFC 4648 section 6。TOTP のシークレットと認証アプリが使うエンコーディングです。
WinZip AES 鍵導出sgcZipAE2_DeriveKeysパスワードとソルトから、PBKDF2 ベースの鍵、認証鍵、パスワード検証子を導出します。
WinZip AES 暗号化 / 復号sgcZipAE2_Encrypt / sgcZipAE2_DecryptAE-1 と AE-2、AES-128/192/256。TsgcZipAESStrength によるエントリごとのソルトサイズ設定です。
WinZip エントリパッキングsgcZipAE2_PackEntry / sgcZipAE2_UnpackEntryソルト、検証子、暗号文、認証コードを、ディスク上のレイアウトに組み合わせます。
WinZip 拡張フィールドsgcZipAE2_BuildExtraField / sgcZipAE2_ParseExtraFieldZIP エントリが AES 暗号化されていることを示す 0x9901 拡張フィールドです。
レガシーハッシュ(相互運用専用)sgcMD4sgcMD5sgcHMAC_MD5古い形式やプロトコルの読み取り用に残しています。新しい設計には使わないでください。
レガシー暗号(相互運用専用)sgcDES_EncryptECB / sgcDES_DecryptECBsgcDES_NTLM7to8DES-ECB と DES ベースの NTLM 鍵拡張ステップです。どちらも取り下げられていますが(FIPS 46-3)、レガシーとの相互運用のために残しています。
セキュアな乱数バイトsgcRandomBytes / sgcRandomFillMSWINDOWS では Windows CryptoAPI、それ以外では /dev/urandom。どちらも同じ呼び出しです。

sgcCrypto の対応範囲

サポート内容を正確に記載しています。

項目詳細
オペレーティングシステムsgcVer.inc の中で SGC_CRYPTO を囲む MSWINDOWS ガードや、その他のプラットフォームガードは一切ありません。43 ユニットすべてが Win32、Win64、Linux64、macOS、iOS、Android 向けにコンパイルされます。
乱数ソース唯一プラットフォームを意識するユニット sgcCrypto_Random は、対象ごとに CSPRNG を選択します。MSWINDOWS では Windows CryptoAPI、POSIX 系のターゲットでは /dev/urandom を、同じ sgcRandomBytes 呼び出しの裏側で行います。
DelphiDelphi 7 から RAD Studio 13 Florence まで。ネイティブな 64 ビット整数型はどこにも前提としていません。sgcCrypto_Int64sgcCrypto_BigIntegerTsgcBigInt 型が、ハッシュ、曲線、耐量子ユニットの必要とする演算をエミュレートします。
C++ Builder生成されたヘッダーを介して、同じソースツリーで C++ Builder に対応します。
設計時の要素ありません。sgcCrypto_Reg.pas はなく、RegisterComponents されるものもなく、コンポーネントパレットのページに現れるユニットもありません。
依存関係OpenSSL バインディングも外部 DLL もありません。すべてのプリミティブは、参照するユニットの中に直接 Object Pascal で実装されています。
ソースコードすべての有料ティア、そして sgcCrypto をすでに含むエディションパッケージで、完全な Object Pascal のソースコードが提供されます。
再配布ビルドしたバイナリはロイヤリティフリーで、シート単位やサーバー単位のランタイム費用もありません。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

sgcCrypto で構築する

無料体験版をダウンロードして、関数を呼び出すだけです。コンポーネントは不要です。