Table of Contents

Class OdfBouncyCastleOpenPgpProvider

Namespace
OdfKit.Core
Assembly
OdfKit.dll

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

secretKeyRingData byte[]

OpenPGP 私鑰環的原始位元組,支援 ASCII Armor 與二進位格式。

passphraseProvider Func<long, char[]>

根據金鑰 ID(long)提供解鎖密語的委派函式;空陣列表示無密語保護。

Exceptions

ArgumentNullException

任一參數為 null 時擲出

Methods

DecryptSessionKey(byte[], string)

Decrypts session key. 解密 Session Key。

public byte[] DecryptSessionKey(byte[] encryptedKeyPacket, string keyId)

Parameters

encryptedKeyPacket byte[]

加密後的金鑰封包位元組陣列

keyId string

目標私鑰識別碼,用於選取對應金鑰

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

sessionKey byte[]

明文 Session Key 位元組陣列(32 位元組 AES-256 金鑰)

recipient OdfOpenPgpRecipient

收件人公鑰資訊

Returns

byte[]

加密後的 Session Key 位元組陣列

Exceptions

ArgumentNullException

sessionKeyrecipient 為 null

ArgumentException

收件人未提供公鑰資料

InvalidOperationException

公鑰資料中找不到可用於加密的子金鑰

NotSupportedException

公鑰演算法不受支援(僅支援 RSA 及 ElGamal)