Class OdfBouncyCastleOpenPgpProvider
Provides the BouncyCastle-backed OpenPGP session key provider. 以 BouncyCastle.Cryptography 為底層,實作 ODF 1.3 OpenPGP Session Key 加解密。
[RequiresUnreferencedCode("BouncyCastle OpenPGP 路徑尚未完成 trimming 相容;Native AOT 需保留 Org.BouncyCastle 組件。")]
[RequiresDynamicCode("BouncyCastle 密碼學實作依賴動態程式碼產生。")]
public sealed class OdfBouncyCastleOpenPgpProvider : IOdfOpenPgpKeyProvider
- Inheritance
-
OdfBouncyCastleOpenPgpProvider
- Implements
- Inherited Members
Remarks
Native AOT:BouncyCastle 演算法實作依賴執行期組裝探索,裁剪時須保留完整 Org.BouncyCastle 組件或改用靜態註冊表。
Constructors
OdfBouncyCastleOpenPgpProvider()
Performs odf bouncy castle open pgp provider. 建立僅支援加密(無法解密)的提供者實例。
public OdfBouncyCastleOpenPgpProvider()
OdfBouncyCastleOpenPgpProvider(byte[], Func<long, char[]>)
Performs odf bouncy castle open pgp provider. 建立同時支援加密與解密的提供者實例。
public OdfBouncyCastleOpenPgpProvider(byte[] secretKeyRingData, Func<long, char[]> passphraseProvider)
Parameters
secretKeyRingDatabyte[]OpenPGP 私鑰環的原始位元組,支援 ASCII Armor 與二進位格式。
passphraseProviderFunc<long, char[]>根據金鑰 ID(long)提供解鎖密語的委派函式;空陣列表示無密語保護。
Exceptions
- ArgumentNullException
任一參數為 null 時擲出
Methods
DecryptSessionKey(byte[], string)
Decrypts session key. 解密 Session Key。
public byte[] DecryptSessionKey(byte[] encryptedKeyPacket, string keyId)
Parameters
Returns
- byte[]
解密後的明文 Session Key 位元組陣列;若無對應私鑰請拋出例外
Exceptions
- InvalidOperationException
此實例以純加密模式建立,無法執行解密
- ArgumentNullException
encryptedKeyPacket為 null- CryptographicException
PKESK 封包格式有誤、私鑰解鎖失敗、演算法不受支援,或總和檢查碼驗證失敗時擲出。
EncryptSessionKey(byte[], OdfOpenPgpRecipient)
Encrypts session key. 加密 Session Key。
public byte[] EncryptSessionKey(byte[] sessionKey, OdfOpenPgpRecipient recipient)
Parameters
sessionKeybyte[]明文 Session Key 位元組陣列(32 位元組 AES-256 金鑰)
recipientOdfOpenPgpRecipient收件人公鑰資訊
Returns
- byte[]
加密後的 Session Key 位元組陣列
Exceptions
- ArgumentNullException
sessionKey或recipient為 null- ArgumentException
收件人未提供公鑰資料
- InvalidOperationException
公鑰資料中找不到可用於加密的子金鑰
- NotSupportedException
公鑰演算法不受支援(僅支援 RSA 及 ElGamal)