/** * Return a DomainParameters object from the passed in object. * * @param obj an object for conversion or a byte[]. * @return a DomainParameters */ public static DomainParameters getInstance(Object obj) { if (obj instanceof DomainParameters) { return (DomainParameters)obj; } else if (obj != null) { return new DomainParameters(ASN1Sequence.getInstance(obj)); } return null; }
AsymmetricKeyParameter getPublicKeyParameters(SubjectPublicKeyInfo keyInfo, Object defaultParams) throws IOException { DHPublicKey dhPublicKey = DHPublicKey.getInstance(keyInfo.parsePublicKey()); BigInteger y = dhPublicKey.getY(); DomainParameters dhParams = DomainParameters.getInstance(keyInfo.getAlgorithm().getParameters()); BigInteger p = dhParams.getP(); BigInteger g = dhParams.getG(); BigInteger q = dhParams.getQ(); BigInteger j = null; if (dhParams.getJ() != null) { j = dhParams.getJ(); } DHValidationParameters validation = null; ValidationParams dhValidationParms = dhParams.getValidationParams(); if (dhValidationParms != null) { byte[] seed = dhValidationParms.getSeed(); BigInteger pgenCounter = dhValidationParms.getPgenCounter(); // TODO Check pgenCounter size? validation = new DHValidationParameters(seed, pgenCounter.intValue()); } return new DHPublicKeyParameters(y, new DHParameters(p, g, q, j, validation)); } }
public byte[] getEncoded() { if (info != null) { return KeyUtil.getEncodedSubjectPublicKeyInfo(info); } if (dhSpec instanceof DHDomainParameterSpec && ((DHDomainParameterSpec)dhSpec).getQ() != null) { DHParameters params = ((DHDomainParameterSpec)dhSpec).getDomainParameters(); DHValidationParameters validationParameters = params.getValidationParameters(); ValidationParams vParams = null; if (validationParameters != null) { vParams = new ValidationParams(validationParameters.getSeed(), validationParameters.getCounter()); } return KeyUtil.getEncodedSubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.dhpublicnumber, new DomainParameters(params.getP(), params.getG(), params.getQ(), params.getJ(), vParams).toASN1Primitive()), new ASN1Integer(y)); } return KeyUtil.getEncodedSubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.dhKeyAgreement, new DHParameter(dhSpec.getP(), dhSpec.getG(), dhSpec.getL()).toASN1Primitive()), new ASN1Integer(y)); }
/** * Return a DomainParameters object from the passed in tagged object. * * @param obj a tagged object. * @param explicit true if the contents of the object is explictly tagged, false otherwise. * @return a DomainParameters */ public static DomainParameters getInstance(ASN1TaggedObject obj, boolean explicit) { return getInstance(ASN1Sequence.getInstance(obj, explicit)); }
private DomainParameters(ASN1Sequence seq) { if (seq.size() < 3 || seq.size() > 5) { throw new IllegalArgumentException("Bad sequence size: " + seq.size()); } Enumeration e = seq.getObjects(); this.p = ASN1Integer.getInstance(e.nextElement()); this.g = ASN1Integer.getInstance(e.nextElement()); this.q = ASN1Integer.getInstance(e.nextElement()); ASN1Encodable next = getNext(e); if (next != null && next instanceof ASN1Integer) { this.j = ASN1Integer.getInstance(next); next = getNext(e); } else { this.j = null; } if (next != null) { this.validationParams = ValidationParams.getInstance(next.toASN1Primitive()); } else { this.validationParams = null; } }
info = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.dhpublicnumber, new DomainParameters(params.getP(), params.getG(), params.getQ(), params.getJ(), vParams).toASN1Primitive()), new ASN1Integer(getX()));
DomainParameters params = DomainParameters.getInstance(seq); ValidationParams validationParams = params.getValidationParams(); if (validationParams != null) this.dhPublicKey = new DHPublicKeyParameters(y, new DHParameters(params.getP(), params.getG(), params.getQ(), params.getJ(), new DHValidationParameters(validationParams.getSeed(), validationParams.getPgenCounter().intValue()))); this.dhPublicKey = new DHPublicKeyParameters(y, new DHParameters(params.getP(), params.getG(), params.getQ(), params.getJ(), null));