RSA/DSA/ECDSA/EdDSA signature generation and verification. More...
#include "ssh/ssh.h"
#include "ssh/ssh_algorithms.h"
#include "ssh/ssh_signature.h"
#include "ssh/ssh_key_import.h"
#include "ssh/ssh_key_parse.h"
#include "ssh/ssh_cert_import.h"
#include "ssh/ssh_cert_parse.h"
#include "ssh/ssh_misc.h"
#include "ecc/ecdsa.h"
#include "ecc/eddsa.h"
#include "debug.h"
Go to the source code of this file.
Macros | |
#define | TRACE_LEVEL SSH_TRACE_LEVEL |
Functions | |
error_t | sshGenerateSignature (SshConnection *connection, const char_t *publicKeyAlgo, const SshHostKey *hostKey, const SshBinaryString *sessionId, const SshBinaryString *message, uint8_t *p, size_t *written) |
Signature generation. More... | |
error_t | sshGenerateRsaSignature (SshConnection *connection, const char_t *publicKeyAlgo, const SshHostKey *hostKey, const SshBinaryString *sessionId, const SshBinaryString *message, uint8_t *p, size_t *written) |
RSA signature generation. More... | |
error_t | sshGenerateDsaSignature (SshConnection *connection, const char_t *publicKeyAlgo, const SshHostKey *hostKey, const SshBinaryString *sessionId, const SshBinaryString *message, uint8_t *p, size_t *written) |
DSA signature generation. More... | |
error_t | sshGenerateEcdsaSignature (SshConnection *connection, const char_t *publicKeyAlgo, const SshHostKey *hostKey, const SshBinaryString *sessionId, const SshBinaryString *message, uint8_t *p, size_t *written) |
ECDSA signature generation. More... | |
error_t | sshGenerateEd25519Signature (SshConnection *connection, const char_t *publicKeyAlgo, const SshHostKey *hostKey, const SshBinaryString *sessionId, const SshBinaryString *message, uint8_t *p, size_t *written) |
Ed25519 signature generation. More... | |
error_t | sshGenerateEd448Signature (SshConnection *connection, const char_t *publicKeyAlgo, const SshHostKey *hostKey, const SshBinaryString *sessionId, const SshBinaryString *message, uint8_t *p, size_t *written) |
Ed448 signature generation. More... | |
error_t | sshVerifySignature (SshConnection *connection, const SshString *publicKeyAlgo, const SshBinaryString *publicKeyBlob, const SshBinaryString *sessionId, const SshBinaryString *message, const SshBinaryString *signature) |
Signature verification. More... | |
error_t | sshVerifyRsaSignature (const SshString *publicKeyAlgo, const SshBinaryString *publicKeyBlob, const SshBinaryString *sessionId, const SshBinaryString *message, const SshBinaryString *signatureBlob) |
RSA signature verification. More... | |
error_t | sshVerifyDsaSignature (const SshString *publicKeyAlgo, const SshBinaryString *publicKeyBlob, const SshBinaryString *sessionId, const SshBinaryString *message, const SshBinaryString *signatureBlob) |
DSA signature verification. More... | |
error_t | sshVerifyEcdsaSignature (const SshString *publicKeyAlgo, const SshBinaryString *publicKeyBlob, const SshBinaryString *sessionId, const SshBinaryString *message, const SshBinaryString *signatureBlob) |
ECDSA signature verification. More... | |
error_t | sshVerifyEd25519Signature (const SshString *publicKeyAlgo, const SshBinaryString *publicKeyBlob, const SshBinaryString *sessionId, const SshBinaryString *message, const SshBinaryString *signatureBlob) |
Ed25519 signature verification. More... | |
error_t | sshVerifyEd448Signature (const SshString *publicKeyAlgo, const SshBinaryString *publicKeyBlob, const SshBinaryString *sessionId, const SshBinaryString *message, const SshBinaryString *signatureBlob) |
Ed448 signature verification. More... | |
error_t | sshFormatEcdsaSignature (const SshEcdsaSignature *signature, uint8_t *p, size_t *written) |
Format an ECDSA signature. More... | |
error_t | sshParseEcdsaSignature (const uint8_t *data, size_t length, SshEcdsaSignature *signature) |
Parse an ECDSA signature. More... | |
Detailed Description
RSA/DSA/ECDSA/EdDSA signature generation and verification.
License
SPDX-License-Identifier: GPL-2.0-or-later
Copyright (C) 2019-2023 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.
- Version
- 2.2.2
Definition in file ssh_signature.c.
Macro Definition Documentation
◆ TRACE_LEVEL
#define TRACE_LEVEL SSH_TRACE_LEVEL |
Definition at line 32 of file ssh_signature.c.
Function Documentation
◆ sshFormatEcdsaSignature()
error_t sshFormatEcdsaSignature | ( | const SshEcdsaSignature * | signature, |
uint8_t * | p, | ||
size_t * | written | ||
) |
Format an ECDSA signature.
- Parameters
-
[in] signature ECDSA signature [out] p Output stream where to write the ECDSA signature [out] written Total number of bytes that have been written
- Returns
- Error code
Definition at line 1587 of file ssh_signature.c.
◆ sshGenerateDsaSignature()
error_t sshGenerateDsaSignature | ( | SshConnection * | connection, |
const char_t * | publicKeyAlgo, | ||
const SshHostKey * | hostKey, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
uint8_t * | p, | ||
size_t * | written | ||
) |
DSA signature generation.
- Parameters
-
[in] connection Pointer to the SSH connection [in] publicKeyAlgo Public key algorithm [in] hostKey Pointer to the signer's host key [in] sessionId Session identifier (optional parameter) [in] message Pointer to the message to be signed [out] p Output stream where to write the signature [out] written Total number of bytes that have been written
- Returns
- Error code
Definition at line 334 of file ssh_signature.c.
◆ sshGenerateEcdsaSignature()
error_t sshGenerateEcdsaSignature | ( | SshConnection * | connection, |
const char_t * | publicKeyAlgo, | ||
const SshHostKey * | hostKey, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
uint8_t * | p, | ||
size_t * | written | ||
) |
ECDSA signature generation.
- Parameters
-
[in] connection Pointer to the SSH connection [in] publicKeyAlgo Public key algorithm [in] hostKey Pointer to the signer's host key [in] sessionId Session identifier (optional parameter) [in] message Pointer to the message to be signed [out] p Output stream where to write the signature [out] written Total number of bytes that have been written
- Returns
- Error code
Definition at line 444 of file ssh_signature.c.
◆ sshGenerateEd25519Signature()
error_t sshGenerateEd25519Signature | ( | SshConnection * | connection, |
const char_t * | publicKeyAlgo, | ||
const SshHostKey * | hostKey, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
uint8_t * | p, | ||
size_t * | written | ||
) |
Ed25519 signature generation.
- Parameters
-
[in] connection Pointer to the SSH connection [in] publicKeyAlgo Public key algorithm [in] hostKey Pointer to the signer's host key [in] sessionId Session identifier (optional parameter) [in] message Pointer to the message to be signed [out] p Output stream where to write the signature [out] written Total number of bytes that have been written
- Returns
- Error code
Definition at line 609 of file ssh_signature.c.
◆ sshGenerateEd448Signature()
error_t sshGenerateEd448Signature | ( | SshConnection * | connection, |
const char_t * | publicKeyAlgo, | ||
const SshHostKey * | hostKey, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
uint8_t * | p, | ||
size_t * | written | ||
) |
Ed448 signature generation.
- Parameters
-
[in] connection Pointer to the SSH connection [in] publicKeyAlgo Public key algorithm [in] hostKey Pointer to the signer's host key [in] sessionId Session identifier (optional parameter) [in] message Pointer to the message to be signed [out] p Output stream where to write the signature [out] written Total number of bytes that have been written
- Returns
- Error code
Definition at line 708 of file ssh_signature.c.
◆ sshGenerateRsaSignature()
error_t sshGenerateRsaSignature | ( | SshConnection * | connection, |
const char_t * | publicKeyAlgo, | ||
const SshHostKey * | hostKey, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
uint8_t * | p, | ||
size_t * | written | ||
) |
RSA signature generation.
- Parameters
-
[in] connection Pointer to the SSH connection [in] publicKeyAlgo Public key algorithm [in] hostKey Pointer to the signer's host key [in] sessionId Session identifier (optional parameter) [in] message Pointer to the message to be signed [out] p Output stream where to write the signature [out] written Total number of bytes that have been written
- Returns
- Error code
Definition at line 209 of file ssh_signature.c.
◆ sshGenerateSignature()
error_t sshGenerateSignature | ( | SshConnection * | connection, |
const char_t * | publicKeyAlgo, | ||
const SshHostKey * | hostKey, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
uint8_t * | p, | ||
size_t * | written | ||
) |
Signature generation.
- Parameters
-
[in] connection Pointer to the SSH connection [in] publicKeyAlgo Public key algorithm [in] hostKey Pointer to the signer's host key [in] sessionId Session identifier (optional parameter) [in] message Pointer to the message to be signed [out] p Output stream where to write the signature [out] written Total number of bytes that have been written
- Returns
- Error code
Definition at line 63 of file ssh_signature.c.
◆ sshParseEcdsaSignature()
error_t sshParseEcdsaSignature | ( | const uint8_t * | data, |
size_t | length, | ||
SshEcdsaSignature * | signature | ||
) |
Parse an ECDSA signature.
- Parameters
-
[in] data Pointer to the ECDSA signature structure [in] length Length of the ECDSA signature structure, in bytes [out] signature Information resulting from the parsing process
- Returns
- Error code
Definition at line 1633 of file ssh_signature.c.
◆ sshVerifyDsaSignature()
error_t sshVerifyDsaSignature | ( | const SshString * | publicKeyAlgo, |
const SshBinaryString * | publicKeyBlob, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
const SshBinaryString * | signatureBlob | ||
) |
DSA signature verification.
- Parameters
-
[in] publicKeyAlgo Public key algorithm [in] publicKeyBlob Signer's public key [in] sessionId Session identifier (optional parameter) [in] message Message whose signature is to be verified [in] signatureBlob Signature to be verified
- Returns
- Error code
Definition at line 1111 of file ssh_signature.c.
◆ sshVerifyEcdsaSignature()
error_t sshVerifyEcdsaSignature | ( | const SshString * | publicKeyAlgo, |
const SshBinaryString * | publicKeyBlob, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
const SshBinaryString * | signatureBlob | ||
) |
ECDSA signature verification.
- Parameters
-
[in] publicKeyAlgo Public key algorithm [in] publicKeyBlob Signer's public key [in] sessionId Session identifier (optional parameter) [in] message Message whose signature is to be verified [in] signatureBlob Signature to be verified
- Returns
- Error code
Definition at line 1235 of file ssh_signature.c.
◆ sshVerifyEd25519Signature()
error_t sshVerifyEd25519Signature | ( | const SshString * | publicKeyAlgo, |
const SshBinaryString * | publicKeyBlob, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
const SshBinaryString * | signatureBlob | ||
) |
Ed25519 signature verification.
- Parameters
-
[in] publicKeyAlgo Public key algorithm [in] publicKeyBlob Signer's public key [in] sessionId Session identifier (optional parameter) [in] message Message whose signature is to be verified [in] signatureBlob Signature to be verified
- Returns
- Error code
Definition at line 1414 of file ssh_signature.c.
◆ sshVerifyEd448Signature()
error_t sshVerifyEd448Signature | ( | const SshString * | publicKeyAlgo, |
const SshBinaryString * | publicKeyBlob, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
const SshBinaryString * | signatureBlob | ||
) |
Ed448 signature verification.
- Parameters
-
[in] publicKeyAlgo Public key algorithm [in] publicKeyBlob Signer's public key [in] sessionId Session identifier (optional parameter) [in] message Message whose signature is to be verified [in] signatureBlob Signature to be verified
- Returns
- Error code
Definition at line 1517 of file ssh_signature.c.
◆ sshVerifyRsaSignature()
error_t sshVerifyRsaSignature | ( | const SshString * | publicKeyAlgo, |
const SshBinaryString * | publicKeyBlob, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
const SshBinaryString * | signatureBlob | ||
) |
RSA signature verification.
- Parameters
-
[in] publicKeyAlgo Public key algorithm [in] publicKeyBlob Signer's public key [in] sessionId Session identifier (optional parameter) [in] message Message whose signature is to be verified [in] signatureBlob Signature to be verified
- Returns
- Error code
Definition at line 965 of file ssh_signature.c.
◆ sshVerifySignature()
error_t sshVerifySignature | ( | SshConnection * | connection, |
const SshString * | publicKeyAlgo, | ||
const SshBinaryString * | publicKeyBlob, | ||
const SshBinaryString * | sessionId, | ||
const SshBinaryString * | message, | ||
const SshBinaryString * | signature | ||
) |
Signature verification.
- Parameters
-
[in] connection Pointer to the SSH connection [in] publicKeyAlgo Public key algorithm [in] publicKeyBlob Signer's public key [in] sessionId Session identifier (optional parameter) [in] message Message whose signature is to be verified [in] signature Signature to be verified
- Returns
- Error code
Definition at line 806 of file ssh_signature.c.