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 * @param managedSystemSessionId
55 * - The Managed System's Session ID for this session. Must be as
56 * returned by the Managed System in the Open Session Response
57 * message.
58 * @param rakp1ResponseData
59 * - RAKP Message 2 received earlier in the authentification
60 * process
61 */
62 public Rakp2Ack(CipherSuite cipherSuite, int sequenceNumber, byte statusCode, int managedSystemSessionId,
63 Rakp1ResponseData rakp1ResponseData) {
64 this.statusCode = statusCode;
65 this.cipherSuite = cipherSuite;
66 this.sequenceNumber = sequenceNumber;
67 this.managedSystemSessionId = managedSystemSessionId;
68 this.rakp1ResponseData = rakp1ResponseData;
69 }
70
71 public byte getStatusCode() {
72 return statusCode;
73 }
74
75 public CipherSuite getCipherSuite() {
76 return cipherSuite;
77 }
78
79 public int getSequenceNumber() {
80 return sequenceNumber;
81 }
82
83 public int getManagedSystemSessionId() {
84 return managedSystemSessionId;
85 }
86
87 public Rakp1ResponseData getRakp1ResponseData() {
88 return rakp1ResponseData;
89 }
90 }