示例#1
0
        public void Constructors()
        {
            using (var dummy = CreateDummy()) {
                var rc = CFGetRetainCount(dummy.Handle);
                using (var clone = new CFPropertyList(dummy.Handle)) {
                    Assert.AreEqual(clone.Handle, dummy.Handle, "Handle 1");
                    Assert.AreEqual(rc + 1, CFGetRetainCount(clone.Handle), "RC 1");
                }
            }

            using (var dummy = CreateDummy()) {
                var rc = CFGetRetainCount(dummy.Handle);
                using (var clone = new CFPropertyList(dummy.Handle, false)) {
                    Assert.AreEqual(clone.Handle, dummy.Handle, "Handle 2");
                    Assert.AreEqual(rc + 1, CFGetRetainCount(clone.Handle), "RC 2");
                }
            }

            using (var dummy = CreateDummy()) {
                CFRetain(dummy.Handle);
                var rc = CFGetRetainCount(dummy.Handle);
                using (var clone = new CFPropertyList(dummy.Handle, true)) {
                    Assert.AreEqual(clone.Handle, dummy.Handle, "Handle 3");
                    Assert.AreEqual(rc, CFGetRetainCount(clone.Handle), "RC 3");
                }
            }
        }
示例#2
0
        private IntPtr[] GrabTheData(string Response)
        {
            IntPtr[] ret = new IntPtr[5];
            string   temp;

            temp = Response.Remove(0, Response.IndexOf("<plist version") - 1);
            temp = temp.Remove((temp.IndexOf(@"</Protocol>")), temp.Length - ((temp.IndexOf(@"</Protocol>"))));
            string headers = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">";

            temp = headers + "\r\n" + temp;
            if (File.Exists(Environment.CurrentDirectory + @"\wildcard.ticket") == true)
            {
                File.Delete(Environment.CurrentDirectory + @"\wildcard.ticket");
            }
            System.IO.File.AppendAllText(Environment.CurrentDirectory + @"\wildcard.ticket", temp);
            CFPropertyList plist             = new CFPropertyList(Environment.CurrentDirectory + @"\wildcard.ticket");
            CFDictionary   plist_to_dict     = (IntPtr)plist;
            CFDictionary   iphone_activation = (IntPtr)plist_to_dict.GetValue("iphone-activation");
            CFDictionary   dict = (IntPtr)iphone_activation.GetValue("activation-record");

            ret[0] = dict.GetValue("AccountTokenCertificate");
            ret[1] = dict.GetValue("AccountToken");
            ret[2] = dict.GetValue("FairPlayKeyData");
            ret[3] = dict.GetValue("DeviceCertificate");
            ret[4] = dict.GetValue("AccountTokenSignature");
            if (File.Exists(Environment.CurrentDirectory + @"\wildcard.ticket") == true)
            {
                File.Delete(Environment.CurrentDirectory + @"\wildcard.ticket");
            }
            return(ret);
        }
示例#3
0
 public CGColorSpace(CFPropertyList propertyList)
 {
     if (propertyList == null)
     {
         throw new ArgumentNullException(nameof(propertyList));
     }
     this.handle = CGColorSpaceCreateWithPropertyList(propertyList.Handle);
 }
示例#4
0
 static IntPtr Create(CFPropertyList propertyList)
 {
     if (propertyList is null)
     {
         throw new ArgumentNullException(nameof(propertyList));
     }
     return(CGColorSpaceCreateWithPropertyList(propertyList.GetCheckedHandle()));
 }
示例#5
0
        CFPropertyList CreateDummy(string data = "<dict><key>SomeKey</key><string>SomeStringValue</string></dict>")
        {
            var plist = $@"<?xml version=""1.0"" encoding=""UTF-8""?>
<!DOCTYPE plist PUBLIC ""-//Apple Computer//DTD PLIST 1.0//EN"" ""http://www.apple.com/DTDs/PropertyList-1.0.dtd"">
<plist version=""1.0"">
	{data}
</plist>";
            var dummy = CFPropertyList.FromData(NSData.FromString(plist));

            Assert.IsNull(dummy.Error, "Dummy Error");
            return(dummy.PropertyList);
        }
示例#6
0
        private String DecodePListFile(String inFile)
        {
            String plist = null;

            try {
                plist = CFPropertyList.PropertyListToXML(ReadFile(inFile));
            }
            catch (Exception err) {
                plist = ReadTextFile(inFile, 1024);
            }
            return(plist);
        }
示例#7
0
        private string Albert_Apple_Stuff(string cachefile)
        {
            string Quotation = ((char)34).ToString();

            string request = "--DeviceActivation\r\nContent-Disposition: form-data; name=" + Quotation + "activation-info" + Quotation + "\r\n\r\n";

            if (cachefile == "" || cachefile == null)
            {
                IntPtr activationinfo = Interface.CopyDictionary("ActivationInfo");
                try
                {
                    request += GrabTheDictionary(new CFPropertyList(activationinfo).ToString()) + "\r\n--DeviceActivation--";
                }
                catch (Exception ex)
                {
                    lblStatus.Text = "Could not get ActivationInfo from iDevice";
                    return("");
                }
            }
            else
            {
                try
                {
                    CFPropertyList cache = cachefile;
                    request += GrabTheDictionary(cache.ToString()) + "\r\n--DeviceActivation--";
                }
                catch (Exception ex)
                {
                    lblStatus.Text = "Could not read cache file";
                    return("");
                }
            }

            string headers = "POST /WebObjects/ALUnbrick.woa/wa/deviceActivation HTTP/1.1\r\n";

            headers += "Accept-Encoding: gzip\r\n";
            headers += "Accept-Language: en-us, en;q=0.50\r\n";
            headers += "Content-Type: multipart/form-data; boundary=DeviceActivation\r\n";
            headers += "Content-Length: " + (request).Length.ToString() + "\r\n";
            headers += "Host: albert.apple.com\r\n";
            headers += "Cache-Control: no-cache\r\n";
            string ret = headers + "\r\n" + request;

            return(ret);
        }
示例#8
0
        public void CreateFromData()
        {
            var plist = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<!DOCTYPE plist PUBLIC ""-//Apple Computer//DTD PLIST 1.0//EN"" ""http://www.apple.com/DTDs/PropertyList-1.0.dtd"">
<plist version=""1.0"">
	<dict>
		<key>SomeKey</key>
		<string>SomeStringValue</string>
	</dict>
</plist>";
            var rv    = CFPropertyList.FromData(NSData.FromString(plist));

            Assert.IsNull(rv.Error, "Error 1");
            Assert.IsNotNull(rv.PropertyList, "PropertyList 1");
            Assert.AreEqual(CFPropertyListFormat.XmlFormat1, rv.Format, "Format 1");
            Assert.IsTrue(rv.PropertyList.IsValid(CFPropertyListFormat.BinaryFormat1), "IsValid Binary 1");
            Assert.IsTrue(rv.PropertyList.IsValid(CFPropertyListFormat.OpenStep), "IsValid OpenStep 1");
            Assert.IsTrue(rv.PropertyList.IsValid(CFPropertyListFormat.XmlFormat1), "IsValid Xml 1");
        }
示例#9
0
        private String DecodePListData(Byte[] inData)
        {
            String  plist        = null;
            Boolean decodeFailed = false;

            try {
                plist = CFPropertyList.PropertyListToXML(inData);
                if (plist == null)
                {
                    decodeFailed = true;
                }
            }
            catch (Exception err) {
                decodeFailed = true;
                Console.WriteLine(err.Message);
            }
            if (decodeFailed)
            {
                plist = System.Text.Encoding.ASCII.GetString(inData);
            }
            return(plist);
        }
示例#10
0
        protected INativeObject GetINativeInstance(Type t)
        {
            var ctor = t.GetConstructor(Type.EmptyTypes);

            if ((ctor != null) && !ctor.IsAbstract)
            {
                return(ctor.Invoke(null) as INativeObject);
            }

            if (!NativeObjectInterfaceType.IsAssignableFrom(t))
            {
                throw new ArgumentException("t");
            }
            switch (t.Name)
            {
            case "CFAllocator":
                return(CFAllocator.SystemDefault);

            case "CFBundle":
                var bundles = CFBundle.GetAll();
                if (bundles.Length > 0)
                {
                    return(bundles [0]);
                }
                else
                {
                    throw new InvalidOperationException(string.Format("Could not create the new instance for type {0}.", t.Name));
                }

            case "CFNotificationCenter":
                return(CFNotificationCenter.Darwin);

            case "CFReadStream":
            case "CFStream":
                CFReadStream  readStream;
                CFWriteStream writeStream;
                CFStream.CreatePairWithSocketToHost("www.google.com", 80, out readStream, out writeStream);
                return(readStream);

            case "CFWriteStream":
                CFStream.CreatePairWithSocketToHost("www.google.com", 80, out readStream, out writeStream);
                return(writeStream);

            case "CFUrl":
                return(CFUrl.FromFile("/etc"));

            case "CFPropertyList":
                return(CFPropertyList.FromData(NSData.FromString("<string>data</string>")).PropertyList);

            case "DispatchData":
                return(DispatchData.FromByteBuffer(new byte [] { 1, 2, 3, 4 }));

            case "AudioFile":
                var path = Path.GetFullPath("1.caf");
                var af   = AudioFile.Open(CFUrl.FromFile(path), AudioFilePermission.Read, AudioFileType.CAF);
                return(af);

            case "CFHTTPMessage":
                return(CFHTTPMessage.CreateEmpty(false));

            case "CFMutableString":
                return(new CFMutableString("xamarin"));

            case "CGBitmapContext":
                byte[] data = new byte [400];
                using (CGColorSpace space = CGColorSpace.CreateDeviceRGB()) {
                    return(new CGBitmapContext(data, 10, 10, 8, 40, space, CGBitmapFlags.PremultipliedLast));
                }

            case "CGContextPDF":
                var filename = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments) + "/t.pdf";
                using (var url = new NSUrl(filename))
                    return(new CGContextPDF(url));

            case "CGColorConversionInfo":
                var cci = new GColorConversionInfoTriple()
                {
                    Space     = CGColorSpace.CreateGenericRgb(),
                    Intent    = CGColorRenderingIntent.Default,
                    Transform = CGColorConversionInfoTransformType.ApplySpace
                };
                return(new CGColorConversionInfo((NSDictionary)null, cci, cci, cci));

            case "CGDataConsumer":
                using (NSMutableData destData = new NSMutableData()) {
                    return(new CGDataConsumer(destData));
                }

            case "CGDataProvider":
                filename = "xamarin1.png";
                return(new CGDataProvider(filename));

            case "CGFont":
                return(CGFont.CreateWithFontName("Courier New"));

            case "CGPattern":
                return(new CGPattern(
                           new RectangleF(0, 0, 16, 16),
                           CGAffineTransform.MakeIdentity(),
                           16, 16,
                           CGPatternTiling.NoDistortion,
                           true,
                           (cgc) => {}));

            case "CMBufferQueue":
                return(CMBufferQueue.CreateUnsorted(2));

            case "CTFont":
                CTFontDescriptorAttributes fda = new CTFontDescriptorAttributes()
                {
                    FamilyName = "Courier",
                    StyleName  = "Bold",
                    Size       = 16.0f
                };
                using (var fd = new CTFontDescriptor(fda))
                    return(new CTFont(fd, 10));

            case "CTFontCollection":
                return(new CTFontCollection(new CTFontCollectionOptions()));

            case "CTFontDescriptor":
                fda = new CTFontDescriptorAttributes();
                return(new CTFontDescriptor(fda));

            case "CTTextTab":
                return(new CTTextTab(CTTextAlignment.Left, 2));

            case "CTTypesetter":
                return(new CTTypesetter(new NSAttributedString("Hello, world",
                                                               new CTStringAttributes()
                {
                    ForegroundColorFromContext = true,
                    Font = new CTFont("ArialMT", 24)
                })));

            case "CTFrame":
                var framesetter = new CTFramesetter(new NSAttributedString("Hello, world",
                                                                           new CTStringAttributes()
                {
                    ForegroundColorFromContext = true,
                    Font = new CTFont("ArialMT", 24)
                }));
                var bPath = UIBezierPath.FromRect(new RectangleF(0, 0, 3, 3));
                return(framesetter.GetFrame(new NSRange(0, 0), bPath.CGPath, null));

            case "CTFramesetter":
                return(new CTFramesetter(new NSAttributedString("Hello, world",
                                                                new CTStringAttributes()
                {
                    ForegroundColorFromContext = true,
                    Font = new CTFont("ArialMT", 24)
                })));

            case "CTGlyphInfo":
                return(new CTGlyphInfo("copyright", new CTFont("ArialMY", 24), "Foo"));

            case "CTLine":
                return(new CTLine(new NSAttributedString("Hello, world",
                                                         new CTStringAttributes()
                {
                    ForegroundColorFromContext = true,
                    Font = new CTFont("ArialMT", 24)
                })));

            case "CGImageDestination":
                var storage = new NSMutableData();
                return(CGImageDestination.Create(new CGDataConsumer(storage), "public.png", 1));

            case "CGImageMetadataTag":
                using (NSString name = new NSString("tagName"))
                    using (var value = new NSString("value"))
                        return(new CGImageMetadataTag(CGImageMetadataTagNamespaces.Exif, CGImageMetadataTagPrefixes.Exif, name, CGImageMetadataType.Default, value));

            case "CGImageSource":
                filename = "xamarin1.png";
                return(CGImageSource.FromUrl(NSUrl.FromFilename(filename)));

            case "SecPolicy":
                return(SecPolicy.CreateSslPolicy(false, null));

            case "SecIdentity":
                using (var options = NSDictionary.FromObjectAndKey(new NSString("farscape"), SecImportExport.Passphrase)) {
                    NSDictionary[] array;
                    var            result = SecImportExport.ImportPkcs12(farscape_pfx, options, out array);
                    if (result != SecStatusCode.Success)
                    {
                        throw new InvalidOperationException(string.Format("Could not create the new instance for type {0} due to {1}.", t.Name, result));
                    }
                    return(new SecIdentity(array [0].LowlevelObjectForKey(SecImportExport.Identity.Handle)));
                }

            case "SecTrust":
                X509Certificate x = new X509Certificate(mail_google_com);
                using (var policy = SecPolicy.CreateSslPolicy(true, "mail.google.com"))
                    return(new SecTrust(x, policy));

            case "SslContext":
                return(new SslContext(SslProtocolSide.Client, SslConnectionType.Stream));

            case "UIFontFeature":
                return(new UIFontFeature(CTFontFeatureNumberSpacing.Selector.ProportionalNumbers));

            case "NetworkReachability":
                return(new NetworkReachability(IPAddress.Loopback, null));

            case "VTCompressionSession":
            case "VTSession":
                return(VTCompressionSession.Create(1024, 768, CMVideoCodecType.H264, (sourceFrame, status, flags, buffer) => { }, null, (CVPixelBufferAttributes)null));

            case "VTFrameSilo":
                return(VTFrameSilo.Create());

            case "VTMultiPassStorage":
                return(VTMultiPassStorage.Create());

            case "CFString":
                return(new CFString("test"));

            case "DispatchBlock":
                return(new DispatchBlock(() => { }));

            case "DispatchQueue":
                return(new DispatchQueue("com.example.subsystem.taskXYZ"));

            case "DispatchGroup":
                return(DispatchGroup.Create());

            case "CGColorSpace":
                return(CGColorSpace.CreateDeviceCmyk());

            case "CGGradient":
                CGColor[] cArray = { UIColor.Black.CGColor, UIColor.Clear.CGColor, UIColor.Blue.CGColor };
                return(new CGGradient(null, cArray));

            case "CGImage":
                filename = "xamarin1.png";
                using (var dp = new CGDataProvider(filename))
                    return(CGImage.FromPNG(dp, null, false, CGColorRenderingIntent.Default));

            case "CGColor":
                return(UIColor.Black.CGColor);

            case "CMClock":
                return(CMClock.HostTimeClock);

            case "CMTimebase":
                return(new CMTimebase(CMClock.HostTimeClock));

            case "CVPixelBufferPool":
                return(new CVPixelBufferPool(
                           new CVPixelBufferPoolSettings(),
                           new CVPixelBufferAttributes(CVPixelFormatType.CV24RGB, 100, 50)
                           ));

            case "SecCertificate":
                using (var cdata = NSData.FromArray(mail_google_com))
                    return(new SecCertificate(cdata));

            case "SecCertificate2":
                using (var cdata = NSData.FromArray(mail_google_com))
                    return(new SecCertificate2(new SecCertificate(cdata)));

            case "SecTrust2":
                X509Certificate x2 = new X509Certificate(mail_google_com);
                using (var policy = SecPolicy.CreateSslPolicy(true, "mail.google.com"))
                    return(new SecTrust2(new SecTrust(x2, policy)));

            case "SecIdentity2":
                using (var options = NSDictionary.FromObjectAndKey(new NSString("farscape"), SecImportExport.Passphrase)) {
                    NSDictionary[] array;
                    var            result = SecImportExport.ImportPkcs12(farscape_pfx, options, out array);
                    if (result != SecStatusCode.Success)
                    {
                        throw new InvalidOperationException(string.Format("Could not create the new instance for type {0} due to {1}.", t.Name, result));
                    }
                    return(new SecIdentity2(new SecIdentity(array [0].LowlevelObjectForKey(SecImportExport.Identity.Handle))));
                }

            case "SecKey":
                SecKey private_key;
                SecKey public_key;
                using (var record = new SecRecord(SecKind.Key)) {
                    record.KeyType       = SecKeyType.RSA;
                    record.KeySizeInBits = 512;                     // it's not a performance test :)
                    SecKey.GenerateKeyPair(record.ToDictionary(), out public_key, out private_key);
                    return(private_key);
                }

            case "SecAccessControl":
                return(new SecAccessControl(SecAccessible.WhenPasscodeSetThisDeviceOnly));

            default:
                throw new InvalidOperationException(string.Format("Could not create the new instance for type {0}.", t.Name));
            }
        }
示例#11
0
 public CGColorSpace(CFPropertyList propertyList)
     : base(Create(propertyList), true)
 {
 }