Added generichash keygen
This commit is contained in:
		
							parent
							
								
									16cb5c2dee
								
							
						
					
					
						commit
						1878144b8f
					
				@ -6,6 +6,8 @@ package com.ionspin.kotlin.crypto.generichash
 | 
			
		||||
 * on 21-Aug-2020
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
val crypto_generichash_BYTES = 32
 | 
			
		||||
 | 
			
		||||
data class GenericHashState(val hashLength: Int, val internalState: GenericHashStateInternal)
 | 
			
		||||
 | 
			
		||||
expect class GenericHashStateInternal
 | 
			
		||||
@ -18,6 +20,8 @@ expect object GenericHash {
 | 
			
		||||
    fun genericHashUpdate(state: GenericHashState, messagePart : UByteArray)
 | 
			
		||||
    fun genericHashFinal(state : GenericHashState) : UByteArray
 | 
			
		||||
 | 
			
		||||
    fun genericHashKeygen() : UByteArray
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -26,6 +26,8 @@ interface JsSodiumInterface {
 | 
			
		||||
 | 
			
		||||
    fun crypto_generichash_final(state: dynamic, hashLength: Int) : Uint8Array
 | 
			
		||||
 | 
			
		||||
    fun crypto_generichash_keygen() : Uint8Array
 | 
			
		||||
 | 
			
		||||
    //Short hash
 | 
			
		||||
    fun crypto_shorthash(data : Uint8Array, key: Uint8Array) : Uint8Array
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -44,4 +44,8 @@ actual object GenericHash {
 | 
			
		||||
    actual fun genericHashFinal(state: GenericHashState): UByteArray {
 | 
			
		||||
        return getSodium().crypto_generichash_final(state.internalState, state.hashLength).toUByteArray()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun genericHashKeygen(): UByteArray {
 | 
			
		||||
        return getSodium().crypto_generichash_keygen().toUByteArray()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -49,5 +49,11 @@ actual object GenericHash {
 | 
			
		||||
        return hashResult.asUByteArray()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun genericHashKeygen(): UByteArray {
 | 
			
		||||
        val generatedKey = UByteArray(crypto_generichash_BYTES)
 | 
			
		||||
        sodium.crypto_generichash_keygen(generatedKey.asByteArray())
 | 
			
		||||
        return generatedKey
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ import kotlinx.cinterop.reinterpret
 | 
			
		||||
import libsodium.crypto_generichash
 | 
			
		||||
import libsodium.crypto_generichash_final
 | 
			
		||||
import libsodium.crypto_generichash_init
 | 
			
		||||
import libsodium.crypto_generichash_keygen
 | 
			
		||||
import libsodium.crypto_generichash_update
 | 
			
		||||
import platform.posix.malloc
 | 
			
		||||
 | 
			
		||||
@ -88,5 +89,13 @@ actual object GenericHash {
 | 
			
		||||
        return hashResult
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    actual fun genericHashKeygen(): UByteArray {
 | 
			
		||||
        val generatedKey = UByteArray(crypto_generichash_BYTES)
 | 
			
		||||
        val generatedKeyPinned = generatedKey.pin()
 | 
			
		||||
        crypto_generichash_keygen(generatedKeyPinned.toPtr())
 | 
			
		||||
        generatedKeyPinned.unpin()
 | 
			
		||||
        return generatedKey
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -67,8 +67,8 @@
 | 
			
		||||
| crypto_generichash_blake2b_salt_personal | |   
 | 
			
		||||
| crypto_generichash_final | :heavy_check_mark:  |                                   
 | 
			
		||||
| crypto_generichash_init | :heavy_check_mark:  |                                     
 | 
			
		||||
| crypto_generichash_keygen | |  
 | 
			
		||||
| crypto_generichash_update | :heavy_check_mark:  |                                 
 | 
			
		||||
| crypto_generichash_keygen | :heavy_check_mark: |  
 | 
			
		||||
| crypto_generichash_update | :heavy_check_mark: |                                 
 | 
			
		||||
| crypto_hash | |    
 | 
			
		||||
| crypto_hash_sha256 | | 
 | 
			
		||||
| crypto_hash_sha256_final | |   
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user