OSSL_STORE_SEARCH.3ossl 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  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 "OSSL_STORE_SEARCH 3ossl"
  136. .TH OSSL_STORE_SEARCH 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. OSSL_STORE_SEARCH,
  143. OSSL_STORE_SEARCH_by_name,
  144. OSSL_STORE_SEARCH_by_issuer_serial,
  145. OSSL_STORE_SEARCH_by_key_fingerprint,
  146. OSSL_STORE_SEARCH_by_alias,
  147. OSSL_STORE_SEARCH_free,
  148. OSSL_STORE_SEARCH_get_type,
  149. OSSL_STORE_SEARCH_get0_name,
  150. OSSL_STORE_SEARCH_get0_serial,
  151. OSSL_STORE_SEARCH_get0_bytes,
  152. OSSL_STORE_SEARCH_get0_string,
  153. OSSL_STORE_SEARCH_get0_digest
  154. \&\- Type and functions to create OSSL_STORE search criteria
  155. .SH "SYNOPSIS"
  156. .IX Header "SYNOPSIS"
  157. .Vb 1
  158. \& #include <openssl/store.h>
  159. \&
  160. \& typedef struct ossl_store_search_st OSSL_STORE_SEARCH;
  161. \&
  162. \& OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name);
  163. \& OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name,
  164. \& const ASN1_INTEGER
  165. \& *serial);
  166. \& OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest,
  167. \& const unsigned char
  168. \& *bytes, int len);
  169. \& OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias);
  170. \&
  171. \& void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search);
  172. \&
  173. \& int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion);
  174. \& X509_NAME *OSSL_STORE_SEARCH_get0_name(OSSL_STORE_SEARCH *criterion);
  175. \& const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH
  176. \& *criterion);
  177. \& const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH
  178. \& *criterion, size_t *length);
  179. \& const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion);
  180. \& const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH
  181. \& *criterion);
  182. .Ve
  183. .SH "DESCRIPTION"
  184. .IX Header "DESCRIPTION"
  185. These functions are used to specify search criteria to help search for specific
  186. objects through other names than just the \s-1URI\s0 that's given to \fBOSSL_STORE_open()\fR.
  187. For example, this can be useful for an application that has received a \s-1URI\s0
  188. and then wants to add on search criteria in a uniform and supported manner.
  189. .SS "Types"
  190. .IX Subsection "Types"
  191. \&\fB\s-1OSSL_STORE_SEARCH\s0\fR is an opaque type that holds the constructed search
  192. criterion, and that can be given to an \s-1OSSL_STORE\s0 context with
  193. \&\fBOSSL_STORE_find()\fR.
  194. .PP
  195. The calling application owns the allocation of an \fB\s-1OSSL_STORE_SEARCH\s0\fR at all
  196. times, and should therefore be careful not to deallocate it before
  197. \&\fBOSSL_STORE_close()\fR has been called for the \s-1OSSL_STORE\s0 context it was given
  198. to.
  199. .SS "Application Functions"
  200. .IX Subsection "Application Functions"
  201. \&\fBOSSL_STORE_SEARCH_by_name()\fR,
  202. \&\fBOSSL_STORE_SEARCH_by_issuer_serial()\fR,
  203. \&\fBOSSL_STORE_SEARCH_by_key_fingerprint()\fR,
  204. and \fBOSSL_STORE_SEARCH_by_alias()\fR
  205. are used to create an \fB\s-1OSSL_STORE_SEARCH\s0\fR from a subject name, an issuer name
  206. and serial number pair, a key fingerprint, and an alias (for example a friendly
  207. name).
  208. The parameters that are provided are not copied, only referred to in a
  209. criterion, so they must have at least the same life time as the created
  210. \&\fB\s-1OSSL_STORE_SEARCH\s0\fR.
  211. .PP
  212. \&\fBOSSL_STORE_SEARCH_free()\fR is used to free the \fB\s-1OSSL_STORE_SEARCH\s0\fR.
  213. If the argument is \s-1NULL,\s0 nothing is done.
  214. .SS "Loader Functions"
  215. .IX Subsection "Loader Functions"
  216. \&\fBOSSL_STORE_SEARCH_get_type()\fR returns the criterion type for the given
  217. \&\fB\s-1OSSL_STORE_SEARCH\s0\fR.
  218. .PP
  219. \&\fBOSSL_STORE_SEARCH_get0_name()\fR, \fBOSSL_STORE_SEARCH_get0_serial()\fR,
  220. \&\fBOSSL_STORE_SEARCH_get0_bytes()\fR, \fBOSSL_STORE_SEARCH_get0_string()\fR,
  221. and \fBOSSL_STORE_SEARCH_get0_digest()\fR
  222. are used to retrieve different data from a \fB\s-1OSSL_STORE_SEARCH\s0\fR, as
  223. available for each type.
  224. For more information, see \*(L"\s-1SUPPORTED CRITERION TYPES\*(R"\s0 below.
  225. .SH "SUPPORTED CRITERION TYPES"
  226. .IX Header "SUPPORTED CRITERION TYPES"
  227. Currently supported criterion types are:
  228. .IP "\s-1OSSL_STORE_SEARCH_BY_NAME\s0" 4
  229. .IX Item "OSSL_STORE_SEARCH_BY_NAME"
  230. This criterion supports a search by exact match of subject name.
  231. The subject name itself is a \fBX509_NAME\fR pointer.
  232. A criterion of this type is created with \fBOSSL_STORE_SEARCH_by_name()\fR,
  233. and the actual subject name is retrieved with \fBOSSL_STORE_SEARCH_get0_name()\fR.
  234. .IP "\s-1OSSL_STORE_SEARCH_BY_ISSUER_SERIAL\s0" 4
  235. .IX Item "OSSL_STORE_SEARCH_BY_ISSUER_SERIAL"
  236. This criterion supports a search by exact match of both issuer name and serial
  237. number.
  238. The issuer name itself is a \fBX509_NAME\fR pointer, and the serial number is
  239. a \fB\s-1ASN1_INTEGER\s0\fR pointer.
  240. A criterion of this type is created with \fBOSSL_STORE_SEARCH_by_issuer_serial()\fR
  241. and the actual issuer name and serial number are retrieved with
  242. \&\fBOSSL_STORE_SEARCH_get0_name()\fR and \fBOSSL_STORE_SEARCH_get0_serial()\fR.
  243. .IP "\s-1OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT\s0" 4
  244. .IX Item "OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT"
  245. This criterion supports a search by exact match of key fingerprint.
  246. The key fingerprint in itself is a string of bytes and its length, as
  247. well as the algorithm that was used to compute the fingerprint.
  248. The digest may be left unspecified (\s-1NULL\s0), and in that case, the
  249. loader has to decide on a default digest and compare fingerprints
  250. accordingly.
  251. A criterion of this type is created with \fBOSSL_STORE_SEARCH_by_key_fingerprint()\fR
  252. and the actual fingerprint and its length can be retrieved with
  253. \&\fBOSSL_STORE_SEARCH_get0_bytes()\fR.
  254. The digest can be retrieved with \fBOSSL_STORE_SEARCH_get0_digest()\fR.
  255. .IP "\s-1OSSL_STORE_SEARCH_BY_ALIAS\s0" 4
  256. .IX Item "OSSL_STORE_SEARCH_BY_ALIAS"
  257. This criterion supports a search by match of an alias of some kind.
  258. The alias in itself is a simple C string.
  259. A criterion of this type is created with \fBOSSL_STORE_SEARCH_by_alias()\fR
  260. and the actual alias is retrieved with \fBOSSL_STORE_SEARCH_get0_string()\fR.
  261. .SH "RETURN VALUES"
  262. .IX Header "RETURN VALUES"
  263. \&\fBOSSL_STORE_SEARCH_by_name()\fR,
  264. \&\fBOSSL_STORE_SEARCH_by_issuer_serial()\fR,
  265. \&\fBOSSL_STORE_SEARCH_by_key_fingerprint()\fR,
  266. and \fBOSSL_STORE_SEARCH_by_alias()\fR
  267. return a \fB\s-1OSSL_STORE_SEARCH\s0\fR pointer on success, or \s-1NULL\s0 on failure.
  268. .PP
  269. \&\fBOSSL_STORE_SEARCH_get_type()\fR returns the criterion type of the given
  270. \&\fB\s-1OSSL_STORE_SEARCH\s0\fR.
  271. There is no error value.
  272. .PP
  273. \&\fBOSSL_STORE_SEARCH_get0_name()\fR returns a \fBX509_NAME\fR pointer on success,
  274. or \s-1NULL\s0 when the given \fB\s-1OSSL_STORE_SEARCH\s0\fR was of a different type.
  275. .PP
  276. \&\fBOSSL_STORE_SEARCH_get0_serial()\fR returns a \fB\s-1ASN1_INTEGER\s0\fR pointer on success,
  277. or \s-1NULL\s0 when the given \fB\s-1OSSL_STORE_SEARCH\s0\fR was of a different type.
  278. .PP
  279. \&\fBOSSL_STORE_SEARCH_get0_bytes()\fR returns a \fBconst unsigned char\fR pointer and
  280. sets \fI*length\fR to the strings length on success, or \s-1NULL\s0 when the given
  281. \&\fB\s-1OSSL_STORE_SEARCH\s0\fR was of a different type.
  282. .PP
  283. \&\fBOSSL_STORE_SEARCH_get0_string()\fR returns a \fBconst char\fR pointer on success,
  284. or \s-1NULL\s0 when the given \fB\s-1OSSL_STORE_SEARCH\s0\fR was of a different type.
  285. .PP
  286. \&\fBOSSL_STORE_SEARCH_get0_digest()\fR returns a \fBconst \s-1EVP_MD\s0\fR pointer.
  287. \&\s-1NULL\s0 is a valid value and means that the store loader default will
  288. be used when applicable.
  289. .SH "SEE ALSO"
  290. .IX Header "SEE ALSO"
  291. \&\fBossl_store\fR\|(7), \fBOSSL_STORE_supports_search\fR\|(3), \fBOSSL_STORE_find\fR\|(3)
  292. .SH "HISTORY"
  293. .IX Header "HISTORY"
  294. \&\fB\s-1OSSL_STORE_SEARCH\s0\fR,
  295. \&\fBOSSL_STORE_SEARCH_by_name()\fR,
  296. \&\fBOSSL_STORE_SEARCH_by_issuer_serial()\fR,
  297. \&\fBOSSL_STORE_SEARCH_by_key_fingerprint()\fR,
  298. \&\fBOSSL_STORE_SEARCH_by_alias()\fR,
  299. \&\fBOSSL_STORE_SEARCH_free()\fR,
  300. \&\fBOSSL_STORE_SEARCH_get_type()\fR,
  301. \&\fBOSSL_STORE_SEARCH_get0_name()\fR,
  302. \&\fBOSSL_STORE_SEARCH_get0_serial()\fR,
  303. \&\fBOSSL_STORE_SEARCH_get0_bytes()\fR,
  304. and \fBOSSL_STORE_SEARCH_get0_string()\fR
  305. were added in OpenSSL 1.1.1.
  306. .SH "COPYRIGHT"
  307. .IX Header "COPYRIGHT"
  308. Copyright 2018\-2024 The OpenSSL Project Authors. All Rights Reserved.
  309. .PP
  310. Licensed under the Apache License 2.0 (the \*(L"License\*(R"). You may not use
  311. this file except in compliance with the License. You can obtain a copy
  312. in the file \s-1LICENSE\s0 in the source distribution or at
  313. <https://www.openssl.org/source/license.html>.