Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        public static PublicKey ExtractPublic(KeyPair masterKey, String ID)
        {
            BFUserPublicKey pk = new BFUserPublicKey(ID, (BFMasterPublicKey)masterKey.Public);

            return(pk);
        }
Ejemplo n.º 3
0
        public BFUserPublicKey Public(string id)
        {
            BFUserPublicKey userKey = (BFUserPublicKey)BFCipher.ExtractPublic(master, id);

            return(userKey);
        }