Esempio n. 1
0
 internal static unsafe bool RsaSign(int type, ReadOnlySpan <byte> m, int m_len, Span <byte> sigret, out int siglen, SafeRsaHandle rsa)
 {
     fixed(byte *mPtr = &m.DangerousGetPinnableReference())
     fixed(byte *sigretPtr = &sigret.DangerousGetPinnableReference())
     {
         return(RsaSign(type, mPtr, m_len, sigretPtr, out siglen, rsa));
     }
 }
Esempio n. 2
0
        internal static RSAParameters ExportRsaParameters(SafeRsaHandle key, bool includePrivateParameters)
        {
            Debug.Assert(
                key != null && !key.IsInvalid,
                "Callers should check the key is invalid and throw an exception with a message");

            if (key == null || key.IsInvalid)
            {
                throw new CryptographicException();
            }

            SafeBignumHandle n, e, d, p, dmp1, q, dmq1, iqmp;

            if (!GetRsaParameters(key,
                                  out n,
                                  out e,
                                  out d,
                                  out p,
                                  out dmp1,
                                  out q,
                                  out dmq1,
                                  out iqmp))
            {
                n.Dispose();
                e.Dispose();
                d.Dispose();
                p.Dispose();
                dmp1.Dispose();
                q.Dispose();
                dmq1.Dispose();
                iqmp.Dispose();
                throw new CryptographicException();
            }

            using (n)
                using (e)
                    using (d)
                        using (p)
                            using (dmp1)
                                using (q)
                                    using (dmq1)
                                        using (iqmp)
                                        {
                                            int modulusSize = RsaSize(key);

                                            // RSACryptoServiceProvider expects P, DP, Q, DQ, and InverseQ to all
                                            // be padded up to half the modulus size.
                                            int halfModulus = modulusSize / 2;

                                            RSAParameters rsaParameters = new RSAParameters
                                            {
                                                Modulus  = Crypto.ExtractBignum(n, modulusSize) !,
                                                Exponent = Crypto.ExtractBignum(e, 0) !,
                                            };

                                            if (includePrivateParameters)
                                            {
                                                rsaParameters.D        = Crypto.ExtractBignum(d, modulusSize);
                                                rsaParameters.P        = Crypto.ExtractBignum(p, halfModulus);
                                                rsaParameters.DP       = Crypto.ExtractBignum(dmp1, halfModulus);
                                                rsaParameters.Q        = Crypto.ExtractBignum(q, halfModulus);
                                                rsaParameters.DQ       = Crypto.ExtractBignum(dmq1, halfModulus);
                                                rsaParameters.InverseQ = Crypto.ExtractBignum(iqmp, halfModulus);
                                            }

                                            return(rsaParameters);
                                        }
        }
Esempio n. 3
0
 internal static int RsaSignPrimitive(
     ReadOnlySpan <byte> from,
     Span <byte> to,
     SafeRsaHandle rsa) =>
 RsaSignPrimitive(from.Length, ref MemoryMarshal.GetReference(from), ref MemoryMarshal.GetReference(to), rsa);
Esempio n. 4
0
 private static partial int RsaPublicEncrypt(
     int flen,
     ref byte from,
     ref byte to,
     SafeRsaHandle rsa,
     RsaPadding padding);
Esempio n. 5
0
 internal static partial int RsaSize(SafeRsaHandle rsa);
Esempio n. 6
0
 internal static extern int RSA_size(SafeRsaHandle rsa);
Esempio n. 7
0
 internal static extern bool RSA_sign(int type, byte[] m, int m_len, byte[] sigret, out int siglen, SafeRsaHandle rsa);
Esempio n. 8
0
 internal static bool RsaVerify(int type, ReadOnlySpan <byte> m, int m_len, ReadOnlySpan <byte> sigbuf, int siglen, SafeRsaHandle rsa) =>
 RsaVerify(type, ref MemoryMarshal.GetReference(m), m_len, ref MemoryMarshal.GetReference(sigbuf), siglen, rsa);
Esempio n. 9
0
 private extern static int RsaPublicEncrypt(
     int flen,
     ref byte from,
     ref byte to,
     SafeRsaHandle rsa,
     RsaPadding padding);
Esempio n. 10
0
 internal static bool RsaVerify(int type, ReadOnlySpan <byte> m, int m_len, ReadOnlySpan <byte> sigbuf, int siglen, SafeRsaHandle rsa) =>
 RsaVerify(type, ref m.DangerousGetPinnableReference(), m_len, ref sigbuf.DangerousGetPinnableReference(), siglen, rsa);
Esempio n. 11
0
 internal static extern bool EVP_PKEY_set1_RSA(SafeEvpPKeyHandle pkey, SafeRsaHandle rsa);
Esempio n. 12
0
 internal static bool RsaSign(int type, ReadOnlySpan <byte> m, int m_len, Span <byte> sigret, out int siglen, SafeRsaHandle rsa) =>
 RsaSign(type, ref m.DangerousGetPinnableReference(), m_len, ref sigret.DangerousGetPinnableReference(), out siglen, rsa);
Esempio n. 13
0
 internal static unsafe bool RsaVerify(int type, ReadOnlySpan <byte> m, int m_len, ReadOnlySpan <byte> sigbuf, int siglen, SafeRsaHandle rsa)
 {
     fixed(byte *mPtr = &m.DangerousGetPinnableReference())
     fixed(byte *sigbufPtr = &sigbuf.DangerousGetPinnableReference())
     {
         return(RsaVerify(type, mPtr, m_len, sigbufPtr, siglen, rsa));
     }
 }
Esempio n. 14
0
 private static extern unsafe bool RsaSign(int type, byte *m, int m_len, byte *sigret, out int siglen, SafeRsaHandle rsa);
Esempio n. 15
0
 internal static extern bool EvpPkeySetRsa(SafeEvpPKeyHandle pkey, SafeRsaHandle rsa);
Esempio n. 16
0
        internal static bool RsaVerify(int type, ReadOnlySpan <byte> m, ReadOnlySpan <byte> sigbuf, SafeRsaHandle rsa)
        {
            bool ret = RsaVerify(
                type,
                ref MemoryMarshal.GetReference(m),
                m.Length,
                ref MemoryMarshal.GetReference(sigbuf),
                sigbuf.Length,
                rsa);

            if (!ret)
            {
                ErrClearError();
            }

            return(ret);
        }
Esempio n. 17
0
 internal extern static int RSA_private_decrypt(int flen, byte[] from, byte[] to, SafeRsaHandle rsa, OpenSslRsaPadding padding);
Esempio n. 18
0
 private static extern bool RsaVerify(int type, ref byte m, int m_len, ref byte sigbuf, int siglen, SafeRsaHandle rsa);
Esempio n. 19
0
 internal static extern int RSA_generate_key_ex(SafeRsaHandle rsa, int bits, SafeBignumHandle e, IntPtr zero);
Esempio n. 20
0
 internal static extern int RsaGenerateKeyEx(SafeRsaHandle rsa, int bits, SafeBignumHandle e);
Esempio n. 21
0
 internal static extern bool RSA_verify(int type, byte[] m, int m_len, byte[] sigbuf, int siglen, SafeRsaHandle rsa);
Esempio n. 22
0
 internal static bool RsaSign(int type, ReadOnlySpan <byte> m, int m_len, Span <byte> sigret, out int siglen, SafeRsaHandle rsa) =>
 RsaSign(type, ref MemoryMarshal.GetReference(m), m_len, ref MemoryMarshal.GetReference(sigret), out siglen, rsa);
Esempio n. 23
0
 private static partial int RsaVerificationPrimitive(
     int flen,
     ref byte from,
     ref byte to,
     SafeRsaHandle rsa);
Esempio n. 24
0
 private static extern bool RsaSign(int type, ref byte m, int m_len, ref byte sigret, out int siglen, SafeRsaHandle rsa);
Esempio n. 25
0
 internal static partial int RsaGenerateKeyEx(SafeRsaHandle rsa, int bits);
Esempio n. 26
0
 internal static extern int RsaSize(SafeRsaHandle rsa);
Esempio n. 27
0
 private static extern int RsaPrivateDecrypt(
     int flen,
     ref byte from,
     ref byte to,
     SafeRsaHandle rsa,
     RsaPadding padding);
Esempio n. 28
0
 internal static extern int RsaGenerateKeyEx(SafeRsaHandle rsa, int bits);
Esempio n. 29
0
 private static extern int RsaSignPrimitive(
     int flen,
     ref byte from,
     ref byte to,
     SafeRsaHandle rsa);
Esempio n. 30
0
 private extern static unsafe int RsaPrivateDecrypt(
     int flen,
     byte *from,
     byte *to,
     SafeRsaHandle rsa,
     RsaPadding padding);