gpg-interface.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #ifndef GPG_INTERFACE_H
  2. #define GPG_INTERFACE_H
  3. struct strbuf;
  4. #define GPG_VERIFY_VERBOSE 1
  5. #define GPG_VERIFY_RAW 2
  6. #define GPG_VERIFY_OMIT_STATUS 4
  7. enum signature_trust_level {
  8. TRUST_UNDEFINED,
  9. TRUST_NEVER,
  10. TRUST_MARGINAL,
  11. TRUST_FULLY,
  12. TRUST_ULTIMATE,
  13. };
  14. struct signature_check {
  15. char *payload;
  16. char *gpg_output;
  17. char *gpg_status;
  18. /*
  19. * possible "result":
  20. * 0 (not checked)
  21. * N (checked but no further result)
  22. * G (good)
  23. * B (bad)
  24. */
  25. char result;
  26. char *signer;
  27. char *key;
  28. char *fingerprint;
  29. char *primary_key_fingerprint;
  30. enum signature_trust_level trust_level;
  31. };
  32. void signature_check_clear(struct signature_check *sigc);
  33. /*
  34. * Look at GPG signed content (e.g. a signed tag object), whose
  35. * payload is followed by a detached signature on it. Return the
  36. * offset where the embedded detached signature begins, or the end of
  37. * the data when there is no such signature.
  38. */
  39. size_t parse_signature(const char *buf, size_t size);
  40. /*
  41. * Create a detached signature for the contents of "buffer" and append
  42. * it after "signature"; "buffer" and "signature" can be the same
  43. * strbuf instance, which would cause the detached signature appended
  44. * at the end.
  45. */
  46. int sign_buffer(struct strbuf *buffer, struct strbuf *signature,
  47. const char *signing_key);
  48. int git_gpg_config(const char *, const char *, void *);
  49. void set_signing_key(const char *);
  50. const char *get_signing_key(void);
  51. int check_signature(const char *payload, size_t plen,
  52. const char *signature, size_t slen,
  53. struct signature_check *sigc);
  54. void print_signature_buffer(const struct signature_check *sigc,
  55. unsigned flags);
  56. #endif