@@ -888,24 +888,34 @@ export class E2EE {
888
888
aes_iv,
889
889
message,
890
890
} ) ;
891
- const decipher = crypto . createDecipheriv (
892
- "aes-256-cbc" ,
893
- aes_key ,
894
- aes_iv ,
895
- ) ;
891
+
896
892
let decrypted : Buffer | undefined ;
893
+
894
+ // 最初の試行
897
895
try {
896
+ const decipher = crypto . createDecipheriv (
897
+ "aes-256-cbc" ,
898
+ aes_key ,
899
+ aes_iv ,
900
+ ) ;
898
901
decrypted = Buffer . concat ( [
899
902
decipher . update ( message ) ,
900
903
decipher . final ( ) ,
901
904
] ) ;
902
- } catch {
903
- decipher . setAutoPadding ( false ) ;
905
+ } catch ( error ) {
906
+ // エラー時は新しい decipher オブジェクトを作成
907
+ const decipher2 = crypto . createDecipheriv (
908
+ "aes-256-cbc" ,
909
+ aes_key ,
910
+ aes_iv ,
911
+ ) ;
912
+ decipher2 . setAutoPadding ( false ) ;
904
913
decrypted = Buffer . concat ( [
905
- decipher . update ( message ) ,
906
- decipher . final ( ) ,
914
+ decipher2 . update ( message ) ,
915
+ decipher2 . final ( ) ,
907
916
] ) ;
908
917
}
918
+
909
919
this . e2eeLog (
910
920
"decryptE2EEMessageV1DecryptedMessage" ,
911
921
decrypted . toString ( "utf-8" ) ,
@@ -940,32 +950,45 @@ export class E2EE {
940
950
contentType ,
941
951
) ;
942
952
943
- const decipher = crypto . createDecipheriv ( "aes-256-gcm" , gcmKey , sign ) ;
944
- decipher . setAuthTag ( tag ) ;
945
- decipher . setAAD ( aad ) ;
946
953
let decrypted ;
954
+
955
+ // 最初の試行
947
956
try {
957
+ const decipher = crypto . createDecipheriv (
958
+ "aes-256-gcm" ,
959
+ gcmKey ,
960
+ sign ,
961
+ ) ;
962
+ decipher . setAuthTag ( tag ) ;
963
+ decipher . setAAD ( aad ) ;
964
+ decrypted = Buffer . concat ( [
965
+ decipher . update ( ciphertext ) ,
966
+ decipher . final ( ) ,
967
+ ] ) ;
968
+ } catch ( error ) {
969
+ // エラー時は新しい decipher オブジェクトを作成
948
970
try {
971
+ const decipher2 = crypto . createDecipheriv (
972
+ "aes-256-gcm" ,
973
+ gcmKey ,
974
+ sign ,
975
+ ) ;
976
+ decipher2 . setAuthTag ( tag ) ;
977
+ decipher2 . setAAD ( aad ) ;
978
+ decipher2 . setAutoPadding ( false ) ;
949
979
decrypted = Buffer . concat ( [
950
- decipher . update ( ciphertext ) ,
951
- decipher . final ( ) ,
952
- ] ) ;
953
- } catch {
954
- decipher . setAutoPadding ( false ) ;
955
- decrypted = Buffer . concat ( [
956
- decipher . update ( ciphertext ) ,
957
- decipher . final ( ) ,
980
+ decipher2 . update ( ciphertext ) ,
981
+ decipher2 . final ( ) ,
958
982
] ) ;
983
+ } catch ( retryError ) {
984
+ if ( retryError instanceof Error ) {
985
+ this . e2eeLog (
986
+ "decryptE2EEMessageV2DecryptionFailed" ,
987
+ retryError . message ,
988
+ ) ;
989
+ }
990
+ throw retryError ;
959
991
}
960
- } catch ( error ) {
961
- if ( error instanceof Error ) {
962
- this . e2eeLog (
963
- "decryptE2EEMessageV2DecryptionFailed" ,
964
- error . message ,
965
- ) ;
966
- }
967
-
968
- throw error ;
969
992
}
970
993
971
994
this . e2eeLog ( "decryptE2EEMessageV2DecryptedMessage" , decrypted ) ;
0 commit comments