sgcCrypto 機能マトリックス
sgcCrypto ができることすべてを、ディスク上の 43 ユニットにマッピングしています。ここにはコンポーネントも設計時プロパティもありません。以下の各行は、直接呼び出す関数またはプロシージャです。完全なソースコードはすべてのライセンスに付属します。下のアンカーから、ユニットが属する 6 つの機能ファミリーへ移動できます。
sgcCrypto ができることすべてを、ディスク上の 43 ユニットにマッピングしています。ここにはコンポーネントも設計時プロパティもありません。以下の各行は、直接呼び出す関数またはプロシージャです。完全なソースコードはすべてのライセンスに付属します。下のアンカーから、ユニットが属する 6 つの機能ファミリーへ移動できます。
sgcCrypto にコンポーネントはありません。 以下の 43 ユニットは単なる関数をエクスポートします。Tsgc* クラスも sgcCrypto_Reg.pas もありません。ユニットを uses 句に追加し、関数を呼び出すだけです。
すでに同梱されています。 sgcCrypto は sgcWebSockets Standard、Professional、Enterprise、そして All-Access に無料で同梱されています。Core のみをお持ちのお客様向けに単体でも販売されています(sgcWebSockets Core ランタイムを同梱)。詳しくは価格ページをご覧ください。
sgcWebSockets/delphi/Source/ 配下のすべての sgcCrypto_*.pas ユニットを、ファミリーごとにグループ分けしています。
| ユニット | ファミリー | できること |
|---|---|---|
sgcCrypto_AES | 対称暗号 | AES-CBC、AES-GCM(AEAD)、AES-CTR。 |
sgcCrypto_Modes | 対称暗号 | AES-ECB、OFB、CFB、CTS、そして Key Wrap / Padding 付き Key Wrap。 |
sgcCrypto_CMAC | 対称暗号 | AES-CMAC メッセージ認証。 |
sgcCrypto_ChaCha | 対称暗号 | ChaCha20、XChaCha20、Salsa20、XSalsa20。 |
sgcCrypto_Poly1305 | 対称暗号 | Poly1305 MAC、ChaCha20-Poly1305、XChaCha20-Poly1305 AEAD。 |
sgcCrypto_SHA2 | ハッシュ & KDF | SHA-1、SHA-224、SHA-256、SHA-384、SHA-512。 |
sgcCrypto_Keccak | ハッシュ & KDF | SHA-3、SHAKE128/256、cSHAKE、KMAC。 |
sgcCrypto_Blake2b | ハッシュ & KDF | BLAKE2b、鍵付き/鍵なし。 |
sgcCrypto_Blake2s | ハッシュ & KDF | BLAKE2s、鍵付き/鍵なし。 |
sgcCrypto_HMAC | ハッシュ & KDF | HMAC-SHA1/256/384/512。 |
sgcCrypto_KDF | ハッシュ & KDF | PBKDF2、ハッシュ関数を選択可能。 |
sgcCrypto_HKDF | ハッシュ & KDF | HKDF の extract-and-expand。 |
sgcCrypto_Scrypt | ハッシュ & KDF | scrypt メモリハード KDF。 |
sgcCrypto_Argon2 | ハッシュ & KDF | Argon2d、Argon2i、Argon2id。 |
sgcCrypto_SipHash | ハッシュ & KDF | SipHash-2-4 鍵付きハッシュ。 |
sgcCrypto_TLSH | ハッシュ & KDF | TLSH ファジーハッシュと類似度診断。 |
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 上の ECDSA / ECDH。 |
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、PSS、PKCS#1 署名/検証、DER/PEM エクスポート。 |
sgcCrypto_ECIES | 署名 & 鍵交換 | X25519 上の ECIES seal / open ハイブリッド暗号化。 |
sgcCrypto_ASN1 | PKI | DER リーダー、PEM コーデック、PKCS#1/SEC 1 鍵解析。 |
sgcCrypto_DER | PKI | DER ライタープリミティブ。 |
sgcCrypto_BigInteger | PKI | 内部の任意精度整数演算。 |
sgcCrypto_X509 | PKI | X.509 の解析、検証、チェーン、CRL、失効確認。 |
sgcCrypto_X509_Gen | PKI | 自己署名証明書と PKCS#10 CSR の生成。 |
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_OTP | OTP & その他 | HOTP、TOTP、定数時間の検証ウィンドウ。 |
sgcCrypto_Encoding | OTP & その他 | 定数時間比較、セキュアゼロ化、hex/Base64url/Base32。 |
sgcCrypto_Zip_AE2 | OTP & その他 | ZIP エントリ向けの WinZip AES 暗号化、AE-1 / AE-2。 |
sgcCrypto_Legacy | OTP & その他 | MD4、MD5、HMAC-MD5、DES-ECB。相互運用のみが目的です。 |
sgcCrypto_Random | OTP & その他 | クロスプラットフォームな CSPRNG。 |
sgcCrypto_Int64 | OTP & その他 | Delphi 7 向けの内部 64 ビット整数エミュレーション。 |
実運用のコードが実際に使うモードでの AES、そして ChaCha20/Poly1305 の AEAD ファミリーです。
| 機能 | 関数 | 備考 |
|---|---|---|
| AES-CBC | sgcAES_CBC_Encrypt / sgcAES_CBC_Decrypt | PKCS#7 パディング、16 バイト IV。鍵長が暗号を決定します。16/24/32 バイト = AES-128/192/256。 |
| AES-GCM(AEAD) | sgcAES_GCM_Encrypt / sgcAES_GCM_Decrypt | 12 バイト IV を推奨。16 バイトタグは定数時間で比較され、検証失敗時は復号は False と空の平文を返します。 |
| AES-CTR | sgcAES_CTR | SRTP スタイルの AES-CM(RFC 3711)。対称的な呼び出しで、パディングなし、128 ビットのビッグエンディアンカウンター。 |
| AES-ECB | sgcAES_ECB_Encrypt / sgcAES_ECB_Decrypt | IV なし、チェイニングなし。それを指定するフォーマットとの相互運用のために用意しています。 |
| AES-OFB / AES-CFB | sgcAES_OFB、sgcAES_CFB_Encrypt / sgcAES_CFB_Decrypt | ストリーム暗号スタイルのフィードバックモード。 |
| AES-CTS | sgcAES_CTS_Encrypt / sgcAES_CTS_Decrypt | 暗号文盗用。ブロックサイズの倍数でないデータを、パディングのオーバーヘッドなしで暗号化します。 |
| AES Key Wrap | sgcAES_KeyWrap / sgcAES_KeyUnwrap | RFC 3394。ある鍵を別の鍵でラップします。 |
| AES Key Wrap with Padding | sgcAES_KeyWrapPad / sgcAES_KeyUnwrapPad | RFC 5649。8 バイトの倍数でない鍵材料向け。 |
| AES-CMAC | sgcAES_CMAC / sgcAES_CMAC_Verify | RFC 4493 のメッセージ認証コード。 |
| 低レベルブロックプリミティブ | sgcAES_ExpandKey、sgcAES_EncryptBlock、sgcAES_DecryptBlock | 上記のモードと MAC ユニットのために公開されています。まだ用意されていないモードを構築する場合にのみ直接呼び出してください。 |
| ChaCha20 | sgcChaCha20 | RFC 8439、96 ビットナンス、32 ビットカウンター。 |
| XChaCha20 | sgcXChaCha20 | 192 ビットの拡張ナンス。大規模にランダムなナンスを生成しても安全です。 |
| Salsa20 / XSalsa20 | sgcSalsa20 / sgcXSalsa20 | 先代のストリーム暗号ファミリーで、両方のナンスサイズに対応します。 |
| サブ鍵導出 | sgcHChaCha20 / sgcHSalsa20 | X 系バリアントが、最初の 16 バイトのナンスからサブ鍵を導出する際に内部で使う関数です。 |
| Poly1305 MAC | sgcPoly1305 / sgcPoly1305_Verify | RFC 8439 の一回限りの認証子です。Poly1305 の鍵を再利用しないでください。 |
| ChaCha20-Poly1305 AEAD | sgcChaCha20Poly1305_Encrypt / _Decrypt | TLS 1.3 の 2 番目の暗号スイートと SSH の裏にある AEAD 暗号です。 |
| XChaCha20-Poly1305 AEAD | sgcXChaCha20Poly1305_Encrypt / _Decrypt | 同じ AEAD で 192 ビットナンス。libsodium が crypto_aead_xchacha20poly1305_ietf と呼ぶ構成です。 |
主要なハッシュファミリーすべてに加え、PBKDF2、HKDF、scrypt、Argon2 の 3 種類すべてに対応します。
| 機能 | 関数 | 備考 |
|---|---|---|
| SHA-1 / SHA-2 | sgcSHA1、sgcSHA224、sgcSHA256、sgcSHA384、sgcSHA512 | FIPS 180-4。SHA-1 は相互運用のために残していますが、新規の署名には推奨しません。 |
| SHA-3 | sgcSHA3_224 / _256 / _384 / _512 | FIPS 202、Keccak スポンジ構造で、SHA-2 とは構造的に独立しています。 |
| SHAKE128 / SHAKE256 | sgcSHAKE128 / sgcSHAKE256 | 拡張可能出力関数。任意のダイジェスト長を要求できます。 |
| cSHAKE128 / cSHAKE256 | sgcCSHAKE128 / sgcCSHAKE256 | ドメイン分離された SHAKE、NIST SP 800-185、KMAC の基盤です。 |
| KMAC128 / KMAC256 | sgcKMAC128 / sgcKMAC256 | 可変長出力に対応した Keccak ベースの MAC。 |
| BLAKE2b | sgcBlake2b / sgcBlake2b_Keyed | RFC 7693。最大 64 バイトのダイジェスト、組み込みの鍵指定(別途 HMAC 不要)。 |
| BLAKE2s | sgcBlake2s / sgcBlake2s_Keyed | RFC 7693。最大 32 バイトのダイジェスト、32 ビットプラットフォーム向けに調整済み。 |
| ストリーミングダイジェスト | sgcBlake2b_Init/_Update/_Final、Keccak/Blake2s の対応する呼び出し | 一度にメモリへ収まらない大きなデータをハッシュする場合に。 |
| HMAC | sgcHMAC_SHA1 / _SHA256 / _SHA384 / _SHA512 | RFC 2104、SHA-1/2 ファミリーによる鍵付きハッシュ。 |
| PBKDF2 | sgcPBKDF2、sgcPBKDF2_SHA1 / _SHA256 / _SHA512 | RFC 8018。メモリハード性は控えめです。選べるなら Argon2id か scrypt を優先してください。 |
| HKDF | sgcHKDF_Extract_SHA256 / _SHA384、sgcHKDF_Expand_SHA256 / _SHA384、sgcHKDF_SHA256 / _SHA384 | RFC 5869、extract-then-expand 方式の鍵導出。共有秘密を複数の鍵に変換する標準的な方法です。 |
| scrypt | sgcScrypt | RFC 7914、メモリハードで、PBKDF2 よりも GPU/ASIC 攻撃への耐性が高くなっています。 |
| Argon2 | sgcArgon2(d / i / id)、便利ラッパーの sgcArgon2id | RFC 9106、Password Hashing Competition の優勝方式。オプションの秘密(ペッパー)と関連データを含む完全なインターフェースです。 |
| SipHash-2-4 | sgcSipHash24 / sgcSipHash24_Value | ハッシュテーブルのキー向けの高速な鍵付き PRF で、ハッシュフラッディング DoS に耐性があります。 |
| TLSH ファジーハッシュ | sgcTLSH、sgcTLSH_Init/_Update/_Final | ほぼ重複するデータの検出向けの局所性鋭敏型ハッシュで、暗号学的ダイジェストではありません。 |
| TLSH 類似度スコア | sgcTLSH_Diff | 2 つの TLSH ダイジェスト間の距離。値が小さいほど類似しています。 |
5 種類の異なる曲線ファミリーと RSA にまたがって、署名、検証、共有秘密の導出を行います。
| 機能 | 関数 | 備考 |
|---|---|---|
| Ed25519 署名 / 検証 | sgcEd25519_Sign / sgcEd25519_Verify | RFC 8032。32 バイトの公開鍵、64 バイトの署名。検証は非正規の点と section 5.1.7 の S >= L を拒否します。 |
| X25519 鍵交換 | sgcX25519、sgcX25519_PublicKey、sgcX25519_SharedSecret | Curve25519 上の RFC 7748 Diffie-Hellman。 |
| Ed448 署名 / 検証 | sgcEd448_GenerateKeyPair、sgcEd448_Sign、sgcEd448_Verify | RFC 8032、448 ビット(Goldilocks)の EdDSA 曲線です。 |
| X448 鍵交換 | sgcX448、sgcX448_PublicKey、sgcX448_SharedSecret | Curve448 上の RFC 7748 Diffie-Hellman。 |
| secp256k1 | eccSecp256k1 を指定した sgcECDSA_SignHash / VerifyHash | sgcCrypto_ECCurves にある、SEC 2 の Bitcoin/Ethereum 曲線です。 |
| Brainpool P256r1 / P384r1 / P512r1 | eccBrainpoolP256r1 / P384r1 / P512r1 を指定した同じ関数群 | RFC 5639。EU の eIDAS や政府プロファイルで一般的です。 |
| 決定論的 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 向け姉妹ユニットです。 |
| 汎用 ECDH | sgcECDH | raw の秘密鍵と相手の公開点から共有秘密を導出します。 |
| raw / DER の ECDSA 検証 | sgcECDSA_VerifyRaw / sgcECDSA_VerifyDER | raw の (Qx, Qy, r, s) タプル、または DER エンコードされた署名を検証します。 |
| RSA 署名(PKCS#1 v1.5) | sgcRSA_SignPKCS1 | PEM 秘密鍵から、SHA-1/256/384/512 ダイジェストで署名します。 |
| RSA 検証(PKCS#1 v1.5 / PSS) | sgcRSA_VerifyPKCS1、sgcRSA_VerifyPSS、モジュラス/指数に対する _Raw バリアント | RFC 8017。PEM 鍵、または raw のモジュラスと指数のどちらからでも検証でき、鍵オブジェクトの構築は不要です。 |
| RSA 鍵生成 | sgcRSA_GenerateKey | 任意のビット長、Miller-Rabin 素数判定。 |
| RSA-OAEP 暗号化 | sgcRSA_OAEP_Encrypt / sgcRSA_OAEP_Decrypt | RFC 8017 の Optimal Asymmetric Encryption Padding。 |
| RSA-PSS / PKCS#1 署名 | sgcRSA_PSS_Sign / Verify、sgcRSA_PKCS1_Sign / Verify | 生成済みの TsgcRSAPrivateKey から直接署名します。 |
| RSA 鍵エクスポート | sgcRSA_ExportPrivateKeyPEM、sgcRSA_ExportPublicKeyPEM、対応する DER 呼び出し | PKCS#1 と SubjectPublicKeyInfo のエンコーディングです。 |
| ECIES seal / open | sgcECIES_GenerateKeyPair、sgcECIES_Seal、sgcECIES_Open | X25519 公開鍵に対するハイブリッド暗号化。エフェメラル ECDH と AEAD を組み合わせ、往復とも 1 回の呼び出しです。 |
他者が発行した証明書を読み取るか、自分で生成するか。どちらの裏にも DER エンコーダーとデコーダーがあります。
| 機能 | 関数 | 備考 |
|---|---|---|
| DER リーダー | sgcASN1_Read、sgcASN1_Next、sgcASN1_Content | DER 構造をノードごとにたどります。 |
| PEM コーデック | sgcPEM_Decode / sgcPEM_Encode | RFC 7468。DER を囲む -----BEGIN ... -----END ラッパーです。 |
| RSA 鍵解析 | sgcASN1_ParseRSAPrivateKey / PublicKey | PKCS#1(RFC 8017)の鍵構造です。 |
| EC 鍵解析 | sgcASN1_ParseECPrivateKey / PublicKey | SEC 1 の鍵構造です。 |
| DER ライター、構造 | sgcDER_Sequence、sgcDER_Set、sgcDER_Tagged、sgcDER_ContextExplicit / Implicit | あらゆる証明書フィールドが組み立てられる基礎部品です。 |
| DER ライター、値 | sgcDER_Integer、sgcDER_OctetString、sgcDER_BitString、sgcDER_Boolean、sgcDER_Null | プリミティブな値のエンコーダーです。 |
| DER ライター、文字列 & 識別子 | sgcDER_OID、sgcDER_UTF8String、sgcDER_PrintableString、sgcDER_IA5String、sgcDER_Time | オブジェクト識別子、X.509 が使う 3 種類の文字列型、そして UTCTime/GeneralizedTime です。 |
| 証明書解析 | sgcX509_Parse | subject、issuer、有効期間、公開鍵、拡張を含む完全な証明書構造です。 |
| 署名 / チェーン検証 | sgcX509_VerifySignedBy、sgcX509_VerifyChain | 1 つの証明書を発行者に対して検証するか、DER 証明書の配列をたどって検証します。 |
| CRL 解析 & 失効確認 | sgcX509_CRL_Parse、sgcX509_IsRevoked、sgcX509_CRL_VerifySignedBy | 証明書失効リストを解析し、シリアル番号を照合します。 |
| 名前のフォーマット | sgcX509_SubjectRFC2253、sgcX509_IssuerRFC2253、sgcX509_SubjectOneLine | ロギングや表示向けの RFC 2253 識別名文字列です。 |
| 拡張 & SAN | sgcX509_GetExtension、sgcX509_GetCRLDistributionURIs | 任意の拡張 OID と CRL 配布ポイント URI を読み取ります。 |
| 自己署名証明書の生成 | sgcX509_CreateSelfSigned | 完全な TsgcX509Options: subject DN、有効期間、シリアル番号、パス長制約付き CA フラグ、鍵用途、拡張鍵用途、サブジェクト代替名(IPv4 SAN を含む)。 |
| PKCS#10 CSR の生成 | sgcX509_CreateCSR | 同じオプションレコードから作る RFC 2986 の証明書署名要求です。 |
| PEM 出力 | sgcX509_ToPEM | 生成した DER を、すぐに保存できる PEM ファイルとしてラップします。 |
NIST が 2024 年 8 月に FIPS 203、204、205 として確定した 3 つのアルゴリズムに加え、移行期間向けのハイブリッドコンバイナーです。
| 機能 | 関数 | 備考 |
|---|---|---|
| ML-KEM 鍵生成 | sgcMLKEM_GenerateKeyPair、sgcMLKEM_GenerateKeyPairFromSeed | FIPS 203、旧称 Kyber。3 種類のパラメータセット: mlkem512、mlkem768、mlkem1024。 |
| ML-KEM カプセル化 | sgcMLKEM_Encapsulate、sgcMLKEM_EncapsulateWithSeed | 新しい 32 バイトの共有秘密と、それを運ぶ暗号文を生成します。 |
| ML-KEM デカプセル化 | sgcMLKEM_Decapsulate | 失敗しません。不正な形式の暗号文はエラーではなく擬似乱数の秘密(implicit rejection)を生成するため、タイミングやエラーの挙動から何も漏れません。 |
| ML-KEM のサイズ | sgcMLKEM_PublicKeySize、PrivateKeySize、CiphertextSize、SharedSecretSize | バッファサイズを決めるための、パラメータセットごとのバイト長です。 |
| ハイブリッド X25519 + ML-KEM | sgcHybrid_GenerateKeyPair、sgcHybrid_Encapsulate、sgcHybrid_Decapsulate | 古典的な共有秘密と耐量子の共有秘密を KDF で組み合わせ、結果が X25519 単体より弱くなることはありません。ML-KEM を今日デプロイする際の推奨方法です。 |
| ML-DSA 鍵生成 | sgcMLDSA_GenerateKeyPair、sgcMLDSA_GenerateKeyPairFromSeed | FIPS 204、旧称 Dilithium。3 種類のパラメータセット: mldsa44、mldsa65、mldsa87。 |
| ML-DSA 署名 / 検証 | sgcMLDSA_Sign / sgcMLDSA_Verify | FIPS 204 インターフェースに従った決定論的または確率的な署名、そしてコンテキスト文字列。 |
| ML-DSA のサイズ | sgcMLDSA_PublicKeySize、PrivateKeySize、SignatureSize | パラメータセットごとのバイト長です。 |
| SLH-DSA 鍵生成 | sgcSLHDSA_GenerateKeyPair、sgcSLHDSA_GenerateKeyPairFromSeed | FIPS 205、旧称 SPHINCS+。ステートレスなハッシュベース署名で、安全性は格子や曲線の仮定ではなくハッシュ関数のみに依拠します。 |
| SLH-DSA 署名 / 検証 | sgcSLHDSA_Sign / sgcSLHDSA_Verify | 6 種類の SHAKE パラメータセット: slhShake128s、slhShake128f、slhShake192s、slhShake192f、slhShake256s、slhShake256f。s 系は署名の小ささ、f 系は署名の速さを優先します。 |
| SLH-DSA のサイズ & 命名 | sgcSLHDSA_PublicKeySize、PrivateKeySize、SignatureSize、sgcSLHDSA_ParamsName | SLH-DSA の署名は大きく(セットにより 7.8 KB から 49 KB)、署名前にバッファサイズを決めてください。 |
sgcCrypto は ed25519187 や SPECK を実装していません。ed25519187 には公開された仕様がなく、SPECK は 2018 年に ISO 標準化から取り下げられているため、いずれもここには実装していません。
ユーティリティ層です。ワンタイムコード、他のすべてのファミリーが頼るエンコーディング、そして WinZip AES 暗号化です。
| 機能 | 関数 | 備考 |
|---|---|---|
| HOTP | sgcHOTP | RFC 4226、カウンターベースのワンタイムパスワード。 |
| TOTP | sgcTOTP、sgcTOTP_FromBase32 | RFC 6238、時刻ベースのワンタイムパスワード。Base32 版は、認証アプリが表示するそのままの形式でシークレットを受け取れます。 |
| TOTP 検証 | sgcTOTP_Verify | 送信されたコードを、ステップのウィンドウにわたって定数時間でチェックするため、結果もその位置もタイミングから漏れません。リプレイ自体は防がないため、使用済みコードの追跡は呼び出し側で行います。 |
| 定数時間比較 | sgcConstantTimeEquals | ライブラリ全体で、タグや MAC の比較に使われます。 |
| セキュアゼロ化 | sgcSecureZero | 鍵材料がメモリに残らないよう、バイトバッファを上書きします。 |
| Hex | sgcHexEncode / sgcHexDecode | 小文字の hex で、デコードは大文字小文字を区別しません。 |
| Base64url | sgcBase64UrlEncode / sgcBase64UrlDecode | RFC 4648 section 5、パディングなし。JWT と JOSE が使うエンコーディングです。 |
| Base32 | sgcBase32Encode / sgcBase32Decode | RFC 4648 section 6。TOTP のシークレットと認証アプリが使うエンコーディングです。 |
| WinZip AES 鍵導出 | sgcZipAE2_DeriveKeys | パスワードとソルトから、PBKDF2 ベースの鍵、認証鍵、パスワード検証子を導出します。 |
| WinZip AES 暗号化 / 復号 | sgcZipAE2_Encrypt / sgcZipAE2_Decrypt | AE-1 と AE-2、AES-128/192/256。TsgcZipAESStrength によるエントリごとのソルトサイズ設定です。 |
| WinZip エントリパッキング | sgcZipAE2_PackEntry / sgcZipAE2_UnpackEntry | ソルト、検証子、暗号文、認証コードを、ディスク上のレイアウトに組み合わせます。 |
| WinZip 拡張フィールド | sgcZipAE2_BuildExtraField / sgcZipAE2_ParseExtraField | ZIP エントリが AES 暗号化されていることを示す 0x9901 拡張フィールドです。 |
| レガシーハッシュ(相互運用専用) | sgcMD4、sgcMD5、sgcHMAC_MD5 | 古い形式やプロトコルの読み取り用に残しています。新しい設計には使わないでください。 |
| レガシー暗号(相互運用専用) | sgcDES_EncryptECB / sgcDES_DecryptECB、sgcDES_NTLM7to8 | DES-ECB と DES ベースの NTLM 鍵拡張ステップです。どちらも取り下げられていますが(FIPS 46-3)、レガシーとの相互運用のために残しています。 |
| セキュアな乱数バイト | sgcRandomBytes / sgcRandomFill | MSWINDOWS では Windows CryptoAPI、それ以外では /dev/urandom。どちらも同じ呼び出しです。 |
サポート内容を正確に記載しています。
| 項目 | 詳細 |
|---|---|
| オペレーティングシステム | sgcVer.inc の中で SGC_CRYPTO を囲む MSWINDOWS ガードや、その他のプラットフォームガードは一切ありません。43 ユニットすべてが Win32、Win64、Linux64、macOS、iOS、Android 向けにコンパイルされます。 |
| 乱数ソース | 唯一プラットフォームを意識するユニット sgcCrypto_Random は、対象ごとに CSPRNG を選択します。MSWINDOWS では Windows CryptoAPI、POSIX 系のターゲットでは /dev/urandom を、同じ sgcRandomBytes 呼び出しの裏側で行います。 |
| Delphi | Delphi 7 から RAD Studio 13 Florence まで。ネイティブな 64 ビット整数型はどこにも前提としていません。sgcCrypto_Int64 と sgcCrypto_BigInteger の TsgcBigInt 型が、ハッシュ、曲線、耐量子ユニットの必要とする演算をエミュレートします。 |
| C++ Builder | 生成されたヘッダーを介して、同じソースツリーで C++ Builder に対応します。 |
| 設計時の要素 | ありません。sgcCrypto_Reg.pas はなく、RegisterComponents されるものもなく、コンポーネントパレットのページに現れるユニットもありません。 |
| 依存関係 | OpenSSL バインディングも外部 DLL もありません。すべてのプリミティブは、参照するユニットの中に直接 Object Pascal で実装されています。 |
| ソースコード | すべての有料ティア、そして sgcCrypto をすでに含むエディションパッケージで、完全な Object Pascal のソースコードが提供されます。 |
| 再配布 | ビルドしたバイナリはロイヤリティフリーで、シート単位やサーバー単位のランタイム費用もありません。 |