Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
z
Classes
Class List
Class Hierarchy
Class Members
All
:
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
Enumerations
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
Properties
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Related Functions
:
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
z
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
grpc
third_party
boringssl-with-bazel
src
include
openssl
engine.h
Go to the documentation of this file.
1
/* Copyright (c) 2014, Google Inc.
2
*
3
* Permission to use, copy, modify, and/or distribute this software for any
4
* purpose with or without fee is hereby granted, provided that the above
5
* copyright notice and this permission notice appear in all copies.
6
*
7
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
15
#ifndef OPENSSL_HEADER_ENGINE_H
16
#define OPENSSL_HEADER_ENGINE_H
17
18
#include <
openssl/base.h
>
19
20
#if defined(__cplusplus)
21
extern
"C"
{
22
#endif
23
24
25
// Engines are collections of methods. Methods are tables of function pointers,
26
// defined for certain algorithms, that allow operations on those algorithms to
27
// be overridden via a callback. This can be used, for example, to implement an
28
// RSA* that forwards operations to a hardware module.
29
//
30
// Methods are reference counted but |ENGINE|s are not. When creating a method,
31
// you should zero the whole structure and fill in the function pointers that
32
// you wish before setting it on an |ENGINE|. Any functions pointers that
33
// are NULL indicate that the default behaviour should be used.
34
35
36
// Allocation and destruction.
37
38
// ENGINE_new returns an empty ENGINE that uses the default method for all
39
// algorithms.
40
OPENSSL_EXPORT
ENGINE
*
ENGINE_new
(
void
);
41
42
// ENGINE_free decrements the reference counts for all methods linked from
43
// |engine| and frees |engine| itself. It returns one.
44
OPENSSL_EXPORT
int
ENGINE_free
(
ENGINE
*engine);
45
46
47
// Method accessors.
48
//
49
// Method accessors take a method pointer and the size of the structure. The
50
// size allows for ABI compatibility in the case that the method structure is
51
// extended with extra elements at the end. Methods are always copied by the
52
// set functions.
53
//
54
// Set functions return one on success and zero on allocation failure.
55
56
OPENSSL_EXPORT
int
ENGINE_set_RSA_method
(
ENGINE
*engine,
57
const
RSA_METHOD
*
method
,
58
size_t
method_size);
59
OPENSSL_EXPORT
RSA_METHOD
*
ENGINE_get_RSA_method
(
const
ENGINE
*engine);
60
61
OPENSSL_EXPORT
int
ENGINE_set_ECDSA_method
(
ENGINE
*engine,
62
const
ECDSA_METHOD
*
method
,
63
size_t
method_size);
64
OPENSSL_EXPORT
ECDSA_METHOD
*
ENGINE_get_ECDSA_method
(
const
ENGINE
*engine);
65
66
67
// Generic method functions.
68
//
69
// These functions take a void* type but actually operate on all method
70
// structures.
71
72
// METHOD_ref increments the reference count of |method|. This is a no-op for
73
// now because all methods are currently static.
74
void
METHOD_ref
(
void
*
method
);
75
76
// METHOD_unref decrements the reference count of |method| and frees it if the
77
// reference count drops to zero. This is a no-op for now because all methods
78
// are currently static.
79
void
METHOD_unref
(
void
*
method
);
80
81
82
// Private functions.
83
84
// openssl_method_common_st contains the common part of all method structures.
85
// This must be the first member of all method structures.
86
struct
openssl_method_common_st
{
87
int
references
;
// dummy – not used.
88
char
is_static
;
89
};
90
91
92
#if defined(__cplusplus)
93
}
// extern C
94
95
extern
"C++"
{
96
97
BSSL_NAMESPACE_BEGIN
98
99
BORINGSSL_MAKE_DELETER
(
ENGINE
,
ENGINE_free
)
100
101
BSSL_NAMESPACE_END
102
103
}
// extern C++
104
105
#endif
106
107
#define ENGINE_R_OPERATION_NOT_SUPPORTED 100
108
109
#endif // OPENSSL_HEADER_ENGINE_H
ENGINE_free
OPENSSL_EXPORT int ENGINE_free(ENGINE *engine)
Definition:
engine.c:44
openssl_method_common_st::is_static
char is_static
Definition:
engine.h:88
ENGINE_new
OPENSSL_EXPORT ENGINE * ENGINE_new(void)
Definition:
engine.c:34
base.h
ENGINE_set_ECDSA_method
OPENSSL_EXPORT int ENGINE_set_ECDSA_method(ENGINE *engine, const ECDSA_METHOD *method, size_t method_size)
Definition:
engine.c:76
BSSL_NAMESPACE_END
#define BSSL_NAMESPACE_END
Definition:
base.h:480
ENGINE_get_ECDSA_method
OPENSSL_EXPORT ECDSA_METHOD * ENGINE_get_ECDSA_method(const ENGINE *engine)
Definition:
engine.c:82
ENGINE_set_RSA_method
OPENSSL_EXPORT int ENGINE_set_RSA_method(ENGINE *engine, const RSA_METHOD *method, size_t method_size)
Definition:
engine.c:66
METHOD_ref
void METHOD_ref(void *method)
Definition:
engine.c:86
ecdsa_method_st
Definition:
ec_key.h:271
BSSL_NAMESPACE_BEGIN
Definition:
trust_token_test.cc:45
ENGINE_get_RSA_method
OPENSSL_EXPORT RSA_METHOD * ENGINE_get_RSA_method(const ENGINE *engine)
Definition:
engine.c:72
openssl_method_common_st::references
int references
Definition:
engine.h:87
METHOD_unref
void METHOD_unref(void *method)
Definition:
engine.c:90
OPENSSL_EXPORT
#define OPENSSL_EXPORT
Definition:
base.h:222
BORINGSSL_MAKE_DELETER
#define BORINGSSL_MAKE_DELETER(type, deleter)
Definition:
base.h:506
openssl_method_common_st
Definition:
engine.h:86
rsa_meth_st
Definition:
rsa.h:689
engine_st
Definition:
engine.c:29
method
NSString * method
Definition:
ProtoMethod.h:28
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:15