use serde_derive::{Deserialize, Serialize};
use crate::data_types::*;
mod pad_to_12 {
use serde::{Deserializer, Serializer, Deserialize};
pub fn serialize<S>(number: &u64, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let s = format!("{:012}", number);
serializer.serialize_str(&s)
}
pub fn deserialize<'de, D>(deserializer: D) -> Result<u64, D::Error>
where
D: Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
s.parse::<u64>().map_err(serde::de::Error::custom)
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HNHBK_MessageHead {
pub segment_head: DEG_SegmentHead,
#[serde(with = "pad_to_12")]
pub message_size: u64,
pub hbci_version: u16,
pub dialog_id: String,
pub message_no: u16,
pub reference_msg: Option<ReferenceMessage>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HNSHK_SignatureHead {
pub segment_head: DEG_SegmentHead,
pub security_profile: DEG_SecurityProfile,
pub security_function: SecurityFunction,
pub security_reference: String,
pub security_area: SecurityArea,
pub security_role: SecurityRole,
pub security_identification_details: DEG_SecurityIdentificationDetails,
pub security_ref_no: u64,
pub security_date: DEG_SecurityDate,
pub hash_algorithm: DEG_HashAlgorithm,
pub signature_algorithm: DEG_SignatureAlgorithm,
pub key_name: DEG_KeyName,
pub certificate: Option<DEG_Certificate>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HNHBS_MessageEnd {
pub segment_head: DEG_SegmentHead,
pub message_no: u16,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HKIDN_Identification {
pub segment_head: DEG_SegmentHead,
pub institute_identifier: DEG_InstituteIdentifier,
pub customer_id: String,
pub customer_system_id: String,
pub customer_system_status: CustomerSystemStatus,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HKVVB_ProcessingPreparation {
pub segment_head: DEG_SegmentHead,
pub bpd_version: u16,
pub upd_version: u16,
pub dialog_lang: DialogLang,
pub product_identifier: String,
pub product_version: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HKTAN_TwoStepTanSubmission {
pub segment_head: DEG_SegmentHead,
pub tan_process: TanProcess,
pub segment_identifier: Option<String>,
pub account_international_issuer: Option<DEG_AccountInternationalIssuer>,
pub job_hash_value: Option<Vec<u8>>,
pub job_reference: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HKISA_RequestForPubkey {
pub segment_head: DEG_SegmentHead,
pub message_relationship: MessageRelationship,
pub function_type_identifier: FunctionTypeIdentifier,
pub security_profile: DEG_SecurityProfile,
pub key_name: DEG_KeyName,
pub certificate: Option<DEG_Certificate>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HKSYN_Synchronization {
pub segment_head: DEG_SegmentHead,
pub synchronization_mode: SynchronizationMode,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Seg_HNSHA_SignatureEnd {
pub segment_head: DEG_SegmentHead,
pub security_reference: String,
pub validation_result: Option<Vec<u8>>,
pub user_defined_signature: Option<DEG_UserDefinedSignature>,
}