alps_cache_sha256 Module

Incremental SHA-256, using unsigned 32-bit values held in int64 containers. All additions fit int64; masking implements modulo 2**32 without signed overflow.


Uses

  • module~~alps_cache_sha256~~UsesGraph module~alps_cache_sha256 alps_cache_sha256 iso_fortran_env iso_fortran_env module~alps_cache_sha256->iso_fortran_env

Used by

  • module~~alps_cache_sha256~~UsedByGraph module~alps_cache_sha256 alps_cache_sha256 module~alps_rel_cache alps_rel_cache module~alps_rel_cache->module~alps_cache_sha256 proc~derivative_f0_rel derivative_f0_rel proc~derivative_f0_rel->module~alps_rel_cache

Variables

Type Visibility Attributes Name Initial
integer(kind=int64), private, parameter :: mask32 = int(z'FFFFFFFF', int64)
integer(kind=int64), private, parameter :: constants(64) = [int(z'428A2F98', int64), int(z'71374491', int64), int(z'B5C0FBCF', int64), int(z'E9B5DBA5', int64), int(z'3956C25B', int64), int(z'59F111F1', int64), int(z'923F82A4', int64), int(z'AB1C5ED5', int64), int(z'D807AA98', int64), int(z'12835B01', int64), int(z'243185BE', int64), int(z'550C7DC3', int64), int(z'72BE5D74', int64), int(z'80DEB1FE', int64), int(z'9BDC06A7', int64), int(z'C19BF174', int64), int(z'E49B69C1', int64), int(z'EFBE4786', int64), int(z'0FC19DC6', int64), int(z'240CA1CC', int64), int(z'2DE92C6F', int64), int(z'4A7484AA', int64), int(z'5CB0A9DC', int64), int(z'76F988DA', int64), int(z'983E5152', int64), int(z'A831C66D', int64), int(z'B00327C8', int64), int(z'BF597FC7', int64), int(z'C6E00BF3', int64), int(z'D5A79147', int64), int(z'06CA6351', int64), int(z'14292967', int64), int(z'27B70A85', int64), int(z'2E1B2138', int64), int(z'4D2C6DFC', int64), int(z'53380D13', int64), int(z'650A7354', int64), int(z'766A0ABB', int64), int(z'81C2C92E', int64), int(z'92722C85', int64), int(z'A2BFE8A1', int64), int(z'A81A664B', int64), int(z'C24B8B70', int64), int(z'C76C51A3', int64), int(z'D192E819', int64), int(z'D6990624', int64), int(z'F40E3585', int64), int(z'106AA070', int64), int(z'19A4C116', int64), int(z'1E376C08', int64), int(z'2748774C', int64), int(z'34B0BCB5', int64), int(z'391C0CB3', int64), int(z'4ED8AA4A', int64), int(z'5B9CCA4F', int64), int(z'682E6FF3', int64), int(z'748F82EE', int64), int(z'78A5636F', int64), int(z'84C87814', int64), int(z'8CC70208', int64), int(z'90BEFFFA', int64), int(z'A4506CEB', int64), int(z'BEF9A3F7', int64), int(z'C67178F2', int64)]

Derived Types

type, public ::  sha256_state

Components

Type Visibility Attributes Name Initial
integer(kind=int64), private :: h(8)
integer(kind=int64), private :: bytes = 0
integer, private :: used = 0
character(len=64), private :: buffer

Type-Bound Procedures

procedure, public :: init => sha_init
procedure, public :: update => sha_update
procedure, public :: finish => sha_finish

Functions

private pure function rotate(x, n) result(r)

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in) :: x
integer, intent(in) :: n

Return Value integer(kind=int64)

private function sha_finish(self) result(hex)

Arguments

Type IntentOptional Attributes Name
class(sha256_state), intent(inout) :: self

Return Value character(len=64)

public function sha256(data) result(hex)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: data

Return Value character(len=64)


Subroutines

private subroutine sha_init(self)

Arguments

Type IntentOptional Attributes Name
class(sha256_state), intent(out) :: self

private subroutine compress(self, data)

Arguments

Type IntentOptional Attributes Name
class(sha256_state), intent(inout) :: self
character(len=64), intent(in) :: data

private subroutine sha_update(self, data)

Arguments

Type IntentOptional Attributes Name
class(sha256_state), intent(inout) :: self
character(len=*), intent(in) :: data

public subroutine sha256_file(path, hex, ok)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: path
character(len=64), intent(out) :: hex
logical, intent(out) :: ok