mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 01:57:45 +08:00 
			
		
		
		
	refactor(router): add #[cfg(not(feature = "kms"))] feature flag to test the simplified apple pay flow locally (#2200)
				
					
				
			This commit is contained in:
		| @ -41,7 +41,6 @@ pub(crate) const APPLEPAY_VALIDATION_URL: &str = | ||||
| pub(crate) const QR_IMAGE_DATA_SOURCE_STRING: &str = "data:image/png;base64"; | ||||
|  | ||||
| // OID (Object Identifier) for the merchant ID field extension. | ||||
| #[cfg(feature = "kms")] | ||||
| pub(crate) const MERCHANT_ID_FIELD_EXTENSION_ID: &str = "1.2.840.113635.100.6.32"; | ||||
|  | ||||
| pub(crate) const METRICS_HOST_TAG_NAME: &str = "host"; | ||||
|  | ||||
| @ -15,7 +15,6 @@ use data_models::mandates::MandateData; | ||||
| use diesel_models::{ephemeral_key, fraud_check::FraudCheck}; | ||||
| use error_stack::{IntoReport, ResultExt}; | ||||
| use futures::future::join_all; | ||||
| #[cfg(feature = "kms")] | ||||
| use helpers::ApplePayData; | ||||
| use masking::Secret; | ||||
| use router_env::{instrument, tracing}; | ||||
| @ -643,7 +642,6 @@ where | ||||
|  | ||||
|     // Tokenization Action will be DecryptApplePayToken, only when payment method type is Apple Pay | ||||
|     // and the connector supports Apple Pay predecrypt | ||||
|     #[cfg(feature = "kms")] | ||||
|     if matches!( | ||||
|         tokenization_action, | ||||
|         TokenizationAction::DecryptApplePayToken | ||||
|  | ||||
| @ -16,26 +16,23 @@ use error_stack::{report, IntoReport, ResultExt}; | ||||
| use external_services::kms; | ||||
| use josekit::jwe; | ||||
| use masking::{ExposeInterface, PeekInterface}; | ||||
| #[cfg(feature = "kms")] | ||||
| use openssl::derive::Deriver; | ||||
| #[cfg(feature = "kms")] | ||||
| use openssl::pkey::PKey; | ||||
| #[cfg(feature = "kms")] | ||||
| use openssl::symm::{decrypt_aead, Cipher}; | ||||
| use openssl::{ | ||||
|     derive::Deriver, | ||||
|     pkey::PKey, | ||||
|     symm::{decrypt_aead, Cipher}, | ||||
| }; | ||||
| use router_env::{instrument, logger, tracing}; | ||||
| use time::Duration; | ||||
| use uuid::Uuid; | ||||
| #[cfg(feature = "kms")] | ||||
| use x509_parser::parse_x509_certificate; | ||||
|  | ||||
| use super::{ | ||||
|     operations::{BoxedOperation, Operation, PaymentResponse}, | ||||
|     CustomerDetails, PaymentData, | ||||
| }; | ||||
| #[cfg(feature = "kms")] | ||||
| use crate::connector; | ||||
| use crate::{ | ||||
|     configs::settings::{ConnectorRequestReferenceIdConfig, Server, TempLockerDisableConfig}, | ||||
|     connector, | ||||
|     consts::{self, BASE64_ENGINE}, | ||||
|     core::{ | ||||
|         errors::{self, CustomResult, RouterResult, StorageErrorExt}, | ||||
| @ -3213,7 +3210,6 @@ pub struct ApplePayHeader { | ||||
|     transaction_id: masking::Secret<String>, | ||||
| } | ||||
|  | ||||
| #[cfg(feature = "kms")] | ||||
| impl ApplePayData { | ||||
|     pub fn token_json( | ||||
|         wallet_data: api_models::payments::WalletData, | ||||
| @ -3241,12 +3237,16 @@ impl ApplePayData { | ||||
|         &self, | ||||
|         state: &AppState, | ||||
|     ) -> CustomResult<String, errors::ApplePayDecryptionError> { | ||||
|         #[cfg(feature = "kms")] | ||||
|         let cert_data = kms::get_kms_client(&state.conf.kms) | ||||
|             .await | ||||
|             .decrypt(&state.conf.applepay_decrypt_keys.apple_pay_ppc) | ||||
|             .await | ||||
|             .change_context(errors::ApplePayDecryptionError::DecryptionFailed)?; | ||||
|  | ||||
|         #[cfg(not(feature = "kms"))] | ||||
|         let cert_data = &state.conf.applepay_decrypt_keys.apple_pay_ppc; | ||||
|  | ||||
|         let base64_decode_cert_data = BASE64_ENGINE | ||||
|             .decode(cert_data) | ||||
|             .into_report() | ||||
| @ -3297,12 +3297,15 @@ impl ApplePayData { | ||||
|             .change_context(errors::ApplePayDecryptionError::KeyDeserializationFailed) | ||||
|             .attach_printable("Failed to deserialize the public key")?; | ||||
|  | ||||
|         #[cfg(feature = "kms")] | ||||
|         let decrypted_apple_pay_ppc_key = kms::get_kms_client(&state.conf.kms) | ||||
|             .await | ||||
|             .decrypt(&state.conf.applepay_decrypt_keys.apple_pay_ppc_key) | ||||
|             .await | ||||
|             .change_context(errors::ApplePayDecryptionError::DecryptionFailed)?; | ||||
|  | ||||
|         #[cfg(not(feature = "kms"))] | ||||
|         let decrypted_apple_pay_ppc_key = &state.conf.applepay_decrypt_keys.apple_pay_ppc_key; | ||||
|         // Create PKey objects from EcKey | ||||
|         let private_key = PKey::private_key_from_pem(decrypted_apple_pay_ppc_key.as_bytes()) | ||||
|             .into_report() | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shankar Singh C
					Shankar Singh C