[#BloombergLP-bdlde-Sha512]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlde.adoc[bdlde]::Sha512
:relfileprefix: ../../
:mrdocs:

This `class` represents a SHA&hyphen;512 digest that can be updated as additional data is provided&period;

== Synopsis

Declared in `&lt;bdlde&lowbar;sha2&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class Sha512;
----

== Description

More generally, this class supports a complete set of _value_ _semantic_ operations, including copy construction, assignment, equality comparison, and `ostream` printing&period; (A precise operational definition of when two instances have the same value can be found in the description of `operator&equals;&equals;` for the class&period;) This container is _exception_ _neutral_ with no guarantee of rollback&colon; if an exception is thrown during the invocation of a method on a pre&hyphen;existing instance, the class is left in a valid state, but its value is undefined&period; In no event is memory leaked&period; Finally, _aliasing_ (e&period;g&period;, using all or part of an object as both source and destination) is supported in all cases&period;

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlde/Sha512/2constructor-04.adoc[`Sha512`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bdlde/Sha512/loadDigest.adoc[`loadDigest`] 
| Load the value of this SHA&hyphen;2 digest into the specified `result`&period;
| xref:BloombergLP/bdlde/Sha512/loadDigestAndReset.adoc[`loadDigestAndReset`] 
| Load the current value of this SHA&hyphen;2 digest into the specified `result` and set the value of this SHA&hyphen;2 digest to the value provided by the default constructor&period;
| xref:BloombergLP/bdlde/Sha512/print.adoc[`print`] 
| Format the current value of this SHA&hyphen;2 digest to the specified output `stream` and return a reference to the modifiable `stream`&period;
| xref:BloombergLP/bdlde/Sha512/reset.adoc[`reset`] 
| Reset the value of this SHA&hyphen;2 digest to the value provided by the default constructor&period;
| xref:BloombergLP/bdlde/Sha512/update.adoc[`update`] 
| Update the value of this SHA&hyphen;2 digest to incorporate the specified `data` having the specified `length` in bytes&period; If the current state is the default state, the resultant value of this SHA&hyphen;2 digest is the application of the SHA&hyphen;2 algorithm upon the currently given `data` of the given `length`&period; If this digest has been previously provided data and has not been subsequently reset, the current state is not the default state and the resultant value is equivalent to applying the SHA&hyphen;2 algorithm upon the concatenation of all the provided data&period; The behavior is undefined unless the range `&lsqb;data, data &plus; length)&rsqb;` is a valid range&period; Note that if `data` is 0, then `length` must also be 0&period;
|===


== Static Data Members

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlde/Sha512/k_DIGEST_SIZE.adoc[`k&lowbar;DIGEST&lowbar;SIZE`] 
| The size (in bytes) of the output
|===


== Friends

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/bdlde/operator_eq-0e0.adoc[BloombergLP::bdlde::operator&equals;&equals;]`
| Return `true` if the specified `lhs` and `rhs` SHA digests have the same value, and `false` otherwise&period; Two digests have the same value if, after applying any number of equivalent updates to both (possibly including no updates), the values obtained from their respective `loadDigest` methods are identical&period;
|===

== Non-Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlde/operator_not_eq-093.adoc[`operator!&equals;`]
| Return `true` if the specified `lhs` and `rhs` SHA digests do not have the same value, and `false` otherwise&period; Two digests do not have the same value if there exists a set of updates (possibly including the empty set) that, if applied to both, lead to different values being obtained from their respective `loadDigest` methods&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
