Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=int8), | intent(in), | dimension(:) | :: | buffer | ||
integer, | intent(in) | :: | d |
function sha3( buffer, d ) ! SHA3 can produce variable-length digests, having length d in bits ! we assume that d is a multiple of 8 integer(kind=int8), dimension(:), intent(in) :: buffer integer, intent(in) :: d ! output length integer(kind=int8), dimension(d/8) :: sha3 select case ( d ) case ( 224 ) ! SHA3 224 sha3 = sha3_keccak( buffer, 224, 448 ) case ( 256 ) ! SHA3 256 sha3 = sha3_keccak( buffer, 256, 512 ) case ( 384 ) ! SHA3 384 sha3 = sha3_keccak( buffer, 384, 768 ) case ( 512 ) ! SHA3 512 sha3 = sha3_keccak( buffer, 512, 1024 ) case default if ( d > 0 ) then sha3 = sha3_keccak( buffer, d, 256 ) else sha3 = sha3_keccak( buffer, -d, 512 ) endif end select end function sha3