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)); }
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); }
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)); }