rainmaker-components 0.1.0

Component abstractions for rainmaker
Documentation
use quick_protobuf::{MessageWrite, Writer};

use crate::proto::{
    constants::Status,
    session::{sec0::*, session::*},
};

use super::SecurityTrait;

#[derive(Default, Debug)]
pub struct Sec0;

impl SecurityTrait for Sec0 {
    fn security_handler(&self, _ep_name: &str, _data: Vec<u8>) -> Vec<u8> {
        let mut resp_vec = Vec::default();
        let mut writer = Writer::new(&mut resp_vec);

        let resp_payload = Sec0Payload {
            msg: Sec0MsgType::S0_Session_Response,
            payload: mod_Sec0Payload::OneOfpayload::sr(S0SessionResp {
                status: Status::Success,
            }),
        };

        let resp = SessionData {
            sec_ver: SecSchemeVersion::SecScheme0,
            proto: mod_SessionData::OneOfproto::sec0(resp_payload),
        };

        resp.write_message(&mut writer).unwrap();
        resp_vec
    }

    fn encrypt(&self, _indata: &mut [u8]) {}

    fn decrypt(&self, _indata: &mut [u8]) {}
}