hyperledger / caliper

A blockchain benchmark framework to measure performance of multiple blockchain solutions https://wiki.hyperledger.org/display/caliper
https://hyperledger.github.io/caliper/
Apache License 2.0
650 stars 402 forks source link

tlscacerts in peers property of a fabric sut network configuration file should support a base64 encoded pem string #1426

Open davidkel opened 2 years ago

davidkel commented 2 years ago

In a network configuration file for fabric you can embed base64 encoded strings for identities of the pem file to avoid the nasty issues of

  1. json needing encoded new lines
  2. yaml needing the multiline string (preserving the newlines) to be identically indented.

eg

        clientSignedCert:
          pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNBakNDQWFpZ0F3SUJBZ0lSQU9xalBmZit6VndWUDVDYmxEVFNQY1F3Q2dZSUtvWkl6ajBFQXdJd1l6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhFVEFQQmdOVkJBb1RDSEJsWlhKUGNtY3dNUlF3RWdZRFZRUURFd3RqWVM1d1pXVnlUM0puCk1EQWVGdzB5TWpBNE1ESXhNRFExTURCYUZ3MHpNakEzTXpBeE1EUTFNREJhTUZNeEN6QUpCZ05WQkFZVEFsVlQKTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnBjMk52TVJjdwpGUVlEVlFRRERBNUJaRzFwYmtCd1pXVnlUM0puTURCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBCkJFU3hqazJZOHRuMUlzSXc2ZHE5NzFuVkZ5dXZldWhkZTV0UVdKNlU0U3U4UzQzUllucFdteFRvTUQycStzeWoKcGFSVDlhRVVtQ1J3NUtnSjJsaDVveXlqVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RQpBakFBTUNzR0ExVWRJd1FrTUNLQUlLZlhSZ1ArWnVVTTlZYWtyVzhmRlJxVEpXQ2h3QnVGZ1N4SkhIdEJZeFdxCk1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQzNjdjljQ01uMGZGUkxiVU42MXRhTFFPUm9yM0haTmpKWmF4di8KbXNVZnd3SWdhcmgxVDRlWkhEWWYxeWVGcDl0M0dOazRKdXo2T1JPaEVDRHVkTDR6M04wPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t

However if you try to do this for the tlscacerts in peers eg

    peers:
      - endpoint: 'peer0:7050'
        grpcOptions:
          grpc.keepalive_time_ms: 600000
        tlsCACerts:
          pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNOekNDQWQyZ0F3SUJBZ0lRREtyWHRqb0s5QUJLYVhMdzVkTktRekFLQmdncWhrak9QUVFEQWpCbU1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVJNQThHQTFVRUNoTUljR1ZsY2s5eVp6QXhGekFWQmdOVkJBTVREblJzYzJOaExuQmxaWEpQCmNtY3dNQjRYRFRJeU1EZ3dNakV3TkRVd01Gb1hEVE15TURjek1ERXdORFV3TUZvd1pqRUxNQWtHQTFVRUJoTUMKVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCR2NtRnVZMmx6WTI4eApFVEFQQmdOVkJBb1RDSEJsWlhKUGNtY3dNUmN3RlFZRFZRUURFdzUwYkhOallTNXdaV1Z5VDNKbk1EQlpNQk1HCkJ5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSEg4bjFPZWVMOTgzYVg0RGk1UE5hRkRxZWgrcTRpQlhSRWwKRllSVzdrR1JPSE1keGFBMHlRZGx5ZGtvY3BxcTV3Umxhb296YklweHNiY000ais4eVJpamJUQnJNQTRHQTFVZApEd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUCkFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWc5QW0yd05RdEptUnVvck13K3dVaFNjb3gxd2FudDRsQ0FsZlkKWm9JdnFFa3dDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTUFDd1FlY09IU0RKVlNmRnFDL01wQ09PUkVRTDdLdgpSRGNSdXB3YjF5NXNBaUEwdUMrYzZkZ0hMTjJEOU9HMjZzb1RiRFQraUEyaTlNNHB1MFI4dG5ZR2dnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==

it fails as it just copies that into an in memory connection profile and then it is extracted with the assumption that it's a pem string