1+ load ("@vendor//asserts" , "asserts" )
2+ load ("@stdlib//unittest" , "unittest" )
3+ load ("@vgs//pgp" , "pgp" )
4+
5+ def _test_encryption_algorithms ():
6+ """Test encryption with different algorithms"""
7+
8+ # Test key from BouncyCastle examples - do not use in production
9+ public_key = """-----BEGIN PGP PUBLIC KEY BLOCK-----
10+
11+ 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
69+ gmNtylgnstPHygBV8Qmryh+tF8bOwi0QjTsrvlA=
70+ =F8Ao
71+ -----END PGP PUBLIC KEY BLOCK-----"""
72+
73+ # nosemgrep: secrets.misc.generic_private_key_pgp.generic_private_key_pgp
74+ private_key = """-----BEGIN PGP PRIVATE KEY BLOCK-----
75+
76+ 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
188+ AFXxCavKH60Xxs7CLRCNOyu+UA==
189+ =obP3
190+ -----END PGP PRIVATE KEY BLOCK-----"""
191+
192+ # Test with all supported symmetric algorithms
193+ algorithms = [
194+ "AES-128" , "AES128" ,
195+ "AES-192" , "AES192" ,
196+ "AES-256" , "AES256" ,
197+ "BLOWFISH" ,
198+ "CAMELLIA-128" , "CAMELLIA128" ,
199+ "CAMELLIA-192" , "CAMELLIA192" ,
200+ "CAMELLIA-256" , "CAMELLIA256" ,
201+ "TWOFISH"
202+ ]
203+
204+ message = bytes ("Test encryption with different algorithms" , "utf-8" )
205+
206+ # Test each algorithm
207+ for algo in algorithms :
208+ print ("Testing algorithm: " + algo )
209+
210+ # Encrypt with the algorithm
211+ encrypted = pgp .encrypt (
212+ message ,
213+ public_key ,
214+ # file_name="test.txt",
215+ armor = True ,
216+ algorithm = algo
217+ )
218+
219+ # Decrypt and verify
220+ decrypted = pgp .decrypt (
221+ encrypted ,
222+ private_key ,
223+ passphrase = None
224+ )
225+
226+ # Verify the decryption worked
227+ asserts .assert_that (decrypted ).is_equal_to (message )
228+
229+ def _suite ():
230+ _suite = unittest .TestSuite ()
231+ _suite .addTest (unittest .FunctionTestCase (_test_encryption_algorithms ))
232+
233+ return _suite
234+
235+ _runner = unittest .TextTestRunner ()
236+ _runner .run (_suite ())
0 commit comments