// 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 }
// 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 }