All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.jcajce.spec.OpenSSHPrivateKeySpec Maven / Gradle / Ivy

Go to download

The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for Java 1.8 and later with debug enabled.

The newest version!
package org.bouncycastle.jcajce.spec;

import java.security.spec.EncodedKeySpec;

/**
 * OpenSSHPrivateKeySpec holds and encoded OpenSSH private key.
 * The format of the key can be either ASN.1 or OpenSSH.
 */
public class OpenSSHPrivateKeySpec
    extends EncodedKeySpec
{
    private final String format;

    /**
     * Accept an encoded key and determine the format.
     * 

* The encoded key should be the Base64 decoded blob between the "---BEGIN and ---END" markers. * This constructor will endeavour to find the OpenSSH format magic value. If it can not then it * will default to ASN.1. It does not attempt to validate the ASN.1 *

* Example: * OpenSSHPrivateKeySpec privSpec = new OpenSSHPrivateKeySpec(rawPriv); *

* KeyFactory kpf = KeyFactory.getInstance("RSA", "BC"); * PrivateKey prk = kpf.generatePrivate(privSpec); *

* OpenSSHPrivateKeySpec rcPrivateSpec = kpf.getKeySpec(prk, OpenSSHPrivateKeySpec.class); * * @param encodedKey The encoded key. */ public OpenSSHPrivateKeySpec(byte[] encodedKey) { super(encodedKey); if (encodedKey[0] == 0x30) // DER SEQUENCE { format = "ASN.1"; } else if (encodedKey[0] == 'o') { format = "OpenSSH"; } else { throw new IllegalArgumentException("unknown byte encoding"); } } /** * Return the format, either OpenSSH for the OpenSSH propriety format or ASN.1. * * @return the format OpenSSH or ASN.1 */ public String getFormat() { return format; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy