Ejemplo n.º 1
0
				encoded, err := serializer.Marshal(logger, format.LEGACY_FORMATTING, task)
				Expect(err).NotTo(HaveOccurred())
				Expect(encoded).To(MatchJSON(jsonEncodedTask))
			})
		})

		Describe("FORMATTED_JSON", func() {
			It("marshals the data as json with an UNENCODED envelope", func() {
				jsonEncodedTask, err := json.Marshal(task)
				Expect(err).NotTo(HaveOccurred())

				encoded, err := serializer.Marshal(logger, format.FORMATTED_JSON, task)
				Expect(err).NotTo(HaveOccurred())

				unencoded, err := encoder.Decode(encoded)
				Expect(err).NotTo(HaveOccurred())

				Expect(unencoded[0]).To(BeEquivalentTo(format.JSON))
				Expect(unencoded[2:]).To(MatchJSON(jsonEncodedTask))
			})
		})

		Describe("ENCODED_PROTO", func() {
			It("marshals the data as protobuf with an base64 encoded envelope", func() {
				encoded, err := serializer.Marshal(logger, format.ENCODED_PROTO, task)
				Expect(err).NotTo(HaveOccurred())

				unencoded, err := encoder.Decode(encoded)
				Expect(err).NotTo(HaveOccurred())
Ejemplo n.º 2
0
			Expect(err).NotTo(HaveOccurred())
			_, err = storeClient.Set(fmt.Sprintf("%s/my/nested/key-2", etcd.V1SchemaRoot), encoded2, etcd.NO_TTL)
			Expect(err).NotTo(HaveOccurred())

			cryptor = makeCryptor("new", "old")

			etcdDB = etcd.NewETCD(format.ENCRYPTED_PROTO, 100, 100, DesiredLRPCreationTimeout, cryptor, storeClient, clock)
			err = etcdDB.PerformEncryption(logger)
			Expect(err).NotTo(HaveOccurred())

			cryptor = makeCryptor("new")
			encoder = format.NewEncoder(cryptor)

			res, err := storeClient.Get(fmt.Sprintf("%s/my/key-1", etcd.V1SchemaRoot), false, false)
			Expect(err).NotTo(HaveOccurred())
			decrypted1, err := encoder.Decode([]byte(res.Node.Value))
			Expect(err).NotTo(HaveOccurred())
			Expect(decrypted1).To(Equal(value1))

			res, err = storeClient.Get(fmt.Sprintf("%s/my/nested/key-2", etcd.V1SchemaRoot), false, false)
			Expect(err).NotTo(HaveOccurred())
			decrypted2, err := encoder.Decode([]byte(res.Node.Value))
			Expect(err).NotTo(HaveOccurred())
			Expect(decrypted2).To(Equal(value2))
		})

		It("does not fail encryption if it can't read a record", func() {
			var cryptor encryption.Cryptor
			var encoder format.Encoder

			value1 := []byte("some text")
Ejemplo n.º 3
0
		Describe("unkown encoding", func() {
			It("fails with an unknown encoding error", func() {
				payload := []byte("some-payload")
				_, err := encoder.Encode(format.Encoding([2]byte{'9', '9'}), payload)

				Expect(err).To(HaveOccurred())
			})
		})
	})

	Describe("Decode", func() {
		Describe("LEGACY_UNENCODED", func() {
			It("returns the payload back", func() {
				payload := []byte("some-payload")
				decoded, err := encoder.Decode(payload)

				Expect(err).NotTo(HaveOccurred())
				Expect(decoded).To(Equal(payload))
			})
		})

		Describe("UNENCODED", func() {
			It("returns the payload back without an encoding type prefix", func() {
				payload := []byte("some-payload")
				decoded, err := encoder.Decode(append([]byte("00"), payload...))

				Expect(err).NotTo(HaveOccurred())
				Expect(decoded).To(Equal(payload))
			})
		})
Ejemplo n.º 4
0
			sqlDB := sqldb.NewSQLDB(db, 5, 5, format.ENCRYPTED_PROTO, cryptor, fakeGUIDProvider, fakeClock, dbFlavor)
			err = sqlDB.PerformEncryption(logger)
			Expect(err).NotTo(HaveOccurred())

			cryptor = makeCryptor("new")
			encoder = format.NewEncoder(cryptor)

			var result []byte
			queryStr = "SELECT task_definition FROM tasks WHERE guid = ?"
			if test_helpers.UsePostgres() {
				queryStr = test_helpers.ReplaceQuestionMarks(queryStr)
			}
			row := db.QueryRow(queryStr, taskGuid)
			err = row.Scan(&result)
			Expect(err).NotTo(HaveOccurred())
			decryptedTaskDef, err := encoder.Decode(result)
			Expect(err).NotTo(HaveOccurred())
			Expect(decryptedTaskDef).To(Equal(unencodedTaskDef))

			var runInfo, routes, volumePlacement []byte
			queryStr = "SELECT run_info, routes, volume_placement FROM desired_lrps WHERE process_guid = ?"
			if test_helpers.UsePostgres() {
				queryStr = test_helpers.ReplaceQuestionMarks(queryStr)
			}
			row = db.QueryRow(queryStr, processGuid)
			err = row.Scan(&runInfo, &routes, &volumePlacement)
			Expect(err).NotTo(HaveOccurred())

			decryptedRunInfo, err := encoder.Decode(runInfo)
			Expect(decryptedRunInfo).To(Equal(unencodedRunInfo))
			Expect(err).NotTo(HaveOccurred())
Ejemplo n.º 5
0
			sqlDB := sqldb.NewSQLDB(db, 5, 5, format.ENCRYPTED_PROTO, cryptor, fakeGUIDProvider, fakeClock, dbFlavor)
			err = sqlDB.PerformEncryption(logger)
			Expect(err).NotTo(HaveOccurred())

			cryptor = makeCryptor("new")
			encoder = format.NewEncoder(cryptor)

			var result []byte
			queryStr = "SELECT task_definition FROM tasks WHERE guid = ?"
			if test_helpers.UsePostgres() {
				queryStr = test_helpers.ReplaceQuestionMarks(queryStr)
			}
			row := db.QueryRow(queryStr, taskGuid)
			err = row.Scan(&result)
			Expect(err).NotTo(HaveOccurred())
			decrypted1, err := encoder.Decode(result)
			Expect(err).NotTo(HaveOccurred())
			Expect(decrypted1).To(Equal(value1))

			var runInfo, volumePlacement []byte
			queryStr = "SELECT run_info, volume_placement FROM desired_lrps WHERE process_guid = ?"
			if test_helpers.UsePostgres() {
				queryStr = test_helpers.ReplaceQuestionMarks(queryStr)
			}
			row = db.QueryRow(queryStr, processGuid)
			err = row.Scan(&runInfo, &volumePlacement)
			Expect(err).NotTo(HaveOccurred())
			decrypted2, err := encoder.Decode(runInfo)
			Expect(err).NotTo(HaveOccurred())
			decrypted3, err := encoder.Decode(volumePlacement)
			Expect(err).NotTo(HaveOccurred())