blob: 986208ba1a264c39c0c00ada1c124cd7505bedb5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
.Dd $Mdocdate: February 23 2015 $
.Dt BN_CTX_START 3
.Os
.Sh NAME
.Nm BN_CTX_start ,
.Nm BN_CTX_get ,
.Nm BN_CTX_end
.Nd use temporary BIGNUM variables
.Sh SYNOPSIS
.In openssl/bn.h
.Ft void
.Fo BN_CTX_start
.Fa "BN_CTX *ctx"
.Fc
.Ft BIGNUM *
.Fo BN_CTX_get
.Fa "BN_CTX *ctx"
.Fc
.Ft void
.Fo BN_CTX_end
.Fa "BN_CTX *ctx"
.Fc
.Sh DESCRIPTION
These functions are used to obtain temporary
.Vt BIGNUM
variables from a
.Vt BN_CTX
(which can been created by using
.Xr BN_CTX_new 3 )
in order to save the overhead of repeatedly creating and freeing
.Vt BIGNUM Ns s
in functions that are called from inside a loop.
.Pp
A function must call
.Fn BN_CTX_start
first.
Then,
.Fn BN_CTX_get
may be called repeatedly to obtain temporary
.Vt BIGNUM Ns s.
All
.Fn BN_CTX_get
calls must be made before calling any other functions that use the
.Fa ctx
as an argument.
.Pp
Finally,
.Fn BN_CTX_end
must be called before returning from the function.
When
.Fn BN_CTX_end
is called, the
.Vt BIGNUM
pointers obtained from
.Fn BN_CTX_get
become invalid.
.Sh RETURN VALUES
.Fn BN_CTX_start
and
.Fn BN_CTX_end
return no values.
.Pp
.Fn BN_CTX_get
returns a pointer to the
.Vt BIGNUM ,
or
.Dv NULL
on error.
Once
.Fn BN_CTX_get
has failed, the subsequent calls will return
.Dv NULL
as well, so it is sufficient to check the return value of the last
.Fn BN_CTX_get
call.
In case of an error, an error code is set, which can be obtained by
.Xr ERR_get_error 3 .
.Sh SEE ALSO
.Xr BN_CTX_new 3
.Sh HISTORY
.Fn BN_CTX_start ,
.Fn BN_CTX_get ,
and
.Fn BN_CTX_end
were added in OpenSSL 0.9.5.
|