package org.bouncycastle.asn1.sec;

import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;

/**
 * Certicom object identifiers
 * <pre>
 *  ellipticCurve OBJECT IDENTIFIER ::= {
 *        iso(1) identified-organization(3) certicom(132) curve(0)
 *  }
 *  secg-scheme OBJECT IDENTIFIER ::= {
 *     iso(1) identified-organization(3) certicom(132) schemes(1) }
 * </pre>
 */
public interface SECObjectIdentifiers
{
    static final ASN1ObjectIdentifier certicom = new ASN1ObjectIdentifier("1.3.132");

    static final ASN1ObjectIdentifier ellipticCurve = certicom.branch("0");

    /**  sect163k1 OID: 1.3.132.0.1 */
    static final ASN1ObjectIdentifier sect163k1 = ellipticCurve.branch("1");
    /**  sect163r1 OID: 1.3.132.0.2 */
    static final ASN1ObjectIdentifier sect163r1 = ellipticCurve.branch("2");
    /**  sect239k1 OID: 1.3.132.0.3 */
    static final ASN1ObjectIdentifier sect239k1 = ellipticCurve.branch("3");
    /**  sect113r1 OID: 1.3.132.0.4 */
    static final ASN1ObjectIdentifier sect113r1 = ellipticCurve.branch("4");
    /**  sect113r2 OID: 1.3.132.0.5 */
    static final ASN1ObjectIdentifier sect113r2 = ellipticCurve.branch("5");
    /**  secp112r1 OID: 1.3.132.0.6 */
    static final ASN1ObjectIdentifier secp112r1 = ellipticCurve.branch("6");
    /**  secp112r2 OID: 1.3.132.0.7 */
    static final ASN1ObjectIdentifier secp112r2 = ellipticCurve.branch("7");
    /**  secp160r1 OID: 1.3.132.0.8 */
    static final ASN1ObjectIdentifier secp160r1 = ellipticCurve.branch("8");
    /**  secp160k1 OID: 1.3.132.0.9 */
    static final ASN1ObjectIdentifier secp160k1 = ellipticCurve.branch("9");
    /**  secp256k1 OID: 1.3.132.0.10 */
    static final ASN1ObjectIdentifier secp256k1 = ellipticCurve.branch("10");
    /**  sect163r2 OID: 1.3.132.0.15 */
    static final ASN1ObjectIdentifier sect163r2 = ellipticCurve.branch("15");
    /**  sect283k1 OID: 1.3.132.0.16 */
    static final ASN1ObjectIdentifier sect283k1 = ellipticCurve.branch("16");
    /**  sect283r1 OID: 1.3.132.0.17 */
    static final ASN1ObjectIdentifier sect283r1 = ellipticCurve.branch("17");
    /**  sect131r1 OID: 1.3.132.0.22 */
    static final ASN1ObjectIdentifier sect131r1 = ellipticCurve.branch("22");
    /**  sect131r2 OID: 1.3.132.0.23 */
    static final ASN1ObjectIdentifier sect131r2 = ellipticCurve.branch("23");
    /**  sect193r1 OID: 1.3.132.0.24 */
    static final ASN1ObjectIdentifier sect193r1 = ellipticCurve.branch("24");
    /**  sect193r2 OID: 1.3.132.0.25 */
    static final ASN1ObjectIdentifier sect193r2 = ellipticCurve.branch("25");
    /**  sect233k1 OID: 1.3.132.0.26 */
    static final ASN1ObjectIdentifier sect233k1 = ellipticCurve.branch("26");
    /**  sect233r1 OID: 1.3.132.0.27 */
    static final ASN1ObjectIdentifier sect233r1 = ellipticCurve.branch("27");
    /**  secp128r1 OID: 1.3.132.0.28 */
    static final ASN1ObjectIdentifier secp128r1 = ellipticCurve.branch("28");
    /**  secp128r2 OID: 1.3.132.0.29 */
    static final ASN1ObjectIdentifier secp128r2 = ellipticCurve.branch("29");
    /**  secp160r2 OID: 1.3.132.0.30 */
    static final ASN1ObjectIdentifier secp160r2 = ellipticCurve.branch("30");
    /**  secp192k1 OID: 1.3.132.0.31 */
    static final ASN1ObjectIdentifier secp192k1 = ellipticCurve.branch("31");
    /**  secp224k1 OID: 1.3.132.0.32 */
    static final ASN1ObjectIdentifier secp224k1 = ellipticCurve.branch("32");
    /**  secp224r1 OID: 1.3.132.0.33 */
    static final ASN1ObjectIdentifier secp224r1 = ellipticCurve.branch("33");
    /**  secp384r1 OID: 1.3.132.0.34 */
    static final ASN1ObjectIdentifier secp384r1 = ellipticCurve.branch("34");
    /**  secp521r1 OID: 1.3.132.0.35 */
    static final ASN1ObjectIdentifier secp521r1 = ellipticCurve.branch("35");
    /**  sect409k1 OID: 1.3.132.0.36 */
    static final ASN1ObjectIdentifier sect409k1 = ellipticCurve.branch("36");
    /**  sect409r1 OID: 1.3.132.0.37 */
    static final ASN1ObjectIdentifier sect409r1 = ellipticCurve.branch("37");
    /**  sect571k1 OID: 1.3.132.0.38 */
    static final ASN1ObjectIdentifier sect571k1 = ellipticCurve.branch("38");
    /**  sect571r1 OID: 1.3.132.0.39 */
    static final ASN1ObjectIdentifier sect571r1 = ellipticCurve.branch("39");

    /**  secp192r1 OID: 1.3.132.0.prime192v1 */
    static final ASN1ObjectIdentifier secp192r1 = X9ObjectIdentifiers.prime192v1;
    /**  secp256r1 OID: 1.3.132.0.prime256v1 */
    static final ASN1ObjectIdentifier secp256r1 = X9ObjectIdentifiers.prime256v1;

    static final ASN1ObjectIdentifier secg_scheme = certicom.branch("1");

    static final ASN1ObjectIdentifier dhSinglePass_cofactorDH_recommendedKDF = secg_scheme.branch("1");
    static final ASN1ObjectIdentifier dhSinglePass_cofactorDH_specifiedKDF = secg_scheme.branch("2");
    static final ASN1ObjectIdentifier mqvSinglePass_recommendedKDF = secg_scheme.branch("3");
    static final ASN1ObjectIdentifier mqvSinglePass_specifiedKDF = secg_scheme.branch("4");
    static final ASN1ObjectIdentifier mqvFull_recommendedKDF = secg_scheme.branch("5");
    static final ASN1ObjectIdentifier mqvFull_specifiedKDF = secg_scheme.branch("6");
    static final ASN1ObjectIdentifier ecies_recommendedParameters = secg_scheme.branch("7");
    static final ASN1ObjectIdentifier ecies_specifiedParameters = secg_scheme.branch("8");

    static final ASN1ObjectIdentifier dhSinglePass_stdDH_kdf_schemes = secg_scheme.branch("11");

    static final ASN1ObjectIdentifier dhSinglePass_stdDH_sha224kdf_scheme = dhSinglePass_stdDH_kdf_schemes.branch("0");
    static final ASN1ObjectIdentifier dhSinglePass_stdDH_sha256kdf_scheme = dhSinglePass_stdDH_kdf_schemes.branch("1");
    static final ASN1ObjectIdentifier dhSinglePass_stdDH_sha384kdf_scheme = dhSinglePass_stdDH_kdf_schemes.branch("2");
    static final ASN1ObjectIdentifier dhSinglePass_stdDH_sha512kdf_scheme = dhSinglePass_stdDH_kdf_schemes.branch("3");

    static final ASN1ObjectIdentifier ecdh = secg_scheme.branch("12");
    static final ASN1ObjectIdentifier ecmqv = secg_scheme.branch("13");

    static final ASN1ObjectIdentifier dhSinglePass_cofactorDH_kdf_schemes = secg_scheme.branch("14");

    static final ASN1ObjectIdentifier dhSinglePass_cofactorDH_sha224kdf_scheme = dhSinglePass_cofactorDH_kdf_schemes.branch("0");
    static final ASN1ObjectIdentifier dhSinglePass_cofactorDH_sha256kdf_scheme = dhSinglePass_cofactorDH_kdf_schemes.branch("1");
    static final ASN1ObjectIdentifier dhSinglePass_cofactorDH_sha384kdf_scheme = dhSinglePass_cofactorDH_kdf_schemes.branch("2");
    static final ASN1ObjectIdentifier dhSinglePass_cofactorDH_sha512kdf_scheme = dhSinglePass_cofactorDH_kdf_schemes.branch("3");

    static final ASN1ObjectIdentifier mqvSinglePass_kdf_schemes = secg_scheme.branch("15");

    static final ASN1ObjectIdentifier mqvSinglePass_sha224kdf_scheme = mqvSinglePass_kdf_schemes.branch("0");
    static final ASN1ObjectIdentifier mqvSinglePass_sha256kdf_scheme = mqvSinglePass_kdf_schemes.branch("1");
    static final ASN1ObjectIdentifier mqvSinglePass_sha384kdf_scheme = mqvSinglePass_kdf_schemes.branch("2");
    static final ASN1ObjectIdentifier mqvSinglePass_sha512kdf_scheme = mqvSinglePass_kdf_schemes.branch("3");

    static final ASN1ObjectIdentifier mqvFull_kdf_schemes = secg_scheme.branch("16");

    static final ASN1ObjectIdentifier mqvFull_sha224kdf_scheme = mqvFull_kdf_schemes.branch("0");
    static final ASN1ObjectIdentifier mqvFull_sha256kdf_scheme = mqvFull_kdf_schemes.branch("1");
    static final ASN1ObjectIdentifier mqvFull_sha384kdf_scheme = mqvFull_kdf_schemes.branch("2");
    static final ASN1ObjectIdentifier mqvFull_sha512kdf_scheme = mqvFull_kdf_schemes.branch("3");

    static final ASN1ObjectIdentifier kdf_algorithms = secg_scheme.branch("17");

    static final ASN1ObjectIdentifier x9_63_kdf = kdf_algorithms.branch("0");
    static final ASN1ObjectIdentifier nist_concatenation_kdf = kdf_algorithms.branch("1");
    static final ASN1ObjectIdentifier tls_kdf = kdf_algorithms.branch("2");
    static final ASN1ObjectIdentifier ikev2_kdf = kdf_algorithms.branch("3");
}
