Example #1
0
        public static void Run()
        {
            var generateKeyResult = GenerateKey.Run();
            var keyId             = generateKeyResult.KeyId;
            var derFormat         = generateKeyResult.Der.Format;
            var derAlgo           = generateKeyResult.Der.Algorithm;
            var derPublicKey      = generateKeyResult.Der.PublicKey;

            var requestObj = new TokenizeRequest
            {
                KeyId    = keyId,
                CardInfo = new Flexv1tokensCardInfo()
                {
                    CardExpirationYear  = "2031",
                    CardNumber          = "5555555555554444",
                    CardType            = "002",
                    CardExpirationMonth = "03"
                }
            };

            try
            {
                var configDictionary = new Configuration().GetConfiguration();
                var clientConfig     = new CyberSource.Client.Configuration(merchConfigDictObj: configDictionary);
                var apiInstance      = new FlexTokenApi(clientConfig);

                var result = apiInstance.Tokenize(requestObj);
                Console.WriteLine(result);

                var flexPublicKey = new FlexPublicKey(keyId, new FlexServerSDK.Model.DerPublicKey(derFormat, derAlgo, derPublicKey), null);
                var flexToken     = new FlexToken()
                {
                    keyId                = result.KeyId,
                    token                = result.Token,
                    maskedPan            = result.MaskedPan,
                    cardType             = result.CardType,
                    timestamp            = (long)result.Timestamp,
                    signedFields         = result.SignedFields,
                    signature            = result.Signature,
                    discoverableServices = result.DiscoverableServices
                };

                IDictionary <string, string> postParameters = new Dictionary <string, string>();
                postParameters["signedFields"] = flexToken.signedFields;
                postParameters["signature"]    = flexToken.signature;
                postParameters["cardType"]     = flexToken.cardType;
                postParameters["keyId"]        = flexToken.keyId;
                postParameters["maskedPan"]    = flexToken.maskedPan;
                postParameters["token"]        = flexToken.token;
                postParameters["timestamp"]    = Convert.ToString(flexToken.timestamp);

                var tokenVerificationResult = Verify(flexPublicKey, postParameters);
                Console.WriteLine(tokenVerificationResult);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception on calling the API: " + e.Message);
            }
        }
        public bool Verify(FlexPublicKey flexKey, IDictionary <string, string> postParameters)
        {
            var           publicKeyStr = flexKey.der.publicKey;
            RSAParameters publicKey    = DecodePublicKey(Convert.FromBase64String(publicKeyStr)).ExportParameters(false);

            string        signedFields = postParameters["signedFields"];
            StringBuilder sb           = new StringBuilder();

            foreach (string k in signedFields.Split(','))
            {
                sb.Append($",{postParameters[k]}");
            }

            if (sb.Length > 0)
            {
                sb.Remove(0, 1);
            }

            string signedValues = sb.ToString();
            string signature    = postParameters["signature"];

            return(ValidateTokenSignature(publicKey, signedValues, signature));
        }
Example #3
0
        public static void Run(IReadOnlyDictionary <string, string> configDictionary)
        {
            var generateKeyResult = GenerateKey.GenerateKeyResult(configDictionary);
            var keyId             = generateKeyResult.KeyId;
            var derFormat         = generateKeyResult.Der.Format;
            var derAlgo           = generateKeyResult.Der.Algorithm;
            var derPublicKey      = generateKeyResult.Der.PublicKey;

            var requestObj = new TokenizeRequest
            {
                KeyId    = keyId,
                CardInfo = new Paymentsflexv1tokensCardInfo()
                {
                    CardExpirationYear  = "2031",
                    CardNumber          = "5555555555554444",
                    CardType            = "002",
                    CardExpirationMonth = "03"
                }
            };

            var merchantConfig = new MerchantConfig(configDictionary)
            {
                RequestType     = "POST",
                RequestTarget   = "/flex/v1/tokens",
                RequestJsonData = JsonConvert.SerializeObject(requestObj)
            };

            try
            {
                var configurationSwagger = new ApiClient().CallAuthenticationHeader(merchantConfig);
                var apiInstance          = new TokenizationApi(configurationSwagger);
                var result = apiInstance.Tokenize(requestObj);
                Console.WriteLine(result);

                var flexPublicKey = new FlexPublicKey(keyId, new FlexServerSDK.Model.DerPublicKey(derFormat, derAlgo, derPublicKey), null);
                var flexToken     = new FlexToken()
                {
                    keyId                = result.KeyId,
                    token                = result.Token,
                    maskedPan            = result.MaskedPan,
                    cardType             = result.CardType,
                    timestamp            = (long)result.Timestamp,
                    signedFields         = result.SignedFields,
                    signature            = result.Signature,
                    discoverableServices = result.DiscoverableServices
                };

                //var tokenVerificationResult = Verify(
                //    configDictionary["merchantID"],
                //    configDictionary["merchantKeyId"],
                //    configDictionary["merchantsecretKey"],
                //    flexPublicKey,
                //    flexToken);
                // Console.WriteLine(tokenVerificationResult);

                IDictionary <string, string> postParameters = new Dictionary <string, string>();
                postParameters["signedFields"] = flexToken.signedFields;
                postParameters["signature"]    = flexToken.signature;
                postParameters["cardType"]     = flexToken.cardType;
                postParameters["keyId"]        = flexToken.keyId;
                postParameters["maskedPan"]    = flexToken.maskedPan;
                postParameters["token"]        = flexToken.token;
                postParameters["timestamp"]    = Convert.ToString(flexToken.timestamp);

                var tokenVerificationResult = Verify(flexPublicKey, postParameters);
                Console.WriteLine(tokenVerificationResult);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception on calling the API: " + e.Message);
            }
        }
Example #4
0
        public static FlexV1TokensPost200Response Run()
        {
            var    generateKeyResult = GenerateKeyLegacyTokenFormat.Run();
            string keyId             = generateKeyResult.KeyId;
            var    derFormat         = generateKeyResult.Der.Format;
            var    derAlgo           = generateKeyResult.Der.Algorithm;
            var    derPublicKey      = generateKeyResult.Der.PublicKey;

            string cardInfoCardNumber          = "4111111111111111";
            string cardInfoCardExpirationMonth = "12";
            string cardInfoCardExpirationYear  = "2031";
            string cardInfoCardType            = "001";
            Flexv1tokensCardInfo cardInfo      = new Flexv1tokensCardInfo(
                CardNumber: cardInfoCardNumber,
                CardExpirationMonth: cardInfoCardExpirationMonth,
                CardExpirationYear: cardInfoCardExpirationYear,
                CardType: cardInfoCardType
                );

            var requestObj = new TokenizeRequest(
                KeyId: keyId,
                CardInfo: cardInfo
                );

            try
            {
                var configDictionary = new Configuration().GetConfiguration();
                var clientConfig     = new CyberSource.Client.Configuration(merchConfigDictObj: configDictionary);

                var apiInstance = new TokenizationApi(clientConfig);
                FlexV1TokensPost200Response result = apiInstance.Tokenize(requestObj);
                Console.WriteLine(result);

                TokenVerificationUtility tokenVerifier = new TokenVerificationUtility();

                var flexPublicKey = new FlexPublicKey(keyId, new FlexDerPublicKey(derFormat, derAlgo, derPublicKey), null);
                var flexToken     = new FlexToken()
                {
                    keyId                = result.KeyId,
                    token                = result.Token,
                    maskedPan            = result.MaskedPan,
                    cardType             = result.CardType,
                    timestamp            = (long)result.Timestamp,
                    signedFields         = result.SignedFields,
                    signature            = result.Signature,
                    discoverableServices = result.DiscoverableServices
                };

                IDictionary <string, string> postParameters = new Dictionary <string, string>();
                postParameters["signedFields"] = flexToken.signedFields;
                postParameters["signature"]    = flexToken.signature;
                postParameters["cardType"]     = flexToken.cardType;
                postParameters["keyId"]        = flexToken.keyId;
                postParameters["maskedPan"]    = flexToken.maskedPan;
                postParameters["token"]        = flexToken.token;
                postParameters["timestamp"]    = Convert.ToString(flexToken.timestamp);

                var tokenVerificationResult = tokenVerifier.Verify(flexPublicKey, postParameters);
                Console.WriteLine("TOKEN VERIFICATION : " + tokenVerificationResult);

                return(result);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception on calling the API : " + e.Message);
                return(null);
            }
        }