bls48581 2.1.0

BLS signature implementation using the BLS48-581 curve with KZG commitments
Documentation
# bls48581

BLS signature implementation using the BLS48-581 pairing-friendly elliptic curve.

This crate provides cryptographic primitives for BLS (Boneh-Lynn-Shacham) signatures on the BLS48-581 curve, including:

- BLS signature generation and verification
- BLS signature aggregation
- Key generation and management
- KZG (Kate-Zaverucha-Goldberg) polynomial commitments
- KZG inclusion proofs (single and multiproofs)

## Features

- **BLS Signatures**: Create and verify BLS signatures with support for aggregation
- **KZG Commitments**: Polynomial commitment scheme for vector commitments
- **Inclusion Proofs**: Generate and verify proofs that elements are included in committed data
- **Multiproofs**: Efficient batched proofs for multiple indices

## Usage

Add this to your `Cargo.toml`:

```toml
[dependencies]
bls48581 = "2.1.0"
```

### Example: BLS Signatures

```rust
use bls48581::{bls_keygen, bls_sign, bls_verify};

// Initialize the library
bls48581::init();

// Generate a key pair
let keypair = bls_keygen();

// Sign a message
let message = b"Hello, World!";
let signature = bls_sign(&keypair.secret_key, message).unwrap();

// Verify the signature
let is_valid = bls_verify(&keypair.public_key, message, &signature).unwrap();
assert!(is_valid);
```

### Example: KZG Commitments

```rust
use bls48581::{commit, prove, verify_raw};

bls48581::init();

// Create a polynomial (as bytes)
let data = vec![1u8; 4096]; // 64 coefficients * 64 bytes each
let poly_size = 64;

// Generate commitment
let commitment = commit(&data, poly_size).unwrap();

// Generate proof for index 5
let index = 5;
let proof = prove(&data, index, poly_size).unwrap();

// Verify proof
let is_valid = verify_raw(&data, &commitment, index as u64, &proof, poly_size).unwrap();
assert!(is_valid);
```

## Security Notice

This library implements cryptographic primitives and should be used with care. It is based on the MIRACL Core library and implements the BLS48-581 curve which provides approximately 256-bit security.

## License

Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.

This crate is derived from [MIRACL Core](https://github.com/miracl/core), which is also licensed under Apache 2.0.

## Attribution

Portions of this software are based on:
- MIRACL Core (https://github.com/miracl/core)
- Apache Milagro Cryptographic Library (AMCL)

## References

- [BLS Signatures]https://en.wikipedia.org/wiki/BLS_digital_signature
- [KZG Polynomial Commitments]https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html
- [MIRACL Core]https://github.com/miracl/core