refactor(router): add #[cfg(not(feature = "kms"))] feature flag to test the simplified apple pay flow locally (#2200)

This commit is contained in:
Shankar Singh C
2023-10-03 19:14:23 +05:30
committed by GitHub
parent 3680541177
commit e5ad9c5c35
3 changed files with 13 additions and 13 deletions

View File

@ -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";

View File

@ -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

View File

@ -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()