1

「admin」ユーザーを登録しようとすると、CreateCertificatePair への 2 回目の呼び出しが失敗し、「署名の検証に失敗しました」というメッセージが表示されました。ところで、enrollUser 関数を eca_test.go からコピーしました。membersrvc/ca パッケージの下にあるこれらのテストに合格することができます。

//Phase 2 of the protocol
spi := ecies.NewSPI()
eciesKey, err := spi.NewPrivateKey(nil, encPriv)
if err != nil {
    return err
}

ecies, err := spi.NewAsymmetricCipherFromPublicKey(eciesKey)
if err != nil {
    return err
}

out, err := ecies.Process(resp.Tok.Tok)
if err != nil {
    return err
}

req.Tok.Tok = out
req.Sig = nil

hash := primitives.NewHash()
raw, _ := proto.Marshal(req)
hash.Write(raw)

r, s, err := ecdsa.Sign(rand.Reader, signPriv, hash.Sum(nil))
if err != nil {
    return err
}
R, _ := r.MarshalText()
S, _ := s.MarshalText()
req.Sig = &pb.Signature{Type: pb.CryptoType_ECDSA, R: R, S: S}

resp, err = ecapCient.CreateCertificatePair(context.Background(), req)
4

2 に答える 2