public static void Test()
        {
            var idp = new Google_IdP(googlePrincipal);
            var rp  = new FooMerchant_RP(Entity.Of("FooMerchant"));

            var aliceIdP = Channel.GenerateNew(googlePrincipal);
            var aliceRP  = Channel.GenerateNew(rp.SVX_Principal);

            var codeRequestStr  = rp.LoginStart(aliceRP);
            var codeResponseStr = idp.CodeEndpoint(aliceIdP, codeRequestStr);

            rp.LoginCallback(aliceRP, codeResponseStr, idp);  // Includes the validation server-to-server call
        }
        public static void Test()
        {
            var idp = new Google_IdP(googlePrincipal);
            var rp  = new FooMerchant_RP(Entity.Of("FooMerchant"));

            var aliceIdP = Channel.GenerateNew(googlePrincipal);
            var aliceRP  = Channel.GenerateNew(rp.SVX_Principal);

            var idTokenRequestStr  = rp.LoginStart(aliceRP);
            var idTokenResponseStr = idp.TokenEndpoint(aliceIdP, idTokenRequestStr);

            rp.LoginCallback(aliceRP, idTokenResponseStr);
        }