|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.security.SignedObject
public final class SignedObject
SignedObject 是一個用來創建實際運行時物件的類別,在檢測不到這些物件的情況下,其完整性不會遭受損害。
更明確地說,SignedObject 套件含另外一個 Serializable 物件,即(要)簽章的物件及其簽章。
簽章物件是對原始物件的“深層複製”(以序列化形式)。一旦產生了副本,對原始物件的進一步操作就不再影響該副本。
底層簽章演算法是由傳遞給建構子和 verify 方法的 Signature 物件指定。下面是簽章的典型用法:
Signature signingEngine = Signature.getInstance(algorithm,
provider);
SignedObject so = new SignedObject(myobject, signingKey,
signingEngine);
下面是對驗證的典型用法(已接收到 SignedObject so):
Signature verificationEngine =
Signature.getInstance(algorithm, provider);
if (so.verify(publickey, verificationEngine))
try {
Object myobj = so.getObject();
} catch (java.lang.ClassNotFoundException e) {};
以下幾點需要注意。首先,不需要初始化簽章或驗證引擎,因為它將在建構子和 verify 方法中被重新初始化。其次,為了成功驗證,指定的公鑰必須是與用來產生 SignedObject 的私鑰對應的公鑰。
更為重要的是,出於靈活性考慮,建構子和 verify 方法允許使用自定義的簽章引擎,這樣可以實作未作為加密提供者一部分正常安裝的簽章演算法。不過,程式人員編寫知道使用什麼 Signature 引擎的校驗器程式碼至關重要,因為將調用它自己的 verify 方法的實作來驗證簽章。換句話說,惡意 Signature 在嘗試繞過安全檢查的驗證中會選擇始終返回 true。
在所有演算法中,簽章演算法可以是使用 DSA 和 SHA-1 的 NIST 標準 DSA。該演算法使用與簽章慣例相同的慣例來指定。例如,可以將使用 SHA-1 訊息分類別演算法的 DSA 演算法指定為 "SHA/DSA" 或 "SHA-1/DSA"(它們是等效的)。如果使用 RSA 標準,訊息分類別演算法將有多種選擇,例如,可將簽章演算法指定為 "MD2/RSA"、"MD5/RSA" 或 "SHA-1/RSA"。沒有預設的演算法名稱,所以必須為其指定名稱。
Cryptography Package Provider 的名稱也是由建構子和 verify 方法的 Signature 參數指定的。如果未指定提供者,則使用預設的提供者。每種安裝都可以配置為將特定的提供者作為預設提供者。
SignedObject 可能的應用領域包括:
Signature,
序列化表格| 建構子摘要 | |
|---|---|
SignedObject(Serializable object,
PrivateKey signingKey,
Signature signingEngine)
通過任何可序列化物件建構 SignedObject。 |
|
| 方法摘要 | |
|---|---|
String |
getAlgorithm()
獲取簽章演算法的名稱。 |
Object |
getObject()
獲取已封裝的物件。 |
byte[] |
getSignature()
在已簽章物件上按 byte 陣列的形式獲取簽章。 |
boolean |
verify(PublicKey verificationKey,
Signature verificationEngine)
使用指派的驗證引擎,通過給定的驗證密鑰驗證此 SignedObject 中的簽章是否為內部存儲物件的有效簽章。 |
| 從類別 java.lang.Object 繼承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 建構子詳細資訊 |
|---|
public SignedObject(Serializable object,
PrivateKey signingKey,
Signature signingEngine)
throws IOException,
InvalidKeyException,
SignatureException
object - 要簽章的物件。signingKey - 用於簽章的私鑰。signingEngine - 用於簽章的簽章引擎。
IOException - 如果在序列化期間發生錯誤
InvalidKeyException - 如果密鑰無效。
SignatureException - 如果簽章失敗。| 方法詳細資訊 |
|---|
public Object getObject()
throws IOException,
ClassNotFoundException
IOException - 如果在反序列化期間發生錯誤
ClassNotFoundException - 如果在反序列化期間發生錯誤public byte[] getSignature()
public String getAlgorithm()
public boolean verify(PublicKey verificationKey,
Signature verificationEngine)
throws InvalidKeyException,
SignatureException
verificationKey - 用於驗證的公鑰。verificationEngine - 簽章驗證引擎。
SignatureException - 如果簽章驗證失敗。
InvalidKeyException - 如果驗證密鑰無效。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。