package SPVM::Net::SSLeay::X509_STORE_CTX;



1;

=head1 Name

SPVM::Net::SSLeay::X509_STORE_CTX - X509_STORE_CTX Data Structure in OpenSSL

=head1 Description

Net::SSLeay::X509_STORE_CTX class in L<SPVM> represents L<X509_STORE_CTX|https://docs.openssl.org/3.1/man3/X509_STORE_CTX_new/> data structure in OpenSSL.

=head1 Usage

  use Net::SSLeay::X509_STORE_CTX;

=head1 Class Methods

C<method get1_issuer : int ($issuer_ref : L<Net::SSLeay::X509|SPVM::Net::SSLeay::X509>, $ctx : L<Net::SSLeay::X509_STORE_CTX|SPVM::Net::SSLeay::X509_STORE_CTX>, $x : L<Net::SSLeay::X509|SPVM::Net::SSLeay::X509>);>

Calls native L<X509_STORE_CTX_get1_issuer|https://docs.openssl.org/master/man3/OCSP_response_status> function given $issuer_ref, $ctx, $x.
, sets $issuer_ref at index 0 to the new object, and returns the return value of the native function.

Exceptions:

The output array of the Net::SSLeay::X509 $issuer_ref must be defined. Otherwise an exception is thrown.

The length of $issuer_ref must be 1. Otherwise an exception is thrown.

The Net::SSLeay::X509_STORE_CTX object $ctx must be defined. Otherwise an exception is thrown.

The X509 object $x must be defined. Otherwise an exception is thrown.

If X509_STORE_CTX_get1_issuer failed, an exception is thrown with C<eval_error_id> set to the basic type ID of L<Net::SSLeay::Error|SPVM::Net::SSLeay::Error> class.

=head1 Instance Methods

=head2 set_error

C<method set_error : void ($s : int);>

Calls native L<X509_STORE_CTX_set_error|https://docs.openssl.org/master/man3/X509_STORE_CTX_get_error> function given the pointer value of the instance, $s.

=head2 get_error

C<method get_error : int ();>

Calls native L<X509_STORE_CTX_get_error|https://docs.openssl.org/master/man3/X509_STORE_CTX_get_error> function, and returns its return value.

=head2 get_error_depth

C<method get_error_depth : int ();>

Calls native L<X509_STORE_CTX_get_error_depth|https://docs.openssl.org/master/man3/X509_STORE_CTX_get_error_depth> function, and returns its return value.

=head2 get_current_cert

C<method get_current_cert : L<Net::SSLeay::X509|SPVM::Net::SSLeay::X509> ();>

Calls native L<X509_STORE_CTX_get_current_cert|https://docs.openssl.org/master/man3/X509_STORE_CTX_get_error_depth> function.

If the return value is NULL, returns undef.

Otherwise, creates a new new L<Net::SSLeay::X509|SPVM::Net::SSLeay::X509> object, sets the pointer value of the new object to the return value of the native function, sets C<no_free> flag of the new object to 1, returns the new object.

=head2 Init

C<method Init : int ($trust_store : L<Net::SSLeay::X509_STORE|SPVM::Net::SSLeay::X509_STORE>, $target : L<Net::SSLeay::X509|SPVM::Net::SSLeay::X509>, $untrusted_array : L<Net::SSLeay::X509|SPVM::Net::SSLeay::X509>[]);>

Calls native L<X509_STORE_CTX_init|https://docs.openssl.org/3.2/man3/X509_STORE_CTX_new> function given the pointer value of $trust_store, the pointer value of $target, the value that converts $untrusted_array to STACK_OF(X509) type, and returns its return value.

Exceptions:

The X509 object $target must be defined. Otherwise an exception is thrown.

The X509 array $untrusted_array must be defined. Otherwise an exception is thrown.

If X509_STORE_CTX_init failed, an exception is thrown with C<eval_error_id> set to the basic type ID of L<Net::SSLeay::Error|SPVM::Net::SSLeay::Error> class.

=head1 Copyright & License

Copyright (c) 2024 Yuki Kimoto

MIT License