# Copyright (c) 2024 Yuki Kimoto
# MIT License

class Net::SSLeay::X509_STORE_CTX : pointer {
  version_from Net::SSLeay;
  
  use Net::SSLeay::Error;
  use Net::SSLeay::X509;
  use Net::SSLeay::X509_STORE;
  
  # Class Methods
  private static method new_with_pointer : Net::SSLeay::X509_STORE_CTX ($pointer : Address, $options : object[] = undef) {
    
    my $self = new Net::SSLeay::X509_STORE_CTX;
    
    Fn->set_pointer($self, $pointer);
    
    return $self;
  }
  
  native static method get1_issuer : int ($issuer_ref : Net::SSLeay::X509[], $ctx : Net::SSLeay::X509_STORE_CTX, $x : Net::SSLeay::X509);
  
  # Instance Methods
  native method set_error : void ($s : int);
  
  native method get_error : int ();
  
  native method get_error_depth : int ();
  
  native method get_current_cert : Net::SSLeay::X509 ();
  
  native method DESTROY : void ();
  
}