SignedObject 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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 包含另一个可序列化对象(待定)签名对象及其签名。
已签名对象是原始对象的“深层复制”(以序列化形式)。 创建副本后,对原始对象的进一步操作对副本没有副作用。
基础签名算法由传递给构造函数和方法的 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.SignedObject
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
SignedObject(ISerializable, IPrivateKey, Signature) |
从任何可序列化对象构造 SignedObject。 |
属性
Algorithm |
检索签名算法的名称。 |
Class |
返回此 |
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 是一个类,用于创建不检测到其完整性无法泄露的正宗运行时对象。 |