179d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro/***************************************************************/
279d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro/******    DO NOT EDIT THIS CLASS bc-java SOURCE FILE     ******/
379d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro/***************************************************************/
479d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giropackage org.bouncycastle.jcajce.util;
579d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
679d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giroimport java.io.IOException;
779d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giroimport java.security.AlgorithmParameters;
879d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
979d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giroimport org.bouncycastle.asn1.ASN1Encodable;
1079d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giroimport org.bouncycastle.asn1.ASN1Primitive;
1179d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
1279d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro/**
1379d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro * General JCA/JCE utility methods.
1479d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro */
1579d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giropublic class AlgorithmParametersUtils
1679d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro{
1779d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
1879d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
1979d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    private AlgorithmParametersUtils()
2079d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    {
2179d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
2279d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    }
2379d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
2479d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    /**
2579d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     * Extract an ASN.1 encodable from an AlgorithmParameters object.
2679d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     *
2779d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     * @param params the object to get the encoding used to create the return value.
2879d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     * @return an ASN.1 object representing the primitives making up the params parameter.
2979d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     * @throws IOException if an encoding cannot be extracted.
3079d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     */
3179d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    public static ASN1Encodable extractParameters(AlgorithmParameters params)
3279d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        throws IOException
3379d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    {
3479d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        // we try ASN.1 explicitly first just in case and then role back to the default.
3579d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        ASN1Encodable asn1Params;
3679d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        try
3779d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        {
3879d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro            asn1Params = ASN1Primitive.fromByteArray(params.getEncoded("ASN.1"));
3979d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        }
4079d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        catch (Exception ex)
4179d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        {
4279d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro            asn1Params = ASN1Primitive.fromByteArray(params.getEncoded());
4379d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        }
4479d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
4579d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        return asn1Params;
4679d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    }
4779d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro
4879d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    /**
4979d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     * Load an AlgorithmParameters object with the passed in ASN.1 encodable - if possible.
5079d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     *
5179d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     * @param params the AlgorithmParameters object to be initialised.
5279d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     * @param sParams the ASN.1 encodable to initialise params with.
5379d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     * @throws IOException if the parameters cannot be initialised.
5479d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro     */
5579d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    public static void loadParameters(AlgorithmParameters params, ASN1Encodable sParams)
5679d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        throws IOException
5779d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    {
5879d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        // we try ASN.1 explicitly first just in case and then role back to the default.
5979d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        try
6079d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        {
6179d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro            params.init(sParams.toASN1Primitive().getEncoded(), "ASN.1");
6279d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        }
6379d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        catch (Exception ex)
6479d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        {
6579d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro            params.init(sParams.toASN1Primitive().getEncoded());
6679d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro        }
6779d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro    }
6879d3bf2425a53baab7feb744dad710b6c15533c9Sergio Giro}
69