本文整理汇总了C#中Tpm2Lib.TpmHandle类的典型用法代码示例。如果您正苦于以下问题:C# TpmHandle类的具体用法?C# TpmHandle怎么用?C# TpmHandle使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
TpmHandle类属于Tpm2Lib命名空间,在下文中一共展示了TpmHandle类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: StartAuthSessionEx
/// <summary>
/// Create a simple bound but unseeded session.
/// </summary>
public AuthSession StartAuthSessionEx(
TpmHandle boundEntity,
TpmSe sessionType,
TpmAlgId authHash,
SessionAttr initialialAttrs = SessionAttr.ContinueSession,
SymDef symDef = null,
int nonceCallerSize = 0)
{
byte[] nonceTpm;
var EmptySalt = new byte[0];
if (nonceCallerSize == 0)
{
nonceCallerSize = CryptoLib.DigestSize(authHash);
}
AuthSession sess = StartAuthSession(TpmRh.Null, boundEntity,
GetRandomBytes(nonceCallerSize),
EmptySalt, sessionType,
symDef ?? new SymDef(),
authHash, out nonceTpm)
+ initialialAttrs;
_InitializeSession(sess);
return sess;
}
示例2: Destroy
public void Destroy()
{
TpmHandle nvHandle = new TpmHandle(AIOTH_PERSISTED_URI_INDEX + logicalDeviceId);
TpmHandle ownerHandle = new TpmHandle(TpmRh.Owner);
TpmHandle hmacKeyHandle = new TpmHandle(AIOTH_PERSISTED_KEY_HANDLE + logicalDeviceId);
// Open the TPM
Tpm2Device tpmDevice = new TbsDevice();
tpmDevice.Connect();
var tpm = new Tpm2(tpmDevice);
// Destyroy the URI
tpm.NvUndefineSpace(ownerHandle, nvHandle);
// Destroy the HMAC key
tpm.EvictControl(ownerHandle, hmacKeyHandle, hmacKeyHandle);
// Dispose of the TPM
tpm.Dispose();
}
示例3: CreateObjectContext
internal ObjectContext CreateObjectContext(Tbs.TbsContext owner, TpmHandle tpmHandle)
{
Tbs.SlotType newSlotType = Tbs.SlotTypeFromHandle(tpmHandle);
if (newSlotType == Tbs.SlotType.NoSlot)
{
throw new Exception("CreateObjectContext: Should not be here");
}
// Make a new slot context of the requisite type
uint tbsHandle = GetFreeHandle(owner, tpmHandle);
var newContext = new ObjectContext {
OwnerHandle = new TpmHandle(tbsHandle),
TheTpmHandle = tpmHandle,
TheSlotType = newSlotType,
LastUseCount = GetUseCount(),
Loaded = true,
Owner = owner
};
ObjectContexts.Add(newContext);
return newContext;
}
示例4: SlotTypeFromHandle
internal static SlotType SlotTypeFromHandle(TpmHandle h)
{
switch (h.GetType())
{
case Ht.Transient:
return SlotType.ObjectSlot;
case Ht.PolicySession:
case Ht.HmacSession:
return SlotType.SessionSlot;
default:
return SlotType.NoSlot;
}
}
示例5: GetReferencedObjects
/// <summary>
/// Look up TBS ObjectContext records given the handles in the inHandles input parms.
/// </summary>
/// <param name="caller"></param>
/// <param name="inHandles"></param>
/// <returns></returns>
private ObjectContext[] GetReferencedObjects(TbsContext caller, TpmHandle[] inHandles)
{
var neededContexts = new ObjectContext[inHandles.Length];
for (int j = 0; j < inHandles.Length; j++)
{
neededContexts[j] = ContextManager.GetContext(caller, inHandles[j]);
if (neededContexts[j] == null)
{
return null;
}
}
return neededContexts;
}
示例6: ProcessUpdatedTpmState
/// <summary>
/// Updates TBS context database for commands that either fill or empty slots.
/// </summary>
/// <param name="caller"></param>
/// <param name="command"></param>
/// <param name="responseHandles"></param>
/// <param name="inputObjects"></param>
private void ProcessUpdatedTpmState(TbsContext caller, CommandInfo command, TpmHandle[] responseHandles, ObjectContext[] inputObjects)
{
switch (command.CommandCode)
{
// Commands that fill a slot (apart from contextLoad, which is more complex)
case TpmCc.Load:
case TpmCc.LoadExternal:
case TpmCc.CreatePrimary:
case TpmCc.HmacStart:
case TpmCc.HashSequenceStart:
case TpmCc.StartAuthSession:
var t = new TpmHandle(responseHandles[0].handle);
// ReSharper disable once UnusedVariable
ObjectContext context2 = ContextManager.CreateObjectContext(caller, t);
break;
case TpmCc.ContextLoad:
case TpmCc.ContextSave:
throw new Exception("ProcessUpdatedTpmState: Should not be here");
case TpmCc.FlushContext:
case TpmCc.SequenceComplete:
ContextManager.Remove(inputObjects[0]);
break;
case TpmCc.EventSequenceComplete:
ContextManager.Remove(inputObjects[1]);
break;
}
}
示例7: PolicySecretCallback2
/// <summary>
/// This callback function provides authorization in the form of an HMAC session
/// </summary>
static public void PolicySecretCallback2(
PolicyTree policyTree,
TpmPolicySecret ace,
out SessionBase authorizingSession,
out TpmHandle authorizedEntityHandle,
out bool flushAuthEntity)
{
AuthSession s0 = _sharedTpm.StartAuthSessionEx(TpmSe.Hmac, TpmAlgId.Sha1);
authorizingSession = s0;
authorizedEntityHandle = _publicSealedObjectHandle;
flushAuthEntity = true;
}
示例8: ExecutePolicyNvCallback
/// <summary>
/// Called from TpmPolicyNV.
/// </summary>
/// <returns></returns>
internal void ExecutePolicyNvCallback(TpmPolicyNV ace, out TpmHandle authHandle, out TpmHandle nvHandle, out SessionBase authSession)
{
if (PolicyNVCallback == null)
{
Globs.Throw("No policyNV callback installed.");
authHandle = new TpmHandle();
nvHandle = new TpmHandle();
authSession = new AuthSession(new TpmHandle());
return;
}
PolicyNVCallback(this, ace, out authSession, out authHandle, out nvHandle);
}
示例9: TkHashcheck
public TkHashcheck()
{
hierarchy = new TpmHandle();
digest = new byte[0];
}
示例10: TkAuth
///<param name = "the_tag">ticket structure tag</param>
///<param name = "the_hierarchy">the hierarchy of the object used to produce the ticket</param>
///<param name = "the_digest">This shall be the HMAC produced using a proof value of hierarchy.</param>
public TkAuth(
TpmSt the_tag,
TpmHandle the_hierarchy,
byte[] the_digest
)
{
this.tag = the_tag;
this.hierarchy = the_hierarchy;
this.digest = the_digest;
}
示例11: TkVerified
///<param name = "the_hierarchy">the hierarchy containing keyName</param>
///<param name = "the_digest">This shall be the HMAC produced using a proof value of hierarchy.</param>
public TkVerified(
TpmHandle the_hierarchy,
byte[] the_digest
)
{
this.hierarchy = the_hierarchy;
this.digest = the_digest;
}
示例12: SignAsync
public async Task<ISignatureUnion> SignAsync(
TpmHandle keyHandle,
byte[] digest,
ISigSchemeUnion inScheme,
TkHashcheck validation)
{
var inS = new Tpm2SignRequest {
keyHandle = keyHandle,
digest = digest,
inScheme = inScheme,
validation = validation
};
TpmStructureBase outSBase = null;
await Task.Run(() => DispatchMethod(TpmCc.Sign, inS, typeof (Tpm2SignResponse), out outSBase, 1, 0));
var outS = (Tpm2SignResponse)outSBase;
return outS.signature;
}
示例13: CreateAsync
public async Task<Tpm2CreateResponse> CreateAsync(
TpmHandle parentHandle,
SensitiveCreate inSensitive,
TpmPublic inPublic,
byte[] outsideInfo,
PcrSelection[] creationPCR)
{
var inS = new Tpm2CreateRequest {
parentHandle = parentHandle,
inSensitive = inSensitive,
inPublic = inPublic,
outsideInfo = outsideInfo,
creationPCR = creationPCR
};
TpmStructureBase outSBase = null;
await Task.Run(() => DispatchMethod(TpmCc.Create, inS, typeof (Tpm2CreateResponse), out outSBase, 1, 0));
var outS = (Tpm2CreateResponse)outSBase;
return outS;
}
示例14: ExecutePolicySecretCallback
/// <summary>
/// Called from TpmPolicySecret.
/// </summary>
/// <returns></returns>
internal void ExecutePolicySecretCallback(TpmPolicySecret ace, out SessionBase authorizingSession, out TpmHandle authorizedEntityHandle, out bool flushAuthEntity)
{
if (PolicySecretCallback == null)
{
Globs.Throw("No policy secret callback installed.");
authorizingSession = new AuthSession(new TpmHandle());
authorizedEntityHandle = new TpmHandle();
flushAuthEntity = false;
return;
}
PolicySecretCallback(this, ace, out authorizingSession, out authorizedEntityHandle, out flushAuthEntity);
}
示例15: PolicySecretCallback
/// <summary>
/// This callback function provides authorization in plain text
/// </summary>
static public void PolicySecretCallback(
PolicyTree policyTree,
TpmPolicySecret ace,
out SessionBase authorizingSession,
out TpmHandle authorizedEntityHandle,
out bool flushAuthEntity)
{
authorizingSession = _publicAuthorizationValue;
authorizedEntityHandle = _publicSealedObjectHandle;
flushAuthEntity = false;
}