示例#1
0
        /// <inheritdoc />
        void IInternalKmsKeyId.SetCredentials(ContextSafeHandle context, Status status)
        {
            IntPtr regionPointer = (IntPtr)Marshal.StringToHGlobalAnsi(Region);

            try
            {
                IntPtr customerMasterKeyPointer = (IntPtr)Marshal.StringToHGlobalAnsi(CustomerMasterKey);
                try
                {
                    // Let mongocrypt run strlen
                    context.Check(
                        status,
                        Library.mongocrypt_ctx_setopt_masterkey_aws(context, regionPointer, -1, customerMasterKeyPointer, -1));
                }
                finally
                {
                    Marshal.FreeHGlobal(customerMasterKeyPointer);
                }
            }
            finally
            {
                Marshal.FreeHGlobal(regionPointer);
            }

            if (Endpoint != null)
            {
                IntPtr endPointKeyPointer = (IntPtr)Marshal.StringToHGlobalAnsi(Endpoint);
                try
                {
                    // Let mongocrypt run strlen
                    context.Check(
                        status,
                        Library.mongocrypt_ctx_setopt_masterkey_aws_endpoint(context, endPointKeyPointer, -1));
                }
                finally
                {
                    Marshal.FreeHGlobal(endPointKeyPointer);
                }
            }

            ((IInternalKmsKeyId)this).SetAlternateKeyNames(context, status);
        }