PageRenderTime 66ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/hphp/runtime/ext/openssl/ext_openssl.h

http://github.com/facebook/hiphop-php
C Header | 228 lines | 194 code | 14 blank | 20 comment | 1 complexity | 7c5ffcb1f83e7430558f0370317ff055 MD5 | raw file
Possible License(s): LGPL-2.1, BSD-2-Clause, BSD-3-Clause, MPL-2.0-no-copyleft-exception, MIT, LGPL-2.0, Apache-2.0
  1. /*
  2. +----------------------------------------------------------------------+
  3. | HipHop for PHP |
  4. +----------------------------------------------------------------------+
  5. | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
  6. | Copyright (c) 1997-2010 The PHP Group |
  7. +----------------------------------------------------------------------+
  8. | This source file is subject to version 3.01 of the PHP license, |
  9. | that is bundled with this package in the file LICENSE, and is |
  10. | available through the world-wide-web at the following url: |
  11. | http://www.php.net/license/3_01.txt |
  12. | If you did not receive a copy of the PHP license and are unable to |
  13. | obtain it through the world-wide-web, please send a note to |
  14. | license@php.net so we can mail you a copy immediately. |
  15. +----------------------------------------------------------------------+
  16. */
  17. #ifndef incl_HPHP_EXT_OPENSSL_H_
  18. #define incl_HPHP_EXT_OPENSSL_H_
  19. #include <folly/portability/OpenSSL.h>
  20. #include "hphp/runtime/ext/extension.h"
  21. #include <openssl/evp.h>
  22. #include <openssl/opensslv.h>
  23. #include <openssl/pkcs7.h>
  24. namespace HPHP {
  25. ///////////////////////////////////////////////////////////////////////////////
  26. // bitfields
  27. extern const int64_t k_OPENSSL_RAW_DATA;
  28. extern const int64_t k_OPENSSL_ZERO_PADDING;
  29. extern const int64_t k_OPENSSL_NO_PADDING;
  30. extern const int64_t k_OPENSSL_PKCS1_OAEP_PADDING;
  31. // exported constants
  32. extern const int64_t k_OPENSSL_SSLV23_PADDING;
  33. extern const int64_t k_OPENSSL_PKCS1_PADDING;
  34. #define OPENSSL_ALGO_SHA1 1
  35. #define OPENSSL_ALGO_MD5 2
  36. #define OPENSSL_ALGO_MD4 3
  37. #ifdef HAVE_OPENSSL_MD2_H
  38. #define OPENSSL_ALGO_MD2 4
  39. #endif
  40. #define OPENSSL_ALGO_DSS1 5
  41. #if OPENSSL_VERSION_NUMBER >= 0x0090708fL
  42. #define OPENSSL_ALGO_SHA224 6
  43. #define OPENSSL_ALGO_SHA256 7
  44. #define OPENSSL_ALGO_SHA384 8
  45. #define OPENSSL_ALGO_SHA512 9
  46. #define OPENSSL_ALGO_RMD160 10
  47. #endif
  48. #if !defined(OPENSSL_NO_EC) && defined(EVP_PKEY_EC)
  49. #define HAVE_EVP_PKEY_EC 1
  50. #endif
  51. enum php_openssl_key_type {
  52. OPENSSL_KEYTYPE_RSA,
  53. OPENSSL_KEYTYPE_DSA,
  54. OPENSSL_KEYTYPE_DH,
  55. OPENSSL_KEYTYPE_DEFAULT = OPENSSL_KEYTYPE_RSA,
  56. #ifdef HAVE_EVP_PKEY_EC
  57. OPENSSL_KEYTYPE_EC = OPENSSL_KEYTYPE_DH + 1
  58. #endif
  59. };
  60. enum php_openssl_cipher_type {
  61. PHP_OPENSSL_CIPHER_RC2_40,
  62. PHP_OPENSSL_CIPHER_RC2_128,
  63. PHP_OPENSSL_CIPHER_RC2_64,
  64. PHP_OPENSSL_CIPHER_DES,
  65. PHP_OPENSSL_CIPHER_3DES,
  66. PHP_OPENSSL_CIPHER_DEFAULT = PHP_OPENSSL_CIPHER_RC2_40
  67. };
  68. bool HHVM_FUNCTION(openssl_csr_export_to_file, const Variant& csr,
  69. const String& outfilename,
  70. bool notext = true);
  71. bool HHVM_FUNCTION(openssl_csr_export, const Variant& csr, Variant& out,
  72. bool notext = true);
  73. Variant HHVM_FUNCTION(openssl_csr_get_public_key, const Variant& csr);
  74. Variant HHVM_FUNCTION(openssl_csr_get_subject, const Variant& csr,
  75. bool use_shortnames = true);
  76. Variant HHVM_FUNCTION(openssl_csr_new,
  77. const Variant& dn, Variant& privkey,
  78. const Variant& configargs = uninit_variant,
  79. const Variant& extraattribs = uninit_variant);
  80. Variant HHVM_FUNCTION(openssl_csr_sign,
  81. const Variant& csr,
  82. const Variant& cacert,
  83. const Variant& priv_key, int days,
  84. const Variant& configargs = uninit_variant,
  85. int serial = 0);
  86. Variant HHVM_FUNCTION(openssl_error_string);
  87. bool HHVM_FUNCTION(openssl_open, const String& sealed_data, Variant& open_data,
  88. const String& env_key,
  89. const Variant& priv_key_id,
  90. const String& method = null_string,
  91. const String& iv = null_string);
  92. bool HHVM_FUNCTION(openssl_pkcs12_export_to_file, const Variant& x509,
  93. const String& filename,
  94. const Variant& priv_key,
  95. const String& pass,
  96. const Variant& args = uninit_variant);
  97. bool HHVM_FUNCTION(openssl_pkcs12_export, const Variant& x509, Variant& out,
  98. const Variant& priv_key,
  99. const String& pass,
  100. const Variant& args = uninit_variant);
  101. bool HHVM_FUNCTION(openssl_pkcs12_read, const String& pkcs12, Variant& certs,
  102. const String& pass);
  103. bool HHVM_FUNCTION(openssl_pkcs7_decrypt, const String& infilename,
  104. const String& outfilename,
  105. const Variant& recipcert,
  106. const Variant& recipkey = uninit_variant);
  107. bool HHVM_FUNCTION(openssl_pkcs7_encrypt, const String& infilename,
  108. const String& outfilename,
  109. const Variant& recipcerts,
  110. const Array& headers,
  111. int flags = 0,
  112. int cipherid = PHP_OPENSSL_CIPHER_RC2_40);
  113. bool HHVM_FUNCTION(openssl_pkcs7_sign, const String& infilename,
  114. const String& outfilename,
  115. const Variant& signcert,
  116. const Variant& privkey,
  117. const Variant& headers,
  118. int flags = PKCS7_DETACHED,
  119. const String& extracerts = null_string);
  120. Variant openssl_pkcs7_verify_core(const String& filename, int flags,
  121. const Variant& voutfilename /* = null_string */,
  122. const Variant& vcainfo /* = null_array */,
  123. const Variant& vextracerts /* = null_string */,
  124. const Variant& vcontent /* = null_string */,
  125. bool ignore_cert_expiration);
  126. Variant HHVM_FUNCTION(openssl_pkcs7_verify, const String& filename, int flags,
  127. const Variant& outfilename = null_string,
  128. const Variant& cainfo = null_array,
  129. const Variant& extracerts = null_string,
  130. const Variant& content = null_string);
  131. Variant HHVM_FUNCTION(fb_unsafe_openssl_pkcs7_verify_ignore_cert_expiration,
  132. const String& filename, int flags,
  133. const Variant& outfilename = null_string,
  134. const Variant& cainfo = null_array,
  135. const Variant& extracerts = null_string,
  136. const Variant& content = null_string);
  137. bool HHVM_FUNCTION(openssl_pkey_export_to_file, const Variant& key,
  138. const String& outfilename,
  139. const String& passphrase = null_string,
  140. const Variant& configargs = uninit_variant);
  141. bool HHVM_FUNCTION(openssl_pkey_export, const Variant& key, Variant& out,
  142. const String& passphrase = null_string,
  143. const Variant& configargs = uninit_variant);
  144. Array HHVM_FUNCTION(openssl_pkey_get_details, const Resource& key);
  145. Variant HHVM_FUNCTION(openssl_pkey_get_private, const Variant& key,
  146. const String& passphrase = null_string);
  147. Variant HHVM_FUNCTION(openssl_pkey_get_public, const Variant& certificate);
  148. Variant HHVM_FUNCTION(openssl_pkey_new,
  149. const Variant& configargs = uninit_variant);
  150. bool HHVM_FUNCTION(openssl_private_decrypt, const String& data,
  151. Variant& decrypted,
  152. const Variant& key,
  153. int padding = k_OPENSSL_PKCS1_PADDING);
  154. bool HHVM_FUNCTION(openssl_private_encrypt, const String& data,
  155. Variant& crypted,
  156. const Variant& key,
  157. int padding = k_OPENSSL_PKCS1_PADDING);
  158. bool HHVM_FUNCTION(openssl_public_decrypt, const String& data,
  159. Variant& decrypted,
  160. const Variant& key,
  161. int padding = k_OPENSSL_PKCS1_PADDING);
  162. bool HHVM_FUNCTION(openssl_public_encrypt, const String& data,
  163. Variant& crypted,
  164. const Variant& key,
  165. int padding = k_OPENSSL_PKCS1_PADDING);
  166. Variant HHVM_FUNCTION(openssl_seal, const String& data, Variant& sealed_data,
  167. Variant& env_keys,
  168. const Array& pub_key_ids,
  169. const String& method,
  170. Variant& iv);
  171. bool HHVM_FUNCTION(openssl_sign, const String& data, Variant& signature,
  172. const Variant& priv_key_id,
  173. const Variant& signature_alg = OPENSSL_ALGO_SHA1);
  174. Variant HHVM_FUNCTION(openssl_verify, const String& data,
  175. const String& signature,
  176. const Variant& pub_key_id,
  177. const Variant& signature_alg = OPENSSL_ALGO_SHA1);
  178. bool HHVM_FUNCTION(openssl_x509_check_private_key, const Variant& cert,
  179. const Variant& key);
  180. Variant HHVM_FUNCTION(openssl_x509_checkpurpose, const Variant& x509cert,
  181. int purpose,
  182. const Array& cainfo = null_array,
  183. const String& untrustedfile = null_string);
  184. bool HHVM_FUNCTION(openssl_x509_export_to_file, const Variant& x509,
  185. const String& outfilename,
  186. bool notext = true);
  187. bool HHVM_FUNCTION(openssl_x509_export, const Variant& x509, Variant& output,
  188. bool notext = true);
  189. Variant HHVM_FUNCTION(openssl_x509_parse, const Variant& x509cert,
  190. bool shortnames = true);
  191. Variant HHVM_FUNCTION(openssl_x509_read, const Variant& x509certdata);
  192. Variant HHVM_FUNCTION(openssl_random_pseudo_bytes, int length,
  193. bool& crypto_strong);
  194. Variant HHVM_FUNCTION(openssl_cipher_iv_length, const String& method);
  195. Variant HHVM_FUNCTION(openssl_encrypt, const String& data, const String& method,
  196. const String& password,
  197. int options = 0,
  198. const String& iv = null_string,
  199. const String& aad = null_string,
  200. int tag_length = 16);
  201. Variant HHVM_FUNCTION(openssl_decrypt, const String& data, const String& method,
  202. const String& password,
  203. int options = 0,
  204. const String& iv = null_string,
  205. const String& tag = null_string,
  206. const String& aad = null_string);
  207. Variant HHVM_FUNCTION(openssl_digest, const String& data, const String& method,
  208. bool raw_output = false);
  209. Array HHVM_FUNCTION(openssl_get_cipher_methods, bool aliases = false);
  210. Variant HHVM_FUNCTION(openssl_get_curve_names);
  211. Array HHVM_FUNCTION(openssl_get_md_methods, bool aliases = false);
  212. ///////////////////////////////////////////////////////////////////////////////
  213. }
  214. #endif // incl_HPHP_EXT_OPENSSL_H_