示例#1
0
// ReadBuffer reads the public key from a buffer.
func (p *PublicKey) ReadBuffer(b *buffer.Buffer) error {

	t := b.ScanString()
	e := b.ScanMPInt()
	n := b.ScanMPInt()

	if t != PUBLIC_KEY_TYPE {
		return ErrPublicKeyFormat
	}

	if e.Cmp(big.NewInt(EXPONENT)) != 0 {
		return ErrPublicKeyFormat
	}

	p.E = EXPONENT
	p.N = n

	return nil
}
示例#2
0
// ReadBuffer reads a SignRequest from a buffer.
func (request *SignRequest) ReadBuffer(b *buffer.Buffer) error {

	publicKey := new(PublicKey)
	err := publicKey.ReadBuffer(b)
	if err != nil {
		return err
	}

	msg := b.ScanMPInt()

	if msg.Cmp(publicKey.N) >= 0 {
		return errors.New("cannot sign message > N")
	}

	request.Key = publicKey
	request.M = msg

	return nil
}