krl.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
  3. *
  4. * Permission to use, copy, modify, and distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. /* $OpenBSD: krl.h,v 1.8 2020/04/03 02:26:56 djm Exp $ */
  17. #ifndef _KRL_H
  18. #define _KRL_H
  19. /* Functions to manage key revocation lists */
  20. #define KRL_MAGIC "SSHKRL\n\0"
  21. #define KRL_FORMAT_VERSION 1
  22. /* KRL section types */
  23. #define KRL_SECTION_CERTIFICATES 1
  24. #define KRL_SECTION_EXPLICIT_KEY 2
  25. #define KRL_SECTION_FINGERPRINT_SHA1 3
  26. #define KRL_SECTION_SIGNATURE 4
  27. #define KRL_SECTION_FINGERPRINT_SHA256 5
  28. /* KRL_SECTION_CERTIFICATES subsection types */
  29. #define KRL_SECTION_CERT_SERIAL_LIST 0x20
  30. #define KRL_SECTION_CERT_SERIAL_RANGE 0x21
  31. #define KRL_SECTION_CERT_SERIAL_BITMAP 0x22
  32. #define KRL_SECTION_CERT_KEY_ID 0x23
  33. struct sshkey;
  34. struct sshbuf;
  35. struct ssh_krl;
  36. struct ssh_krl *ssh_krl_init(void);
  37. void ssh_krl_free(struct ssh_krl *krl);
  38. void ssh_krl_set_version(struct ssh_krl *krl, u_int64_t version);
  39. int ssh_krl_set_comment(struct ssh_krl *krl, const char *comment);
  40. int ssh_krl_revoke_cert_by_serial(struct ssh_krl *krl,
  41. const struct sshkey *ca_key, u_int64_t serial);
  42. int ssh_krl_revoke_cert_by_serial_range(struct ssh_krl *krl,
  43. const struct sshkey *ca_key, u_int64_t lo, u_int64_t hi);
  44. int ssh_krl_revoke_cert_by_key_id(struct ssh_krl *krl,
  45. const struct sshkey *ca_key, const char *key_id);
  46. int ssh_krl_revoke_key_explicit(struct ssh_krl *krl, const struct sshkey *key);
  47. int ssh_krl_revoke_key_sha1(struct ssh_krl *krl, const u_char *p, size_t len);
  48. int ssh_krl_revoke_key_sha256(struct ssh_krl *krl, const u_char *p, size_t len);
  49. int ssh_krl_revoke_key(struct ssh_krl *krl, const struct sshkey *key);
  50. int ssh_krl_to_blob(struct ssh_krl *krl, struct sshbuf *buf,
  51. struct sshkey **sign_keys, u_int nsign_keys);
  52. int ssh_krl_from_blob(struct sshbuf *buf, struct ssh_krl **krlp,
  53. const struct sshkey **sign_ca_keys, size_t nsign_ca_keys);
  54. int ssh_krl_check_key(struct ssh_krl *krl, const struct sshkey *key);
  55. int ssh_krl_file_contains_key(const char *path, const struct sshkey *key);
  56. int krl_dump(struct ssh_krl *krl, FILE *f);
  57. #endif /* _KRL_H */