sha3 Function

public function sha3(buffer, d)

Arguments

Type IntentOptional Attributes Name
integer(kind=int8), intent(in), dimension(:) :: buffer
integer, intent(in) :: d

Return Value ../../../integer(kind=int8), dimension(d/8)


Source Code

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