Значения Chaincode PutState () и GetState () не совпадают при использовании с шифрованием RSA - PullRequest
0 голосов
/ 16 апреля 2019

Следующий фрагмент кода возвращает "не совпадает!"ошибка:

pub, priv := GenerateKeyPair(2048)
ct1 := EncryptWithPublicKey([]byte("abc"), pub)
err := stub.PutState("ct", ct1)
ct2 := stub.GetState("ct")
if string(ct1[:]) != string(ct2[:]) {
    return shim.Error("does not match!") //error returned
}
pt := DecryptWithPrivateKey(ct2, priv)

Используемая библиотека RSA: https://gist.github.com/miguelmota/3ea9286bd1d3c2a985b67cac4ba2130a

Если часть сравнения строк закомментирована, то функция дешифрования возвращает ошибку «Ошибка дешифрования crypto / rsa».

Следующий код отлично работает:

pub, priv := GenerateKeyPair(2048)
ct := EncryptWithPublicKey([]byte("abc"), pub)
pt := DecryptWithPrivateKey(ct, priv)

1 Ответ

1 голос
/ 16 апреля 2019

То, как работают транзакции Fabric, означает, что вы не можете прочитать (GetState) значение из базы данных состояний, которое было записано (PutState) во время вашей транзакции.Чтение (GetState) всегда будет возвращать значение до начала транзакции.

Следующие ссылки на Поток транзакций и диаграмма последовательности предоставят вам дополнительную информацию о транзакциях, если вам это нужно.

...