@@ -69,8 +69,9 @@ void settingAndGettingPolicyBinding() {
69
69
70
70
71
71
BigInteger getRandomBigInteger (Random rand , int byteLength ) {
72
- return new BigInteger (1 +rand .nextInt (byteLength -1 ), rand );
72
+ return new BigInteger (( 1 +rand .nextInt (byteLength -1 ))* 8 , rand );
73
73
}
74
+
74
75
@ Test
75
76
void testReadingSignatureWithComponentSizes () {
76
77
var rand = new Random ();
@@ -98,4 +99,45 @@ void testReadingSignatureWithComponentSizes() {
98
99
assertThat (buffer .position ()).isEqualTo (buffer .capacity ());
99
100
}
100
101
}
102
+
103
+ @ Test
104
+ void testParsingTooBigSignatureComponents () {
105
+ {
106
+ var rand = new Random ();
107
+ var curve = NanoTDFType .ECCurve .SECP256R1 ;
108
+ var rBytes = new BigInteger ((curve .getKeySize () + 1 ) * 8 , rand ).toByteArray ();
109
+ var sBytes = getRandomBigInteger (rand , curve .getKeySize ()).toByteArray ();
110
+ var buffer = ByteBuffer .allocate (rBytes .length + sBytes .length + 2 );
111
+ buffer .put ((byte ) rBytes .length );
112
+ buffer .put (rBytes );
113
+ buffer .put ((byte ) sBytes .length );
114
+ buffer .put (sBytes );
115
+
116
+ buffer .flip ();
117
+
118
+ ECCMode eccMode = new ECCMode ();
119
+ eccMode .setECDSABinding (true );
120
+ eccMode .setEllipticCurve (curve );
121
+ assertThrows (SDK .MalformedTDFException .class , () -> PolicyInfo .readBinding (buffer , eccMode ));
122
+ }
123
+
124
+ {
125
+ var rand = new Random ();
126
+ var curve = NanoTDFType .ECCurve .SECP256R1 ;
127
+ var rBytes = getRandomBigInteger (rand , curve .getKeySize ()).toByteArray ();
128
+ var sBytes = new BigInteger ((curve .getKeySize () + 1 ) * 8 , rand ).toByteArray ();
129
+ var buffer = ByteBuffer .allocate (rBytes .length + sBytes .length + 2 );
130
+ buffer .put ((byte ) rBytes .length );
131
+ buffer .put (rBytes );
132
+ buffer .put ((byte ) sBytes .length );
133
+ buffer .put (sBytes );
134
+
135
+ buffer .flip ();
136
+
137
+ ECCMode eccMode = new ECCMode ();
138
+ eccMode .setECDSABinding (true );
139
+ eccMode .setEllipticCurve (curve );
140
+ assertThrows (SDK .MalformedTDFException .class , () -> PolicyInfo .readBinding (buffer , eccMode ));
141
+ }
142
+ }
101
143
}
0 commit comments