View | Details | Raw Unified | Return to bug 212149 | Differences between
and this patch

Collapse All | Expand All

(-)src/libstrongswan/plugins/openssl/openssl_rsa_public_key.h (+133 lines)
Lines 21-26 Link Here
21
#ifndef OPENSSL_RSA_PUBLIC_KEY_H_
21
#ifndef OPENSSL_RSA_PUBLIC_KEY_H_
22
#define OPENSSL_RSA_PUBLIC_KEY_H_
22
#define OPENSSL_RSA_PUBLIC_KEY_H_
23
23
24
#if OPENSSL_VERSION_NUMBER < 0x10100000L
25
/**
26
 * OpenSSL compat functions
27
 * From https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes
28
*/
29
30
/* See src/libstrongswan/plugins/openssl/openssl_util.c #define OBJ_get0_data(o) ((o)->data)
31
#define OBJ_length(o) ((o)->length) /*
32
33
#include <string.h>
34
#include <openssl/engine.h>
35
36
int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
37
{
38
   /* If the fields n and e in r are NULL, the corresponding input
39
    * parameters MUST be non-NULL for n and e.  d may be
40
    * left NULL (in case only the public key is used).
41
    */
42
   if ((r->n == NULL && n == NULL)
43
       || (r->e == NULL && e == NULL))
44
       return 0;
45
46
   if (n != NULL) {
47
       BN_free(r->n);
48
       r->n = n;
49
   }
50
   if (e != NULL) {
51
       BN_free(r->e);
52
       r->e = e;
53
   }
54
   if (d != NULL) {
55
       BN_free(r->d);
56
       r->d = d;
57
   }
58
59
   return 1;
60
}
61
62
int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
63
{
64
   /* If the fields p and q in r are NULL, the corresponding input
65
    * parameters MUST be non-NULL.
66
    */
67
   if ((r->p == NULL && p == NULL)
68
       || (r->q == NULL && q == NULL))
69
       return 0;
70
71
   if (p != NULL) {
72
       BN_free(r->p);
73
       r->p = p;
74
   }
75
   if (q != NULL) {
76
       BN_free(r->q);
77
       r->q = q;
78
   }
79
80
   return 1;
81
}
82
83
int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
84
{
85
   /* If the fields dmp1, dmq1 and iqmp in r are NULL, the corresponding input
86
    * parameters MUST be non-NULL.
87
    */
88
   if ((r->dmp1 == NULL && dmp1 == NULL)
89
       || (r->dmq1 == NULL && dmq1 == NULL)
90
       || (r->iqmp == NULL && iqmp == NULL))
91
       return 0;
92
93
   if (dmp1 != NULL) {
94
       BN_free(r->dmp1);
95
       r->dmp1 = dmp1;
96
   }
97
   if (dmq1 != NULL) {
98
       BN_free(r->dmq1);
99
       r->dmq1 = dmq1;
100
   }
101
   if (iqmp != NULL) {
102
       BN_free(r->iqmp);
103
       r->iqmp = iqmp;
104
   }
105
106
   return 1;
107
}
108
109
void RSA_get0_key(const RSA *r,
110
                  const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
111
{
112
   if (n != NULL)
113
       *n = r->n;
114
   if (e != NULL)
115
       *e = r->e;
116
   if (d != NULL)
117
       *d = r->d;
118
}
119
120
void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
121
 {
122
    if (pub_key != NULL)
123
        *pub_key = dh->pub_key;
124
    if (priv_key != NULL)
125
        *priv_key = dh->priv_key;
126
 }
127
128
int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
129
{
130
    /* If the field pub_key in dh is NULL, the corresponding input
131
     * parameters MUST be non-NULL.  The priv_key field may
132
     * be left NULL.
133
     */
134
    if (dh->pub_key == NULL && pub_key == NULL)
135
        return 0;
136
137
    if (pub_key != NULL) {
138
        BN_free(dh->pub_key);
139
        dh->pub_key = pub_key;
140
    }
141
    if (priv_key != NULL) {
142
        BN_free(dh->priv_key);
143
        dh->priv_key = priv_key;
144
    }
145
146
    return 1;
147
}
148
149
int DH_set_length(DH *dh, long length)
150
{
151
    dh->length = length;
152
    return 1;
153
}
154
155
#endif
156
24
typedef struct openssl_rsa_public_key_t openssl_rsa_public_key_t;
157
typedef struct openssl_rsa_public_key_t openssl_rsa_public_key_t;
25
158
26
#include <credentials/keys/public_key.h>
159
#include <credentials/keys/public_key.h>

Return to bug 212149