=pod

=head1 NAME

X509_get0_sm2_id, X509_set0_sm2_id,
X509_REQ_get0_sm2_id, X509_REQ_set0_sm2_id
- get or set SM2 ID for certificate operations

=head1 SYNOPSIS

 #include <openssl/x509.h>

 ASN1_OCTET_STRING *X509_get0_sm2_id(X509 *x);
 void X509_set0_sm2_id(X509 *x, ASN1_OCTET_STRING *sm2_id);
 ASN1_OCTET_STRING *X509_REQ_get0_sm2_id(X509_REQ *x);
 void X509_REQ_set0_sm2_id(X509_REQ *x, ASN1_OCTET_STRING *sm2_id);

=head1 DESCRIPTION

X509_get0_sm2_id() gets the ID value of an SM2 certificate B<x> by returning an
B<ASN1_OCTET_STRING> object which should not be freed by the caller.

X509_set0_sm2_id() sets the B<sm2_id> value to an SM2 certificate B<x>. Calling
this function transfers the memory management of the value to the X509 object,
and therefore the value that has been passed in should not be freed by the
caller after this function has been called.

X509_REQ_get0_sm2_id() and X509_REQ_set0_sm2_id() have the same functionality
as X509_get0_sm2_id() and X509_set0_sm2_id() except that they deal with
B<X509_REQ> objects instead of B<X509>.

=head1 NOTES

SM2 signature algorithm requires an ID value when generating and verifying a
signature. The functions described in this manual provide the user with the
ability to set and retrieve the SM2 ID value.

=head1 RETURN VALUES

X509_set0_sm2_id() and X509_REQ_set0_sm2_id() do not return a value.

=head1 SEE ALSO

L<X509_verify(3)>, L<SM2(7)>

=head1 COPYRIGHT

Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (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
