Coverage for /pythoncovmergedfiles/medio/medio/src/fuzz_keys.py: 62%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1###### Coverage stub
2import atexit
3import coverage
4cov = coverage.coverage(data_file='.coverage', cover_pylib=True)
5cov.start()
6# Register an exist handler that will print coverage
7def exit_handler():
8 cov.stop()
9 cov.save()
10atexit.register(exit_handler)
11####### End of coverage stub
12#!/usr/bin/python3
13# Copyright 2023 Google LLC
14#
15# Licensed under the Apache License, Version 2.0 (the "License");
16# you may not use this file except in compliance with the License.
17# You may obtain a copy of the License at
18#
19# http://www.apache.org/licenses/LICENSE-2.0
20#
21# Unless required by applicable law or agreed to in writing, software
22# distributed under the License is distributed on an "AS IS" BASIS,
23# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24# See the License for the specific language governing permissions and
25# limitations under the License.
26import sys
27import atheris
28import hashlib
29import binascii
31import ecdsa
32from ecdsa.keys import VerifyingKey
33from ecdsa import SigningKey
36def target1(fdp):
37 try:
38 VerifyingKey.from_der(fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024)))
39 except ecdsa.der.UnexpectedDER:
40 pass
43def target2(fdp):
44 try:
45 VerifyingKey.from_pem(fdp.ConsumeBytes(
46 fdp.ConsumeIntInRange(0, 1024)), hashlib.sha256)
47 except ecdsa.der.UnexpectedDER:
48 pass
49 except binascii.Error:
50 pass
53def target3(fdp):
54 try:
55 VerifyingKey.from_public_key_recovery_with_digest(
56 fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024)),
57 fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024)),
58 ecdsa.curves.Ed25519)
59 except ecdsa.der.UnexpectedDER:
60 pass
61 except ValueError:
62 pass
65def target4(fdp):
66 try:
67 VerifyingKey.from_string(fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024)),
68 ecdsa.curves.Ed25519)
69 except ecdsa.keys.MalformedPointError:
70 pass
71 except ecdsa.der.UnexpectedDER:
72 pass
73 except ValueError:
74 pass
77def target5(fdp):
78 vk_str = fdp.ConsumeUnicodeNoSurrogates(fdp.ConsumeIntInRange(0, 1024))
79 sig = fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024))
80 data = fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024))
81 try:
82 vk = VerifyingKey.from_pem(vk_str)
83 vk.verify(sig, data)
84 except ecdsa.keys.MalformedPointError:
85 pass
86 except ecdsa.der.UnexpectedDER:
87 pass
88 except ValueError:
89 pass
92def target6(fdp):
93 sk = SigningKey.generate()
94 vk = sk.verifying_key
95 message = fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024))
96 signature = sk.sign(message)
97 assert vk.verify(signature, message)
100def target7(fdp):
101 try:
102 SigningKey.from_string(fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024)),
103 curve=ecdsa.curves.NIST384p)
104 except ecdsa.keys.MalformedPointError:
105 pass
108def target8(fdp):
109 try:
110 SigningKey.from_pem(fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024)))
111 except ecdsa.der.UnexpectedDER:
112 pass
113 except ValueError:
114 pass
117def target9(fdp):
118 try:
119 SigningKey.from_der(fdp.ConsumeBytes(fdp.ConsumeIntInRange(0, 1024)))
120 except ecdsa.der.UnexpectedDER:
121 pass
124def TestOneInput(data):
125 fdp = atheris.FuzzedDataProvider(data)
126 targets = [
127 target1,
128 target2,
129 target3,
130 target4,
131 target5,
132 target6,
133 target7,
134 target8,
135 target9
136 ]
138 target = fdp.PickValueInList(targets)
139 target(fdp)
142def main():
143 atheris.instrument_all()
144 atheris.Setup(sys.argv, TestOneInput)
145 atheris.Fuzz()
148if __name__ == "__main__":
149 main()