summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/man/HMAC.3
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/man/HMAC.3')
-rw-r--r--src/lib/libcrypto/man/HMAC.3206
1 files changed, 206 insertions, 0 deletions
diff --git a/src/lib/libcrypto/man/HMAC.3 b/src/lib/libcrypto/man/HMAC.3
new file mode 100644
index 0000000000..577070afb0
--- /dev/null
+++ b/src/lib/libcrypto/man/HMAC.3
@@ -0,0 +1,206 @@
1.Dd $Mdocdate: November 3 2016 $
2.Dt HMAC 3
3.Os
4.Sh NAME
5.Nm HMAC ,
6.Nm HMAC_Init ,
7.Nm HMAC_Update ,
8.Nm HMAC_Final ,
9.Nm HMAC_cleanup
10.Nd HMAC message authentication code
11.Sh SYNOPSIS
12.In openssl/hmac.h
13.Ft unsigned char *
14.Fo HMAC
15.Fa "const EVP_MD *evp_md"
16.Fa "const void *key"
17.Fa "int key_len"
18.Fa "const unsigned char *d"
19.Fa "int n"
20.Fa "unsigned char *md"
21.Fa "unsigned int *md_len"
22.Fc
23.Ft void
24.Fo HMAC_CTX_init
25.Fa "HMAC_CTX *ctx"
26.Fc
27.Ft int
28.Fo HMAC_Init
29.Fa "HMAC_CTX *ctx"
30.Fa "const void *key"
31.Fa "int key_len"
32.Fa "const EVP_MD *md"
33.Fc
34.Ft int
35.Fo HMAC_Init_ex
36.Fa "HMAC_CTX *ctx"
37.Fa "const void *key"
38.Fa "int key_len"
39.Fa "const EVP_MD *md"
40.Fa "ENGINE *impl"
41.Fc
42.Ft int
43.Fo HMAC_Update
44.Fa "HMAC_CTX *ctx"
45.Fa "const unsigned char *data"
46.Fa "int len"
47.Fc
48.Ft int
49.Fo HMAC_Final
50.Fa "HMAC_CTX *ctx"
51.Fa "unsigned char *md"
52.Fa "unsigned int *len"
53.Fc
54.Ft void
55.Fo HMAC_CTX_cleanup
56.Fa "HMAC_CTX *ctx"
57.Fc
58.Ft void
59.Fo HMAC_cleanup
60.Fa "HMAC_CTX *ctx"
61.Fc
62.Sh DESCRIPTION
63HMAC is a MAC (message authentication code), i.e. a keyed hash
64function used for message authentication, which is based on a hash
65function.
66.Pp
67.Fn HMAC
68computes the message authentication code of the
69.Fa n
70bytes at
71.Fa d
72using the hash function
73.Fa evp_md
74and the key
75.Fa key
76which is
77.Fa key_len
78bytes long.
79.Pp
80It places the result in
81.Fa md ,
82which must have space for the output of the hash function, which is no
83more than
84.Dv EVP_MAX_MD_SIZE
85bytes.
86If
87.Fa md
88is
89.Dv NULL ,
90the digest is placed in a static array.
91The size of the output is placed in
92.Fa md_len ,
93unless it is
94.Dv NULL .
95.Pp
96.Fa evp_md
97can be
98.Xr EVP_sha1 3 ,
99.Xr EVP_ripemd160 3 ,
100etc.
101.Pp
102.Fn HMAC_CTX_init
103initialises a
104.Vt HMAC_CTX
105before first use.
106It must be called.
107.Pp
108.Fn HMAC_CTX_cleanup
109erases the key and other data from the
110.Vt HMAC_CTX
111and releases any associated resources.
112It must be called when an
113.Vt HMAC_CTX
114is no longer required.
115.Pp
116.Fn HMAC_cleanup
117is an alias for
118.Fn HMAC_CTX_cleanup
119included for backward compatibility with 0.9.6b.
120It is deprecated.
121.Pp
122The following functions may be used if the message is not completely
123stored in memory:
124.Pp
125.Fn HMAC_Init
126initializes a
127.Vt HMAC_CTX
128structure to use the hash function
129.Fa evp_md
130and the key
131.Fa key
132which is
133.Fa key_len
134bytes long.
135It is deprecated and only included for backward compatibility with
136OpenSSL 0.9.6b.
137.Pp
138.Fn HMAC_Init_ex
139initializes or reuses a
140.Vt HMAC_CTX
141structure to use the function
142.Fa evp_md
143and key
144.Fa key .
145Either can be
146.Dv NULL ,
147in which case the existing one will be reused.
148.Fn HMAC_CTX_init
149must have been called before the first use of an
150.Vt HMAC_CTX
151in this function.
152.Sy N.B.
153.Fn HMAC_Init
154had this undocumented behaviour in previous versions of OpenSSL -
155failure to switch to
156.Fn HMAC_Init_ex
157in programs that expect it will cause them to stop working.
158.Pp
159.Fn HMAC_Update
160can be called repeatedly with chunks of the message to be authenticated
161.Pq Fa len No bytes at Fa data .
162.Pp
163.Fn HMAC_Final
164places the message authentication code in
165.Fa md ,
166which must have space for the hash function output.
167.Sh RETURN VALUES
168.Fn HMAC
169returns a pointer to the message authentication code or
170.Dv NULL
171if an error occurred.
172.Pp
173.Fn HMAC_Init_ex ,
174.Fn HMAC_Update ,
175and
176.Fn HMAC_Final
177return 1 for success or 0 if an error occurred.
178.Pp
179.Fn HMAC_CTX_init
180and
181.Fn HMAC_CTX_cleanup
182do not return values.
183.Sh SEE ALSO
184.Xr evp 3
185.Sh STANDARDS
186RFC 2104
187.Sh HISTORY
188.Fn HMAC ,
189.Fn HMAC_Init ,
190.Fn HMAC_Update ,
191.Fn HMAC_Final ,
192and
193.Fn HMAC_cleanup
194are available since SSLeay 0.9.0.
195.Pp
196.Fn HMAC_CTX_init ,
197.Fn HMAC_Init_ex ,
198and
199.Fn HMAC_CTX_cleanup
200are available since OpenSSL 0.9.7.
201.Pp
202.Fn HMAC_Init_ex ,
203.Fn HMAC_Update ,
204and
205.Fn HMAC_Final
206did not return values in versions of OpenSSL before 1.0.0.