@@ -35,12 +35,19 @@ def test_vectors(self):
3535 self .assertEqual (ret , WALLY_OK )
3636 self .assertTrue (max_len >= len (str_in ))
3737
38+ ret , max_len_n = wally_base64_n_get_maximum_length (b64_in , len (b64_in ), 0 )
39+ self .assertEqual (ret , WALLY_OK )
40+ self .assertEqual (max_len , max_len_n )
41+
3842 ret , b64_out = wally_base64_from_bytes (utf8 (str_in ), len (str_in ), 0 )
3943 self .assertEqual ((ret , b64_out ), (WALLY_OK , b64_in ))
4044
4145 ret , written = wally_base64_to_bytes (utf8 (b64_in ), 0 , buf , max_len )
4246 self .assertEqual ((ret , buf [:written ]), (WALLY_OK , utf8 (str_in )))
4347
48+ ret , written = wally_base64_n_to_bytes (utf8 (b64_in ), len (b64_in ), 0 , buf , max_len )
49+ self .assertEqual ((ret , buf [:written ]), (WALLY_OK , utf8 (str_in )))
50+
4451 def test_get_maximum_length (self ):
4552 # Invalid args
4653 valid_b64 = utf8 (ROUND_TRIP_CASES [0 ][1 ])
@@ -69,6 +76,7 @@ def test_base64_to_bytes(self):
6976 # Invalid args
7077 buf , buf_len = make_cbuffer ('00' * 1024 )
7178 valid_b64 = utf8 (ROUND_TRIP_CASES [0 ][1 ])
79+ valid_len = len (valid_b64 )
7280 _ , max_len = wally_base64_get_maximum_length (valid_b64 , 0 )
7381
7482 for args in [
@@ -80,6 +88,13 @@ def test_base64_to_bytes(self):
8088 ret , written = wally_base64_to_bytes (* args )
8189 self .assertEqual ((ret , written ), (WALLY_EINVAL , 0 ))
8290
91+ for args in [
92+ (None , valid_len , 0 , buf , max_len ), # NULL base64 string, non-0 length
93+ (valid_b64 , 0 , 0 , buf , max_len ), # Non-NULL base64 string, 0 length
94+ ]:
95+ ret , written = wally_base64_n_to_bytes (* args )
96+ self .assertEqual ((ret , written ), (WALLY_EINVAL , 0 ))
97+
8398 # Too short output length returns the number of bytes needed
8499 ret , written = wally_base64_to_bytes (valid_b64 , 0 , buf , max_len - 1 )
85100 self .assertEqual ((ret , written ), (WALLY_OK , max_len ))
0 commit comments