/// <summary> /// Find Server Signature and KDC signature. /// </summary> /// <param name="serverSign">The found Server Signature.</param> /// <param name="kdcSign">The found KDC Signature.</param> private void FindSignatures(out PacSignatureData serverSign, out PacSignatureData kdcSign) { serverSign = null; kdcSign = null; foreach (PacInfoBuffer infoBuffer in pacInfoBuffers) { if (infoBuffer == null) { continue; } PAC_INFO_BUFFER_Type_Values ulType = infoBuffer.GetBufferInfoType(); if (ulType == PAC_INFO_BUFFER_Type_Values.ServerChecksum || ulType == PAC_INFO_BUFFER_Type_Values.KdcChecksum) { PacSignatureData sign = (PacSignatureData)infoBuffer; if (ulType == PAC_INFO_BUFFER_Type_Values.ServerChecksum) { serverSign = sign; } else { kdcSign = sign; } } } AssertSignsNotNull(serverSign, kdcSign); }
/// <summary> /// Create an instance of current class according to specified ulType_Values. /// </summary> /// <param name="ulType">The specified ulType_Values.</param> /// <returns>The created instance of current class.</returns> private static PacInfoBuffer CreatePacInfoBuffer(PAC_INFO_BUFFER_Type_Values ulType) { PacInfoBuffer pacInfoBuffer; switch (ulType) { case PAC_INFO_BUFFER_Type_Values.LogonInformation: pacInfoBuffer = new KerbValidationInfo(); break; case PAC_INFO_BUFFER_Type_Values.CredentialsInformation: pacInfoBuffer = new PacCredentialInfo(); break; case PAC_INFO_BUFFER_Type_Values.ServerChecksum: pacInfoBuffer = new PacServerSignature(); break; case PAC_INFO_BUFFER_Type_Values.KdcChecksum: pacInfoBuffer = new PacKdcSignature(); break; case PAC_INFO_BUFFER_Type_Values.ClientNameAndTicketInformation: pacInfoBuffer = new PacClientInfo(); break; case PAC_INFO_BUFFER_Type_Values.ConstrainedDelegationInformation: pacInfoBuffer = new S4uDelegationInfo(); break; case PAC_INFO_BUFFER_Type_Values.UpnAndDnsInformation: pacInfoBuffer = new UpnDnsInfo(); break; case PAC_INFO_BUFFER_Type_Values.ClientClaimsInformation: pacInfoBuffer = new ClientClaimsInfo(); break; case PAC_INFO_BUFFER_Type_Values.PacDeviceInfo: pacInfoBuffer = new PacDeviceInfo(); break; case PAC_INFO_BUFFER_Type_Values.DeviceClaimsInformation: pacInfoBuffer = new DeviceClaimsInfo(); break; default: throw new ArgumentOutOfRangeException("ulType"); } return(pacInfoBuffer); }
/// <summary> /// Create an instance of current class according to specified ulType_Values. /// </summary> /// <param name="ulType">The specified ulType_Values.</param> /// <returns>The created instance of current class.</returns> private static PacInfoBuffer CreatePacInfoBuffer(PAC_INFO_BUFFER_Type_Values ulType) { PacInfoBuffer pacInfoBuffer; switch (ulType) { case PAC_INFO_BUFFER_Type_Values.LogonInformation: pacInfoBuffer = new KerbValidationInfo(); break; case PAC_INFO_BUFFER_Type_Values.CredentialsInformation: pacInfoBuffer = new PacCredentialInfo(); break; case PAC_INFO_BUFFER_Type_Values.ServerChecksum: pacInfoBuffer = new PacServerSignature(); break; case PAC_INFO_BUFFER_Type_Values.KdcChecksum: pacInfoBuffer = new PacKdcSignature(); break; case PAC_INFO_BUFFER_Type_Values.ClientNameAndTicketInformation: pacInfoBuffer = new PacClientInfo(); break; case PAC_INFO_BUFFER_Type_Values.ConstrainedDelegationInformation: pacInfoBuffer = new S4uDelegationInfo(); break; case PAC_INFO_BUFFER_Type_Values.UpnAndDnsInformation: pacInfoBuffer = new UpnDnsInfo(); break; case PAC_INFO_BUFFER_Type_Values.ClientClaimsInformation: pacInfoBuffer = new ClientClaimsInfo(); break; case PAC_INFO_BUFFER_Type_Values.PacDeviceInfo: pacInfoBuffer = new PacDeviceInfo(); break; case PAC_INFO_BUFFER_Type_Values.DeviceClaimsInformation: pacInfoBuffer = new DeviceClaimsInfo(); break; default: throw new ArgumentOutOfRangeException("ulType"); } return pacInfoBuffer; }