package Crypt::secp256k1;

use 5.024000;
use strict;
use warnings;

require Exporter;

our @ISA = qw(Exporter);

our %EXPORT_TAGS = ( 'all' => [ qw(
    SECP256K1_CONTEXT_NONE
    SECP256K1_CONTEXT_SIGN
    SECP256K1_CONTEXT_VERIFY
) ] );

our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );

our @EXPORT = qw();

our $VERSION = '0.0_01';
$VERSION = eval $VERSION;

require XSLoader;
XSLoader::load('Crypt::secp256k1', $VERSION);

1;
__END__

# Below is stub documentation for your module. I didn't edit it. :(

=head1 NAME

Crypt::secp256k1 - Perl extension for blah blah blah

=head1 SYNOPSIS

  use Crypt::secp256k1;
  blah blah blah

=head1 DESCRIPTION

Stub documentation for Crypt::secp256k1, created by h2xs. It looks like the
author of the extension was negligent enough to leave the stub
unedited.

Blah blah blah.

=head2 EXPORT

None by default.

=head2 Exportable functions

  secp256k1_context* secp256k1_context_clone(
    const secp256k1_context* ctx
) __attribute__ ((__nonnull__(1))) 
  secp256k1_context* secp256k1_context_create(
    unsigned int flags
) 
  void secp256k1_context_destroy(
    secp256k1_context* ctx
)
  int secp256k1_context_randomize(
    secp256k1_context* ctx,
    const unsigned char *seed32
) __attribute__ ((__nonnull__(1)))
  void secp256k1_context_set_error_callback(
    secp256k1_context* ctx,
    void (*fun)(const char* message, void* data),
    const void* data
) __attribute__ ((__nonnull__(1)))
  void secp256k1_context_set_illegal_callback(
    secp256k1_context* ctx,
    void (*fun)(const char* message, void* data),
    const void* data
) __attribute__ ((__nonnull__(1)))
  int secp256k1_ec_privkey_negate(
    const secp256k1_context* ctx,
    unsigned char *seckey
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2)))
  int secp256k1_ec_privkey_tweak_add(
    const secp256k1_context* ctx,
    unsigned char *seckey,
    const unsigned char *tweak
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ec_privkey_tweak_mul(
    const secp256k1_context* ctx,
    unsigned char *seckey,
    const unsigned char *tweak
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ec_pubkey_combine(
    const secp256k1_context* ctx,
    secp256k1_pubkey *out,
    const secp256k1_pubkey * const * ins,
    size_t n
) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ec_pubkey_create(
    const secp256k1_context* ctx,
    secp256k1_pubkey *pubkey,
    const unsigned char *seckey
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ec_pubkey_negate(
    const secp256k1_context* ctx,
    secp256k1_pubkey *pubkey
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2)))
  int secp256k1_ec_pubkey_parse(
    const secp256k1_context* ctx,
    secp256k1_pubkey* pubkey,
    const unsigned char *input,
    size_t inputlen
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ec_pubkey_serialize(
    const secp256k1_context* ctx,
    unsigned char *output,
    size_t *outputlen,
    const secp256k1_pubkey* pubkey,
    unsigned int flags
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3))) __attribute__ ((__nonnull__(4)))
  int secp256k1_ec_pubkey_tweak_add(
    const secp256k1_context* ctx,
    secp256k1_pubkey *pubkey,
    const unsigned char *tweak
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ec_pubkey_tweak_mul(
    const secp256k1_context* ctx,
    secp256k1_pubkey *pubkey,
    const unsigned char *tweak
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ec_seckey_verify(
    const secp256k1_context* ctx,
    const unsigned char *seckey
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2)))
  int secp256k1_ecdsa_sign(
    const secp256k1_context* ctx,
    secp256k1_ecdsa_signature *sig,
    const unsigned char *msg32,
    const unsigned char *seckey,
    secp256k1_nonce_function noncefp,
    const void *ndata
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3))) __attribute__ ((__nonnull__(4)))
  int secp256k1_ecdsa_signature_normalize(
    const secp256k1_context* ctx,
    secp256k1_ecdsa_signature *sigout,
    const secp256k1_ecdsa_signature *sigin
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ecdsa_signature_parse_compact(
    const secp256k1_context* ctx,
    secp256k1_ecdsa_signature* sig,
    const unsigned char *input64
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ecdsa_signature_parse_der(
    const secp256k1_context* ctx,
    secp256k1_ecdsa_signature* sig,
    const unsigned char *input,
    size_t inputlen
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ecdsa_signature_serialize_compact(
    const secp256k1_context* ctx,
    unsigned char *output64,
    const secp256k1_ecdsa_signature* sig
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3)))
  int secp256k1_ecdsa_signature_serialize_der(
    const secp256k1_context* ctx,
    unsigned char *output,
    size_t *outputlen,
    const secp256k1_ecdsa_signature* sig
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3))) __attribute__ ((__nonnull__(4)))
  int secp256k1_ecdsa_verify(
    const secp256k1_context* ctx,
    const secp256k1_ecdsa_signature *sig,
    const unsigned char *msg32,
    const secp256k1_pubkey *pubkey
) __attribute__ ((__nonnull__(1))) __attribute__ ((__nonnull__(2))) __attribute__ ((__nonnull__(3))) __attribute__ ((__nonnull__(4)))



=head1 SEE ALSO

Mention other useful documentation such as the documentation of
related modules or operating system documentation (such as man pages
in UNIX), or any relevant external documentation such as RFCs or
standards.

If you have a mailing list set up for your module, mention it here.

If you have a web site set up for your module, mention it here.

=head1 AUTHOR

flask, E<lt>flask@gone.datumE<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2017 by flask

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.24.0 or,
at your option, any later version of Perl 5 you may have available.


=cut
