func (sk *SecretKey) P() *safenum.Nat {
	return sk.p
}
P returns the first of the two factors composing this key.
package paillier
import (
	"crypto/rand"
	"errors"
	"fmt"
	"github.com/cronokirby/safenum"
	"github.com/taurusgroup/multi-party-sig/internal/params"
	"github.com/taurusgroup/multi-party-sig/pkg/math/arith"
	"github.com/taurusgroup/multi-party-sig/pkg/math/sample"
	"github.com/taurusgroup/multi-party-sig/pkg/pedersen"
	"github.com/taurusgroup/multi-party-sig/pkg/pool"
)
var (
	ErrPrimeBadLength = errors.New("prime factor is not the right length")
	ErrNotBlum        = errors.New("prime factor is not equivalent to 3 (mod 4)")
	ErrNotSafePrime   = errors.New("supposed prime factor is not a safe prime")
	ErrPrimeNil       = errors.New("prime is nil")
)
type SecretKey struct {
	*PublicKey
	p, q *safenum.Nat
	phi *safenum.Nat
	phiInv *safenum.Nat
}