gnunet-android

GNUnet for Android
Log | Files | Refs | README

dsa.h (6153B)


      1 /* dsa.h
      2  *
      3  * Copyright (C) 2006-2025 wolfSSL Inc.
      4  *
      5  * This file is part of wolfSSL.
      6  *
      7  * wolfSSL is free software; you can redistribute it and/or modify
      8  * it under the terms of the GNU General Public License as published by
      9  * the Free Software Foundation; either version 3 of the License, or
     10  * (at your option) any later version.
     11  *
     12  * wolfSSL is distributed in the hope that it will be useful,
     13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15  * GNU General Public License for more details.
     16  *
     17  * You should have received a copy of the GNU General Public License
     18  * along with this program; if not, write to the Free Software
     19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
     20  */
     21 
     22 /* dsa.h for openSSL */
     23 
     24 
     25 #ifndef WOLFSSL_DSA_H_
     26 #define WOLFSSL_DSA_H_
     27 
     28 #include <wolfssl/openssl/bn.h>
     29 #include <wolfssl/openssl/compat_types.h>
     30 
     31 #ifdef __cplusplus
     32     extern "C" {
     33 #endif
     34 
     35 typedef struct WOLFSSL_DSA_SIG {
     36     WOLFSSL_BIGNUM *r;
     37     WOLFSSL_BIGNUM *s;
     38 } WOLFSSL_DSA_SIG;
     39 
     40 #ifndef WOLFSSL_DSA_TYPE_DEFINED /* guard on redeclaration */
     41 typedef struct WOLFSSL_DSA            WOLFSSL_DSA;
     42 #define WOLFSSL_DSA_TYPE_DEFINED
     43 #endif
     44 
     45 struct WOLFSSL_DSA {
     46     WOLFSSL_BIGNUM* p;
     47     WOLFSSL_BIGNUM* q;
     48     WOLFSSL_BIGNUM* g;
     49     WOLFSSL_BIGNUM* pub_key;      /* our y */
     50     WOLFSSL_BIGNUM* priv_key;     /* our x */
     51     void*          internal;     /* our Dsa Key */
     52     char           inSet;        /* internal set from external ? */
     53     char           exSet;        /* external set from internal ? */
     54 };
     55 
     56 
     57 WOLFSSL_API WOLFSSL_DSA* wolfSSL_DSA_new(void);
     58 WOLFSSL_API void wolfSSL_DSA_free(WOLFSSL_DSA* dsa);
     59 #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
     60 WOLFSSL_API int wolfSSL_DSA_print_fp(XFILE fp, WOLFSSL_DSA* dsa, int indent);
     61 #endif /* !NO_FILESYSTEM && NO_STDIO_FILESYSTEM */
     62 
     63 WOLFSSL_API int wolfSSL_DSA_generate_key(WOLFSSL_DSA* dsa);
     64 
     65 typedef void (*WOLFSSL_BN_CB)(int i, int j, void* exArg);
     66 WOLFSSL_API WOLFSSL_DSA* wolfSSL_DSA_generate_parameters(int bits,
     67                    unsigned char* seed, int seedLen, int* counterRet,
     68                    unsigned long* hRet, WOLFSSL_BN_CB cb, void* CBArg);
     69 WOLFSSL_API int wolfSSL_DSA_generate_parameters_ex(WOLFSSL_DSA* dsa, int bits,
     70                    unsigned char* seed, int seedLen, int* counterRet,
     71                    unsigned long* hRet, void* cb);
     72 
     73 WOLFSSL_API void wolfSSL_DSA_get0_pqg(const WOLFSSL_DSA *d, const WOLFSSL_BIGNUM **p,
     74         const WOLFSSL_BIGNUM **q, const WOLFSSL_BIGNUM **g);
     75 WOLFSSL_API int wolfSSL_DSA_set0_pqg(WOLFSSL_DSA *d, WOLFSSL_BIGNUM *p,
     76         WOLFSSL_BIGNUM *q, WOLFSSL_BIGNUM *g);
     77 
     78 WOLFSSL_API void wolfSSL_DSA_get0_key(const WOLFSSL_DSA *d,
     79         const WOLFSSL_BIGNUM **pub_key, const WOLFSSL_BIGNUM **priv_key);
     80 WOLFSSL_API int wolfSSL_DSA_set0_key(WOLFSSL_DSA *d, WOLFSSL_BIGNUM *pub_key,
     81         WOLFSSL_BIGNUM *priv_key);
     82 
     83 
     84 WOLFSSL_API int wolfSSL_DSA_LoadDer(
     85     WOLFSSL_DSA* dsa, const unsigned char* derBuf, int derSz);
     86 
     87 WOLFSSL_API int wolfSSL_DSA_LoadDer_ex(
     88     WOLFSSL_DSA* dsa, const unsigned char* derBuf, int derSz, int opt);
     89 
     90 WOLFSSL_API int wolfSSL_DSA_do_sign(
     91     const unsigned char* d, unsigned char* sigRet, WOLFSSL_DSA* dsa);
     92 
     93 WOLFSSL_API int wolfSSL_DSA_do_verify(
     94     const unsigned char* d, unsigned char* sig, WOLFSSL_DSA* dsa, int *dsacheck);
     95 
     96 WOLFSSL_API int wolfSSL_DSA_bits(const WOLFSSL_DSA *d);
     97 
     98 WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_DSA_SIG_new(void);
     99 WOLFSSL_API void wolfSSL_DSA_SIG_free(WOLFSSL_DSA_SIG *sig);
    100 
    101 WOLFSSL_API void wolfSSL_DSA_SIG_get0(const WOLFSSL_DSA_SIG *sig,
    102         const WOLFSSL_BIGNUM **r, const WOLFSSL_BIGNUM **s);
    103 WOLFSSL_API int wolfSSL_DSA_SIG_set0(WOLFSSL_DSA_SIG *sig, WOLFSSL_BIGNUM *r,
    104         WOLFSSL_BIGNUM *s);
    105 
    106 WOLFSSL_API int wolfSSL_i2d_DSA_SIG(const WOLFSSL_DSA_SIG *sig, byte **out);
    107 WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_d2i_DSA_SIG(WOLFSSL_DSA_SIG **sig,
    108         const unsigned char **pp, long length);
    109 WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_DSA_do_sign_ex(const unsigned char* digest,
    110                                                     int inLen, WOLFSSL_DSA* dsa);
    111 WOLFSSL_API int wolfSSL_DSA_do_verify_ex(const unsigned char* digest, int digest_len,
    112                                          WOLFSSL_DSA_SIG* sig, WOLFSSL_DSA* dsa);
    113 
    114 WOLFSSL_API int wolfSSL_i2d_DSAparams(
    115     const WOLFSSL_DSA* dsa, unsigned char** out);
    116 WOLFSSL_API WOLFSSL_DSA* wolfSSL_d2i_DSAparams(
    117     WOLFSSL_DSA** dsa, const unsigned char** der, long derLen);
    118 
    119 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
    120 
    121 #define WOLFSSL_DSA_LOAD_PRIVATE 1
    122 #define WOLFSSL_DSA_LOAD_PUBLIC  2
    123 
    124 #ifndef OPENSSL_COEXIST
    125 
    126 typedef WOLFSSL_DSA                   DSA;
    127 
    128 #define OPENSSL_DSA_MAX_MODULUS_BITS 3072
    129 
    130 #define DSA_new wolfSSL_DSA_new
    131 #define DSA_free wolfSSL_DSA_free
    132 #define DSA_print_fp wolfSSL_DSA_print_fp
    133 
    134 #define DSA_LoadDer                wolfSSL_DSA_LoadDer
    135 #define DSA_generate_key           wolfSSL_DSA_generate_key
    136 #define DSA_generate_parameters    wolfSSL_DSA_generate_parameters
    137 #define DSA_generate_parameters_ex wolfSSL_DSA_generate_parameters_ex
    138 #define DSA_get0_pqg               wolfSSL_DSA_get0_pqg
    139 #define DSA_set0_pqg               wolfSSL_DSA_set0_pqg
    140 #define DSA_get0_key               wolfSSL_DSA_get0_key
    141 #define DSA_set0_key               wolfSSL_DSA_set0_key
    142 
    143 #define DSA_SIG_new                wolfSSL_DSA_SIG_new
    144 #define DSA_SIG_free               wolfSSL_DSA_SIG_free
    145 #define DSA_SIG_get0               wolfSSL_DSA_SIG_get0
    146 #define DSA_SIG_set0               wolfSSL_DSA_SIG_set0
    147 #define i2d_DSA_SIG                wolfSSL_i2d_DSA_SIG
    148 #define d2i_DSA_SIG                wolfSSL_d2i_DSA_SIG
    149 #define DSA_do_sign                wolfSSL_DSA_do_sign_ex
    150 #define DSA_do_verify              wolfSSL_DSA_do_verify_ex
    151 #define i2d_DSAparams              wolfSSL_i2d_DSAparams
    152 #define d2i_DSAparams              wolfSSL_d2i_DSAparams
    153 
    154 #define DSA_SIG                    WOLFSSL_DSA_SIG
    155 
    156 #endif /* !OPENSSL_COEXIST */
    157 
    158 #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
    159 
    160 #ifdef __cplusplus
    161     }  /* extern "C" */
    162 #endif
    163 
    164 #endif /* header */