@@ -2122,6 +2122,7 @@ VFBLG8uc9IiaKann/DYBAJcZNZHRSfpDoV2pUA5EAEi2MdjxkRysFQnYPRAu
21222122 decryptionKeys : originalDecryptedKey
21232123 } ) ;
21242124 expect ( decrypted . data ) . to . equal ( 'test' ) ;
2125+ } ) ;
21252126 } ) ;
21262127
21272128 describe ( 'encryptSessionKey - unit tests' , function ( ) {
@@ -4081,6 +4082,45 @@ bsZgJWVlAa5eil6J9ePX2xbo1vVAkLQdzE9+1jL+l7PRIZuVBQ==
40814082 expect ( data ) . to . equal ( 'test' ) ;
40824083 } ) ;
40834084
4085+ it ( 'should enforce using AES session keys with x25519 keys (new format)' , async function ( ) {
4086+ // x25519 key (v4) with cast5 as preferred cipher
4087+ const privateKeyCast5 = await openpgp . readKey ( { armoredKey : `-----BEGIN PGP PRIVATE KEY BLOCK-----
4088+
4089+ xUkEZK8BixuMghYwdEgHl+3ASI4VZkn048KG4DVuugT1bMe4QTtFtQCoKBOG
4090+ JxrZh8E+7I5nK7McXP2U9gyC0+RFcD46AxSmRA46zQDCiAQQGwgAPgWCZK8B
4091+ iwQLAwcICZCaWrTxMIPhVwMVCAoEFgACAQIZAQKbAwIeARYhBDFBS8Xnfotk
4092+ Oun5WZpatPEwg+FXAABwwuNWCdr1WahiGrLupYaOYQO4S9y+FYTxqEV/gsOP
4093+ TKwmNIcIJPROV2LgyxvzQo79//0CocEYojEeUhGn7BH5lwvHSQRkrwGLGbVM
4094+ 1JxFUJeQ253sHMko73uPkyyb9DvaeyWHPwgF2k9GACA9caoO8GsZI7KMnVGP
4095+ c4EpytBwVIsr4ck3QaEV/UxvDpnCdAQYGwgAKgWCZK8BiwmQmlq08TCD4VcC
4096+ mwwWIQQxQUvF536LZDrp+VmaWrTxMIPhVwAAXycLtMyiv0lon4qU5/rKWjrq
4097+ MIxMchUbHvktvUqomU0pDDLMPqLFtzBbtHqODPVbLTOygJRVLeHyWTOEfmOD
4098+ kl0L
4099+ =SYJZ
4100+ -----END PGP PRIVATE KEY BLOCK-----` } ) ;
4101+
4102+ await expect ( openpgp . generateSessionKey ( {
4103+ encryptionKeys : privateKeyCast5 ,
4104+ config : { preferredSymmetricAlgorithm : openpgp . enums . symmetric . cast5 }
4105+ } ) ) . to . be . rejectedWith ( / C o u l d n o t g e n e r a t e a s e s s i o n k e y c o m p a t i b l e w i t h t h e g i v e n ` e n c r y p t i o n K e y s ` / ) ;
4106+
4107+ await expect ( openpgp . encrypt ( {
4108+ message : await openpgp . createMessage ( { text : plaintext } ) ,
4109+ encryptionKeys : privateKeyCast5 ,
4110+ sessionKey : { data : new Uint8Array ( 16 ) . fill ( 1 ) , algorithm : 'cast5' }
4111+ } ) ) . to . be . rejectedWith ( / X 2 5 5 1 9 k e y s c a n o n l y e n c r y p t A E S s e s s i o n k e y s / ) ;
4112+
4113+ await expect ( openpgp . decryptSessionKeys ( {
4114+ message : await openpgp . readMessage ( { armoredMessage : `-----BEGIN PGP MESSAGE-----
4115+
4116+ wUQD66NYAXF0vfYZNWpc7s9eihtgj7EhHBeLOq2Ktw79artbhN5JMs+9aCIZ
4117+ A7sB7uYCTVCLIMfPFwVZH+c29gpCzPxSXQ==
4118+ =Dr02
4119+ -----END PGP MESSAGE-----` } ) ,
4120+ decryptionKeys : privateKeyCast5
4121+ } ) ) . to . be . rejectedWith ( / A E S s e s s i o n k e y e x p e c t e d / ) ;
4122+ } ) ;
4123+
40844124 describe ( 'Sign and verify with each curve' , function ( ) {
40854125 const curves = [ 'secp256k1' , 'p256' , 'p384' , 'p521' , 'curve25519' , 'brainpoolP256r1' , 'brainpoolP384r1' , 'brainpoolP512r1' ] ;
40864126 curves . forEach ( curve => {
0 commit comments