当前位置: 首页>>代码示例>>Java>>正文


Java PairingFactory类代码示例

本文整理汇总了Java中it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory的典型用法代码示例。如果您正苦于以下问题:Java PairingFactory类的具体用法?Java PairingFactory怎么用?Java PairingFactory使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


PairingFactory类属于it.unisa.dia.gas.plaf.jpbc.pairing包,在下文中一共展示了PairingFactory类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: createParameters

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
@Override
public IPLOSTW10Parameters createParameters(int n, String keyPath) {
	PairingFactory.getInstance().setUsePBCWhenPossible(true);

	int rBits = 160;
	int qBits = 128;
	TypeACurveGenerator pg = new TypeACurveGenerator(rBits, qBits);

	PairingParameters pp = pg.generate();
	// save pairing parameters
	Common.writeFile(keyPath + "/pairing.properties", pp.toString()
			.getBytes());

	return new IPLOSTW10ParametersGenerator().init(pp, n)
			.generateParameters();
}
 
开发者ID:simonstey,项目名称:SecureLinkedData,代码行数:17,代码来源:DataTier.java

示例2: BLSCommittedSecretShareMessage

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
private BLSCommittedSecretShareMessage(BLS01Parameters blsParameters, ASN1Sequence seq)
{
    this.index = ASN1Integer.getInstance(seq.getObjectAt(0)).getValue().intValue();
    this.value = ASN1Integer.getInstance(seq.getObjectAt(1)).getValue();
    this.witness = ASN1Integer.getInstance(seq.getObjectAt(2)).getValue();

    ASN1Sequence s = ASN1Sequence.getInstance(seq.getObjectAt(3));

    this.commitmentFactors = new Element[s.size()];

    for (int i = 0; i != commitmentFactors.length; i++)
    {
        commitmentFactors[i] = blsParameters.getG().duplicate();
        commitmentFactors[i].setFromBytes(DEROctetString.getInstance(s.getObjectAt(i)).getOctets());
    }

    Pairing pairing = PairingFactory.getPairing(blsParameters.getCurveParameters());
    this.pK = pairing.getG2().newElement();
    this.pK.setFromBytes(DEROctetString.getInstance(seq.getObjectAt(4)).getOctets());
}
 
开发者ID:cwgit,项目名称:ximix,代码行数:21,代码来源:BLSCommittedSecretShareMessage.java

示例3: initialize

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
@Override
public void initialize() {
	if (forEncryption) {
		if (!(key instanceof FEEncryptionParameters))
			throw new IllegalArgumentException("FEEncryptionParameters are required for encryption.");
	} else {
		if (!(key instanceof IPLOSTW10SecretKeyParameters))
			throw new IllegalArgumentException("IPLOSTW10SecretKeyParameters are required for decryption.");
	}

	IPLOSTW10KeyParameters ipKey = (IPLOSTW10KeyParameters) key;
	this.n = ipKey.getParameters().getN();
	int N = (2 * n + 3);
	this.pairing = PairingFactory.getPairing(ipKey.getParameters().getParameters());
	this.productPairing = new ProductPairing(null, pairing, N);

	this.keyBytes = pairing.getGT().getLengthInBytes();
	this.outBytes = 2 * pairing.getGT().getLengthInBytes() + N * pairing.getG1().getLengthInBytes();
}
 
开发者ID:simonstey,项目名称:SecureLinkedData,代码行数:20,代码来源:FEKEMEngine.java

示例4: split

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
/**
 * Given the secret generate random coefficients (except for a_0 which is
 * the secret) and compute the function for each privacy peer (who is
 * assigned a dedicated alpha). Coefficients are picked from (0, fieldSize).
 *
 * @param secret the secret to be shared
 * @return the shares of the secret for each privacy peer
 */
public BLSCommittedSplitSecret split(BigInteger secret)
{
    // a polynomial
    SplitSecret secretShares = secretSplitter.split(secret);
    // b polynomial
    SplitSecret bShares = secretSplitter.split(getRandomInteger(PairingFactory.getPairing(domainParams.getCurveParameters()).getZr().getOrder(), random));

    Element[] commitments = new Element[k];

    for (int j = 0; j < k; j++)
    {
        commitments[j] = domainParams.getG().mul(secretShares.getCoefficients()[j]).add(h.mul(bShares.getCoefficients()[j]));
    }

    return new BLSCommittedSplitSecret(secretShares.getShares(), secretShares.getCoefficients(), bShares.getShares(), commitments);
}
 
开发者ID:cwgit,项目名称:ximix,代码行数:25,代码来源:BLSNewDKGSecretSplitter.java

示例5: fetchPartialPublicKey

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
@Override
public PartialPublicKeyInfo fetchPartialPublicKey(String keyID)
    throws IOException
{
    if (sharedPrivateKeyMap.containsKey(keyID))
    {
        BLS01Parameters params = paramsMap.get(keyID);
        Share<BigInteger> share = sharedPrivateKeyMap.getShare(keyID, TIME_OUT, TimeUnit.SECONDS);
        Pairing pairing = PairingFactory.getPairing(params.getCurveParameters());
        Element g = params.getG();

        // calculate the public key
        Element sk = pairing.getZr().newElement(share.getValue());
        Element pk = g.powZn(sk);

        return new PartialPublicKeyInfo(share.getSequenceNo(), SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(new BLS01PublicKeyParameters(params, pk.getImmutable())));
    }

    return null;
}
 
开发者ID:cwgit,项目名称:ximix,代码行数:21,代码来源:BLSKeyManager.java

示例6: unserializeBswabePub

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
public static BswabePub unserializeBswabePub(byte[] b) {
		BswabePub pub;
		int offset;
	
		pub = new BswabePub();
		offset = 0;
	
		StringBuffer sb = new StringBuffer("");
		offset = unserializeString(b, offset, sb);
		pub.pairingDesc = sb.substring(0);
	
		PropertiesParameters params = new PropertiesParameters()
				.load(new ByteArrayInputStream(pub.pairingDesc.getBytes()));
		pub.p = PairingFactory.getPairing(params);
//		pub.p=PairingFactory.getPairing("params/curves/a.properties");
		Pairing pairing = pub.p;
	
		pub.g = pairing.getG1().newElement();
		pub.h = pairing.getG1().newElement();
		pub.gp = pairing.getG2().newElement();
		pub.g_hat_alpha = pairing.getGT().newElement();
	
		offset = unserializeElement(b, offset, pub.g);
		offset = unserializeElement(b, offset, pub.h);
		offset = unserializeElement(b, offset, pub.gp);
		offset = unserializeElement(b, offset, pub.g_hat_alpha);
	
		return pub;
	}
 
开发者ID:simonstey,项目名称:SecureLinkedData,代码行数:30,代码来源:CPABESerializeUtils.java

示例7: main

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
public static void main(String[] args) throws Exception {
    prepareDirectory();

    long timeStart = System.currentTimeMillis();

    long timeEnd = System.currentTimeMillis();
    System.out.println(String.format("this operation took %d ms.", timeEnd - timeStart));
    System.out.println("wasPbcAvailable? " + PairingFactory.getInstance().isPBCAvailable());
}
 
开发者ID:TU-Berlin-SNET,项目名称:JCPABE,代码行数:10,代码来源:DemoForCpabe.java

示例8: getPairing

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
public Pairing getPairing() {
    if (p == null) {
        PairingParameters params = new PropertiesParameters().load(new ByteArrayInputStream(pairingDesc.getBytes()));
        p = PairingFactory.getPairing(params);
    }
    return p;
}
 
开发者ID:TU-Berlin-SNET,项目名称:JCPABE,代码行数:8,代码来源:AbePublicKey.java

示例9: generateSig

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
public MessageReply generateSig(SignatureCreateMessage blsCreate)
    throws ServiceConnectionException, IOException
{
    Participant[] participants = new Participant[blsCreate.getNodesToUse().size()];
    int index = 0;

    for (String name : blsCreate.getNodesToUse())
    {
        MessageReply seqRep = sendMessage(name, Type.FETCH_SEQUENCE_NO, new KeyIDMessage(blsCreate.getKeyID()));
        // TODO: need to drop out people who don't reply.
        participants[index] = new Participant(BigIntegerMessage.getInstance(seqRep.getPayload()).getValue().intValue(), name);
        index++;
    }

    FetchPublicKeyMessage fetchMessage = new FetchPublicKeyMessage(blsCreate.getKeyID());

    MessageReply reply = connection.sendMessage(ClientMessage.Type.FETCH_PUBLIC_KEY, fetchMessage);

    SubjectPublicKeyInfo pubKeyInfo = SubjectPublicKeyInfo.getInstance(reply.getPayload());
    BLS01Parameters domainParams = BLSPublicKeyFactory.createKey(pubKeyInfo).getParameters();
    Pairing pairing = PairingFactory.getPairing(domainParams.getCurveParameters());

    byte[] hash = blsCreate.getMessage();
    Element h = pairing.getG1().newElement().setFromHash(hash, 0, hash.length);

    // TODO: need to take into account node failure during startup.
    Element signature = accumulateElement(participants, Type.PRIVATE_KEY_SIGN, new BLSPartialCreateMessage(blsCreate.getKeyID(), h, participants), pairing, pairing.getZr().getOrder());

    signature = signature.powZn(pairing.getZr().newOneElement());

    return new MessageReply(MessageReply.Type.OKAY, new DEROctetString(signature.toBytes()));
}
 
开发者ID:cwgit,项目名称:ximix,代码行数:33,代码来源:BLSSigningService.java

示例10: createKey

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
/**
 * Create BLS01PublicKeyParameters from an ASN.1 encoding of a SubjectPublicKeyInfo object.
 *
 * @param publicKeyInfo the info structure containing the BLS public key.
 * @return a BLS public key.
 */
public static BLS01PublicKeyParameters createKey(SubjectPublicKeyInfo publicKeyInfo)
{
    AlgorithmIdentifier   algId = publicKeyInfo.getAlgorithm();
    CurveParameters       curveParameters;
    Element G;
    Pairing pairing;
    try
    {
        ASN1Sequence parameters = ASN1Sequence.getInstance(algId.getParameters());

        curveParameters = new DefaultCurveParameters().load(new ByteArrayInputStream(DERUTF8String.getInstance(parameters.getObjectAt(0)).getString().getBytes("UTF8")));
        pairing = PairingFactory.getPairing(curveParameters);
        G = pairing.getG2().newElement();
        G.setFromBytes(DEROctetString.getInstance(parameters.getObjectAt(1)).getOctets());
    }
    catch (IOException e)
    {
        throw new IllegalStateException("Unable to support encoding: " + e.getMessage(), e);
    }

    BLS01Parameters       blsParameters = new BLS01Parameters(curveParameters, G.getImmutable());
    Element               pK = pairing.getG2().newElement();

    pK.setFromBytes(publicKeyInfo.getPublicKeyData().getBytes());

    return new BLS01PublicKeyParameters(blsParameters, pK.getImmutable());
}
 
开发者ID:cwgit,项目名称:ximix,代码行数:34,代码来源:BLSPublicKeyFactory.java

示例11: BLSNewDKGSecretSplitter

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
/**
 * creates an instance over the specified EC domain parameters
 * to share secrets among the specified number of peers
 *
 * @param numberOfPeers the number of peers among which the secret is shared
 * @param threshold number of peers that must be available for secret reconstruction,
 * @param h value to calculate commitment polynomial against.
 * @param domainParams domain parameters for the EC group to use.
 * @param random a source of randomness,
 */
public BLSNewDKGSecretSplitter(int numberOfPeers, int threshold, Element h, BLS01Parameters domainParams, SecureRandom random)
{
    if (numberOfPeers < threshold)
    {
        throw new IllegalArgumentException("numberOfPeers must at least be as big as the threshold value.");
    }

    this.k = threshold;
    this.h = h;
    this.domainParams = domainParams;
    this.secretSplitter = new ShamirSecretSplitter(numberOfPeers, threshold, PairingFactory.getPairing(domainParams.getCurveParameters()).getZr().getOrder(), random);
    this.random = random;
}
 
开发者ID:cwgit,项目名称:ximix,代码行数:24,代码来源:BLSNewDKGSecretSplitter.java

示例12: generateKeyPair

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
public synchronized AsymmetricCipherKeyPair generateKeyPair(String keyID, Algorithm algorithm, int numberOfPeers, NamedKeyGenParams keyGenParams)
{
    BLS01Parameters domainParameters = paramsMap.get(keyID);

    if (domainParameters == null)
    {
        BLS01KeyPairGenerator kpGen = new BLS01KeyPairGenerator();
        CurveParameters       curveParameters = new DefaultCurveParameters().load(this.getClass().getResourceAsStream("d62003-159-158.param"));
        Random                random = new Random(makeSeed(Strings.toByteArray(keyID)));           // Need a consistent random... TODO: maybe a better way
        Pairing               pairing = PairingFactory.getInstance().getPairing(curveParameters, random);
        Element               g = pairing.getG2().newRandomElement();

        // we have to do this as the JPBC library ignores the random number generator passed in as
        // a parameter.
        // TODO: need to sort out source of randomness.
        random = new SecureRandom();
        pairing = PairingFactory.getInstance().getPairing(curveParameters, random);

        BLS01Parameters       blsParameters = new BLS01Parameters(curveParameters, g.getImmutable());

        kpGen.init(new BLS01KeyGenerationParameters((SecureRandom)random, blsParameters));

        AsymmetricCipherKeyPair kp =  kpGen.generateKeyPair();

        sharedPrivateKeyMap.init(keyID, numberOfPeers);
        sharedPublicKeyMap.init(keyID, numberOfPeers);

        hMap.put(keyID, keyGenParams.getH());
        paramsMap.put(keyID, blsParameters);

        return kp;
    }
    else
    {
        throw new IllegalStateException("Key " + keyID + " already exists.");
    }
}
 
开发者ID:cwgit,项目名称:ximix,代码行数:38,代码来源:BLSKeyManager.java

示例13: loadQueryKey

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
@Override
public CipherParameters loadQueryKey(String queryKeyPath) {
	Path secretKeyPath = Paths.get(queryKeyPath);

	Path path = Paths.get(getKeyPath(),
			"pairing.properties");
	byte[] data;
	try {
		data = Files.readAllBytes(path);

		PairingParameters params = new PropertiesParameters()
				.load(new ByteArrayInputStream(data));
		Pairing p = PairingFactory.getPairing(params);

		byte[] secretKeyData = Files.readAllBytes(secretKeyPath);

		PairingStreamReader skStreamParser = new PairingStreamReader(p,
				secretKeyData, 0);

		query[0] = skStreamParser.readString();
		query[1] = skStreamParser.readString();
		query[2] = skStreamParser.readString();
		
		System.out.println("Query was: "+query[0]+" "+query[1]+" "+query[2]);
		
		Element g1 = skStreamParser.readG1Element();
		int n1 = skStreamParser.readInt();

		int N = 2 * n1 + 3;
		Pairing prodP = new ProductPairing(null, p, N);

		IPLOSTW10Parameters parameters2 = new IPLOSTW10Parameters(params,
				g1.getImmutable(), n1);

		Element k = skStreamParser.readG1Element(prodP);

		return new IPLOSTW10SecretKeyParameters(parameters2, k);

	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return null;
}
 
开发者ID:simonstey,项目名称:SecureLinkedData,代码行数:45,代码来源:DataTier.java

示例14: createAttributeVectorForTriple

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
@Override
public Element[] createAttributeVectorForTriple(CipherParameters publicKey,
		org.openrdf.model.Statement triple) {
	Pairing pairing = PairingFactory
			.getPairing(((FEPublicKeyParameters) publicKey).getParameters()
					.getParameters());

	Element[] result = new Element[4];

	MessageDigest sha1;
	try {
		sha1 = MessageDigest.getInstance("SHA-1");

		/***************************************************************/
		/***************** Computing 3 Random Elements *****************/
		/***************************************************************/
		// Instant start = Instant.now();

		Element r1 = pairing.getZr().newRandomElement().getImmutable();
		Element r2 = pairing.getZr().newRandomElement().getImmutable();

		// Duration dur = Duration.between(start, Instant.now());

		/***************************************************************/

		/***************************************************************/
		/******************* Computing SPO Elements ********************/
		/***************************************************************/
		// start = Instant.now();

		byte[] digestS = sha1.digest(triple.getSubject().stringValue()
				.getBytes());
		Element s = pairing.getZr()
				.newElementFromHash(digestS, 0, digestS.length)
				.getImmutable();
		byte[] digestO = sha1.digest(triple.getObject().stringValue()
				.getBytes());
		Element o = pairing.getZr()
				.newElementFromHash(digestO, 0, digestO.length)
				.getImmutable();

		// dur = Duration.between(start, Instant.now());

		/***************************************************************/

		/***************************************************************/
		/***************** Computing Attribute Vector ******************/
		/***************************************************************/
		// start = Instant.now();
		result[0] = r1.mul(s.negate());
		result[1] = r1;
		result[2] = r2.mul(o.negate());
		result[3] = r2;

		// dur = Duration.between(start, Instant.now());

		// System.out.format("Attribute Vector generated in: %sms%n",
		// dur.toMillis());
		/***************************************************************/
	} catch (NoSuchAlgorithmException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return result;
}
 
开发者ID:simonstey,项目名称:SecureLinkedData,代码行数:66,代码来源:FEVP.java

示例15: createPredicateVectorForQuery

import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory; //导入依赖的package包/类
@Override
public Element[] createPredicateVectorForQuery(
		CipherParameters masterSecKey, String s, String p, String o) {
	Pairing pairing = PairingFactory
			.getPairing(((IPLOSTW10MasterSecretKeyParameters) masterSecKey)
					.getParameters().getParameters());

	Element[] result = new Element[4];

	MessageDigest sha1;
	try {
		sha1 = MessageDigest.getInstance("SHA-1");

		/***************************************************************/
		/******************* Computing SPO Elements ********************/
		/***************************************************************/
		// Instant start = Instant.now();
		byte[] digestS = sha1.digest(s.getBytes());
		Element sE = pairing.getZr()
				.newElementFromHash(digestS, 0, digestS.length)
				.getImmutable();
		byte[] digestO = sha1.digest(o.getBytes());
		Element oE = pairing.getZr()
				.newElementFromHash(digestO, 0, digestO.length)
				.getImmutable();

		if (s.equals("*")) {
			result[0] = pairing.getZr().newZeroElement();
			result[1] = pairing.getZr().newZeroElement();
		} else {
			result[0] = pairing.getZr().newOneElement();
			result[1] = sE;
		}
		if (o.equals("*")) {
			result[2] = pairing.getZr().newZeroElement();
			result[3] = pairing.getZr().newZeroElement();
		} else {
			result[2] = pairing.getZr().newOneElement();
			result[3] = oE;
		}

		// Duration dur = Duration.between(start, Instant.now());
		// System.out.format("SPO Elements generated in: %sms%n",
		// dur.toMillis());
		/***************************************************************/
	} catch (NoSuchAlgorithmException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return result;
}
 
开发者ID:simonstey,项目名称:SecureLinkedData,代码行数:52,代码来源:FEVP.java


注:本文中的it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。