func (validator *validatorImpl) verifyValidityPeriod(tx *obc.Transaction) (*obc.Transaction, error) { if tx.Cert != nil && tx.Signature != nil { // Unmarshal cert cert, err := utils.DERToX509Certificate(tx.Cert) if err != nil { validator.error("verifyValidityPeriod: failed unmarshalling cert %s:", err) return tx, err } cid := viper.GetString("pki.validity-period.chaincodeHash") ledger, err := ledger.GetLedger() if err != nil { validator.error("verifyValidityPeriod: failed getting access to the ledger %s:", err) return tx, err } vpBytes, err := ledger.GetState(cid, "system.validity.period", true) if err != nil { validator.error("verifyValidityPeriod: failed reading validity period from the ledger %s:", err) return tx, err } i, err := strconv.ParseInt(string(vpBytes[:]), 10, 64) if err != nil { validator.error("verifyValidityPeriod: failed to parse validity period %s:", err) return tx, err } vp := time.Unix(i, 0) var errMsg string // Verify the validity period of the TCert switch { case cert.NotAfter.Before(cert.NotBefore): errMsg = "verifyValidityPeriod: certificate validity period is invalid" case vp.Before(cert.NotBefore): errMsg = "verifyValidityPeriod: certificate validity period is in the future" case vp.After(cert.NotAfter): errMsg = "verifyValidityPeriod: certificate validity period is in the past" } if errMsg != "" { validator.error(errMsg) return tx, errors.New(errMsg) } } return tx, nil }
func getTimeout(cID *pb.ChaincodeID) (time.Duration, error) { ledger, err := ledger.GetLedger() if err == nil { chaincodeID := cID.Name txUUID, err := ledger.GetState(chaincodeID, "github.com_openblockchain_obc-peer_chaincode_id", true) if err == nil { tx, err := ledger.GetTransactionByUUID(string(txUUID)) if err == nil { chaincodeDeploymentSpec := &pb.ChaincodeDeploymentSpec{} proto.Unmarshal(tx.Payload, chaincodeDeploymentSpec) chaincodeSpec := chaincodeDeploymentSpec.GetChaincodeSpec() timeout := time.Duration(time.Duration(chaincodeSpec.Timeout) * time.Millisecond) return timeout, nil } } } return -1, errFailedToGetChainCodeSpecForTransaction }
func getValidityPeriodFromLedger(t *testing.T) int64 { cid := viper.GetString("pki.validity-period.chaincodeHash") ledger, err := ledger.GetLedger() if err != nil { t.Logf("Failed getting access to the ledger: %s", err) t.Fail() } vp_bytes, err := ledger.GetState(cid, "system.validity.period", true) if err != nil { t.Logf("Failed reading validity period from the ledger: %s", err) t.Fail() } i, err := strconv.ParseInt(string(vp_bytes[:]), 10, 64) if err != nil { t.Logf("Failed to parse validity period: %s", err) t.Fail() } return i }