Example #1
0
func (o *OcCred) SignOcReq(req *msg.OcReq) error {
	h, err := getReqSigDataHash(req)
	if err != nil {
		return err
	}

	randBytes := make([]byte, SIG_RAND_NUM_BYTES)
	_, err = rand.Read(randBytes)
	if err != nil {
		return errors.New("error generating random bytes")
	}

	r, s, err := ecdsa.Sign(bytes.NewReader(randBytes), o.Priv, h)
	if err != nil {
		return fmt.Errorf("error during ECDSA signature: %v", err.Error())
	}
	req.ID = o.ID()
	req.Sig = fmt.Sprintf("%x,%x", r, s)

	return nil
}