|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.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
メソッドはカスタマイズされた署名エンジンにより、暗号プロバイダの一部として正式にインストールされていない署名アルゴリズムを実装できます。ただし、署名の検証には verify
メソッドの Signature
エンジン自身の実装が呼び出されるので、検証用コードを記述するプログラマは、どの Signature
エンジンが使用中であるかを確認することが重要です。言い換えれば、悪意のある Signature
はセキュリティーチェックを免れるために検証で常に true を返そうとする場合があります。
多くの署名アルゴリズムの中で、DSA および SHA-1 を使用した NIST 標準の DSA を使用できます。 アルゴリズムは、署名と同じ規約を使って指定されます。たとえば、SHA-1 メッセージダイジェストアルゴリズムを使用する DSA アルゴリズムは、SHA/DSA または SHA-1/DSA (これらは等価) のように指定できます。RSA の場合は、メッセージダイジェストアルゴリズムに複数の選択肢があります。 したがって、署名アルゴリズムの指定は、MD2/RSA、MD5/RSA、または SHA-1/RSA のようにします。デフォルトはないので、必ずアルゴリズムの名前を指定しなければいけません。
暗号パッケージプロバイダの名前は、コンストラクタと verify
メソッドに対する Signature パラメータで指定されます。このプロバイダを指定しないと、デフォルトのプロバイダが使用されます。各インストールは、特定プロバイダをデフォルトとして使うように設定できます。
SignedObject を使用するアプリケーションでは、次のことが行えます。
Signature
,
直列化された形式コンストラクタの概要 | |
---|---|
SignedObject(Serializable object,
PrivateKey signingKey,
Signature signingEngine)
任意の Serializable オブジェクトから SignedObject を構築します。 |
メソッドの概要 | |
---|---|
String |
getAlgorithm()
署名アルゴリズムの名前を取得します。 |
Object |
getObject()
カプセル化されたオブジェクトを取得します。 |
byte[] |
getSignature()
署名付きオブジェクトの署名を、バイト配列の形式で取得します。 |
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 Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。