627 {
629 byte[] impType = new byte[4];
630 int cb = 4;
632 int num = 0;
633 int num2 = 0;
634 bool flag = false;
635 string result = null;
636 try
637 {
638 switch (keyParam)
639 {
640 case 3:
643 {
645 {
647 }
649 int num3 = 0;
651 cb = 4;
652 if (!global::Interop.Advapi32.CryptGetKeyParam(safeKeyHandle, global::Interop.Advapi32.CryptGetKeyParamFlags.KP_PERMISSIONS,
array, ref cb, 0))
653 {
655 }
658 }
659 else
660 {
661 flag = false;
662 }
663 break;
664 case 4:
667 break;
668 case 5:
669 case 7:
672 break;
673 case 6:
674 flag = (
CryptGetUserKey(safeProvHandle, keyNumber, out safeKeyHandle) ? true :
false);
675 break;
676 case 8:
677 {
678 num2 = 1;
679 byte[] impType2 = null;
680 num =
GetProviderParameterWorker(safeProvHandle, impType2, ref cb, global::Interop.Advapi32.CryptProvParam.PP_UNIQUE_CONTAINER);
681 impType2 = new byte[cb];
682 num =
GetProviderParameterWorker(safeProvHandle, impType2, ref cb, global::Interop.Advapi32.CryptProvParam.PP_UNIQUE_CONTAINER);
684 break;
685 }
686 }
687 }
688 finally
689 {
690 safeKeyHandle.Dispose();
691 }
692 if (num2 != 0)
693 {
694 return result;
695 }
696 return flag;
697 }
static int GetProviderParameterWorker(SafeProvHandle safeProvHandle, byte[] impType, ref int cb, global::Interop.Advapi32.CryptProvParam flags)
static void VerifyValidHandle(SafeHandleZeroOrMinusOneIsInvalid handle)
static bool IsFlagBitSet(uint dwImp, uint flag)
static int GetErrorCode()
static bool CryptGetUserKey(SafeProvHandle safeProvHandle, int dwKeySpec, out SafeKeyHandle safeKeyHandle)
static int ToInt32(byte[] value, int startIndex)
static SafeKeyHandle InvalidHandle