public static KeyPair Extract(KeyPair masterKey, String ID, Random rnd) { //user public key is ID+ public parameters BFUserPublicKey pk = new BFUserPublicKey(ID, (BFMasterPublicKey)masterKey.Public); Pairing e = ((BFMasterPublicKey)masterKey.Public).Pairing; //user private key: hash(ID)->point Q //sQ, s is the master private key byte[] bid = null; bid = Encoding.UTF8.GetBytes(ID); Point Q = BFUtil.HashToPoint(bid, e.Curve, e.Cofactor); BigInt s = ((BFMasterPrivateKey)masterKey.Private).Key; Q = e.Curve.Multiply(Q, s); BFUserPrivateKey sk = new BFUserPrivateKey(Q, (BFMasterPublicKey)masterKey.Public); return(new KeyPair(pk, sk)); }
public static PublicKey ExtractPublic(KeyPair masterKey, String ID) { BFUserPublicKey pk = new BFUserPublicKey(ID, (BFMasterPublicKey)masterKey.Public); return(pk); }
public BFUserPublicKey Public(string id) { BFUserPublicKey userKey = (BFUserPublicKey)BFCipher.ExtractPublic(master, id); return(userKey); }