openssl.d 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. module secured.openssl;
  2. import deimos.openssl.evp;
  3. import core.stdc.stdint;
  4. private:
  5. enum int EVP_PKEY_ALG_CTRL = 0x1000;
  6. enum int EVP_PKEY_CTRL_HKDF_MD = (EVP_PKEY_ALG_CTRL + 3);
  7. enum int EVP_PKEY_CTRL_HKDF_SALT = (EVP_PKEY_ALG_CTRL + 4);
  8. enum int EVP_PKEY_CTRL_HKDF_KEY = (EVP_PKEY_ALG_CTRL + 5);
  9. enum int EVP_PKEY_CTRL_HKDF_INFO = (EVP_PKEY_ALG_CTRL + 6);
  10. enum int EVP_PKEY_CTRL_HKDF_MODE = (EVP_PKEY_ALG_CTRL + 7);
  11. enum int EVP_PKEY_CTRL_PASS = (EVP_PKEY_ALG_CTRL + 8);
  12. enum int EVP_PKEY_CTRL_SCRYPT_SALT = (EVP_PKEY_ALG_CTRL + 9);
  13. enum int EVP_PKEY_CTRL_SCRYPT_N = (EVP_PKEY_ALG_CTRL + 10);
  14. enum int EVP_PKEY_CTRL_SCRYPT_R = (EVP_PKEY_ALG_CTRL + 11);
  15. enum int EVP_PKEY_CTRL_SCRYPT_P = (EVP_PKEY_ALG_CTRL + 12);
  16. enum int EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES = (EVP_PKEY_ALG_CTRL + 13);
  17. extern (C):
  18. nothrow:
  19. public:
  20. ulong ERR_get_error();
  21. ulong ERR_peek_error();
  22. void ERR_error_string_n(ulong e, char *buf, size_t len);
  23. void EVP_MD_CIPHER_free(EVP_CIPHER_CTX* free);
  24. struct ossl_param_st {
  25. char *key; /* the name of the parameter */
  26. uint data_type; /* declare what kind of content is in buffer */
  27. void *data; /* value being passed in or out */
  28. size_t data_size; /* data size */
  29. size_t return_size; /* returned content size */
  30. };
  31. ossl_param_st OSSL_PARAM_construct_utf8_string(const char *key, char *buf, size_t bsize);
  32. ossl_param_st OSSL_PARAM_construct_octet_string(const char *key, void *buf, size_t bsize);
  33. ossl_param_st OSSL_PARAM_construct_utf8_ptr(const char *key, char **buf, size_t bsize);
  34. ossl_param_st OSSL_PARAM_construct_octet_ptr(const char *key, void **buf, size_t bsize);
  35. ossl_param_st OSSL_PARAM_construct_end();
  36. int EVP_KDF_CTX_set_params(EVP_KDF_CTX* ctx, const(ossl_param_st)* params);
  37. const(EVP_MD)* EVP_sha512_224();
  38. const(EVP_MD)* EVP_sha512_256();
  39. const(EVP_MD)* EVP_sha3_224();
  40. const(EVP_MD)* EVP_sha3_256();
  41. const(EVP_MD)* EVP_sha3_384();
  42. const(EVP_MD)* EVP_sha3_512();
  43. extern(D):
  44. enum int EVP_PKEY_HKDF = 1036;
  45. enum int EVP_PKEY_SCRYPT = 973;
  46. enum int EVP_CTRL_AEAD_SET_IVLEN = 0x9;
  47. enum int EVP_CTRL_AEAD_GET_TAG = 0x10;
  48. enum int EVP_CTRL_AEAD_SET_TAG = 0x11;
  49. int EVP_PKEY_CTX_set1_pbe_pass(EVP_PKEY_CTX *pctx, const ubyte[] password) {
  50. return EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, EVP_PKEY_CTRL_PASS, cast(int)password.length, cast(void *)(password));
  51. }
  52. int EVP_PKEY_CTX_set1_scrypt_salt(EVP_PKEY_CTX *pctx, const ubyte[] salt) {
  53. return EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, EVP_PKEY_CTRL_SCRYPT_SALT, cast(int)salt.length, cast(void *)(salt));
  54. }
  55. int EVP_PKEY_CTX_set_scrypt_N(EVP_PKEY_CTX *pctx, ulong n) {
  56. return EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, EVP_PKEY_CTRL_SCRYPT_N, 0, cast(void*)n);
  57. }
  58. int EVP_PKEY_CTX_set_scrypt_r(EVP_PKEY_CTX *pctx, ulong r) {
  59. return EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, EVP_PKEY_CTRL_SCRYPT_R, 0, cast(void*)r);
  60. }
  61. int EVP_PKEY_CTX_set_scrypt_p(EVP_PKEY_CTX *pctx, ulong p) {
  62. return EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, EVP_PKEY_CTRL_SCRYPT_P, 0, cast(void*)p);
  63. }