1/* This is a generated file */
2#ifndef __hx509_protos_h__
3#define __hx509_protos_h__
4
5#include <stdarg.h>
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10
11#ifndef HX509_LIB
12#ifndef HX509_LIB_FUNCTION
13#if defined(_WIN32)
14#define HX509_LIB_FUNCTION __declspec(dllimport)
15#define HX509_LIB_CALL __stdcall
16#define HX509_LIB_VARIABLE __declspec(dllimport)
17#else
18#define HX509_LIB_FUNCTION
19#define HX509_LIB_CALL
20#define HX509_LIB_VARIABLE
21#endif
22#endif
23#endif
24void
25hx509_bitstring_print (
26	const heim_bit_string */*b*/,
27	hx509_vprint_func /*func*/,
28	void */*ctx*/);
29
30int
31hx509_ca_sign (
32	hx509_context /*context*/,
33	hx509_ca_tbs /*tbs*/,
34	hx509_cert /*signer*/,
35	hx509_cert */*certificate*/);
36
37int
38hx509_ca_sign_self (
39	hx509_context /*context*/,
40	hx509_ca_tbs /*tbs*/,
41	hx509_private_key /*signer*/,
42	hx509_cert */*certificate*/);
43
44int
45hx509_ca_tbs_add_crl_dp_uri (
46	hx509_context /*context*/,
47	hx509_ca_tbs /*tbs*/,
48	const char */*uri*/,
49	hx509_name /*issuername*/);
50
51int
52hx509_ca_tbs_add_eku (
53	hx509_context /*context*/,
54	hx509_ca_tbs /*tbs*/,
55	const heim_oid */*oid*/);
56
57int
58hx509_ca_tbs_add_san_hostname (
59	hx509_context /*context*/,
60	hx509_ca_tbs /*tbs*/,
61	const char */*dnsname*/);
62
63int
64hx509_ca_tbs_add_san_jid (
65	hx509_context /*context*/,
66	hx509_ca_tbs /*tbs*/,
67	const char */*jid*/);
68
69int
70hx509_ca_tbs_add_san_ms_upn (
71	hx509_context /*context*/,
72	hx509_ca_tbs /*tbs*/,
73	const char */*principal*/);
74
75int
76hx509_ca_tbs_add_san_otherName (
77	hx509_context /*context*/,
78	hx509_ca_tbs /*tbs*/,
79	const heim_oid */*oid*/,
80	const heim_octet_string */*os*/);
81
82int
83hx509_ca_tbs_add_san_pkinit (
84	hx509_context /*context*/,
85	hx509_ca_tbs /*tbs*/,
86	const char */*principal*/);
87
88int
89hx509_ca_tbs_add_san_rfc822name (
90	hx509_context /*context*/,
91	hx509_ca_tbs /*tbs*/,
92	const char */*rfc822Name*/);
93
94void
95hx509_ca_tbs_free (hx509_ca_tbs */*tbs*/);
96
97int
98hx509_ca_tbs_init (
99	hx509_context /*context*/,
100	hx509_ca_tbs */*tbs*/);
101
102int
103hx509_ca_tbs_set_ca (
104	hx509_context /*context*/,
105	hx509_ca_tbs /*tbs*/,
106	int /*pathLenConstraint*/);
107
108int
109hx509_ca_tbs_set_domaincontroller (
110	hx509_context /*context*/,
111	hx509_ca_tbs /*tbs*/);
112
113int
114hx509_ca_tbs_set_notAfter (
115	hx509_context /*context*/,
116	hx509_ca_tbs /*tbs*/,
117	time_t /*t*/);
118
119int
120hx509_ca_tbs_set_notAfter_lifetime (
121	hx509_context /*context*/,
122	hx509_ca_tbs /*tbs*/,
123	time_t /*delta*/);
124
125int
126hx509_ca_tbs_set_notBefore (
127	hx509_context /*context*/,
128	hx509_ca_tbs /*tbs*/,
129	time_t /*t*/);
130
131int
132hx509_ca_tbs_set_proxy (
133	hx509_context /*context*/,
134	hx509_ca_tbs /*tbs*/,
135	int /*pathLenConstraint*/);
136
137int
138hx509_ca_tbs_set_serialnumber (
139	hx509_context /*context*/,
140	hx509_ca_tbs /*tbs*/,
141	const heim_integer */*serialNumber*/);
142
143int
144hx509_ca_tbs_set_spki (
145	hx509_context /*context*/,
146	hx509_ca_tbs /*tbs*/,
147	const SubjectPublicKeyInfo */*spki*/);
148
149int
150hx509_ca_tbs_set_subject (
151	hx509_context /*context*/,
152	hx509_ca_tbs /*tbs*/,
153	hx509_name /*subject*/);
154
155int
156hx509_ca_tbs_set_template (
157	hx509_context /*context*/,
158	hx509_ca_tbs /*tbs*/,
159	int /*flags*/,
160	hx509_cert /*cert*/);
161
162int
163hx509_ca_tbs_set_unique (
164	hx509_context /*context*/,
165	hx509_ca_tbs /*tbs*/,
166	const heim_bit_string */*subjectUniqueID*/,
167	const heim_bit_string */*issuerUniqueID*/);
168
169int
170hx509_ca_tbs_subject_expand (
171	hx509_context /*context*/,
172	hx509_ca_tbs /*tbs*/,
173	hx509_env /*env*/);
174
175const struct units *
176hx509_ca_tbs_template_units (void);
177
178int
179hx509_cert_binary (
180	hx509_context /*context*/,
181	hx509_cert /*c*/,
182	heim_octet_string */*os*/);
183
184int
185hx509_cert_check_eku (
186	hx509_context /*context*/,
187	hx509_cert /*cert*/,
188	const heim_oid */*eku*/,
189	int /*allow_any_eku*/);
190
191int
192hx509_cert_cmp (
193	hx509_cert /*p*/,
194	hx509_cert /*q*/);
195
196int
197hx509_cert_find_subjectAltName_otherName (
198	hx509_context /*context*/,
199	hx509_cert /*cert*/,
200	const heim_oid */*oid*/,
201	hx509_octet_string_list */*list*/);
202
203void
204hx509_cert_free (hx509_cert /*cert*/);
205
206int
207hx509_cert_get_SPKI (
208	hx509_context /*context*/,
209	hx509_cert /*p*/,
210	SubjectPublicKeyInfo */*spki*/);
211
212int
213hx509_cert_get_SPKI_AlgorithmIdentifier (
214	hx509_context /*context*/,
215	hx509_cert /*p*/,
216	AlgorithmIdentifier */*alg*/);
217
218hx509_cert_attribute
219hx509_cert_get_attribute (
220	hx509_cert /*cert*/,
221	const heim_oid */*oid*/);
222
223int
224hx509_cert_get_base_subject (
225	hx509_context /*context*/,
226	hx509_cert /*c*/,
227	hx509_name */*name*/);
228
229const char *
230hx509_cert_get_friendly_name (hx509_cert /*cert*/);
231
232int
233hx509_cert_get_issuer (
234	hx509_cert /*p*/,
235	hx509_name */*name*/);
236
237int
238hx509_cert_get_issuer_unique_id (
239	hx509_context /*context*/,
240	hx509_cert /*p*/,
241	heim_bit_string */*issuer*/);
242
243time_t
244hx509_cert_get_notAfter (hx509_cert /*p*/);
245
246time_t
247hx509_cert_get_notBefore (hx509_cert /*p*/);
248
249int
250hx509_cert_get_serialnumber (
251	hx509_cert /*p*/,
252	heim_integer */*i*/);
253
254int
255hx509_cert_get_subject (
256	hx509_cert /*p*/,
257	hx509_name */*name*/);
258
259int
260hx509_cert_get_subject_unique_id (
261	hx509_context /*context*/,
262	hx509_cert /*p*/,
263	heim_bit_string */*subject*/);
264
265int
266hx509_cert_have_private_key (hx509_cert /*p*/);
267
268int
269hx509_cert_init (
270	hx509_context /*context*/,
271	const Certificate */*c*/,
272	hx509_cert */*cert*/);
273
274int
275hx509_cert_init_data (
276	hx509_context /*context*/,
277	const void */*ptr*/,
278	size_t /*len*/,
279	hx509_cert */*cert*/);
280
281int
282hx509_cert_keyusage_print (
283	hx509_context /*context*/,
284	hx509_cert /*c*/,
285	char **/*s*/);
286
287int
288hx509_cert_public_encrypt (
289	hx509_context /*context*/,
290	const heim_octet_string */*cleartext*/,
291	const hx509_cert /*p*/,
292	heim_oid */*encryption_oid*/,
293	heim_octet_string */*ciphertext*/);
294
295hx509_cert
296hx509_cert_ref (hx509_cert /*cert*/);
297
298int
299hx509_cert_set_friendly_name (
300	hx509_cert /*cert*/,
301	const char */*name*/);
302
303int
304hx509_certs_add (
305	hx509_context /*context*/,
306	hx509_certs /*certs*/,
307	hx509_cert /*cert*/);
308
309int
310hx509_certs_append (
311	hx509_context /*context*/,
312	hx509_certs /*to*/,
313	hx509_lock /*lock*/,
314	const char */*name*/);
315
316int
317hx509_certs_end_seq (
318	hx509_context /*context*/,
319	hx509_certs /*certs*/,
320	hx509_cursor /*cursor*/);
321
322int
323hx509_certs_filter (
324	hx509_context /*context*/,
325	hx509_certs /*certs*/,
326	const hx509_query */*q*/,
327	hx509_certs */*result*/);
328
329int
330hx509_certs_find (
331	hx509_context /*context*/,
332	hx509_certs /*certs*/,
333	const hx509_query */*q*/,
334	hx509_cert */*r*/);
335
336void
337hx509_certs_free (hx509_certs */*certs*/);
338
339int
340hx509_certs_info (
341	hx509_context /*context*/,
342	hx509_certs /*certs*/,
343	int (*/*func*/)(void *, const char *),
344	void */*ctx*/);
345
346int
347hx509_certs_init (
348	hx509_context /*context*/,
349	const char */*name*/,
350	int /*flags*/,
351	hx509_lock /*lock*/,
352	hx509_certs */*certs*/);
353
354#ifdef __BLOCKS__
355int
356hx509_certs_iter (
357	hx509_context /*context*/,
358	hx509_certs /*certs*/,
359	int (^func)(hx509_cert));
360#endif /* __BLOCKS__ */
361
362int
363hx509_certs_iter_f (
364	hx509_context /*context*/,
365	hx509_certs /*certs*/,
366	int (*/*func*/)(hx509_context, void *, hx509_cert),
367	void */*ctx*/);
368
369int
370hx509_certs_merge (
371	hx509_context /*context*/,
372	hx509_certs /*to*/,
373	hx509_certs /*from*/);
374
375int
376hx509_certs_next_cert (
377	hx509_context /*context*/,
378	hx509_certs /*certs*/,
379	hx509_cursor /*cursor*/,
380	hx509_cert */*cert*/);
381
382hx509_certs
383hx509_certs_ref (hx509_certs /*certs*/);
384
385int
386hx509_certs_start_seq (
387	hx509_context /*context*/,
388	hx509_certs /*certs*/,
389	hx509_cursor */*cursor*/);
390
391int
392hx509_certs_store (
393	hx509_context /*context*/,
394	hx509_certs /*certs*/,
395	int /*flags*/,
396	hx509_lock /*lock*/);
397
398int
399hx509_ci_print_names (
400	hx509_context /*context*/,
401	void */*ctx*/,
402	hx509_cert /*c*/);
403
404void
405hx509_clear_error_string (hx509_context /*context*/);
406
407int
408hx509_cms_create_signed (
409	hx509_context /*context*/,
410	int /*flags*/,
411	const heim_oid */*eContentType*/,
412	const void */*data*/,
413	size_t /*length*/,
414	const AlgorithmIdentifier */*digest_alg*/,
415	hx509_certs /*certs*/,
416	hx509_peer_info /*peer*/,
417	hx509_certs /*anchors*/,
418	hx509_certs /*pool*/,
419	heim_octet_string */*signed_data*/);
420
421int
422hx509_cms_create_signed_1 (
423	hx509_context /*context*/,
424	int /*flags*/,
425	const heim_oid */*eContentType*/,
426	const void */*data*/,
427	size_t /*length*/,
428	const AlgorithmIdentifier */*digest_alg*/,
429	hx509_cert /*cert*/,
430	hx509_peer_info /*peer*/,
431	hx509_certs /*anchors*/,
432	hx509_certs /*pool*/,
433	heim_octet_string */*signed_data*/);
434
435int
436hx509_cms_decrypt_encrypted (
437	hx509_context /*context*/,
438	hx509_lock /*lock*/,
439	const void */*data*/,
440	size_t /*length*/,
441	heim_oid */*contentType*/,
442	heim_octet_string */*content*/);
443
444int
445hx509_cms_envelope_1 (
446	hx509_context /*context*/,
447	int /*flags*/,
448	hx509_cert /*cert*/,
449	const void */*data*/,
450	size_t /*length*/,
451	const heim_oid */*encryption_type*/,
452	const heim_oid */*contentType*/,
453	heim_octet_string */*content*/);
454
455int
456hx509_cms_unenvelope (
457	hx509_context /*context*/,
458	hx509_certs /*certs*/,
459	int /*flags*/,
460	const void */*data*/,
461	size_t /*length*/,
462	const heim_octet_string */*encryptedContent*/,
463	time_t /*time_now*/,
464	heim_oid */*contentType*/,
465	heim_octet_string */*content*/);
466
467int
468hx509_cms_unwrap_ContentInfo (
469	const heim_octet_string */*in*/,
470	heim_oid */*oid*/,
471	heim_octet_string */*out*/,
472	int */*have_data*/);
473
474int
475hx509_cms_verify_signed (
476	hx509_context /*context*/,
477	hx509_verify_ctx /*ctx*/,
478	unsigned int /*flags*/,
479	const void */*data*/,
480	size_t /*length*/,
481	const heim_octet_string */*signedContent*/,
482	hx509_certs /*pool*/,
483	heim_oid */*contentType*/,
484	heim_octet_string */*content*/,
485	hx509_certs */*signer_certs*/);
486
487int
488hx509_cms_wrap_ContentInfo (
489	const heim_oid */*oid*/,
490	const heim_octet_string */*buf*/,
491	heim_octet_string */*res*/);
492
493void
494hx509_context_free (hx509_context */*context*/);
495
496int
497hx509_context_init (hx509_context */*context*/);
498
499void
500hx509_context_set_missing_revoke (
501	hx509_context /*context*/,
502	int /*flag*/);
503
504int
505hx509_crl_add_revoked_certs (
506	hx509_context /*context*/,
507	hx509_crl /*crl*/,
508	hx509_certs /*certs*/);
509
510int
511hx509_crl_alloc (
512	hx509_context /*context*/,
513	hx509_crl */*crl*/);
514
515void
516hx509_crl_free (
517	hx509_context /*context*/,
518	hx509_crl */*crl*/);
519
520int
521hx509_crl_lifetime (
522	hx509_context /*context*/,
523	hx509_crl /*crl*/,
524	int /*delta*/);
525
526int
527hx509_crl_sign (
528	hx509_context /*context*/,
529	hx509_cert /*signer*/,
530	hx509_crl /*crl*/,
531	heim_octet_string */*os*/);
532
533const AlgorithmIdentifier *
534hx509_crypto_aes128_cbc (void);
535
536const AlgorithmIdentifier *
537hx509_crypto_aes256_cbc (void);
538
539void
540hx509_crypto_allow_weak (hx509_crypto /*crypto*/);
541
542int
543hx509_crypto_available (
544	hx509_context /*context*/,
545	int /*type*/,
546	hx509_cert /*source*/,
547	AlgorithmIdentifier **/*val*/,
548	unsigned int */*plen*/);
549
550int
551hx509_crypto_decrypt (
552	hx509_crypto /*crypto*/,
553	const void */*data*/,
554	const size_t /*length*/,
555	heim_octet_string */*ivec*/,
556	heim_octet_string */*clear*/);
557
558const AlgorithmIdentifier *
559hx509_crypto_des_rsdi_ede3_cbc (void);
560
561void
562hx509_crypto_destroy (hx509_crypto /*crypto*/);
563
564int
565hx509_crypto_encrypt (
566	hx509_crypto /*crypto*/,
567	const void */*data*/,
568	const size_t /*length*/,
569	const heim_octet_string */*ivec*/,
570	heim_octet_string **/*ciphertext*/);
571
572const heim_oid *
573hx509_crypto_enctype_by_name (const char */*name*/);
574
575void
576hx509_crypto_free_algs (
577	AlgorithmIdentifier */*val*/,
578	unsigned int /*len*/);
579
580int
581hx509_crypto_get_params (
582	hx509_context /*context*/,
583	hx509_crypto /*crypto*/,
584	const heim_octet_string */*ivec*/,
585	heim_octet_string */*param*/);
586
587int
588hx509_crypto_init (
589	hx509_context /*context*/,
590	const char */*provider*/,
591	const heim_oid */*enctype*/,
592	hx509_crypto */*crypto*/);
593
594const char *
595hx509_crypto_provider (hx509_crypto /*crypto*/);
596
597int
598hx509_crypto_random_iv (
599	hx509_crypto /*crypto*/,
600	heim_octet_string */*ivec*/);
601
602int
603hx509_crypto_select (
604	const hx509_context /*context*/,
605	int /*type*/,
606	const hx509_private_key /*source*/,
607	hx509_peer_info /*peer*/,
608	AlgorithmIdentifier */*selected*/);
609
610int
611hx509_crypto_set_key_data (
612	hx509_crypto /*crypto*/,
613	const void */*data*/,
614	size_t /*length*/);
615
616int
617hx509_crypto_set_key_name (
618	hx509_crypto /*crypto*/,
619	const char */*name*/);
620
621void
622hx509_crypto_set_padding (
623	hx509_crypto /*crypto*/,
624	int /*padding_type*/);
625
626int
627hx509_crypto_set_params (
628	hx509_context /*context*/,
629	hx509_crypto /*crypto*/,
630	const heim_octet_string */*param*/,
631	heim_octet_string */*ivec*/);
632
633int
634hx509_crypto_set_random_key (
635	hx509_crypto /*crypto*/,
636	heim_octet_string */*key*/);
637
638int
639hx509_env_add (
640	hx509_context /*context*/,
641	hx509_env */*env*/,
642	const char */*key*/,
643	const char */*value*/);
644
645int
646hx509_env_add_binding (
647	hx509_context /*context*/,
648	hx509_env */*env*/,
649	const char */*key*/,
650	hx509_env /*list*/);
651
652const char *
653hx509_env_find (
654	hx509_context /*context*/,
655	hx509_env /*env*/,
656	const char */*key*/);
657
658hx509_env
659hx509_env_find_binding (
660	hx509_context /*context*/,
661	hx509_env /*env*/,
662	const char */*key*/);
663
664void
665hx509_env_free (hx509_env */*env*/);
666
667const char *
668hx509_env_lfind (
669	hx509_context /*context*/,
670	hx509_env /*env*/,
671	const char */*key*/,
672	size_t /*len*/);
673
674void
675hx509_err (
676	hx509_context /*context*/,
677	int /*exit_code*/,
678	int /*error_code*/,
679	const char */*fmt*/,
680	...);
681
682hx509_private_key_ops *
683hx509_find_private_alg (const heim_oid */*oid*/);
684
685void
686hx509_free_error_string (char */*str*/);
687
688void
689hx509_free_octet_string_list (hx509_octet_string_list */*list*/);
690
691int
692hx509_general_name_unparse (
693	GeneralName */*name*/,
694	char **/*str*/);
695
696char *
697hx509_get_error_string (
698	hx509_context /*context*/,
699	int /*error_code*/);
700
701int
702hx509_get_one_cert (
703	hx509_context /*context*/,
704	hx509_certs /*certs*/,
705	hx509_cert */*c*/);
706
707int
708hx509_lock_add_cert (
709	hx509_context /*context*/,
710	hx509_lock /*lock*/,
711	hx509_cert /*cert*/);
712
713int
714hx509_lock_add_certs (
715	hx509_context /*context*/,
716	hx509_lock /*lock*/,
717	hx509_certs /*certs*/);
718
719int
720hx509_lock_add_password (
721	hx509_lock /*lock*/,
722	const char */*password*/);
723
724int
725hx509_lock_command_string (
726	hx509_lock /*lock*/,
727	const char */*string*/);
728
729void
730hx509_lock_free (hx509_lock /*lock*/);
731
732int
733hx509_lock_init (
734	hx509_context /*context*/,
735	hx509_lock */*lock*/);
736
737int
738hx509_lock_prompt (
739	hx509_lock /*lock*/,
740	hx509_prompt */*prompt*/);
741
742void
743hx509_lock_reset_certs (
744	hx509_context /*context*/,
745	hx509_lock /*lock*/);
746
747void
748hx509_lock_reset_passwords (hx509_lock /*lock*/);
749
750void
751hx509_lock_reset_promper (hx509_lock /*lock*/);
752
753int
754hx509_lock_set_prompter (
755	hx509_lock /*lock*/,
756	hx509_prompter_fct /*prompt*/,
757	void */*data*/);
758
759int
760hx509_name_binary (
761	const hx509_name /*name*/,
762	heim_octet_string */*os*/);
763
764int
765hx509_name_cmp (
766	hx509_name /*n1*/,
767	hx509_name /*n2*/);
768
769int
770hx509_name_copy (
771	hx509_context /*context*/,
772	const hx509_name /*from*/,
773	hx509_name */*to*/);
774
775int
776hx509_name_expand (
777	hx509_context /*context*/,
778	hx509_name /*name*/,
779	hx509_env /*env*/);
780
781void
782hx509_name_free (hx509_name */*name*/);
783
784int
785hx509_name_is_null_p (const hx509_name /*name*/);
786
787int
788hx509_name_normalize (
789	hx509_context /*context*/,
790	hx509_name /*name*/);
791
792int
793hx509_name_to_Name (
794	const hx509_name /*from*/,
795	Name */*to*/);
796
797int
798hx509_name_to_string (
799	const hx509_name /*name*/,
800	char **/*str*/);
801
802int
803hx509_ocsp_request (
804	hx509_context /*context*/,
805	hx509_certs /*reqcerts*/,
806	hx509_certs /*pool*/,
807	hx509_cert /*signer*/,
808	const AlgorithmIdentifier */*digest*/,
809	heim_octet_string */*request*/,
810	heim_octet_string */*nonce*/);
811
812int
813hx509_ocsp_verify (
814	hx509_context /*context*/,
815	time_t /*now*/,
816	hx509_cert /*cert*/,
817	int /*flags*/,
818	const void */*data*/,
819	size_t /*length*/,
820	time_t */*expiration*/);
821
822void
823hx509_oid_print (
824	const heim_oid */*oid*/,
825	hx509_vprint_func /*func*/,
826	void */*ctx*/);
827
828int
829hx509_oid_sprint (
830	const heim_oid */*oid*/,
831	char **/*str*/);
832
833int
834hx509_parse_name (
835	hx509_context /*context*/,
836	const char */*str*/,
837	hx509_name */*name*/);
838
839int
840hx509_parse_private_key (
841	hx509_context /*context*/,
842	const AlgorithmIdentifier */*keyai*/,
843	const void */*data*/,
844	size_t /*len*/,
845	hx509_key_format_t /*format*/,
846	hx509_private_key */*private_key*/);
847
848int
849hx509_peer_info_add_cms_alg (
850	hx509_context /*context*/,
851	hx509_peer_info /*peer*/,
852	const AlgorithmIdentifier */*val*/);
853
854int
855hx509_peer_info_alloc (
856	hx509_context /*context*/,
857	hx509_peer_info */*peer*/);
858
859void
860hx509_peer_info_free (hx509_peer_info /*peer*/);
861
862int
863hx509_peer_info_set_cert (
864	hx509_peer_info /*peer*/,
865	hx509_cert /*cert*/);
866
867int
868hx509_peer_info_set_cms_algs (
869	hx509_context /*context*/,
870	hx509_peer_info /*peer*/,
871	const AlgorithmIdentifier */*val*/,
872	size_t /*len*/);
873
874int
875hx509_pem_add_header (
876	hx509_pem_header **/*headers*/,
877	const char */*header*/,
878	const char */*value*/);
879
880const char *
881hx509_pem_find_header (
882	const hx509_pem_header */*h*/,
883	const char */*header*/);
884
885void
886hx509_pem_free_header (hx509_pem_header */*headers*/);
887
888int
889hx509_pem_read (
890	hx509_context /*context*/,
891	FILE */*f*/,
892	hx509_pem_read_func /*func*/,
893	void */*ctx*/);
894
895int
896hx509_pem_write (
897	hx509_context /*context*/,
898	const char */*type*/,
899	hx509_pem_header */*headers*/,
900	FILE */*f*/,
901	const void */*data*/,
902	size_t /*size*/);
903
904int
905hx509_print_cert (
906	hx509_context /*context*/,
907	hx509_cert /*cert*/,
908	FILE */*out*/);
909
910void
911hx509_print_stdout (
912	void */*ctx*/,
913	const char */*fmt*/,
914	va_list /*va*/);
915
916int
917hx509_private_key2SPKI (
918	hx509_context /*context*/,
919	hx509_private_key /*private_key*/,
920	SubjectPublicKeyInfo */*spki*/);
921
922void
923hx509_private_key_assign_rsa (
924	hx509_private_key /*key*/,
925	void */*ptr*/);
926
927int
928hx509_private_key_free (hx509_private_key */*key*/);
929
930int
931hx509_private_key_init (
932	hx509_private_key */*key*/,
933	hx509_private_key_ops */*ops*/,
934	void */*keydata*/);
935
936int
937hx509_private_key_private_decrypt (
938	hx509_context /*context*/,
939	const heim_octet_string */*ciphertext*/,
940	const heim_oid */*encryption_oid*/,
941	hx509_private_key /*p*/,
942	heim_octet_string */*cleartext*/);
943
944int
945hx509_prompt_hidden (hx509_prompt_type /*type*/);
946
947int
948hx509_query_alloc (
949	hx509_context /*context*/,
950	hx509_query **/*q*/);
951
952void
953hx509_query_free (
954	hx509_context /*context*/,
955	hx509_query */*q*/);
956
957int
958hx509_query_match_cmp_func (
959	hx509_query */*q*/,
960	int (*/*func*/)(hx509_context, hx509_cert, void *),
961	void */*ctx*/);
962
963int
964hx509_query_match_eku (
965	hx509_query */*q*/,
966	const heim_oid */*eku*/);
967
968int
969hx509_query_match_expr (
970	hx509_context /*context*/,
971	hx509_query */*q*/,
972	const char */*expr*/);
973
974int
975hx509_query_match_friendly_name (
976	hx509_query */*q*/,
977	const char */*name*/);
978
979int
980hx509_query_match_issuer_serial (
981	hx509_query */*q*/,
982	const Name */*issuer*/,
983	const heim_integer */*serialNumber*/);
984
985void
986hx509_query_match_option (
987	hx509_query */*q*/,
988	hx509_query_option /*option*/);
989
990void
991hx509_query_statistic_file (
992	hx509_context /*context*/,
993	const char */*fn*/);
994
995void
996hx509_query_unparse_stats (
997	hx509_context /*context*/,
998	int /*printtype*/,
999	FILE */*out*/);
1000
1001void
1002hx509_request_free (hx509_request */*req*/);
1003
1004int
1005hx509_request_get_SubjectPublicKeyInfo (
1006	hx509_context /*context*/,
1007	hx509_request /*req*/,
1008	SubjectPublicKeyInfo */*key*/);
1009
1010int
1011hx509_request_get_name (
1012	hx509_context /*context*/,
1013	hx509_request /*req*/,
1014	hx509_name */*name*/);
1015
1016int
1017hx509_request_init (
1018	hx509_context /*context*/,
1019	hx509_request */*req*/);
1020
1021int
1022hx509_request_set_SubjectPublicKeyInfo (
1023	hx509_context /*context*/,
1024	hx509_request /*req*/,
1025	const SubjectPublicKeyInfo */*key*/);
1026
1027int
1028hx509_request_set_name (
1029	hx509_context /*context*/,
1030	hx509_request /*req*/,
1031	hx509_name /*name*/);
1032
1033int
1034hx509_revoke_add_crl (
1035	hx509_context /*context*/,
1036	hx509_revoke_ctx /*ctx*/,
1037	const char */*path*/);
1038
1039int
1040hx509_revoke_add_ocsp (
1041	hx509_context /*context*/,
1042	hx509_revoke_ctx /*ctx*/,
1043	const char */*path*/);
1044
1045void
1046hx509_revoke_free (hx509_revoke_ctx */*ctx*/);
1047
1048int
1049hx509_revoke_init (
1050	hx509_context /*context*/,
1051	hx509_revoke_ctx */*ctx*/);
1052
1053int
1054hx509_revoke_ocsp_print (
1055	hx509_context /*context*/,
1056	const char */*path*/,
1057	FILE */*out*/);
1058
1059int
1060hx509_revoke_verify (
1061	hx509_context /*context*/,
1062	hx509_revoke_ctx /*ctx*/,
1063	hx509_certs /*certs*/,
1064	time_t /*now*/,
1065	hx509_cert /*cert*/,
1066	hx509_cert /*parent_cert*/);
1067
1068void
1069hx509_set_error_string (
1070	hx509_context /*context*/,
1071	int /*flags*/,
1072	int /*code*/,
1073	const char */*fmt*/,
1074	...);
1075
1076void
1077hx509_set_error_stringv (
1078	hx509_context /*context*/,
1079	int /*flags*/,
1080	int /*code*/,
1081	const char */*fmt*/,
1082	va_list /*ap*/);
1083
1084const AlgorithmIdentifier *
1085hx509_signature_ecPublicKey (void);
1086
1087const AlgorithmIdentifier *
1088hx509_signature_ecdsa_with_sha1 (void);
1089
1090const AlgorithmIdentifier *
1091hx509_signature_ecdsa_with_sha256 (void);
1092
1093const AlgorithmIdentifier *
1094hx509_signature_md5 (void);
1095
1096const AlgorithmIdentifier *
1097hx509_signature_rsa (void);
1098
1099const AlgorithmIdentifier *
1100hx509_signature_rsa_pkcs1_x509 (void);
1101
1102const AlgorithmIdentifier *
1103hx509_signature_rsa_with_md5 (void);
1104
1105const AlgorithmIdentifier *
1106hx509_signature_rsa_with_sha1 (void);
1107
1108const AlgorithmIdentifier *
1109hx509_signature_rsa_with_sha256 (void);
1110
1111const AlgorithmIdentifier *
1112hx509_signature_rsa_with_sha384 (void);
1113
1114const AlgorithmIdentifier *
1115hx509_signature_rsa_with_sha512 (void);
1116
1117const AlgorithmIdentifier *
1118hx509_signature_sha1 (void);
1119
1120const AlgorithmIdentifier *
1121hx509_signature_sha256 (void);
1122
1123const AlgorithmIdentifier *
1124hx509_signature_sha384 (void);
1125
1126const AlgorithmIdentifier *
1127hx509_signature_sha512 (void);
1128
1129int
1130hx509_unparse_der_name (
1131	const void */*data*/,
1132	size_t /*length*/,
1133	char **/*str*/);
1134
1135int
1136hx509_validate_cert (
1137	hx509_context /*context*/,
1138	hx509_validate_ctx /*ctx*/,
1139	hx509_cert /*cert*/);
1140
1141void
1142hx509_validate_ctx_add_flags (
1143	hx509_validate_ctx /*ctx*/,
1144	int /*flags*/);
1145
1146void
1147hx509_validate_ctx_free (hx509_validate_ctx /*ctx*/);
1148
1149int
1150hx509_validate_ctx_init (
1151	hx509_context /*context*/,
1152	hx509_validate_ctx */*ctx*/);
1153
1154void
1155hx509_validate_ctx_set_print (
1156	hx509_validate_ctx /*ctx*/,
1157	hx509_vprint_func /*func*/,
1158	void */*c*/);
1159
1160void
1161hx509_verify_attach_anchors (
1162	hx509_verify_ctx /*ctx*/,
1163	hx509_certs /*set*/);
1164
1165void
1166hx509_verify_attach_revoke (
1167	hx509_verify_ctx /*ctx*/,
1168	hx509_revoke_ctx /*revoke_ctx*/);
1169
1170void
1171hx509_verify_ctx_f_allow_best_before_signature_algs (
1172	hx509_context /*ctx*/,
1173	int /*boolean*/);
1174
1175void
1176hx509_verify_ctx_f_allow_default_trustanchors (
1177	hx509_verify_ctx /*ctx*/,
1178	int /*boolean*/);
1179
1180void
1181hx509_verify_destroy_ctx (hx509_verify_ctx /*ctx*/);
1182
1183int
1184hx509_verify_hostname (
1185	hx509_context /*context*/,
1186	const hx509_cert /*cert*/,
1187	int /*flags*/,
1188	hx509_hostname_type /*type*/,
1189	const char */*hostname*/,
1190	const struct sockaddr */*sa*/,
1191	int /*sa_size*/);
1192
1193int
1194hx509_verify_init_ctx (
1195	hx509_context /*context*/,
1196	hx509_verify_ctx */*ctx*/);
1197
1198int
1199hx509_verify_path (
1200	hx509_context /*context*/,
1201	hx509_verify_ctx /*ctx*/,
1202	hx509_cert /*cert*/,
1203	hx509_certs /*pool*/);
1204
1205void
1206hx509_verify_set_max_depth (
1207	hx509_verify_ctx /*ctx*/,
1208	unsigned int /*max_depth*/);
1209
1210void
1211hx509_verify_set_proxy_certificate (
1212	hx509_verify_ctx /*ctx*/,
1213	int /*boolean*/);
1214
1215void
1216hx509_verify_set_strict_rfc3280_verification (
1217	hx509_verify_ctx /*ctx*/,
1218	int /*boolean*/);
1219
1220void
1221hx509_verify_set_time (
1222	hx509_verify_ctx /*ctx*/,
1223	time_t /*t*/);
1224
1225int
1226hx509_verify_signature (
1227	hx509_context /*context*/,
1228	const hx509_cert /*signer*/,
1229	const AlgorithmIdentifier */*alg*/,
1230	const heim_octet_string */*data*/,
1231	const heim_octet_string */*sig*/);
1232
1233void
1234hx509_xfree (void */*ptr*/);
1235
1236int
1237yywrap (void);
1238
1239#ifdef __cplusplus
1240}
1241#endif
1242
1243#endif /* __hx509_protos_h__ */
1244