Title: Digital Signatures, Font Files, and Recursion
1Digital Signatures, Font Files, and Recursion
2Original signed file
0
1
2
3
4
5
6
7
red nodes indicate hash values in the signed file
3Subsetted signed file
0
1
2
3
4
5
6
7
subsetted file contains glyphs 0, 1, and 2
4Further subsetted file
0
1
2
3
4
5
6
7
further subsetted file contains just glyph 1
5Illustration of subsetting glyphs 0, 1, and 2
0
1
2
3
4
5
6
7
black highlighted nodes indicate the current
recursive call
return h(0, 0). do not emit.
red smallest glyph in file not processed
yet blue smallest glyph in output file not
processed yet
6Illustration (slide 2)
0
1
2
3
4
5
6
7
return h(1, 1). do not emit.
7Illustration (slide 3)
0
1
2
3
4
5
6
7
return h(0, 1). do not emit.
8Illustration (slide 4)
0
1
2
3
4
5
6
7
return h(2, 2). do not emit.
9Illustration (slide 5)
0
1
2
3
4
5
6
7
return h(3, 3). emit h(3, 3).
10Illustration (slide 6)
0
1
2
3
4
5
6
7
return h(2, 3). do not emit.
11Illustration (slide 7)
0
1
2
3
4
5
6
7
return h(0, 3). do not emit.
12Illustration (slide 8)
0
1
2
3
4
5
6
7
return h(4, 4). do not emit.
13Illustration (slide 9)
0
1
2
3
4
5
6
7
return h(5, 5). do not emit.
14Illustration (slide 10)
0
1
2
3
4
5
6
7
return h(4, 5). do not emit.
15Illustration (slide 11)
0
1
2
3
4
5
6
7
return h(6, 6). do not emit.
16Illustration (slide 12)
0
1
2
3
4
5
6
7
return h(7, 7). do not emit.
17Illustration (slide 13)
0
1
2
3
4
5
6
7
return h(6, 7). do not emit.
18Illustration (slide 14)
0
1
2
3
4
5
6
7
return h(4, 7). emit h(4, 7).
19Illustration (slide 15)
0
1
2
3
4
5
6
7
copy h(0, 7) from original file to output file.
20Subsetting
- Important Note that the decisions to emit a hash
value to the output file and whether to make
recursive calls depend on the position of the red
and blue arrows at the time the recursive call is
made.
21Illustration of further subsetting to just glyph 1
0
1
2
3
4
5
6
7
Input file has glyphs 0, 1, 2, and hash values
h(3, 3) and h(4, 7). Output file has just glyph 1.
return h(0, 0). emit h(0, 0).
22Illustration (slide 2)
0
1
2
3
4
5
6
7
return h(1, 1). do not emit.
23Illustration (slide 3)
0
1
2
3
4
5
6
7
return h(0, 1). do not emit.
24Illustration (slide 4)
0
1
2
3
4
5
6
7
return h(2, 2). do not emit.
25Illustration (slide 5)
0
1
2
3
4
5
6
7
return h(3, 3). do not emit.
26Illustration (slide 6)
0
1
2
3
4
5
6
7
return h(2, 3). emit h(2, 3).
27Illustration (slide 7)
0
1
2
3
4
5
6
7
return h(0, 3). do not emit.
28Illustration (slide 8)
0
1
2
3
4
5
6
7
return h(4, 7), which is in the original
file. emit h(4, 7).
29Illustration (slide 9)
0
1
2
3
4
5
6
7
copy h(0, 7) from original file to output file.