You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Parameters are ignored in PairingGroup.random when the type of the element to be generated randomly is GT.
According to the developer document, it is expected to generate 3 elements of GT when calling group.random(GT, 3), where the symbol group is an object belonging to PairingGroup. However, when executing a, b, c = group.random(GT, 3), it does not work as a, b, c = group.random(ZR, 3) and other types. In the document, there are no related statements indicating that it is a special case when the function is called for generating multiple elements belonging to GT.
def random(self, _type=ZR, count=1, seed=None):
"""selects a random element in ZR, G1, G2 and GT"""
if _type == GT: return self.__randomGT()
elif _type in [ZR, G1, G2]:
if seed != None and count == 1:
return random(self.Pairing, _type, seed)
elif count > 1:
return tuple([random(self.Pairing, _type) for i in range(count)])
return random(self.Pairing, _type)
return None
def __randomGT(self):
if not hasattr(self, 'gt'):
self.gt = pair(self.random(G1), self.random(G2))
z = self.random(ZR)
return self.gt ** z
If there are no special meanings for count or seed in this case, the following codes may be helpful.
def random(self:object, _type:int = ZR, count:int = 1, seed:object = None) -> object:
"""selects a random element in ZR, G1, G2 and GT"""
if _type == GT: return self.__randomGT(count = count, seed = seed)
elif _type in [ZR, G1, G2]:
if seed != None and count == 1:
return random(self.Pairing, _type, seed)
elif count > 1:
return tuple([random(self.Pairing, _type) for i in range(count)])
return random(self.Pairing, _type)
return None
def __randomGT(self:object, count:int = 1, seed:object = None) -> object:
if not hasattr(self, 'gt'): # it is recommended to generate that when an instance is constructed
self.gt = pair(self.random(G1, seed = seed), self.random(G2, seed = seed))
# self.gt = pair(self.random(G1), self.random(G2))
z = self.random(ZR, count = count, seed = seed)
return tuple(self.gt ** ele for ele in z) if count > 1 else self.gt ** z
The text was updated successfully, but these errors were encountered:
Parameters are ignored in
PairingGroup.random
when the type of the element to be generated randomly isGT
.According to the developer document, it is expected to generate 3 elements of
GT
when callinggroup.random(GT, 3)
, where the symbolgroup
is an object belonging toPairingGroup
. However, when executinga, b, c = group.random(GT, 3)
, it does not work asa, b, c = group.random(ZR, 3)
and other types. In the document, there are no related statements indicating that it is a special case when the function is called for generating multiple elements belonging toGT
.The related codes are from https://github.com/JHUISI/charm/blob/dev/charm/toolbox/pairinggroup.py.
If there are no special meanings for
count
orseed
in this case, the following codes may be helpful.The text was updated successfully, but these errors were encountered: