SignedObject 类

定义

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

[Android.Runtime.Register("java/security/SignedObject", DoNotGenerateAcw=true)]
public sealed class SignedObject : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, 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 包含另一个可序列化对象(待定)签名对象及其签名。

已签名对象是原始对象的“深层复制”(以序列化形式)。 创建副本后,对原始对象的进一步操作对副本没有副作用。

基础签名算法由传递给构造函数和方法的 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”。 必须指定算法名称,因为没有默认值。

加密包提供程序的名称也由 Signature 参数指定为构造函数和 verify 方法。 如果未指定提供程序,则使用默认提供程序。 可将每个安装配置为使用特定提供程序作为默认值。

SignedObject 的潜在应用程序包括: <ul><li> 它可以在内部用作任何 Java 运行时作为不可预测的授权令牌-- 可以传递一个令牌,而不必担心令牌可以恶意修改,而不会被检测到。 <li> 它可用于对 Java 运行时外部存储的数据/对象进行签名和序列化(例如,在磁盘上存储关键访问控制数据)。 <li> Nested SignedObjects 可用于构造签名的逻辑序列,类似于授权和委派链。 </ul>

已在 1.2 中添加。

适用于 . 的 java.security.SignedObjectJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

SignedObject(ISerializable, IPrivateKey, Signature)

从任何可序列化对象构造 SignedObject。

属性

Algorithm

检索签名算法的名称。

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
JniPeerMembers

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

Object

检索封装的对象。

PeerReference

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)
ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

(继承自 Object)

方法

Clone()

创建并返回此对象的副本。

(继承自 Object)
Dispose()

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
Dispose(Boolean)

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetSignature()

以字节数组的形式检索已签名对象的签名。

JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
ToArray<T>()

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
Verify(IPublicKey, Signature)

使用指定的验证引擎验证此 SignedObject 中的签名是否是存储在内、具有给定验证密钥的对象的有效签名。

Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<><

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
IJavaPeerable.Finalized()

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

GetJniTypeName(IJavaPeerable)

SignedObject 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。

适用于