ssh_packet.c File Reference

SSH packet encryption/decryption. More...

#include "ssh/ssh.h"
#include "ssh/ssh_extensions.h"
#include "ssh/ssh_transport.h"
#include "ssh/ssh_auth.h"
#include "ssh/ssh_kex.h"
#include "ssh/ssh_connection.h"
#include "ssh/ssh_request.h"
#include "ssh/ssh_packet.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   SSH_TRACE_LEVEL
 

Functions

error_t sshSendPacket (SshConnection *connection, uint8_t *payload, size_t payloadLen)
 Send SSH packet. More...
 
error_t sshReceivePacket (SshConnection *connection)
 Receive SSH packet. More...
 
error_t sshParsePacket (SshConnection *connection, uint8_t *packet, size_t length)
 Parse SSH packet. More...
 
error_t sshEncryptPacket (SshConnection *connection, uint8_t *packet, size_t *length)
 Encrypt an outgoing SSH packet. More...
 
error_t sshDecryptPacket (SshConnection *connection, uint8_t *packet, size_t *length)
 Decrypt an incoming SSH packet. More...
 
error_t sshParsePacketLength (SshConnection *connection, uint8_t *packet)
 Retrieve the length of an incoming SSH packet. More...
 
error_t sshDecryptPacketLength (SshConnection *connection, uint8_t *packet)
 Decrypt the length field of an incoming SSH packet. More...
 
error_t sshParseMessage (SshConnection *connection, const uint8_t *message, size_t length)
 Parse SSH message. More...
 
void sshAppendMessageAuthCode (SshEncryptionEngine *encryptionEngine, uint8_t *packet, size_t length)
 Compute message authentication code. More...
 
error_t sshVerifyMessageAuthCode (SshEncryptionEngine *decryptionEngine, const uint8_t *packet, size_t length)
 Verify message authentication code. More...
 
void sshIncSequenceNumber (uint8_t *seqNum)
 Increment sequence number. More...
 
void sshIncInvocationCounter (uint8_t *iv)
 Increment invocation counter. More...
 

Detailed Description

SSH packet encryption/decryption.

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2019-2024 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneSSH Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.0

Definition in file ssh_packet.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   SSH_TRACE_LEVEL

Definition at line 32 of file ssh_packet.c.

Function Documentation

◆ sshAppendMessageAuthCode()

void sshAppendMessageAuthCode ( SshEncryptionEngine encryptionEngine,
uint8_t *  packet,
size_t  length 
)

Compute message authentication code.

Parameters
[in]encryptionEnginePointer to the encryption engine
[in]packetPointer to the packet to be authenticated
[in]lengthof the packet, in bytes

Definition at line 1338 of file ssh_packet.c.

◆ sshDecryptPacket()

error_t sshDecryptPacket ( SshConnection connection,
uint8_t *  packet,
size_t *  length 
)

Decrypt an incoming SSH packet.

Parameters
[in]connectionPointer to the SSH connection
[in,out]packetSSH packet to be decrypted
[in,out]lengthActual length of the SSH packet
Returns
Error code

Definition at line 677 of file ssh_packet.c.

◆ sshDecryptPacketLength()

error_t sshDecryptPacketLength ( SshConnection connection,
uint8_t *  packet 
)

Decrypt the length field of an incoming SSH packet.

Parameters
[in]connectionPointer to the SSH connection
[in,out]packetPointer to the first block of data
Returns
Error code

Definition at line 950 of file ssh_packet.c.

◆ sshEncryptPacket()

error_t sshEncryptPacket ( SshConnection connection,
uint8_t *  packet,
size_t *  length 
)

Encrypt an outgoing SSH packet.

Parameters
[in]connectionPointer to the SSH connection
[in,out]packetSSH packet to be encrypted
[in,out]lengthActual length of the SSH packet
Returns
Error code

Definition at line 467 of file ssh_packet.c.

◆ sshIncInvocationCounter()

void sshIncInvocationCounter ( uint8_t *  iv)

Increment invocation counter.

Parameters
[in,out]ivPointer to the 12-octet initialization vector

Definition at line 1433 of file ssh_packet.c.

◆ sshIncSequenceNumber()

void sshIncSequenceNumber ( uint8_t *  seqNum)

Increment sequence number.

Parameters
[in,out]seqNumPointer to the 32-bit sequence number

Definition at line 1412 of file ssh_packet.c.

◆ sshParseMessage()

error_t sshParseMessage ( SshConnection connection,
const uint8_t *  message,
size_t  length 
)

Parse SSH message.

Parameters
[in]connectionPointer to the SSH connection
[in]messagePointer to received message
[in]lengthLength of the message, in bytes
Returns
Error code

Definition at line 1129 of file ssh_packet.c.

◆ sshParsePacket()

error_t sshParsePacket ( SshConnection connection,
uint8_t *  packet,
size_t  length 
)

Parse SSH packet.

Parameters
[in]connectionPointer to the SSH connection
[in]packetPointer to the received SSH packet
[in]lengthLength of the packet, in bytes
Returns
Error code

Definition at line 332 of file ssh_packet.c.

◆ sshParsePacketLength()

error_t sshParsePacketLength ( SshConnection connection,
uint8_t *  packet 
)

Retrieve the length of an incoming SSH packet.

Parameters
[in]connectionPointer to the SSH connection
[in]packetPointer to the received SSH packet
Returns
Error code

Definition at line 913 of file ssh_packet.c.

◆ sshReceivePacket()

error_t sshReceivePacket ( SshConnection connection)

Receive SSH packet.

Parameters
[in]connectionPointer to the SSH connection
Returns
Error code

Definition at line 178 of file ssh_packet.c.

◆ sshSendPacket()

error_t sshSendPacket ( SshConnection connection,
uint8_t *  payload,
size_t  payloadLen 
)

Send SSH packet.

Parameters
[in]connectionPointer to the SSH connection
[in]payloadPointer to the payload data
[in]payloadLenLength of the payload data, in bytes
Returns
Error code

Definition at line 57 of file ssh_packet.c.

◆ sshVerifyMessageAuthCode()

error_t sshVerifyMessageAuthCode ( SshEncryptionEngine decryptionEngine,
const uint8_t *  packet,
size_t  length 
)

Verify message authentication code.

Parameters
[in]decryptionEnginePointer to the decryption engine
[in]packetPointer to the packet to be authenticated
[in]lengthof the packet, in bytes
Returns
Error code

Definition at line 1368 of file ssh_packet.c.