forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			107 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			107 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | /* | |||
|  |  * Copyright (C)2005-2019 Haxe Foundation | |||
|  |  * | |||
|  |  * Permission is hereby granted, free of charge, to any person obtaining a | |||
|  |  * copy of this software and associated documentation files (the "Software"), | |||
|  |  * to deal in the Software without restriction, including without limitation | |||
|  |  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | |||
|  |  * and/or sell copies of the Software, and to permit persons to whom the | |||
|  |  * Software is furnished to do so, subject to the following conditions: | |||
|  |  * | |||
|  |  * The above copyright notice and this permission notice shall be included in | |||
|  |  * all copies or substantial portions of the Software. | |||
|  |  * | |||
|  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
|  |  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
|  |  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
|  |  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
|  |  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |||
|  |  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |||
|  |  * DEALINGS IN THE SOFTWARE. | |||
|  |  */ | |||
|  | 
 | |||
|  | package python.lib; | |||
|  | 
 | |||
|  | import python.Bytes; | |||
|  | import python.Set; | |||
|  | 
 | |||
|  | @:pythonImport("hashlib") | |||
|  | extern class Hashlib { | |||
|  | 	/** | |||
|  | 		A set containing the names of the hash algorithms guaranteed to be supported by this module on all platforms. | |||
|  | 		Note that ‘md5’ is in this list despite some upstream vendors offering an odd “FIPS compliant” Python build that excludes it. | |||
|  | 	**/ | |||
|  | 	static var algorithms_guaranteed(default, null):Set<String>; | |||
|  | 
 | |||
|  | 	/** | |||
|  | 		A set containing the names of the hash algorithms that are available in the running Python interpreter. | |||
|  | 		These names will be recognized when passed to new(). algorithms_guaranteed will always be a subset. | |||
|  | 		The same algorithm may appear multiple times in this set under different names (thanks to OpenSSL). | |||
|  | 	**/ | |||
|  | 	static var algorithms_available(default, null):Set<String>; | |||
|  | 
 | |||
|  | 	/** | |||
|  | 		A generic constructor that takes the string name of the desired algorithm as its first parameter. | |||
|  | 		It also exists to allow access to the above listed hashes as well as any other algorithms that your OpenSSL library may offer. | |||
|  | 		The named constructors are much faster than new() and should be preferred. | |||
|  | 	**/ | |||
|  | 	@:native("new") | |||
|  | 	static function new_(name:String, ?data:Bytes):HashlibHash; | |||
|  | 
 | |||
|  | 	static function sha1():HashlibHash; | |||
|  | 	static function sha224():HashlibHash; | |||
|  | 	static function sha256():HashlibHash; | |||
|  | 	static function sha384():HashlibHash; | |||
|  | 	static function sha512():HashlibHash; | |||
|  | 	static function blake2b():HashlibHash; | |||
|  | 	static function blake2s():HashlibHash; | |||
|  | 	static function md5():HashlibHash; | |||
|  | 	static function sha3_224():HashlibHash; | |||
|  | 	static function sha3_256():HashlibHash; | |||
|  | 	static function sha3_384():HashlibHash; | |||
|  | 	static function sha3_512():HashlibHash; | |||
|  | 	static function shake_128():HashlibHash; | |||
|  | 	static function shake_256():HashlibHash; | |||
|  | } | |||
|  | 
 | |||
|  | extern class HashlibHash { | |||
|  | 	/** | |||
|  | 		The size of the resulting hash in bytes. | |||
|  | 	**/ | |||
|  | 	var digest_size(default, null):Int; | |||
|  | 
 | |||
|  | 	/** | |||
|  | 		The internal block size of the hash algorithm in bytes. | |||
|  | 	**/ | |||
|  | 	var block_size(default, null):Int; | |||
|  | 
 | |||
|  | 	/** | |||
|  | 		The canonical name of this hash, always lowercase and always suitable as a parameter to new() to create another hash of this type. | |||
|  | 	**/ | |||
|  | 	var name:String; | |||
|  | 
 | |||
|  | 	/** | |||
|  | 		Update the hash object with the object arg, which must be interpretable as a buffer of bytes. | |||
|  | 		Repeated calls are equivalent to a single call with the concatenation of all the arguments: m.update(a); m.update(b) is equivalent to m.update(a+b). | |||
|  | 	**/ | |||
|  | 	function update(a:Bytes):Void; | |||
|  | 
 | |||
|  | 	/** | |||
|  | 		Return the digest of the data passed to the update() method so far. | |||
|  | 		This is a bytes object of size digest_size which may contain bytes in the whole range from 0 to 255. | |||
|  | 	**/ | |||
|  | 	function digest():Bytes; | |||
|  | 
 | |||
|  | 	/** | |||
|  | 		Like digest() except the digest is returned as a string object of double length, containing only hexadecimal digits. | |||
|  | 		This may be used to exchange the value safely in email or other non-binary environments. | |||
|  | 	**/ | |||
|  | 	function hexdigest():String; | |||
|  | 
 | |||
|  | 	/** | |||
|  | 		Return a copy (“clone”) of the hash object. | |||
|  | 		This can be used to efficiently compute the digests of data sharing a common initial substring. | |||
|  | 	**/ | |||
|  | 	function copy():HashlibHash; | |||
|  | } |