コード例 #1
0
        public NSData GetPublicKey()
        {
            if (handle == IntPtr.Zero)
            {
                throw new ObjectDisposedException("SecCertificate");
            }

            IntPtr result;

            using (var oids = NSArray.FromIntPtrs(new IntPtr[] { SecCertificateOIDs.SubjectPublicKey })) {
                result = SecCertificateCopyValues(handle, oids.Handle, IntPtr.Zero);
                if (result == IntPtr.Zero)
                {
                    throw new ArgumentException("Not a valid certificate");
                }
            }

            using (var dict = new NSDictionary(result, true)) {
                var ptr = dict.LowlevelObjectForKey(SecCertificateOIDs.SubjectPublicKey);
                if (ptr == IntPtr.Zero)
                {
                    return(null);
                }

                var publicKeyDict = new NSDictionary(ptr, false);
                var dataPtr       = publicKeyDict.LowlevelObjectForKey(SecPropertyKey.Value);
                if (dataPtr == IntPtr.Zero)
                {
                    return(null);
                }

                return(new NSData(dataPtr));
            }
        }
コード例 #2
0
        internal unsafe static void WithArray(Guid [] uuids, string argName, Action <NSArray> action)
        {
            if (uuids == null)
            {
                throw new ArgumentNullException(argName);
            }
            var ptrs = new IntPtr [uuids.Length];

            for (int i = 0; i < uuids.Length; i++)
            {
                var ba = uuids [i].ToByteArray();
                ptrs [i] = CFUUID.CFUUIDCreateWithBytes(IntPtr.Zero, ba [0], ba [1], ba [2], ba [3], ba [4],
                                                        ba [5], ba [6], ba [7], ba [8], ba [9], ba [10], ba [11], ba [12], ba [13], ba [14], ba [15]);
            }
            using (var arr = NSArray.FromIntPtrs(ptrs))
                action(arr);

            foreach (var h in ptrs)
            {
                if (h == IntPtr.Zero)
                {
                    continue;
                }
                CFObject.CFRelease(h);
            }
        }
コード例 #3
0
 // +(instancetype _Nonnull)appearanceWhenContainedInInstancesOfClasses:(NSArray<Class<UIAppearanceContainer>> * _Nonnull)containerTypes
 public static IntPtr GetAppearance(IntPtr class_ptr, params Type [] whenFoundIn)
 {
     using (var array = NSArray.FromIntPtrs(TypesToPointers(whenFoundIn))) {
         return(Messaging.IntPtr_objc_msgSend_IntPtr(class_ptr,
                                                     Selector.GetHandle(UIAppearance.selAppearanceWhenContainedInInstancesOfClasses), array.Handle));
     }
 }
コード例 #4
0
        public void PasteImage(NSObject sender)
        {
            // Initialize the pasteboard
            NSPasteboard pasteboard = NSPasteboard.GeneralPasteboard;
            NSArray      classArray = NSArray.FromObjects(new Class("NSImage"));

            // TODO: Sending messages directly to the base Objective-C API because of this defect:
            // https://bugzilla.xamarin.com/show_bug.cgi?id=31760
            // Check to see if an image is on the pasteboard
            bool ok = bool_objc_msgSend_IntPtr_IntPtr(pasteboard.Handle, Selector.GetHandle("canReadObjectForClasses:options:"), classArray.Handle, IntPtr.Zero);

            if (ok)
            {
                // Read the image off of the pasteboard
                NSObject [] objectsToPaste = NSArray.ArrayFromHandle <Foundation.NSObject>(IntPtr_objc_msgSend_IntPtr_IntPtr(pasteboard.Handle, Selector.GetHandle("readObjectsForClasses:options:"), classArray.Handle, IntPtr.Zero));
                NSImage     image          = (NSImage)objectsToPaste[0];

                // Display the new image
                ImageView.Image = image;
            }


            var classArrayPtrs = new [] { Class.GetHandle(typeof(ImageInfo)) };

            classArray = NSArray.FromIntPtrs(classArrayPtrs);

            ok = bool_objc_msgSend_IntPtr_IntPtr(pasteboard.Handle, Selector.GetHandle("canReadObjectForClasses:options:"), classArray.Handle, IntPtr.Zero);
            if (ok)
            {
                // Read the image off of the pasteboard
                NSObject [] objectsToPaste = NSArray.ArrayFromHandle <Foundation.NSObject>(IntPtr_objc_msgSend_IntPtr_IntPtr(pasteboard.Handle, Selector.GetHandle("readObjectsForClasses:options:"), classArray.Handle, IntPtr.Zero));
                Info = (ImageInfo)objectsToPaste[0];
            }
        }
コード例 #5
0
        // new in iOS9 but the only option for tvOS
        public static IntPtr GetAppearance(IntPtr class_ptr, UITraitCollection traits, params Type [] whenFoundIn)
        {
            if (traits == null)
            {
                throw new ArgumentNullException("traits");
            }

            using (var array = NSArray.FromIntPtrs(TypesToPointers(whenFoundIn))) {
                return(Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr(class_ptr,
                                                                   Selector.GetHandle(UIAppearance.selAppearanceForTraitCollectionWhenContainedInInstancesOfClasses),
                                                                   traits.Handle, array.Handle));
            }
        }
コード例 #6
0
ファイル: CIImage.cs プロジェクト: cwensley/xamarin-macios
        public static CIImage FromCGImage(CGImage image, CGColorSpace colorSpace)
        {
            if (colorSpace == null)
            {
                ObjCRuntime.ThrowHelper.ThrowArgumentNullException(nameof(colorSpace));
            }

            using (var arr = NSArray.FromIntPtrs(new [] { colorSpace.Handle })){
                using (var keys = NSArray.FromIntPtrs(new [] { CIImageInitializationOptionsKeys.ColorSpaceKey.Handle })){
                    using (var dict = NSDictionary.FromObjectsAndKeysInternal(arr, keys)){
                        return(FromCGImage(image, dict));
                    }
                }
            }
        }
コード例 #7
0
ファイル: CIImage.cs プロジェクト: zippo227/xamarin-macios
        public static CIImage FromCGImage(CGImage image, CGColorSpace colorSpace)
        {
            if (colorSpace == null)
            {
                throw new ArgumentNullException("colorSpace");
            }

            using (var arr = NSArray.FromIntPtrs(new IntPtr [] { colorSpace.Handle })){
                using (var keys = NSArray.FromIntPtrs(new IntPtr [] { CIImageColorSpaceKey.Handle })){
                    using (var dict = NSDictionary.FromObjectsAndKeysInternal(arr, keys)){
                        return(FromCGImage(image, dict));
                    }
                }
            }
        }
コード例 #8
0
        NSArray Bundle(SecIdentity identity, IEnumerable <SecCertificate> certificates)
        {
            int i    = identity == null ? 0 : 1;
            int n    = certificates == null ? 0 : certificates.Count();
            var ptrs = new IntPtr [n + i];

            if (i == 1)
            {
                ptrs [0] = identity.Handle;
            }
            foreach (var certificate in certificates)
            {
                ptrs [i++] = certificate.Handle;
            }
            return(NSArray.FromIntPtrs(ptrs));
        }
コード例 #9
0
        NSArray Bundle(SecIdentity identity, IEnumerable <SecCertificate> certificates)
        {
            if (identity == null)
            {
                throw new ArgumentNullException("identity");
            }
            int i    = 0;
            int n    = certificates == null ? 0 : certificates.Count();
            var ptrs = new IntPtr [n + 1];

            ptrs [0] = identity.Handle;
            foreach (var certificate in certificates)
            {
                ptrs [++i] = certificate.Handle;
            }
            return(NSArray.FromIntPtrs(ptrs));
        }
コード例 #10
0
        NSArray Bundle(SecIdentity?identity, IEnumerable <SecCertificate>?certificates)
        {
            int i    = identity is null ? 0 : 1;
            int n    = certificates is null ? 0 : certificates.Count();
            var ptrs = new NativeHandle [n + i];

            if (i == 1)
            {
                ptrs [0] = identity !.Handle;
            }
            if (certificates is not null)
            {
                foreach (var certificate in certificates)
                {
                    ptrs [i++] = certificate.Handle;
                }
            }
            return(NSArray.FromIntPtrs(ptrs));
        }
コード例 #11
0
        void SetMatchingMultiple(ICollection <IDictionary <string, ValueType> > matchingDictionaries,
                                 Action <IOHIDManagerRef, CFDictionaryRef> matchingFunction)
        {
            ThrowIfDisposed();
            if (matchingDictionaries == null)
            {
                throw new ArgumentNullException("matchingDictionaries");
            }
            var dictonaryPtrs = new IntPtr [matchingDictionaries.Count];
            var i             = 0;

            foreach (var dict in matchingDictionaries)
            {
                dictonaryPtrs [i++] = NSDictionary.FromObjectsAndKeys(dict.Values.ToArray(),
                                                                      dict.Keys.ToArray()).Handle;
            }
            var array = NSArray.FromIntPtrs(dictonaryPtrs);

            matchingFunction(Handle, array.Handle);
        }
コード例 #12
0
        bool ValidateUserInterfaceItem(NSObject anItem)
        {
            var canReadSel = new Selector("canReadObjectForClasses:options:");
            var pasteSel   = new Selector("paste:");
            var actionSel  = new Selector("action");

            var actionSelPtr = intptr_objc_msgSend(anItem.Handle, actionSel.Handle);
            var objActionSel = new Selector(actionSelPtr);

            if (objActionSel == pasteSel)
            {
                var pasteboard     = NSPasteboard.GeneralPasteboard;
                var classArrayPtrs = new [] { Class.GetHandle(typeof(NSImage)) };
                var classArray     = NSArray.FromIntPtrs(classArrayPtrs);
                var options        = new NSDictionary();
                return(bool_objc_msgSend_intptr_intptr(pasteboard.Handle, canReadSel.Handle, classArray.Handle, options.Handle));
            }
            //base.ValidateUserInterfaceItem (NSObject anItem);

            return(true);
        }
コード例 #13
0
        public void RetrievePeripherals(CBUUID [] peripheralUuids)
        {
            if (peripheralUuids == null)
            {
                throw new ArgumentNullException("peripheralUuids");
            }
            var ptrs = new IntPtr [peripheralUuids.Length];

            for (int i = 0; i < peripheralUuids.Length; i++)
            {
                using (var s = new NSString(peripheralUuids[i].ToString(true)))
                    ptrs [i] = CFUUID.CFUUIDCreateFromString(IntPtr.Zero, s.Handle);
            }
            using (var arr = NSArray.FromIntPtrs(ptrs))
                RetrievePeripherals(arr);

            foreach (var p in ptrs)
            {
                CFObject.CFRelease(p);
            }
        }