Branch: Tag:

2017-10-17

2017-10-17 11:33:44 by Pontus Östlund <ponost@roxen.com>

Added some helper methods to Crypto.

string md5(string data, void|bool raw)
string sha1(string data, void|bool raw)
string sha256(string data, void|bool raw)

These methods return a hexadecimal string unless `raw` is given. These methods are composed via the helper method `hash()`.

string hmac_md5(string secret, string data)
string hmac_sha1(string secret, string data)
string hmac_sha256(string secret, string data)

These methods return a hexadecimal string. These methods are composed via the helper method `hash_hmac()` which can be used to construct new hmac hashing functions.

349:    "backtrace_frame": "predef::Error.Generic":1, "predef::Error.Generic.create":1, "predef::MasterObject.describe_backtrace":1,    "bind": "7.8::Stdio.Port.create":1,    "bind()": "7.8::Stdio.Port.create":1, -  "bool": "predef::Crypto.DH.Parameters.validate":1, "predef::Crypto.verify_crypt_md5":1, "predef::Function.Placeholder.Expr":1, "predef::Function.Placeholder.Expr.create":1, "predef::HTTPAccept.Loop.create":1, "predef::HTTPAccept.Loop.logp":1, "predef::Image.PSD._decode":6, "predef::Image.PSD.decode_layers":2, "predef::Image.WebP.encode":6, "predef::Image.XCF._decode":5, "predef::Image.XCF.decode_layers":3, "predef::NetUtils.NetMask.ip_in":1, "predef::NetUtils.get_network_type":1, "predef::NetUtils.has_ipv4":1, "predef::NetUtils.has_ipv6":1, "predef::NetUtils.ip_and_port_of":1, "predef::NetUtils.ip_in_block":1, "predef::NetUtils.ip_less_global":2, "predef::NetUtils.ip_of":1, "predef::NetUtils.ip_to_string":1, "predef::NetUtils.is_ipv6":1, "predef::NetUtils.is_local_host":2, "predef::NetUtils.local_ips":1, "predef::NetUtils.local_ips_raw":1, "predef::NetUtils.port_of":1, "predef::NetUtils.sort_addresses":1, "predef::NetUtils.valid_domain_name":1, "predef::Pike.Watchdog.add_probe":1, "predef::Protocols.HTTP.Promise.Arguments":1, "predef::Protocols.HTTP.Promise.Result":1, "predef::Stdio.Buffer.range_error":1, "predef::Stdio.Buffer.read_buffer":1, "predef::Stdio.Buffer.read_hbuffer":1, "predef::Stdio.FakePipe.InternalSocket.read":1, "predef::Tools.Markdown.encode_html":1, "predef::Tools.Markdown.parse":10, "predef::Web.Auth.OAuth2.Base.do_query":1, "predef::Web.Auth.OAuth2.Base.get_token_from_jwt":1, "predef::Web.Auth.OAuth2.Base.refresh_access_token":1, "predef::Web.Auth.OAuth2.Base.request_access_token":1, "predef::Web.Auth.OAuth2.Client.get_token_from_jwt":1, "predef::Web.Auth.OAuth2.Client.refresh_access_token":1, "predef::Web.Auth.OAuth2.Client.request_access_token":1, +  "bool": "predef::Crypto":1, "predef::Crypto.DH.Parameters.validate":1, "predef::Crypto.hash":2, "predef::Crypto.hash_hmac":3, "predef::Crypto.make_hash_func":1, "predef::Crypto.make_hash_hmac_func":1, "predef::Crypto.md5":3, "predef::Crypto.verify_crypt_md5":1, "predef::Function.Placeholder.Expr":1, "predef::Function.Placeholder.Expr.create":1, "predef::HTTPAccept.Loop.create":1, "predef::HTTPAccept.Loop.logp":1, "predef::Image.PSD._decode":6, "predef::Image.PSD.decode_layers":2, "predef::Image.WebP.encode":6, "predef::Image.XCF._decode":5, "predef::Image.XCF.decode_layers":3, "predef::NetUtils.NetMask.ip_in":1, "predef::NetUtils.get_network_type":1, "predef::NetUtils.has_ipv4":1, "predef::NetUtils.has_ipv6":1, "predef::NetUtils.ip_and_port_of":1, "predef::NetUtils.ip_in_block":1, "predef::NetUtils.ip_less_global":2, "predef::NetUtils.ip_of":1, "predef::NetUtils.ip_to_string":1, "predef::NetUtils.is_ipv6":1, "predef::NetUtils.is_local_host":2, "predef::NetUtils.local_ips":1, "predef::NetUtils.local_ips_raw":1, "predef::NetUtils.port_of":1, "predef::NetUtils.sort_addresses":1, "predef::NetUtils.valid_domain_name":1, "predef::Pike.Watchdog.add_probe":1, "predef::Protocols.HTTP.Promise.Arguments":1, "predef::Protocols.HTTP.Promise.Result":1, "predef::Stdio.Buffer.range_error":1, "predef::Stdio.Buffer.read_buffer":1, "predef::Stdio.Buffer.read_hbuffer":1, "predef::Stdio.FakePipe.InternalSocket.read":1, "predef::Tools.Markdown.encode_html":1, "predef::Tools.Markdown.parse":10, "predef::Web.Auth.OAuth2.Base.do_query":1, "predef::Web.Auth.OAuth2.Base.get_token_from_jwt":1, "predef::Web.Auth.OAuth2.Base.refresh_access_token":1, "predef::Web.Auth.OAuth2.Base.request_access_token":1, "predef::Web.Auth.OAuth2.Client.get_token_from_jwt":1, "predef::Web.Auth.OAuth2.Client.refresh_access_token":1, "predef::Web.Auth.OAuth2.Client.request_access_token":1,    "bpn": "predef::Image.XPM._xpm_write_rows":1,    "bytes": "predef::Stdio.Buffer.read":1,    "calendar.time.set_timezone": "predef::Calendar.Timezone":1,
743:   "predef::CompilerEnvironment.compile": "compile_file()" "compile_string()"   "predef::CompilerEnvironment.get_default_module": "Pike_compiler()->get_default_module()"   "predef::Concurrent.resolve": "on_success" - "predef::Crypto": "Buffer" "CAMELLIA" "CAMELLIA.EAX" + "predef::Crypto": "Buffer" "CAMELLIA" "CAMELLIA.EAX" "bool"   "predef::Crypto.ChaCha20.POLY1305": "CHACHA"   "predef::Crypto.DH.Parameters.create": "DSA_State"   "predef::Crypto.DH.Parameters.validate": "bool"
775:   "predef::Crypto.RSA.PSSState.jose_sign": "salt_size()"   "predef::Crypto.RSA.PSSState.pkcs_sign": "random" "salt_size()"   "predef::Crypto.RSA.PSSState.pkcs_signature_algorithm_id": "Sequence" "salt_size()" + "predef::Crypto.hash": "bool" + "predef::Crypto.hash_hmac": "bool" + "predef::Crypto.make_hash_func": "bool" + "predef::Crypto.make_hash_hmac_func": "bool" + "predef::Crypto.md5": "bool"   "predef::Crypto.verify_crypt_md5": "bool"   "predef::Debug": "_Debug"   "predef::Debug.Profiling.display": "Debug.Watchdog"