@@ -129,7 +129,7 @@ def der_cert(der_data):
129
129
"""
130
130
Load a DER encoded certificate
131
131
132
- @param der : DER-encoded certificate
132
+ @param der_data : DER-encoded certificate
133
133
@return: RSA instance
134
134
"""
135
135
if isinstance (der_data , str ):
@@ -496,6 +496,16 @@ def add_kid(self):
496
496
"""
497
497
self .kid = b64e (self .thumbprint ('SHA-256' )).decode ('utf8' )
498
498
499
+ def is_private_key (self ):
500
+ for p in self .members :
501
+ if p not in self .public_members :
502
+ if getattr (self , p ):
503
+ return True
504
+ return False
505
+
506
+ def is_public_key (self ):
507
+ return not self .is_private_key ()
508
+
499
509
500
510
def deser (val ):
501
511
"""
@@ -570,13 +580,13 @@ class RSAKey(Key):
570
580
571
581
Parameters according to https://tools.ietf.org/html/rfc7518#section-6.3
572
582
"""
573
- members = Key .members
583
+ members = Key .members [:]
574
584
# These are the RSA key specific parameters, they are always supposed to
575
585
# be strings or bytes
576
586
members .extend (["n" , "e" , "d" , "p" , "q" ])
577
587
# The parameters that represent long ints in the key instances
578
588
longs = ["n" , "e" , "d" , "p" , "q" , "dp" , "dq" , "di" , "qi" ]
579
- public_members = Key .public_members
589
+ public_members = Key .public_members [:]
580
590
# the public members of the key
581
591
public_members .extend (["n" , "e" ])
582
592
required = ['kty' , 'n' , 'e' ]
@@ -813,11 +823,12 @@ class ECKey(Key):
813
823
814
824
Parameters according to https://tools.ietf.org/html/rfc7518#section-6.2
815
825
"""
816
- members = Key .members
826
+ members = Key .members [:]
817
827
# The elliptic curve specific attributes
818
828
members .extend (["crv" , "x" , "y" , "d" ])
819
829
longs = ['x' , 'y' , 'd' ]
820
- public_members = ["kty" , "alg" , "use" , "kid" , "crv" , "x" , "y" ]
830
+ public_members = Key .public_members [:]
831
+ public_members .extend (["kty" , "alg" , "use" , "kid" , "crv" , "x" , "y" ])
821
832
required = ['crv' , 'key' , 'x' , 'y' ]
822
833
823
834
def __init__ (self , kty = "EC" , alg = "" , use = "" , kid = "" , key = None ,
@@ -992,8 +1003,9 @@ class SYMKey(Key):
992
1003
}
993
1004
994
1005
"""
995
- members = ["kty" , "alg" , "use" , "kid" , "k" ]
996
- public_members = members [:]
1006
+ members = Key .members [:]
1007
+ members .extend (["kty" , "alg" , "use" , "kid" , "k" ])
1008
+ public_members = Key .public_members [:]
997
1009
required = ['k' , 'kty' ]
998
1010
999
1011
def __init__ (self , kty = "oct" , alg = "" , use = "" , kid = "" , key = None ,
@@ -1046,6 +1058,12 @@ def encryption_key(self, alg, **kwargs):
1046
1058
1047
1059
return _enc_key
1048
1060
1061
+ def is_private_key (self ):
1062
+ return True
1063
+
1064
+ def is_public_key (self ):
1065
+ return True
1066
+
1049
1067
1050
1068
# -----------------------------------------------------------------------------
1051
1069
@@ -1181,7 +1199,7 @@ def __getitem__(self, item):
1181
1199
"""
1182
1200
Get all keys of a specific key type
1183
1201
1184
- :param kty : Key type
1202
+ :param item : Key type
1185
1203
:return: list of keys
1186
1204
"""
1187
1205
kty = item .lower ()
0 commit comments