mirror of https://github.com/openssl/openssl
77 lines
1.8 KiB
Plaintext
77 lines
1.8 KiB
Plaintext
=pod
|
|
|
|
=head1 NAME
|
|
|
|
SM3_Init,
|
|
SM3_Update,
|
|
SM3_Final
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
#include <openssl/sm3.h>
|
|
|
|
unsigned char *SM3(const unsigned char *d, size_t n, unsigned char *md);
|
|
|
|
int SM3_Init(SM3_CTX *c);
|
|
int SM3_Update(SM3_CTX *c, const void *data, size_t len);
|
|
int SM3_Final(unsigned char *md, SM3_CTX *c);
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
SM3 is a cryptographic hash function with a 256-bit output, defined in GB/T
|
|
32905-2016.
|
|
|
|
SM3() computes the SM3 message digest of the B<n> bytes at B<d> and places it
|
|
in B<md> (which must have space for SM3_DIGEST_LENGTH == 32 bytes of output).
|
|
If B<md> is NULL, the digest is placed in a static array.
|
|
|
|
The following functions may be used if the message is not completely stored in
|
|
memory:
|
|
|
|
SM3_Init() initializes a B<SM3_CTX> structure.
|
|
|
|
SM3_Update() can be called repeatedly with chunks of the message to be hashed
|
|
(B<len> bytes at B<data>).
|
|
|
|
SM3_Final() places the message digest in B<md>, which must have space for
|
|
B<SM3_DIGEST_LENGTH> == 32 bytes of output, and erases the B<SM3_CTX>.
|
|
|
|
=head1 RETURN VALUES
|
|
|
|
=over 4
|
|
|
|
=item SM3()
|
|
|
|
Returns pointers to the hash value.
|
|
|
|
=item SM3_Init(), SM3_Update(), SM3_Final()
|
|
|
|
Returns 1 for success, 0 otherwise.
|
|
|
|
=back
|
|
|
|
=head1 NOTE
|
|
|
|
Applications should use the higher level functions such as L<EVP_DigestInit(3)>
|
|
instead of calling these functions directly.
|
|
|
|
=head1 CONFORMING TO
|
|
|
|
GB/T 32905-2016 and GM/T 0004-2012.
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<EVP_DigestInit(3)>
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
|
|
Copyright 2017 Ribose Inc. All Rights Reserved.
|
|
|
|
Licensed under the OpenSSL license (the "License"). You may not use
|
|
this file except in compliance with the License. You can obtain a copy
|
|
in the file LICENSE in the source distribution or at
|
|
L<https://www.openssl.org/source/license.html>.
|
|
|
|
=cut
|