ReactOS 0.4.17-dev-784-g3812a95
dsa.h
Go to the documentation of this file.
1/*
2 * Digital Signature Algorithm (DSA)
3 *
4 * Copyright The Mbed TLS Contributors
5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6 */
7
8#ifndef MBEDTLS_DSA_H
9#define MBEDTLS_DSA_H
10
11#if !defined(MBEDTLS_CONFIG_FILE)
12#include "config.h"
13#else
14#include MBEDTLS_CONFIG_FILE
15#endif
16#include "bignum.h"
17#include "md.h"
18
19/*
20 * DSA-specific error codes
21 */
22#define MBEDTLS_ERR_DSA_BAD_INPUT_DATA -0x3180
23#define MBEDTLS_ERR_DSA_INVALID_KEY -0x3200
24#define MBEDTLS_ERR_DSA_VERIFY_FAILED -0x3280
25#define MBEDTLS_ERR_DSA_ALLOC_FAILED -0x3300
26#define MBEDTLS_ERR_DSA_RANDOM_FAILED -0x3380
27#define MBEDTLS_ERR_DSA_FILE_IO_ERROR -0x3400
28#define MBEDTLS_ERR_DSA_SIG_LEN_MISMATCH -0x3480
30#define MBEDTLS_DSA_ASN_SIGNATURE_MAX_LEN 64
31
32/* Max DSA group size in bytes */
33#define MBEDTLS_DSA_MAX_GROUP 64
34
35/* Max DSA modulus size in bytes (the actual DSA size, max 8192 bits) */
36#define MBEDTLS_DSA_MAX_MODULUS 1024
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
45typedef struct mbedtls_dsa_context
46{
47 size_t len;
53}
55
62
69
81
93int mbedtls_dsa_genkey( mbedtls_dsa_context *ctx, size_t group_size, size_t modulus_size,
94 int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
95
106
115
124
133
148 const unsigned char *hash, size_t hlen,
149 unsigned char *sig, size_t *slen,
150 int (*f_rng)(void *, unsigned char *, size_t),
151 void *p_rng );
152
165 const unsigned char *hash, size_t hlen,
166 const unsigned char *sig, size_t slen );
167
168#if defined(MBEDTLS_SELF_TEST)
176int mbedtls_dsa_self_test( int verbose );
177#endif
178
179#ifdef __cplusplus
180}
181#endif
182
183#endif /* MBEDTLS_DSA_H */
Multi-precision integer library.
#define G(r, i, a, b, c, d)
Definition: blake2b-ref.c:117
#define P(row, col)
int mbedtls_dsa_set_group(mbedtls_dsa_context *ctx, const mbedtls_mpi *P, const mbedtls_mpi *Q, const mbedtls_mpi *G)
This function sets the DSA group parameters.
int mbedtls_dsa_pubkey_from_privkey(mbedtls_dsa_context *ctx)
This function derived public key from private key.
int mbedtls_dsa_verify(mbedtls_dsa_context *ctx, const unsigned char *hash, size_t hlen, const unsigned char *sig, size_t slen)
This function reads and verifies a DSA signature.
int mbedtls_dsa_check_pubkey(const mbedtls_dsa_context *ctx)
This function checks if the public key is valid.
int mbedtls_dsa_sign(mbedtls_dsa_context *ctx, const unsigned char *hash, size_t hlen, unsigned char *sig, size_t *slen, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
This function computes the DSA signature of a message hash.
void mbedtls_dsa_init(mbedtls_dsa_context *ctx)
This function initializes a DSA context.
int mbedtls_dsa_check_privkey(const mbedtls_dsa_context *ctx)
This function checks if the private key is valid.
int mbedtls_dsa_genkey(mbedtls_dsa_context *ctx, size_t group_size, size_t modulus_size, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
This function generates a DSA keypair.
int mbedtls_dsa_check_pqg(const mbedtls_mpi *P, const mbedtls_mpi *Q, const mbedtls_mpi *G)
This function checks if the DSA group parameters are valid.
void mbedtls_dsa_free(mbedtls_dsa_context *ctx)
This function frees a DSA context.
This file contains the generic message-digest wrapper.
#define verbose
Definition: rosglue.h:36
DSA context structure.
Definition: dsa.h:46
mbedtls_mpi X
Definition: dsa.h:52
mbedtls_mpi Q
Definition: dsa.h:49
size_t len
Definition: dsa.h:47
mbedtls_mpi P
Definition: dsa.h:48
mbedtls_mpi G
Definition: dsa.h:50
mbedtls_mpi Y
Definition: dsa.h:51
MPI structure.
Definition: bignum.h:211