@@ -667,15 +667,19 @@ def certificate_extension(self) -> Optional[str]:
667667 def certificate_extension (self , certificate_extension : Optional [str ]) -> None :
668668 self ._certificate_extension = certificate_extension
669669
670+ def __comparable_tuple (self ) -> _ComparableTuple :
671+ return _ComparableTuple ((
672+ self .subject_name , self .issuer_name , self .not_valid_before , self .not_valid_after ,
673+ self .certificate_format , self .certificate_extension
674+ ))
675+
670676 def __eq__ (self , other : object ) -> bool :
671677 if isinstance (other , CertificateProperties ):
672- return hash ( other ) == hash ( self )
678+ return self . __comparable_tuple ( ) == other . __comparable_tuple ( )
673679 return False
674680
675681 def __hash__ (self ) -> int :
676- # TODO
677- return hash ((self .subject_name , self .issuer_name , self .not_valid_before , self .not_valid_after ,
678- self .certificate_format , self .certificate_extension ))
682+ return hash (self .__comparable_tuple ())
679683
680684 def __repr__ (self ) -> str :
681685 return f'<CertificateProperties subject_name={ self .subject_name } , certificate_format={ self .certificate_format } >'
@@ -791,14 +795,18 @@ def algorithm_ref(self) -> Optional[BomRef]:
791795 def algorithm_ref (self , algorithm_ref : Optional [BomRef ]) -> None :
792796 self ._algorithm_ref = algorithm_ref
793797
798+ def __comparable_tuple (self ) -> _ComparableTuple :
799+ return _ComparableTuple ((
800+ self .mechanism , self .algorithm_ref
801+ ))
802+
794803 def __eq__ (self , other : object ) -> bool :
795804 if isinstance (other , RelatedCryptoMaterialSecuredBy ):
796- return hash ( other ) == hash ( self )
805+ return self . __comparable_tuple ( ) == other . __comparable_tuple ( )
797806 return False
798807
799808 def __hash__ (self ) -> int :
800- # TODO
801- return hash ((self .mechanism , self .algorithm_ref ))
809+ return hash (self .__comparable_tuple ())
802810
803811 def __repr__ (self ) -> str :
804812 return f'<RelatedCryptoMaterialSecuredBy mechanism={ self .mechanism } , algorithm_ref={ self .algorithm_ref } >'
@@ -1031,15 +1039,19 @@ def secured_by(self) -> Optional[RelatedCryptoMaterialSecuredBy]:
10311039 def secured_by (self , secured_by : Optional [RelatedCryptoMaterialSecuredBy ]) -> None :
10321040 self ._secured_by = secured_by
10331041
1042+ def __comparable_tuple (self ) -> _ComparableTuple :
1043+ return _ComparableTuple ((
1044+ self .type , self .id , self .state , self .algorithm_ref , self .creation_date , self .activation_date ,
1045+ self .update_date , self .expiration_date , self .value , self .size , self .format , self .secured_by
1046+ ))
1047+
10341048 def __eq__ (self , other : object ) -> bool :
10351049 if isinstance (other , RelatedCryptoMaterialProperties ):
1036- return hash ( other ) == hash ( self )
1050+ return self . __comparable_tuple ( ) == other . __comparable_tuple ( )
10371051 return False
10381052
10391053 def __hash__ (self ) -> int :
1040- # TODO
1041- return hash ((self .type , self .id , self .state , self .algorithm_ref , self .creation_date , self .activation_date ,
1042- self .update_date , self .expiration_date , self .value , self .size , self .format , self .secured_by ))
1054+ return hash (self .__comparable_tuple ())
10431055
10441056 def __repr__ (self ) -> str :
10451057 return f'<RelatedCryptoMaterialProperties type={ self .type } , id={ self .id } state={ self .state } >'
@@ -1140,23 +1152,23 @@ def identifiers(self) -> 'SortedSet[str]':
11401152 def identifiers (self , identifiers : Iterable [str ]) -> None :
11411153 self ._identifiers = SortedSet (identifiers )
11421154
1155+ def __comparable_tuple (self ) -> _ComparableTuple :
1156+ return _ComparableTuple ((
1157+ self .name , _ComparableTuple (self .algorithms ), _ComparableTuple (self .identifiers )
1158+ ))
1159+
11431160 def __eq__ (self , other : object ) -> bool :
11441161 if isinstance (other , ProtocolPropertiesCipherSuite ):
1145- return hash ( other ) == hash ( self )
1162+ return self . __comparable_tuple ( ) == other . __comparable_tuple ( )
11461163 return False
11471164
11481165 def __lt__ (self , other : Any ) -> bool :
11491166 if isinstance (other , ProtocolPropertiesCipherSuite ):
1150- return _ComparableTuple ((
1151- self .name , _ComparableTuple (self .algorithms ), _ComparableTuple (self .identifiers )
1152- )) < _ComparableTuple ((
1153- other .name , _ComparableTuple (other .algorithms ), _ComparableTuple (other .identifiers )
1154- ))
1167+ return self .__comparable_tuple () < other .__comparable_tuple ()
11551168 return NotImplemented
11561169
11571170 def __hash__ (self ) -> int :
1158- # TODO
1159- return hash ((self .name , tuple (self .algorithms ), tuple (self .identifiers )))
1171+ return hash (self .__comparable_tuple ())
11601172
11611173 def __repr__ (self ) -> str :
11621174 return f'<ProtocolPropertiesCipherSuite name={ self .name } >'
@@ -1282,14 +1294,23 @@ def auth(self) -> 'SortedSet[BomRef]':
12821294 def auth (self , auth : Iterable [BomRef ]) -> None :
12831295 self ._auth = SortedSet (auth )
12841296
1297+ def __comparable_tuple (self ) -> _ComparableTuple :
1298+ return _ComparableTuple ((
1299+ _ComparableTuple (self .encr ),
1300+ _ComparableTuple (self .prf ),
1301+ _ComparableTuple (self .integ ),
1302+ _ComparableTuple (self .ke ),
1303+ self .esn ,
1304+ _ComparableTuple (self .auth )
1305+ ))
1306+
12851307 def __eq__ (self , other : object ) -> bool :
12861308 if isinstance (other , Ikev2TransformTypes ):
1287- return hash ( other ) == hash ( self )
1309+ return self . __comparable_tuple ( ) == other . __comparable_tuple ( )
12881310 return False
12891311
12901312 def __hash__ (self ) -> int :
1291- # TODO
1292- return hash ((tuple (self .encr ), tuple (self .prf ), tuple (self .integ ), tuple (self .ke ), self .esn , tuple (self .auth )))
1313+ return hash (self .__comparable_tuple ())
12931314
12941315 def __repr__ (self ) -> str :
12951316 return f'<Ikev2TransformTypes esn={ self .esn } >'
@@ -1382,14 +1403,18 @@ def ikev2_transform_types(self) -> Optional[Ikev2TransformTypes]:
13821403 def ikev2_transform_types (self , ikev2_transform_types : Optional [Ikev2TransformTypes ]) -> None :
13831404 self ._ikev2_transform_types = ikev2_transform_types
13841405
1406+ def __comparable_tuple (self ) -> _ComparableTuple :
1407+ return _ComparableTuple ((
1408+ self .type , self .version , _ComparableTuple (self .cipher_suites ), self .ikev2_transform_types
1409+ ))
1410+
13851411 def __eq__ (self , other : object ) -> bool :
13861412 if isinstance (other , ProtocolProperties ):
1387- return hash ( other ) == hash ( self )
1413+ return self . __comparable_tuple ( ) == other . __comparable_tuple ( )
13881414 return False
13891415
13901416 def __hash__ (self ) -> int :
1391- # TODO
1392- return hash ((self .type , self .version , tuple (self .cipher_suites ), self .ikev2_transform_types ))
1417+ return hash (self .__comparable_tuple ())
13931418
13941419 def __repr__ (self ) -> str :
13951420 return f'<ProtocolProperties type={ self .type } , version={ self .version } >'
@@ -1520,34 +1545,28 @@ def oid(self) -> Optional[str]:
15201545 def oid (self , oid : Optional [str ]) -> None :
15211546 self ._oid = oid
15221547
1548+ def __comparable_tuple (self ) -> _ComparableTuple :
1549+ return _ComparableTuple ((
1550+ self .asset_type ,
1551+ self .algorithm_properties ,
1552+ self .certificate_properties ,
1553+ self .related_crypto_material_properties ,
1554+ self .protocol_properties ,
1555+ self .oid ,
1556+ ))
1557+
15231558 def __eq__ (self , other : object ) -> bool :
15241559 if isinstance (other , CryptoProperties ):
1525- return hash ( other ) == hash ( self )
1560+ return self . __comparable_tuple ( ) == other . __comparable_tuple ( )
15261561 return False
15271562
15281563 def __lt__ (self , other : Any ) -> bool :
15291564 if isinstance (other , CryptoProperties ):
1530- return _ComparableTuple ((
1531- self .asset_type ,
1532- self .algorithm_properties ,
1533- self .certificate_properties ,
1534- self .related_crypto_material_properties ,
1535- self .protocol_properties ,
1536- self .oid ,
1537- )) < _ComparableTuple ((
1538- other .asset_type ,
1539- other .algorithm_properties ,
1540- other .certificate_properties ,
1541- other .related_crypto_material_properties ,
1542- other .protocol_properties ,
1543- other .oid ,
1544- ))
1565+ return self .__comparable_tuple () < other .__comparable_tuple ()
15451566 return NotImplemented
15461567
15471568 def __hash__ (self ) -> int :
1548- # TODO
1549- return hash ((self .asset_type , self .algorithm_properties , self .certificate_properties ,
1550- self .related_crypto_material_properties , self .protocol_properties , self .oid ))
1569+ return hash (self .__comparable_tuple ())
15511570
15521571 def __repr__ (self ) -> str :
15531572 return f'<CryptoProperties asset_type={ self .asset_type } , oid={ self .oid } >'
0 commit comments