Skip to content

Commit

Permalink
refactor(router): add #[cfg(not(feature = "kms"))] feature flag to …
Browse files Browse the repository at this point in the history
…test the simplified apple pay flow locally (#2200)
  • Loading branch information
ShankarSinghC authored Oct 3, 2023
1 parent 3680541 commit e5ad9c5
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 13 deletions.
1 change: 0 additions & 1 deletion crates/router/src/consts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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";
2 changes: 0 additions & 2 deletions crates/router/src/core/payments.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down Expand Up @@ -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
Expand Down
23 changes: 13 additions & 10 deletions crates/router/src/core/payments/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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},
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit e5ad9c5

Please sign in to comment.