Exemplo n.º 1
0
        private unsafe EVP_PKEY CreateParams()
        {
            const EVP_PKEY_Ctrl_OP op = EVP_PKEY_Ctrl_OP.EVP_PKEY_OP_PARAMGEN | EVP_PKEY_Ctrl_OP.EVP_PKEY_OP_KEYGEN;

            var ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_type.EVP_PKEY_EC, IntPtr.Zero);

            try
            {
                ThrowOnError(EVP_PKEY_paramgen_init(ctx));
                ThrowOnError(EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_type.EVP_PKEY_EC, op, EVP_PKEY_Ctrl_Command.EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, _curveNid, null));
                EVP_PKEY key;
                ThrowOnError(EVP_PKEY_paramgen(ctx, out key));
                return(key);
            }
            finally
            {
                ctx.Free();
            }
        }
Exemplo n.º 2
0
        public static void EVP_PKEY_paramgen_ECCurve(int curveNid, out EVP_PKEY curveParameters)
        {
            const EVP_PKEY_Ctrl_OP      op  = EVP_PKEY_Ctrl_OP.EVP_PKEY_OP_PARAMGEN | EVP_PKEY_Ctrl_OP.EVP_PKEY_OP_KEYGEN;
            const EVP_PKEY_Ctrl_Command cmd = EVP_PKEY_Ctrl_Command.EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID;

            var ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_type.EVP_PKEY_EC, IntPtr.Zero);

            try
            {
                var result = EVP_PKEY_paramgen_init(ctx);
                ThrowOnErrorReturnCode(result);
                result = EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_type.EVP_PKEY_EC, op, cmd, curveNid, IntPtr.Zero);
                ThrowOnErrorReturnCode(result);
                result = EVP_PKEY_paramgen(ctx, out curveParameters);
            }
            finally
            {
                ctx.Free();
            }
        }
Exemplo n.º 3
0
 private static extern int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX ctx, EVP_PKEY_type keyType, EVP_PKEY_Ctrl_OP optype, EVP_PKEY_Ctrl_Command cmd, int p1, IntPtr p2);
Exemplo n.º 4
0
 internal static extern unsafe int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX ctx, EVP_PKEY_type keyType, EVP_PKEY_Ctrl_OP optype, EVP_PKEY_Ctrl_Command cmd, int p1, void *p2);