言語

SignedObject クラス

定義

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

[Android.Runtime.Register("java/security/SignedObject", DoNotGenerateAcw=true)]
public sealed class SignedObject : Java.Lang.Object, IDisposable, Java.IO.ISerializable
[<Android.Runtime.Register("java/security/SignedObject", DoNotGenerateAcw=true)>]
type SignedObject = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
継承
SignedObject
属性
実装

注釈

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

具体的には、SignedObject には、別のシリアル化可能なオブジェクト(to-be-)署名付きオブジェクトとその署名が含まれています。

署名されたオブジェクトは、元のオブジェクトの "ディープ コピー" (シリアル化された形式) です。 コピーが作成されると、元のオブジェクトをさらに操作しても、コピーに副作用はありません。

基になる署名アルゴリズムは、コンストラクターと verify メソッドに渡される Signature オブジェクトによって指定されます。 署名の一般的な使用法は次のとおりです。

{@code
            Signature signingEngine = Signature.getInstance(algorithm,
                                                            provider);
            SignedObject so = new SignedObject(myobject, signingKey,
                                               signingEngine);
            }

検証の一般的な使用方法は、次のとおりです (SignedObject soを受け取りました)。

{@code
            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-256 を使用する NIST 標準 DSA を使用できます。 アルゴリズムは、署名の場合と同じ規則を使用して指定されます。 SHA-256 メッセージ ダイジェスト アルゴリズムを使用する DSA アルゴリズムは、たとえば"SHA256withDSA" として指定できます。 RSA の場合、署名アルゴリズムは "SHA256withRSA" のように指定できます。 既定値がないため、アルゴリズム名を指定する必要があります。

Cryptography Package Provider の名前は、コンストラクターと verify メソッドに対する Signature パラメーターによっても指定されます。 プロバイダーが指定されていない場合は、既定のプロバイダーが使用されます。 各インストールは、特定のプロバイダーを既定として使用するように構成できます。

SignedObject の潜在的なアプリケーションには、<ul><li> Java ランタイムに対して、許容できない承認トークンとして内部的に使用できます。これは、トークンが検出されずに悪意を持って変更される可能性があることを恐れずに渡すことができます。 <li> Java ランタイム外のストレージのデータ/オブジェクトに署名してシリアル化するために使用できます (たとえば、重要なアクセス制御データをディスクに格納する)。 <li> 入れ子になった SignedObjects を使用して、承認と委任のチェーンに似た署名の論理シーケンスを構築できます。 </ul>

1.2 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

名前 説明
SignedObject(ISerializable, IPrivateKey, Signature)

Serializable オブジェクトから SignedObject を構築します。

プロパティ

名前 説明
Algorithm

署名アルゴリズムの名前を取得します。

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
JniPeerMembers

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

Object

カプセル化されたオブジェクトを取得します。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)
ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

(継承元 Object)

メソッド

名前 説明
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
Equals(Object)

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
GetSignature()

符号付きオブジェクトのシグネチャをバイト配列の形式で取得します。

JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列表現を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Verify(IPublicKey, Signature)

指定された検証エンジンを使用して、この SignedObject 内の署名が、指定された検証キーを使用して、内部に格納されているオブジェクトの有効な署名であることを確認します。

Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
IJavaPeerable.Finalized()

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

(継承元 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

SignedObject は、整合性を損なわないと検出できない本物のランタイム オブジェクトを作成するためのクラスです。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象