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 }