Google Safe Browsing API v2. Does not support MAC authentication. REKEY not supported. Only supports 32bit key sizes. http://code.google.com/intl/cs-CZ/apis/safebrowsing/developers_guide_v2.html
        public void t03()
        {
            string[] addresses = { "1.2.3.4/1/",
                                   "1.2.3.4/" };

            var api = new Google.SafeBrowsing.API("1234");

            var url = Google.SafeBrowsing.CanonicalURL.Get("http://1.2.3.4/1/");

            var res = api.GenerateCombinations(url);

            CollectionAssert.AreEqual(addresses, res.ToArray());
        }
        public void t03()
        {
            string[] addresses = { "1.2.3.4/1/",
                                    "1.2.3.4/" };

            var api = new Google.SafeBrowsing.API("1234");

            var url = Google.SafeBrowsing.CanonicalURL.Get("http://1.2.3.4/1/");

            var res = api.GenerateCombinations(url);

            CollectionAssert.AreEqual(addresses, res.ToArray());
        }
        public void t01()
        {
            string[] addresses = { "a.b.c/1/2.html?param=1",
                                   "a.b.c/1/2.html",
                                   "a.b.c/",
                                   "a.b.c/1/",
                                   "b.c/1/2.html?param=1",
                                   "b.c/1/2.html",
                                   "b.c/",
                                   "b.c/1/" };

            var api = new Google.SafeBrowsing.API("1234");

            var url = Google.SafeBrowsing.CanonicalURL.Get("http://a.b.c/1/2.html?param=1");

            var res = api.GenerateCombinations(url);

            CollectionAssert.AreEqual(addresses, res.ToArray());
        }
        public void t01()
        {
            string[] addresses = { "a.b.c/1/2.html?param=1", 
                             "a.b.c/1/2.html",
                             "a.b.c/",
                             "a.b.c/1/",
                             "b.c/1/2.html?param=1",
                             "b.c/1/2.html",
                             "b.c/",
                             "b.c/1/" };

            var api = new Google.SafeBrowsing.API("1234");

            var url = Google.SafeBrowsing.CanonicalURL.Get("http://a.b.c/1/2.html?param=1");

            var res = api.GenerateCombinations(url);

            CollectionAssert.AreEqual(addresses, res.ToArray());
        }
        public void t02()
        {
            string[] addresses = { "a.b.c.d.e.f.g/1.html",
                                   "a.b.c.d.e.f.g/",
                                   "c.d.e.f.g/1.html",
                                   "c.d.e.f.g/",
                                   "d.e.f.g/1.html",
                                   "d.e.f.g/",
                                   "e.f.g/1.html",
                                   "e.f.g/",
                                   "f.g/1.html",
                                   "f.g/" };

            var api = new Google.SafeBrowsing.API("1234");

            var url = Google.SafeBrowsing.CanonicalURL.Get("http://a.b.c.d.e.f.g/1.html");

            var res = api.GenerateCombinations(url);

            CollectionAssert.AreEqual(addresses, res.ToArray());
        }
        public void t02()
        {
            string[] addresses = { "a.b.c.d.e.f.g/1.html",
                                    "a.b.c.d.e.f.g/",
                                    "c.d.e.f.g/1.html",
                                     "c.d.e.f.g/",
                                     "d.e.f.g/1.html",
                                     "d.e.f.g/",
                                     "e.f.g/1.html",
                                     "e.f.g/",
                                     "f.g/1.html",
                                     "f.g/" };

            var api = new Google.SafeBrowsing.API("1234");

            var url = Google.SafeBrowsing.CanonicalURL.Get("http://a.b.c.d.e.f.g/1.html");

            var res = api.GenerateCombinations(url);

            CollectionAssert.AreEqual(addresses, res.ToArray());
        }