Documentation
¶
Index ¶
- func MarshalDivisor(d Divisor) ([]byte, error)
- func MarshalPrivateKey(curve *HyperellipticCurve, privateKey *big.Int, publicKey Divisor) ([]byte, error)
- func MarshalPublicKey(curve *HyperellipticCurve, publicKey Divisor) ([]byte, error)
- type CipherTextASN
- type Divisor
- type HyperellipticCurve
- func (c *HyperellipticCurve) AddDivisors(D1, D2 Divisor) Divisor
- func (c *HyperellipticCurve) Decrypt(privateKey *big.Int, ciphertextASN []byte) ([]byte, error)
- func (c *HyperellipticCurve) DiffieHellman(privKey *big.Int, pubKey Divisor) ([]byte, error)
- func (c *HyperellipticCurve) Encrypt(pubKey Divisor, message []byte) ([]byte, error)
- func (c *HyperellipticCurve) GenerateKeyPair() (*big.Int, Divisor, error)
- func (c *HyperellipticCurve) ReduceDivisor(D Divisor) Divisor
- func (c *HyperellipticCurve) ScalarMult(k *big.Int, D Divisor) Divisor
- func (c *HyperellipticCurve) SignMessage(privateKey *big.Int, message []byte) ([]byte, error)
- func (c *HyperellipticCurve) VerifySignature(pubKey Divisor, message []byte, sigBytes []byte) (bool, error)
- type SignatureASN
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MarshalDivisor ¶
MarshalDivisor serializa um divisor
func MarshalPrivateKey ¶
func MarshalPrivateKey(curve *HyperellipticCurve, privateKey *big.Int, publicKey Divisor) ([]byte, error)
MarshalPrivateKey converte chave privada para PKCS#8
func MarshalPublicKey ¶
func MarshalPublicKey(curve *HyperellipticCurve, publicKey Divisor) ([]byte, error)
MarshalPublicKey converte chave pública para PKIX
Types ¶
type CipherTextASN ¶
type CipherTextASN struct {
C1U0, C1U1 []byte // Coordenadas U do divisor C1
C1V0, C1V1 []byte // Coordenadas V do divisor C1
C2 []byte // Hash
C3 []byte // Ciphertext
}
Estrutura ASN.1 para o criptograma
type Divisor ¶
type Divisor struct {
U [2]*big.Int // Polinômio u(x) = x² + U[1]x + U[0]
V [2]*big.Int // Polinômio v(x) = V[1]x + V[0]
}
Divisor representa um par ordenado de polinômios (u(x), v(x)) conforme a forma de Mumford. u(x) é um polinômio monico de grau 2: u(x) = x² + U[1]x + U[0] v(x) é um polinômio de grau < grau(u), com coeficientes derivados da chave ou do protocolo: v(x) = V[1]x + V[0]
func ParsePrivateKey ¶
ParsePrivateKey extrai chave privada de PKCS#8
func ParsePublicKey ¶
func ParsePublicKey(curve *HyperellipticCurve, der []byte) (Divisor, error)
ParsePublicKey extrai chave pública de PKIX
func UnmarshalDivisor ¶
UnmarshalDivisor desserializa um divisor
type HyperellipticCurve ¶
type HyperellipticCurve struct {
// contains filtered or unexported fields
}
HyperellipticCurve define os parâmetros da curva
func NewCurve ¶
func NewCurve() *HyperellipticCurve
NewCurve inicializa a curva com um divisor base válido
func (*HyperellipticCurve) AddDivisors ¶
func (c *HyperellipticCurve) AddDivisors(D1, D2 Divisor) Divisor
Atualize sua função AddDivisors para usar a redução
func (*HyperellipticCurve) DiffieHellman ¶
DiffieHellman realiza troca de chaves DH com curva hiperelíptica
func (*HyperellipticCurve) Encrypt ¶
func (c *HyperellipticCurve) Encrypt(pubKey Divisor, message []byte) ([]byte, error)
Encrypt cifra uma mensagem usando a chave pública
func (*HyperellipticCurve) GenerateKeyPair ¶
func (c *HyperellipticCurve) GenerateKeyPair() (*big.Int, Divisor, error)
GenerateKeyPair gera pares de chaves únicos
func (*HyperellipticCurve) ReduceDivisor ¶
func (c *HyperellipticCurve) ReduceDivisor(D Divisor) Divisor
ReduceDivisor reduz um divisor para a forma normalizada
func (*HyperellipticCurve) ScalarMult ¶
func (c *HyperellipticCurve) ScalarMult(k *big.Int, D Divisor) Divisor
ScalarMult multiplica um divisor por um escalar
func (*HyperellipticCurve) SignMessage ¶
SignMessage assina uma mensagem com a chave privada
func (*HyperellipticCurve) VerifySignature ¶
func (c *HyperellipticCurve) VerifySignature(pubKey Divisor, message []byte, sigBytes []byte) (bool, error)
VerifySignature verifica a assinatura usando a chave pública
type SignatureASN ¶
type SignatureASN struct {
RU0, RU1 []byte // R divisor - parte U
RV0, RV1 []byte // R divisor - parte V
S []byte // Escalar s
}
SignatureASN define a estrutura ASN.1 da assinatura digital