life_cycle-mac.7ossl 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. .\" -*- mode: troff; coding: utf-8 -*-
  2. .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
  3. .\"
  4. .\" Standard preamble:
  5. .\" ========================================================================
  6. .de Sp \" Vertical space (when we can't use .PP)
  7. .if t .sp .5v
  8. .if n .sp
  9. ..
  10. .de Vb \" Begin verbatim text
  11. .ft CW
  12. .nf
  13. .ne \\$1
  14. ..
  15. .de Ve \" End verbatim text
  16. .ft R
  17. .fi
  18. ..
  19. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  20. .ie n \{\
  21. . ds C` ""
  22. . ds C' ""
  23. 'br\}
  24. .el\{\
  25. . ds C`
  26. . ds C'
  27. 'br\}
  28. .\"
  29. .\" Escape single quotes in literal strings from groff's Unicode transform.
  30. .ie \n(.g .ds Aq \(aq
  31. .el .ds Aq '
  32. .\"
  33. .\" If the F register is >0, we'll generate index entries on stderr for
  34. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  35. .\" entries marked with X<> in POD. Of course, you'll have to process the
  36. .\" output yourself in some meaningful fashion.
  37. .\"
  38. .\" Avoid warning from groff about undefined register 'F'.
  39. .de IX
  40. ..
  41. .nr rF 0
  42. .if \n(.g .if rF .nr rF 1
  43. .if (\n(rF:(\n(.g==0)) \{\
  44. . if \nF \{\
  45. . de IX
  46. . tm Index:\\$1\t\\n%\t"\\$2"
  47. ..
  48. . if !\nF==2 \{\
  49. . nr % 0
  50. . nr F 2
  51. . \}
  52. . \}
  53. .\}
  54. .rr rF
  55. .\" ========================================================================
  56. .\"
  57. .IX Title "LIFE_CYCLE-MAC 7ossl"
  58. .TH LIFE_CYCLE-MAC 7ossl 2025-01-17 3.4.0 OpenSSL
  59. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  60. .\" way too many mistakes in technical documents.
  61. .if n .ad l
  62. .nh
  63. .SH NAME
  64. life_cycle\-mac \- The MAC algorithm life\-cycle
  65. .SH DESCRIPTION
  66. .IX Header "DESCRIPTION"
  67. All message authentication codes (MACs)
  68. go through a number of stages in their life-cycle:
  69. .IP start 4
  70. .IX Item "start"
  71. This state represents the MAC before it has been allocated. It is the
  72. starting state for any life-cycle transitions.
  73. .IP newed 4
  74. .IX Item "newed"
  75. This state represents the MAC after it has been allocated.
  76. .IP initialised 4
  77. .IX Item "initialised"
  78. This state represents the MAC when it is set up and capable of processing
  79. input.
  80. .IP updated 4
  81. .IX Item "updated"
  82. This state represents the MAC when it is set up and capable of processing
  83. additional input or generating output.
  84. .IP finaled 4
  85. .IX Item "finaled"
  86. This state represents the MAC when it has generated output.
  87. .IP freed 4
  88. .IX Item "freed"
  89. This state is entered when the MAC is freed. It is the terminal state
  90. for all life-cycle transitions.
  91. .SS "State Transition Diagram"
  92. .IX Subsection "State Transition Diagram"
  93. The usual life-cycle of a MAC is illustrated:
  94. +-------------------+
  95. | start |
  96. +-------------------+
  97. |
  98. | EVP_MAC_CTX_new
  99. v
  100. +-------------------+
  101. | newed |
  102. +-------------------+
  103. |
  104. | EVP_MAC_init
  105. v
  106. +-------------------+
  107. +> | initialised | <+
  108. | +-------------------+ |
  109. | | |
  110. | | EVP_MAC_update | EVP_MAC_init
  111. | v |
  112. EVP_MAC_init | +-------------------+ |
  113. | | updated | -+
  114. | +-------------------+
  115. | | |
  116. | | EVP_MAC_final | EVP_MAC_finalXOF
  117. | v v
  118. | +-------------------+
  119. +- | finaled |
  120. +-------------------+
  121. |
  122. | EVP_MAC_CTX_free
  123. v
  124. +-------------------+
  125. | freed |
  126. +-------------------+
  127. .SS "Formal State Transitions"
  128. .IX Subsection "Formal State Transitions"
  129. This section defines all of the legal state transitions.
  130. This is the canonical list.
  131. Function Call --------------------- Current State ----------------------
  132. start newed initialised updated finaled freed
  133. EVP_MAC_CTX_new newed
  134. EVP_MAC_init initialised initialised initialised initialised
  135. EVP_MAC_update updated updated
  136. EVP_MAC_final finaled
  137. EVP_MAC_finalXOF finaled
  138. EVP_MAC_CTX_free freed freed freed freed freed
  139. EVP_MAC_CTX_get_params newed initialised updated
  140. EVP_MAC_CTX_set_params newed initialised updated
  141. EVP_MAC_CTX_gettable_params newed initialised updated
  142. EVP_MAC_CTX_settable_params newed initialised updated
  143. .SH NOTES
  144. .IX Header "NOTES"
  145. At some point the EVP layer will begin enforcing the transitions described
  146. herein.
  147. .SH "SEE ALSO"
  148. .IX Header "SEE ALSO"
  149. \&\fBprovider\-mac\fR\|(7), \fBEVP_MAC\fR\|(3).
  150. .SH HISTORY
  151. .IX Header "HISTORY"
  152. The provider MAC interface was introduced in OpenSSL 3.0.
  153. .SH COPYRIGHT
  154. .IX Header "COPYRIGHT"
  155. Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
  156. .PP
  157. Licensed under the Apache License 2.0 (the "License"). You may not use
  158. this file except in compliance with the License. You can obtain a copy
  159. in the file LICENSE in the source distribution or at
  160. <https://www.openssl.org/source/license.html>.