Example usage for org.bouncycastle.asn1 ASN1Integer getInstance

List of usage examples for org.bouncycastle.asn1 ASN1Integer getInstance

Introduction

In this page you can find the example usage for org.bouncycastle.asn1 ASN1Integer getInstance.

Prototype

public static ASN1Integer getInstance(Object obj) 

Source Link

Document

Return an integer from the passed in object.

Usage

From source file:net.sf.keystore_explorer.crypto.csr.spkac.Spkac.java

License:Open Source License

private DSAPublicKey decodeDsaPublicKeyFromBitString(DERBitString der, BigInteger p, BigInteger q, BigInteger g)
        throws SpkacException {
    try {//from w  ww  . j a va2  s . co m
        BigInteger y = ASN1Integer.getInstance(der.getBytes()).getValue();

        KeyFactory keyFact = KeyFactory.getInstance("DSA");

        return (DSAPublicKey) keyFact.generatePublic(new DSAPublicKeySpec(y, p, q, g));
    } catch (GeneralSecurityException ex) {
        throw new SpkacException(res.getString("NoGenerateDsaPublicKeyFromSpkac.exception.message"), ex);
    } catch (Exception ex) {
        throw new SpkacException(res.getString("NoGenerateDsaPublicKeyFromSpkac.exception.message"), ex);
    }
}

From source file:net.sf.keystore_explorer.crypto.x509.InhibitAnyPolicy.java

License:Open Source License

public static InhibitAnyPolicy getInstance(Object obj) {
    if (obj instanceof InhibitAnyPolicy) {
        return (InhibitAnyPolicy) obj;
    }/*from w ww. j a  v  a2  s .c  o  m*/
    if (obj instanceof ASN1Integer) {
        int skipCerts = ((ASN1Integer) obj).getValue().intValue();
        return new InhibitAnyPolicy(skipCerts);
    }
    if (obj instanceof byte[]) {
        int skipCerts = ASN1Integer.getInstance(obj).getValue().intValue();
        return new InhibitAnyPolicy(skipCerts);
    }
    throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
}

From source file:net.sf.keystore_explorer.crypto.x509.PolicyConstraints.java

License:Open Source License

private PolicyConstraints(ASN1Sequence seq) {
    if (seq.size() > 2) {
        throw new IllegalArgumentException("sequence length > 2");
    }/*w w w. ja  v a2 s .  c om*/

    for (int i = 0; i < seq.size(); i++) {
        ASN1TaggedObject taggedObj = ASN1TaggedObject.getInstance(seq.getObjectAt(i));
        switch (taggedObj.getTagNo()) {
        case 0:
            requireExplicitPolicy = ASN1Integer.getInstance(taggedObj.getObject()).getValue().intValue();
            break;
        case 1:
            inhibitPolicyMapping = ASN1Integer.getInstance(taggedObj.getObject()).getValue().intValue();
            break;
        default:
            throw new IllegalArgumentException("wrong tag number");
        }
    }
}

From source file:net.sf.keystore_explorer.crypto.x509.X509Ext.java

License:Open Source License

private String getQcStatementsStringValue(byte[] octets) throws IOException {

    // @formatter:off

    /*/*from   www  .  j  ava2  s. c  om*/
       QCStatements ::= SEQUENCE OF QSStatement
        QSStatement ::= SEQUENCE
        {
      statementId OBJECT IDENTIFIER,
      statementInfo ANY DEFINED BY statementId OPTIONAL
        }
        QcEuLimitValue ::= MonetaryValue
       QcRetentionPeriod ::= INTEGER
     */

    // @formatter:on

    StringBuilder sb = new StringBuilder();

    int qcStatementNr = 0;

    ASN1Sequence qcStatements = ASN1Sequence.getInstance(octets);
    for (ASN1Encodable asn1Encodable : qcStatements.toArray()) {
        QCStatement qcStatement = QCStatement.getInstance(asn1Encodable);
        ASN1ObjectIdentifier statementId = qcStatement.getStatementId();
        ASN1Encodable statementInfo = qcStatement.getStatementInfo();

        int indentLevel = 1;

        sb.append(MessageFormat.format(res.getString("QCStatement.QCStatement"), ++qcStatementNr));
        sb.append(NEWLINE);

        QcStatementType qcStatementType = QcStatementType.resolveOid(statementId.getId());
        switch (qcStatementType) {
        case QC_SYNTAX_V1:
        case QC_SYNTAX_V2:
            SemanticsInformation semanticsInfo = SemanticsInformation.getInstance(statementInfo);
            sb.append(getSemanticInformationValueString(qcStatementType, semanticsInfo, indentLevel));
            break;
        case QC_COMPLIANCE:
            // no statementInfo
            sb.append(INDENT.toString(indentLevel));
            sb.append(res.getString(QcStatementType.QC_COMPLIANCE.getResKey()));
            sb.append(NEWLINE);
            break;
        case QC_EU_LIMIT_VALUE:
            sb.append(INDENT.toString(indentLevel));
            sb.append(res.getString(QcStatementType.QC_EU_LIMIT_VALUE.getResKey()));
            sb.append(NEWLINE);
            sb.append(getMonetaryValueStringValue(statementInfo, indentLevel + 1));
            break;
        case QC_RETENTION_PERIOD:
            ASN1Integer asn1Integer = ASN1Integer.getInstance(statementInfo);
            sb.append(INDENT.toString(indentLevel));
            sb.append(MessageFormat.format(res.getString(QcStatementType.QC_RETENTION_PERIOD.getResKey()),
                    asn1Integer.getValue().toString()));
            sb.append(NEWLINE);
            break;
        case QC_SSCD:
            // no statementInfo
            sb.append(INDENT.toString(indentLevel));
            sb.append(res.getString(QcStatementType.QC_SSCD.getResKey()));
            sb.append(NEWLINE);
            break;
        }
    }

    return sb.toString();
}

From source file:net.sf.keystore_explorer.crypto.x509.X509Ext.java

License:Open Source License

private String getMsCaVersionStringValue(byte[] octets) {

    /*/*from w ww  . j  ava 2 s.  c o  m*/
    "The extension data is a DWORD value (encoded as X509_INTEGER in the extension);
    the low 16 bits are the certificate index, and the high 16 bits are the key index."
     */

    ASN1Integer asn1Integer = ASN1Integer.getInstance(octets);
    int version = asn1Integer.getValue().intValue();
    String certIndex = String.valueOf(version & 0xffff);
    String keyIndex = String.valueOf(version >> 16);

    StringBuilder sb = new StringBuilder();

    sb.append(MessageFormat.format(res.getString("MSCaVersion.CertIndex"), certIndex));
    sb.append(NEWLINE);
    sb.append(MessageFormat.format(res.getString("MSCaVersion.KeyIndex"), keyIndex));
    sb.append(NEWLINE);

    return sb.toString();
}

From source file:org.cryptacular.asn.OpenSSLPrivateKeyDecoder.java

License:Open Source License

@Override
protected AsymmetricKeyParameter decodeASN1(final byte[] encoded) {
    final ASN1Object o;
    try {//ww w . j  ava2s.c  o m
        o = ASN1Primitive.fromByteArray(encoded);
    } catch (Exception e) {
        throw new IllegalArgumentException("Invalid encoded key");
    }

    final AsymmetricKeyParameter key;
    if (o instanceof ASN1ObjectIdentifier) {
        // EC private key with named curve in the default OpenSSL format emitted
        // by
        //
        // openssl ecparam -name xxxx -genkey
        //
        // which is the concatenation of the named curve OID and a sequence of 1
        // containing the private point
        final ASN1ObjectIdentifier oid = ASN1ObjectIdentifier.getInstance(o);
        final int len = encoded[1];
        final byte[] privatePart = new byte[encoded.length - len - 2];
        System.arraycopy(encoded, len + 2, privatePart, 0, privatePart.length);

        final ASN1Sequence seq = ASN1Sequence.getInstance(privatePart);
        final X9ECParameters params = ECUtil.getNamedCurveByOid(oid);
        key = new ECPrivateKeyParameters(ASN1Integer.getInstance(seq.getObjectAt(0)).getValue(),
                new ECDomainParameters(params.getCurve(), params.getG(), params.getN(), params.getH(),
                        params.getSeed()));
    } else {
        // OpenSSL "traditional" format is an ASN.1 sequence of key parameters

        // Detect key type based on number and types of parameters:
        // RSA -> {version, mod, pubExp, privExp, prime1, prime2, exp1, exp2, c}
        // DSA -> {version, p, q, g, pubExp, privExp}
        // EC ->  {version, privateKey, parameters, publicKey}
        final ASN1Sequence sequence = ASN1Sequence.getInstance(o);
        if (sequence.size() == 9) {
            // RSA private certificate key
            key = new RSAPrivateCrtKeyParameters(ASN1Integer.getInstance(sequence.getObjectAt(1)).getValue(),
                    ASN1Integer.getInstance(sequence.getObjectAt(2)).getValue(),
                    ASN1Integer.getInstance(sequence.getObjectAt(3)).getValue(),
                    ASN1Integer.getInstance(sequence.getObjectAt(4)).getValue(),
                    ASN1Integer.getInstance(sequence.getObjectAt(5)).getValue(),
                    ASN1Integer.getInstance(sequence.getObjectAt(6)).getValue(),
                    ASN1Integer.getInstance(sequence.getObjectAt(7)).getValue(),
                    ASN1Integer.getInstance(sequence.getObjectAt(8)).getValue());
        } else if (sequence.size() == 6) {
            // DSA private key
            key = new DSAPrivateKeyParameters(ASN1Integer.getInstance(sequence.getObjectAt(5)).getValue(),
                    new DSAParameters(ASN1Integer.getInstance(sequence.getObjectAt(1)).getValue(),
                            ASN1Integer.getInstance(sequence.getObjectAt(2)).getValue(),
                            ASN1Integer.getInstance(sequence.getObjectAt(3)).getValue()));
        } else if (sequence.size() == 4) {
            // EC private key with explicit curve
            final X9ECParameters params = X9ECParameters
                    .getInstance(ASN1TaggedObject.getInstance(sequence.getObjectAt(2)).getObject());
            key = new ECPrivateKeyParameters(
                    new BigInteger(ASN1OctetString.getInstance(sequence.getObjectAt(1)).getOctets()),
                    new ECDomainParameters(params.getCurve(), params.getG(), params.getN(), params.getH(),
                            params.getSeed()));
        } else {
            throw new IllegalArgumentException("Invalid OpenSSL traditional private key format.");
        }
    }
    return key;
}

From source file:org.cryptacular.pbe.PBES2EncryptionScheme.java

License:Open Source License

/**
 * Initializes the block cipher and sets up its initialization parameters.
 *
 * @param  generator  Derived key generator.
 * @param  scheme  PKCS#5 encryption scheme.
 *//*www. j a va  2s  . c o  m*/
private void initCipher(final PKCS5S2ParametersGenerator generator,
        final org.bouncycastle.asn1.pkcs.EncryptionScheme scheme) {
    final PBES2Algorithm alg = PBES2Algorithm.fromOid(scheme.getAlgorithm().getId());
    if (keyLength == 0) {
        keyLength = alg.getKeySize();
    }

    byte[] iv = null;
    CipherParameters cipherParameters = generator.generateDerivedParameters(keyLength);
    switch (alg) {

    case RC2:
        setCipher(alg.getCipherSpec().newInstance());

        final ASN1Sequence rc2Params = ASN1Sequence.getInstance(scheme.getParameters());
        if (rc2Params.size() > 1) {
            cipherParameters = new RC2Parameters(((KeyParameter) cipherParameters).getKey(),
                    ASN1Integer.getInstance(rc2Params.getObjectAt(0)).getValue().intValue());
            iv = ASN1OctetString.getInstance(rc2Params.getObjectAt(0)).getOctets();
        }
        break;

    case RC5:

        final ASN1Sequence rc5Params = ASN1Sequence.getInstance(scheme.getParameters());
        final int rounds = ASN1Integer.getInstance(rc5Params.getObjectAt(1)).getValue().intValue();
        final int blockSize = ASN1Integer.getInstance(rc5Params.getObjectAt(2)).getValue().intValue();
        if (blockSize == 32) {
            setCipher(new PaddedBufferedBlockCipher(new CBCBlockCipher(new RC532Engine()), new PKCS7Padding()));
        }
        cipherParameters = new RC5Parameters(((KeyParameter) cipherParameters).getKey(), rounds);
        if (rc5Params.size() > 3) {
            iv = ASN1OctetString.getInstance(rc5Params.getObjectAt(3)).getOctets();
        }
        break;

    default:
        setCipher(alg.getCipherSpec().newInstance());
        iv = ASN1OctetString.getInstance(scheme.getParameters()).getOctets();
    }
    if (iv != null) {
        cipherParameters = new ParametersWithIV(cipherParameters, iv);
    }
    setCipherParameters(cipherParameters);
}

From source file:org.cryptoworkshop.ximix.client.connection.signing.message.ECDSAInitialiseMessage.java

License:Apache License

private ECDSAInitialiseMessage(ASN1Sequence seq) {
    this.sigID = DERUTF8String.getInstance(seq.getObjectAt(0)).getString();
    this.keyID = DERUTF8String.getInstance(seq.getObjectAt(1)).getString();
    this.threshold = ASN1Integer.getInstance(seq.getObjectAt(2)).getValue().intValue();
    this.n = ASN1Integer.getInstance(seq.getObjectAt(3)).getValue();
    this.nodesToUse = MessageUtils.toArray(ASN1Sequence.getInstance(seq.getObjectAt(4)));
}

From source file:org.cryptoworkshop.ximix.client.connection.signing.message.ECDSAPartialCreateMessage.java

License:Apache License

private ECDSAPartialCreateMessage(ASN1Sequence seq) {
    this.sigID = DERUTF8String.getInstance(seq.getObjectAt(0)).getString();
    this.keyID = DERUTF8String.getInstance(seq.getObjectAt(1)).getString();
    this.e = ASN1Integer.getInstance(seq.getObjectAt(2)).getValue();
    this.nodesToUse = MessageUtils.toArray(ASN1Sequence.getInstance(seq.getObjectAt(3)));
}

From source file:org.cryptoworkshop.ximix.common.asn1.board.PairSequenceWithProofs.java

License:Apache License

private PairSequenceWithProofs(ECCurve curve, ASN1Sequence sequence) {
    ASN1Sequence s = ASN1Sequence.getInstance(sequence.getObjectAt(0));

    ecPairs = new ECPair[s.size()];

    for (int i = 0; i != ecPairs.length; i++) {
        ecPairs[i] = Pair.getInstance(curve, s.getObjectAt(i)).getECPair();
    }//from w w  w  . ja  v a  2 s  .  c om

    s = ASN1Sequence.getInstance(sequence.getObjectAt(1));
    ecProofs = new ECDecryptionProof[s.size()];

    for (int i = 0; i != ecPairs.length; i++) {
        ASN1Sequence proof = ASN1Sequence.getInstance(s.getObjectAt(i));
        ecProofs[i] = new ECDecryptionProof(
                curve.decodePoint(ASN1OctetString.getInstance(proof.getObjectAt(0)).getOctets()),
                curve.decodePoint(ASN1OctetString.getInstance(proof.getObjectAt(1)).getOctets()),
                ASN1Integer.getInstance(proof.getObjectAt(2)).getValue());
    }
}