1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
use crate::{
EncAsRepPart, EncTgsRepPart, EncryptionKey, HostAddresses, KerberosTime,
LastReq, PaData, PrincipalName, Realm, TicketFlags, UInt32,
};
use red_asn1::{Asn1Object, SequenceOf};
use red_asn1_derive::Sequence;
#[derive(Sequence, Default, Debug, PartialEq, Clone)]
pub struct EncKdcRepPart {
#[seq_field(context_tag = 0)]
pub key: EncryptionKey,
#[seq_field(context_tag = 1)]
pub last_req: LastReq,
#[seq_field(context_tag = 2)]
pub nonce: UInt32,
#[seq_field(context_tag = 3)]
pub key_expiration: Option<KerberosTime>,
#[seq_field(context_tag = 4)]
pub flags: TicketFlags,
#[seq_field(context_tag = 5)]
pub authtime: KerberosTime,
#[seq_field(context_tag = 6)]
pub starttime: Option<KerberosTime>,
#[seq_field(context_tag = 7)]
pub endtime: KerberosTime,
#[seq_field(context_tag = 8)]
pub renew_till: Option<KerberosTime>,
#[seq_field(context_tag = 9)]
pub srealm: Realm,
#[seq_field(context_tag = 10)]
pub sname: PrincipalName,
#[seq_field(context_tag = 11)]
pub caddr: Option<HostAddresses>,
#[seq_field(context_tag = 12)]
pub encrypted_pa_data: Option<SequenceOf<PaData>>,
}
impl From<EncAsRepPart> for EncKdcRepPart {
fn from(rep_part: EncAsRepPart) -> Self {
Self {
key: rep_part.key,
last_req: rep_part.last_req,
nonce: rep_part.nonce,
key_expiration: rep_part.key_expiration,
flags: rep_part.flags,
authtime: rep_part.authtime,
starttime: rep_part.starttime,
endtime: rep_part.endtime,
renew_till: rep_part.renew_till,
srealm: rep_part.srealm,
sname: rep_part.sname,
caddr: rep_part.caddr,
encrypted_pa_data: rep_part.encrypted_pa_data,
}
}
}
impl From<EncTgsRepPart> for EncKdcRepPart {
fn from(rep_part: EncTgsRepPart) -> Self {
Self {
key: rep_part.key,
last_req: rep_part.last_req,
nonce: rep_part.nonce,
key_expiration: rep_part.key_expiration,
flags: rep_part.flags,
authtime: rep_part.authtime,
starttime: rep_part.starttime,
endtime: rep_part.endtime,
renew_till: rep_part.renew_till,
srealm: rep_part.srealm,
sname: rep_part.sname,
caddr: rep_part.caddr,
encrypted_pa_data: rep_part.encrypted_pa_data,
}
}
}