• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2021 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15
16package config
17
18import (
19	"encoding/json"
20)
21
22func FuzzConfig(data []byte) int {
23	if len(data) != 32 {
24		return -1
25	}
26	crypter := NewSymmetricCrypter(make([]byte, 32))
27	_, _ = crypter.EncryptValue(string(data))
28	_, _ = crypter.DecryptValue(string(data))
29	return 1
30}
31
32func fuuzRoundtripKey(m Key, marshal func(v interface{}) ([]byte, error),
33	unmarshal func([]byte, interface{}) error) (Key, error) {
34	b, err := marshal(m)
35	if err != nil {
36		return Key{}, err
37	}
38
39	var newM Key
40	err = unmarshal(b, &newM)
41	return newM, err
42}
43
44func FuzzParseKey(data []byte) int {
45	k, err := ParseKey(string(data))
46	if err != nil {
47		return 0
48	}
49	fuuzRoundtripKey(k, json.Marshal, json.Unmarshal)
50	return 1
51}
52