1 package org.metricshub.ipmi.core.sm.events;
2
3 /*-
4 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
5 * IPMI Java Client
6 * ჻჻჻჻჻჻
7 * Copyright 2023 Verax Systems, MetricsHub
8 * ჻჻჻჻჻჻
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU Lesser General Public License as
11 * published by the Free Software Foundation, either version 3 of the
12 * License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Lesser Public License for more details.
18 *
19 * You should have received a copy of the GNU General Lesser Public
20 * License along with this program. If not, see
21 * <http://www.gnu.org/licenses/lgpl-3.0.html>.
22 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
23 */
24
25 import org.metricshub.ipmi.core.coding.commands.session.Rakp1ResponseData;
26 import org.metricshub.ipmi.core.coding.security.CipherSuite;
27 import org.metricshub.ipmi.core.sm.StateMachine;
28 import org.metricshub.ipmi.core.sm.states.Rakp1Complete;
29 import org.metricshub.ipmi.core.sm.states.Rakp3Waiting;
30
31 /**
32 * Performs transition from {@link Rakp1Complete} to {@link Rakp3Waiting}.
33 *
34 * @see StateMachine
35 */
36 public class Rakp2Ack extends StateMachineEvent {
37 private byte statusCode;
38 private CipherSuite cipherSuite;
39 private int sequenceNumber;
40 private int managedSystemSessionId;
41 private Rakp1ResponseData rakp1ResponseData;
42
43 /**
44 * Prepares {@link Rakp2Ack}.
45 *
46 * @param cipherSuite
47 * - {@link CipherSuite} containing authentication,
48 * confidentiality and integrity algorithms for this session.
49 * Only authentication algorithm is used at this point of
50 * creating a session.
51 * @param statusCode
52 * - Status of the previous message.
53 * @param sequenceNumber
54 *
55 * @param managedSystemSessionId
56 * - The Managed System's Session ID for this session. Must be as
57 * returned by the Managed System in the Open Session Response
58 * message.
59 * @param rakp1ResponseData
60 * - RAKP Message 2 received earlier in the authentification
61 * process
62 */
63 public Rakp2Ack(CipherSuite cipherSuite, int sequenceNumber,
64 byte statusCode, int managedSystemSessionId,
65 Rakp1ResponseData rakp1ResponseData) {
66 this.statusCode = statusCode;
67 this.cipherSuite = cipherSuite;
68 this.sequenceNumber = sequenceNumber;
69 this.managedSystemSessionId = managedSystemSessionId;
70 this.rakp1ResponseData = rakp1ResponseData;
71 }
72
73 public byte getStatusCode() {
74 return statusCode;
75 }
76
77 public CipherSuite getCipherSuite() {
78 return cipherSuite;
79 }
80
81 public int getSequenceNumber() {
82 return sequenceNumber;
83 }
84
85 public int getManagedSystemSessionId() {
86 return managedSystemSessionId;
87 }
88
89 public Rakp1ResponseData getRakp1ResponseData() {
90 return rakp1ResponseData;
91 }
92 }