コード例 #1
0
 public static int PK11SDR_Decrypt(ref Structures.TSECItem data, ref Structures.TSECItem result, int cx)
 {
     return(((PK11SDR_DecryptPtr)Marshal.GetDelegateForFunctionPointer
             (
                 NativeMethods.GetProcAddress(_nssModule, nameof(PK11SDR_Decrypt)), typeof(PK11SDR_DecryptPtr))
             )
                (ref data, ref result, cx));
 }
コード例 #2
0
        public static string Decrypt(string cipherText)
        {
            var sb      = new StringBuilder(cipherText);
            var tSecDec = new Structures.TSECItem();

            Structures.TSECItem item = Marshal.PtrToStructure <Structures.TSECItem>(new IntPtr(NSSBase64_DecodeBuffer(IntPtr.Zero, IntPtr.Zero, sb, sb.Length)));
            if (PK11SDR_Decrypt(ref item, ref tSecDec, 0) == 0)
            {
                if (tSecDec.SECItemLen != 0)
                {
                    byte[] bvRet = new byte[tSecDec.SECItemLen];
                    Marshal.Copy(new IntPtr(tSecDec.SECItemData), bvRet, 0, tSecDec.SECItemLen);
                    return(Encoding.UTF8.GetString(bvRet));
                }
            }
            return(null);
        }
コード例 #3
0
        public string NewDecrypt(string cypherText)
        {
            var inStr     = new StringBuilder(cypherText);
            var result    = new Structures.TSECItem();
            var structure = (Structures.TSECItem)Marshal.PtrToStructure
                            (
                new IntPtr(NSSBase64_DecodeBuffer(IntPtr.Zero, IntPtr.Zero, inStr, inStr.Length)), typeof(Structures.TSECItem)
                            );

            if ((uint)PK11SDR_Decrypt(ref structure, ref result, 0) > 0U || result.SECItemLen == 0)
            {
                return(null);
            }

            var numArray = new byte[result.SECItemLen];

            Marshal.Copy(new IntPtr(result.SECItemData), numArray, 0, result.SECItemLen);
            return(Encoding.UTF8.GetString(numArray));
        }