CTLOG_new.3ossl 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
  2. .\"
  3. .\" Standard preamble:
  4. .\" ========================================================================
  5. .de Sp \" Vertical space (when we can't use .PP)
  6. .if t .sp .5v
  7. .if n .sp
  8. ..
  9. .de Vb \" Begin verbatim text
  10. .ft CW
  11. .nf
  12. .ne \\$1
  13. ..
  14. .de Ve \" End verbatim text
  15. .ft R
  16. .fi
  17. ..
  18. .\" Set up some character translations and predefined strings. \*(-- will
  19. .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
  20. .\" double quote, and \*(R" will give a right double quote. \*(C+ will
  21. .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
  22. .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
  23. .\" nothing in troff, for use with C<>.
  24. .tr \(*W-
  25. .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  26. .ie n \{\
  27. . ds -- \(*W-
  28. . ds PI pi
  29. . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
  30. . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
  31. . ds L" ""
  32. . ds R" ""
  33. . ds C` ""
  34. . ds C' ""
  35. 'br\}
  36. .el\{\
  37. . ds -- \|\(em\|
  38. . ds PI \(*p
  39. . ds L" ``
  40. . ds R" ''
  41. . ds C`
  42. . ds C'
  43. 'br\}
  44. .\"
  45. .\" Escape single quotes in literal strings from groff's Unicode transform.
  46. .ie \n(.g .ds Aq \(aq
  47. .el .ds Aq '
  48. .\"
  49. .\" If the F register is >0, we'll generate index entries on stderr for
  50. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  51. .\" entries marked with X<> in POD. Of course, you'll have to process the
  52. .\" output yourself in some meaningful fashion.
  53. .\"
  54. .\" Avoid warning from groff about undefined register 'F'.
  55. .de IX
  56. ..
  57. .nr rF 0
  58. .if \n(.g .if rF .nr rF 1
  59. .if (\n(rF:(\n(.g==0)) \{\
  60. . if \nF \{\
  61. . de IX
  62. . tm Index:\\$1\t\\n%\t"\\$2"
  63. ..
  64. . if !\nF==2 \{\
  65. . nr % 0
  66. . nr F 2
  67. . \}
  68. . \}
  69. .\}
  70. .rr rF
  71. .\"
  72. .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  73. .\" Fear. Run. Save yourself. No user-serviceable parts.
  74. . \" fudge factors for nroff and troff
  75. .if n \{\
  76. . ds #H 0
  77. . ds #V .8m
  78. . ds #F .3m
  79. . ds #[ \f1
  80. . ds #] \fP
  81. .\}
  82. .if t \{\
  83. . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
  84. . ds #V .6m
  85. . ds #F 0
  86. . ds #[ \&
  87. . ds #] \&
  88. .\}
  89. . \" simple accents for nroff and troff
  90. .if n \{\
  91. . ds ' \&
  92. . ds ` \&
  93. . ds ^ \&
  94. . ds , \&
  95. . ds ~ ~
  96. . ds /
  97. .\}
  98. .if t \{\
  99. . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
  100. . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
  101. . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
  102. . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
  103. . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
  104. . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
  105. .\}
  106. . \" troff and (daisy-wheel) nroff accents
  107. .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
  108. .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
  109. .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
  110. .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
  111. .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
  112. .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
  113. .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
  114. .ds ae a\h'-(\w'a'u*4/10)'e
  115. .ds Ae A\h'-(\w'A'u*4/10)'E
  116. . \" corrections for vroff
  117. .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
  118. .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
  119. . \" for low resolution devices (crt and lpr)
  120. .if \n(.H>23 .if \n(.V>19 \
  121. \{\
  122. . ds : e
  123. . ds 8 ss
  124. . ds o a
  125. . ds d- d\h'-1'\(ga
  126. . ds D- D\h'-1'\(hy
  127. . ds th \o'bp'
  128. . ds Th \o'LP'
  129. . ds ae ae
  130. . ds Ae AE
  131. .\}
  132. .rm #[ #] #H #V #F C
  133. .\" ========================================================================
  134. .\"
  135. .IX Title "CTLOG_NEW 3ossl"
  136. .TH CTLOG_NEW 3ossl "2024-09-03" "3.3.2" "OpenSSL"
  137. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  138. .\" way too many mistakes in technical documents.
  139. .if n .ad l
  140. .nh
  141. .SH "NAME"
  142. CTLOG_new_ex, CTLOG_new, CTLOG_new_from_base64,
  143. CTLOG_new_from_base64_ex, CTLOG_free,
  144. CTLOG_get0_name, CTLOG_get0_log_id, CTLOG_get0_public_key \-
  145. encapsulates information about a Certificate Transparency log
  146. .SH "SYNOPSIS"
  147. .IX Header "SYNOPSIS"
  148. .Vb 1
  149. \& #include <openssl/ct.h>
  150. \&
  151. \& CTLOG *CTLOG_new_ex(EVP_PKEY *public_key, const char *name,
  152. \& OSSL_LIB_CTX *libctx, const char *propq);
  153. \& CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name);
  154. \&
  155. \& int CTLOG_new_from_base64_ex(CTLOG **ct_log, const char *pkey_base64,
  156. \& const char *name, OSSL_LIB_CTX *libctx,
  157. \& const char *propq);
  158. \& int CTLOG_new_from_base64(CTLOG ** ct_log,
  159. \& const char *pkey_base64, const char *name);
  160. \& void CTLOG_free(CTLOG *log);
  161. \& const char *CTLOG_get0_name(const CTLOG *log);
  162. \& void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id,
  163. \& size_t *log_id_len);
  164. \& EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log);
  165. .Ve
  166. .SH "DESCRIPTION"
  167. .IX Header "DESCRIPTION"
  168. \&\fBCTLOG_new_ex()\fR returns a new \s-1CTLOG\s0 that represents the Certificate
  169. Transparency (\s-1CT\s0) log with the given public key and associates it with the
  170. library context \fIlibctx\fR and property query string \fIpropq\fR. A name must also
  171. be provided that can be used to help users identify this log. Ownership of the
  172. public key is transferred.
  173. .PP
  174. \&\fBCTLOG_new()\fR does the same thing as \fBCTLOG_new_ex()\fR but with the default
  175. library context and the default property query string.
  176. .PP
  177. \&\fBCTLOG_new_from_base64_ex()\fR also creates a new \s-1CTLOG,\s0 but takes the
  178. public key in base64\-encoded \s-1DER\s0 form and sets the ct_log pointer to point to
  179. the new \s-1CTLOG.\s0 The base64 will be decoded and the public key parsed. The \s-1CTLOG\s0
  180. will be associated with the given library context \fIlibctx\fR and property query
  181. string \fIpropq\fR.
  182. .PP
  183. \&\fBCTLOG_new_from_base64()\fR does the same thing as
  184. \&\fBCTLOG_new_from_base64_ex()\fR except that the default library context and
  185. property query string are used.
  186. .PP
  187. Regardless of whether \fBCTLOG_new()\fR or \fBCTLOG_new_from_base64()\fR is used, it is the
  188. caller's responsibility to pass the \s-1CTLOG\s0 to \fBCTLOG_free()\fR once it is no longer
  189. needed. This will delete it and, if created by \fBCTLOG_new()\fR, the \s-1EVP_PKEY\s0 that
  190. was passed to it. If the argument to \fBCTLOG_free()\fR is \s-1NULL,\s0 nothing is done.
  191. .PP
  192. \&\fBCTLOG_get0_name()\fR returns the name of the log, as provided when the \s-1CTLOG\s0 was
  193. created. Ownership of the string remains with the \s-1CTLOG.\s0
  194. .PP
  195. \&\fBCTLOG_get0_log_id()\fR sets *log_id to point to a string containing that log's
  196. LogID (see \s-1RFC 6962\s0). It sets *log_id_len to the length of that LogID. For a
  197. v1 \s-1CT\s0 log, the LogID will be a \s-1SHA\-256\s0 hash (i.e. 32 bytes long). Ownership of
  198. the string remains with the \s-1CTLOG.\s0
  199. .PP
  200. \&\fBCTLOG_get0_public_key()\fR returns the public key of the \s-1CT\s0 log. Ownership of the
  201. \&\s-1EVP_PKEY\s0 remains with the \s-1CTLOG.\s0
  202. .SH "RETURN VALUES"
  203. .IX Header "RETURN VALUES"
  204. \&\fBCTLOG_new()\fR will return \s-1NULL\s0 if an error occurs.
  205. .PP
  206. \&\fBCTLOG_new_from_base64()\fR will return 1 on success, 0 otherwise.
  207. .SH "SEE ALSO"
  208. .IX Header "SEE ALSO"
  209. \&\fBct\fR\|(7)
  210. .SH "HISTORY"
  211. .IX Header "HISTORY"
  212. The functions \fBCTLOG_new_ex()\fR and \fBCTLOG_new_from_base64_ex()\fR
  213. were added in OpenSSL 3.0. All other functions were added in OpenSSL 1.1.0.
  214. .SH "COPYRIGHT"
  215. .IX Header "COPYRIGHT"
  216. Copyright 2016\-2024 The OpenSSL Project Authors. All Rights Reserved.
  217. .PP
  218. Licensed under the Apache License 2.0 (the \*(L"License\*(R"). You may not use
  219. this file except in compliance with the License. You can obtain a copy
  220. in the file \s-1LICENSE\s0 in the source distribution or at
  221. <https://www.openssl.org/source/license.html>.