CryptoPro JCP request.
Public API.

ru.CryptoPro.JCPRequest
Class GostCertificateRequest

java.lang.Object
  extended byru.CryptoPro.JCPRequest.GostCertificateRequest
All Implemented Interfaces:
ru.CryptoPro.JCPRequest.KeyUsage

public class GostCertificateRequest
extends java.lang.Object
implements ru.CryptoPro.JCPRequest.KeyUsage

Класс GostCertificateRequest предназначен для работы с сертификатами и реализует следующие операции:

Генерация запроса и самоподписанного сертификата производится в соответствии с алгоритмом подписи ГОСТ Р 34.10-2001 c алгоритмом хеширования ГОСТ Р 34.11-94. Ключи, в соответствии с которыми осуществляется генерация запросов и самоподписанных сертификатов должны быть эллиптическими (соответствовать алгоритму ГОСТ Р 34.10-2001).

Для корректной работы с центром сертификации, на котором установлен криптопровайдер CryptoPro CSP v. 3.0, следует следить за тем, чтобы параметры закрытого ключа, на котором осуществляется подпись отправляемого запроса, удовлетворяли следующим условиям:

Для корректной работы с центром сертификации, на котором установлен криптопровайдер CryptoPro CSP v. 2.0, следует следить за тем, чтобы параметры закрытого ключа, на котором осуществляется подпись отправляемого запроса, удовлетворяли следующим условиям:

Структура запроса имеет следующий вид:

  CertificationRequest ::= SEQUENCE {
      certificationRequestInfo  SEQUENCE {
          version                   INTEGER,
          subject                   Name,
          subjectPublicKeyInfo      SEQUENCE {
              algorithm                 AlgorithmIdentifier,
              subjectPublicKey          BIT STRING },
          attributes                [0] IMPLICIT SET OF Attribute },
      signatureAlgorithm        AlgorithmIdentifier,
      signature                 BIT STRING}
 
Для генерации запроса необходимо выполнить следующую последовательность действий:

Структура самоподписанного сертификата имеет следующий вид:

  Certificate  ::=  SEQUENCE  {
      tbsCertificate       TBSCertificate,
      signatureAlgorithm   AlgorithmIdentifier,
      signature            BIT STRING  }
 

TBSCertificate ::= SEQUENCE { version [0] Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 extensions [3] Extensions OPTIONAL -- If present, version shall be v3 -- }

Version ::= INTEGER { v1(0), v2(1), v3(2) }

CertificateSerialNumber ::= INTEGER

Validity ::= SEQUENCE { notBefore Time, notAfter Time }

Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }

UniqueIdentifier ::= BIT STRING

SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING }

Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension

Extension ::= SEQUENCE { extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING }

Генерация самопописанного сертификата осуществляется статическим методом getEncodedSelfCert(PrivateKey, PublicKey, String), получающим ключевую пару и имя субъекта (оно же имя издателя) в качестве параметров, и возвращающим закодированный в DER-кодировке самоподписанный сертификат.

Оправка подписанного запроса и получение закодированного сертификата производится одним из следующих методов:

Корневой сертификат центра сертификации можно получить при помощи метода getEncodedRootCert(String). Этому методу в качестве параметра передается http-адрес центра. Корневой сертификат возвращается в DER-кодировке в виде байтового массива.

Author:
Copyright 2004-2005 Crypto-Pro. All rights reserved.
Version:1.0

Field Summary
static java.lang.String ADDRESS_SHOULD_BE_HTTP
           
static java.lang.String BEGIN_STRING
          Стандартная строка начала запроса.
static java.lang.String DEFAULT_SIGN_ALGORITHM
          todo
static java.lang.String END_STRING
          Стандартная строка окончания запроса.
static java.lang.String UNKNOWN_KEY_ALGORITHM
           
 
Fields inherited from interface ru.CryptoPro.JCPRequest.KeyUsage
BIT_CRL_SIGN, BIT_DATA_ENCIPHERMENT, BIT_DECIPHER_ONLY, BIT_DIGITAL_SIGNATURE, BIT_ENCIPHER_ONLY, BIT_KEY_AGREEMENT, BIT_KEY_CERT_SIGN, BIT_KEY_ENCIPHERMENT, BIT_NON_REPUDIATION, CENTER_DEFAULT, CRL_SIGN, CRYPT_DEFAULT, DATA_ENCIPHERMENT, DECIPHER_ONLY, DIGITAL_SIGNATURE, ENCIPHER_ONLY, INTS_PKIX_CLIENT_AUTH, INTS_PKIX_CODE_SIGNING, INTS_PKIX_EMAIL_PROTECTION, INTS_PKIX_IPSEC_END_SYSTEM, INTS_PKIX_IPSEC_TUNNEL, INTS_PKIX_IPSEC_USER, INTS_PKIX_OCSP_SIGNING, INTS_PKIX_SERVER_AUTH, INTS_PKIX_TIME_STAMPING, KEY_AGREEMENT, KEY_CERT_SIGN, KEY_ENCIPHERMENT, NON_REPUDIATION, NOT_SET, SIGN_DEFAULT, STR_OID_PKIX_CLIENT_AUTH, STR_OID_PKIX_CODE_SIGNING, STR_OID_PKIX_EMAIL_PROTECTION, STR_OID_PKIX_IPSEC_END_SYSTEM, STR_OID_PKIX_IPSEC_TUNNEL, STR_OID_PKIX_IPSEC_USER, STR_OID_PKIX_OCSP_SIGNING, STR_OID_PKIX_SERVER_AUTH, STR_OID_PKIX_TIME_STAMPING
 
Constructor Summary
GostCertificateRequest()
          Создание нового объекта генерации запроса на сертификат.
GostCertificateRequest(java.lang.String provName)
          Создание нового объекта генерации запроса на сертификат, с уточнением провайдера.
 
Method Summary
 void addExtension(ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension e)
          Добавление расширения к списку.
 void addExtKeyUsage(int[] ints)
          add Extended KeyUsage to list.
 void addExtKeyUsage(ru.CryptoPro.JCP.params.OID oid)
          add Extended KeyUsage to list.
 void addExtKeyUsage(java.lang.String str)
          add Extended KeyUsage to list.
 void clearExtKeyUsage()
          clear all Extended KeyUsage.
 void clearExtList()
          Очистка всех расширений из списка.
static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createBasic()
           
static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createExtUsage(java.util.Vector list)
           
static java.util.BitSet createKeyUsageBitSet(int mask)
          Если пользователь снаружи установил keyUsage, он и используется, иначе используется keyUsage по умолчанию.
static ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest createRequest()
          Создает объект request.
static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createUsage(int mask)
           
 void encodeAndSign(java.security.PrivateKey privateKey)
          Кодирование в DER-кодировку и подпись сертификата.
 void encodeAndSign(java.security.PrivateKey privateKey, java.lang.String algorithm)
          Кодирование в DER-кодировку и подпись сертификата.
 void encodeAndSignOLD(java.security.PrivateKey privateKey, java.lang.String algorithm)
          Кодирование в DER-кодировку и подпись сертификата.
static ru.CryptoPro.JCP.ASN.CertificateExtensions._extKeyUsage_ExtnType formExtKeyUsage(java.util.Vector list)
          helper.
 byte[] generateCert(java.security.PrivateKey privKey, java.security.PublicKey pubKey, java.lang.String subject, java.lang.String issuer)
          Генерация сертификата открытого ключа субъекта с именем subject, подписанного закрытым ключом издателя issuer.
 byte[] generateCert(java.security.PrivateKey privKey, java.security.PublicKey pubKey, java.lang.String subject, java.lang.String issuer, java.lang.String algorithm)
          Генерация сертификата открытого ключа субъекта с именем subject, подписанного закрытым ключом издателя issuer.
 byte[] getEncoded()
          Получение подписанного и закодирванного в DER-кодировке запроса.
 byte[] getEncodedCert(java.lang.String httpAddress)
          Отправка подписанного запроса центру сертификации и получение соответствующего запросу сертификата.
static byte[] getEncodedCertFromBASE64(java.lang.String httpAddress, java.io.InputStream req)
          Отправка запроса в кодировке BASE64 центру сертификации и получение соответствующего запросу сертификата.
static byte[] getEncodedCertFromDER(java.lang.String httpAddress, java.io.InputStream req)
          Отправка запроса в DER-кодировке центру сертификации и получение соответствующего запросу сертификата.
static byte[] getEncodedRootCert(java.lang.String httpAddress)
          Получение корневого сертификата центра сертификации.
 byte[] getEncodedSelfCert(java.security.KeyPair keyPair, java.lang.String name)
          Генерация самоподписанного сертификата.
static int getId(java.lang.String page)
          Поиск идентификатора запроса, чтобы по нему скачать сертификат.
 void init(java.lang.String keyAlgName)
          Deprecated. с версии 1.0.48 вместо init() лучше использовать setKeyUsage() и addExtKeyUsage()
 void init(java.lang.String keyAlgName, boolean isServer)
          Deprecated. с версии 1.0.48 вместо init() лучше использовать setKeyUsage() и addExtKeyUsage()
 void initOLD(java.lang.String keyAlgName, boolean isServer)
          Deprecated. с версии 1.0.48 вместо init() лучше использовать setKeyUsage() и addExtKeyUsage()
static boolean isEquals(com.objsys.asn1j.runtime.Asn1ObjectIdentifier a, com.objsys.asn1j.runtime.Asn1ObjectIdentifier b)
          compare OIDs
 int lengthExtKeyUsage()
           
 int lengthExtList()
          Получение длины списка расширений.
 void printToBASE64(java.io.PrintStream out)
          Печать подписанного запроса в BASE64-кодировке в передаваемый PrintStream.
 void printToDER(java.io.PrintStream out)
          Печать подписанного запроса в DER-кодировке в передаваемый PrintStream.
 void removeExtension(ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension e)
          Удаление расширения из списку.
 void removeExtKeyUsage(int[] ints)
          remove Extended KeyUsage from list.
 void removeExtKeyUsage(ru.CryptoPro.JCP.params.OID oid)
          remove Extended KeyUsage from list.
 void removeExtKeyUsage(java.lang.String str)
          remove Extended KeyUsage from list.
 void reset()
           
 void setKeyUsage(int i)
          set keyUsage.
static void setPublic2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req, ru.CryptoPro.JCP.ASN.PKIX1Explicit88.SubjectPublicKeyInfo keyInfo)
          store saved public key info to request.
 void setPublicKeyInfo(java.security.PublicKey publicKey)
          Кодирование и запись в структуру запроса параметров и значения передаваемого открытого ключа субъекта.
 void setPublicKeyInfoOLD(java.security.PublicKey publicKey)
          Кодирование и запись в структуру запроса параметров и значения передаваемого открытого ключа субъекта.
static void setSign2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req, byte[] signature)
          store signature to request.
static void setSubject2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req, ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RDNSequence name)
          store saved X500 name to request.
 void setSubjectInfo(java.lang.String name)
          Кодирование и запись в структуру запроса имени субъекта.
 void setSubjectInfoOLD(java.lang.String name)
          Кодирование и запись в структуру запроса имени субъекта.
static byte[] sign(java.security.PrivateKey privateKey, byte[] data, java.lang.String algorithm)
          Создание подписи закодированного запроса.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_SIGN_ALGORITHM

public static final java.lang.String DEFAULT_SIGN_ALGORITHM
todo

See Also:
Constant Field Values

ADDRESS_SHOULD_BE_HTTP

public static final java.lang.String ADDRESS_SHOULD_BE_HTTP
See Also:
Constant Field Values

UNKNOWN_KEY_ALGORITHM

public static final java.lang.String UNKNOWN_KEY_ALGORITHM
See Also:
Constant Field Values

BEGIN_STRING

public static final java.lang.String BEGIN_STRING
Стандартная строка начала запроса.

See Also:
Constant Field Values

END_STRING

public static final java.lang.String END_STRING
Стандартная строка окончания запроса.

See Also:
Constant Field Values
Constructor Detail

GostCertificateRequest

public GostCertificateRequest()
                       throws java.io.IOException
Создание нового объекта генерации запроса на сертификат. Если не выполнять дополнительную инициализацию посредством функции init(), то будет создан запрос на сертификат аутентификации клиента, соответствующий алгоритма подписи.

Throws:
java.io.IOException - ошибка инициализации

GostCertificateRequest

public GostCertificateRequest(java.lang.String provName)
                       throws java.io.IOException
Создание нового объекта генерации запроса на сертификат, с уточнением провайдера. Если не выполнять дополнительную инициализацию посредством функции init(), то будет создан запрос на сертификат аутентификации клиента, соответствующий алгоритма подписи.

Parameters:
provName - provider name is never used, to support compatibility only
Throws:
java.io.IOException - ошибка инициализации
Method Detail

setPublicKeyInfoOLD

public void setPublicKeyInfoOLD(java.security.PublicKey publicKey)
                         throws java.io.IOException,
                                java.security.SignatureException
Кодирование и запись в структуру запроса параметров и значения передаваемого открытого ключа субъекта.

Parameters:
publicKey - открытый ключ субъекта (ключ должен соответствовать закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001).
Throws:
java.io.IOException - исключение возникает в случае ошибки при кодировании открытого ключа (возможно, ключ поврежден).
java.security.SignatureException - if encoded == null

setPublicKeyInfo

public void setPublicKeyInfo(java.security.PublicKey publicKey)
                      throws java.io.IOException,
                             java.security.SignatureException
Кодирование и запись в структуру запроса параметров и значения передаваемого открытого ключа субъекта.

Parameters:
publicKey - открытый ключ субъекта (ключ должен соответствовать закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001).
Throws:
java.io.IOException - исключение возникает в случае ошибки при кодировании открытого ключа (возможно, ключ поврежден).
java.security.SignatureException - if encoded == null

setSubjectInfoOLD

public void setSubjectInfoOLD(java.lang.String name)
                       throws java.io.IOException,
                              java.security.SignatureException
Кодирование и запись в структуру запроса имени субъекта.

Parameters:
name - имя субъекта в виде строки, соответвующей стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
Throws:
java.io.IOException - исключение возникает в случае ошибки при кодировании имени субъекта (возможно, строковое представление имени не соответвует стандарту X.500).
java.security.SignatureException - if encoded == null
See Also:
X500Principal

setSubjectInfo

public void setSubjectInfo(java.lang.String name)
                    throws java.io.IOException,
                           java.security.SignatureException
Кодирование и запись в структуру запроса имени субъекта.

Parameters:
name - имя субъекта в виде строки, соответвующей стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
Throws:
java.io.IOException - исключение возникает в случае ошибки при кодировании имени субъекта (возможно, строковое представление имени не соответвует стандарту X.500).
java.security.SignatureException - if encoded == null
See Also:
X500Principal

setKeyUsage

public void setKeyUsage(int i)
set keyUsage.

Parameters:
i - keyUsage mask

clearExtKeyUsage

public void clearExtKeyUsage()
clear all Extended KeyUsage.


lengthExtKeyUsage

public int lengthExtKeyUsage()

removeExtKeyUsage

public void removeExtKeyUsage(int[] ints)
remove Extended KeyUsage from list.

Parameters:
ints - attribute to remove

removeExtKeyUsage

public void removeExtKeyUsage(ru.CryptoPro.JCP.params.OID oid)
remove Extended KeyUsage from list.

Parameters:
oid - attribute to remove

removeExtKeyUsage

public void removeExtKeyUsage(java.lang.String str)
remove Extended KeyUsage from list.

Parameters:
str - attribute to remove

addExtKeyUsage

public void addExtKeyUsage(int[] ints)
add Extended KeyUsage to list.

Parameters:
ints - attribute

addExtKeyUsage

public void addExtKeyUsage(java.lang.String str)
add Extended KeyUsage to list.

Parameters:
str - attribute

addExtKeyUsage

public void addExtKeyUsage(ru.CryptoPro.JCP.params.OID oid)
add Extended KeyUsage to list.

Parameters:
oid - attribute

isEquals

public static boolean isEquals(com.objsys.asn1j.runtime.Asn1ObjectIdentifier a,
                               com.objsys.asn1j.runtime.Asn1ObjectIdentifier b)
compare OIDs

Parameters:
a - first OID to compare
b - second OID to compare
Returns:
comparing result

clearExtList

public void clearExtList()
Очистка всех расширений из списка.


lengthExtList

public int lengthExtList()
Получение длины списка расширений.

Returns:
длина списка расширений

addExtension

public void addExtension(ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension e)
Добавление расширения к списку. Добавление KeyUsage (2.5.29.15) и ExtKeyUsage (2.5.29.37) запрещено.

Parameters:
e - расширение

removeExtension

public void removeExtension(ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension e)
Удаление расширения из списку. Удаление KeyUsage (2.5.29.15) и ExtKeyUsage (2.5.29.37) запрещено.

Parameters:
e - расширение

encodeAndSign

public void encodeAndSign(java.security.PrivateKey privateKey)
                   throws java.security.SignatureException,
                          java.io.IOException,
                          java.security.InvalidKeyException,
                          java.security.NoSuchAlgorithmException
Кодирование в DER-кодировку и подпись сертификата. Подпись осуществляется при помощи передаваемого закрытого ключа на параметрах по умолчанию (алгоритм подписи ГОСТ Р 34.10-2001 с алгоритмом хеширования ГОСТ Р 34.11-94)

Parameters:
privateKey - закрытый ключ субъекта, на котором осуществляется подпись запроса (ключ должен являться закрытым ключом подписи или обмена алгоритма ГОСТ Р 34.10-2001).
Throws:
java.security.SignatureException - исключение возникает в случае, когда запрос уже был подписан, либо возникла проблема с созданием подписи.
java.io.IOException - исключение возникает в случае ошибки при кодировании запроса (например, когда объекту генерации запроса не были переданы параметры открытого ключа, либо имя субъекта).
java.security.InvalidKeyException - исключение возникает в случае, когда закрытый ключ не является ключом обмена или подписи алгоритма ГОСТ Р 34.10-2001.
java.security.NoSuchAlgorithmException - неверное имя алгоритма в privateKey

encodeAndSignOLD

public void encodeAndSignOLD(java.security.PrivateKey privateKey,
                             java.lang.String algorithm)
                      throws java.security.SignatureException,
                             java.io.IOException,
                             java.security.InvalidKeyException,
                             java.security.NoSuchAlgorithmException
Кодирование в DER-кодировку и подпись сертификата. Подпись осуществляется при помощи передаваемого закрытого ключа на параметрах по умолчанию (алгоритм подписи ГОСТ Р 34.10-2001 с алгоритмом хеширования ГОСТ Р 34.11-94)

Parameters:
privateKey - закрытый ключ субъекта, на котором осуществляется подпись запроса
algorithm - имя алгоритма подписи. Если null то "GOST3411withGOST3410EL"
Throws:
java.security.SignatureException - исключение возникает в случае, когда запрос уже был подписан, либо возникла проблема с созданием подписи.
java.io.IOException - исключение возникает в случае ошибки при кодировании запроса (например, когда объекту генерации запроса не были переданы параметры открытого ключа, либо имя субъекта).
java.security.InvalidKeyException - исключение возникает в случае, когда закрытый ключ не является ключом обмена или подписи алгоритма ГОСТ Р 34.10-2001.
java.security.NoSuchAlgorithmException - неверное имя алгоритма в privateKey

encodeAndSign

public void encodeAndSign(java.security.PrivateKey privateKey,
                          java.lang.String algorithm)
                   throws java.security.SignatureException,
                          java.io.IOException,
                          java.security.InvalidKeyException,
                          java.security.NoSuchAlgorithmException
Кодирование в DER-кодировку и подпись сертификата. Подпись осуществляется при помощи передаваемого закрытого ключа на параметрах по умолчанию (алгоритм подписи ГОСТ Р 34.10-2001 с алгоритмом хеширования ГОСТ Р 34.11-94)

Parameters:
privateKey - закрытый ключ субъекта, на котором осуществляется подпись запроса
algorithm - имя алгоритма подписи. Если null то "GOST3411withGOST3410EL"
Throws:
java.security.SignatureException - исключение возникает в случае, когда запрос уже был подписан, либо возникла проблема с созданием подписи.
java.io.IOException - исключение возникает в случае ошибки при кодировании запроса (например, когда объекту генерации запроса не были переданы параметры открытого ключа, либо имя субъекта).
java.security.InvalidKeyException - исключение возникает в случае, когда закрытый ключ не является ключом обмена или подписи алгоритма ГОСТ Р 34.10-2001.
java.security.NoSuchAlgorithmException - неверное имя алгоритма в privateKey

init

public void init(java.lang.String keyAlgName)
          throws java.io.IOException
Deprecated. с версии 1.0.48 вместо init() лучше использовать setKeyUsage() и addExtKeyUsage()

Инициализация основных полей создаваемого запроса. При такой инициализации будет создан сертификат аутентификации клиента.

Parameters:
keyAlgName - строкое представление алгоритма закрытого ключа, соответствующего открытому
Throws:
java.io.IOException - ошибка инициализации.

initOLD

public void initOLD(java.lang.String keyAlgName,
                    boolean isServer)
             throws java.io.IOException
Deprecated. с версии 1.0.48 вместо init() лучше использовать setKeyUsage() и addExtKeyUsage()

Инициализация основных полей создаваемого запроса.

Parameters:
keyAlgName - строкое представление алгоритма закрытого ключа, соответствующего открытому
isServer - если true, то будет создан сертификат аутентификации сервера, иначе - клиента
Throws:
java.io.IOException - ошибка инициализации.

init

public void init(java.lang.String keyAlgName,
                 boolean isServer)
          throws java.io.IOException
Deprecated. с версии 1.0.48 вместо init() лучше использовать setKeyUsage() и addExtKeyUsage()

Инициализация основных полей создаваемого запроса.

Parameters:
keyAlgName - строкое представление алгоритма закрытого ключа, соответствующего открытому
isServer - если true, то будет создан сертификат аутентификации сервера, иначе - клиента
Throws:
java.io.IOException - ошибка инициализации.

getEncoded

public byte[] getEncoded()
Получение подписанного и закодирванного в DER-кодировке запроса.

Returns:
запрос возвращается в DER-кодировке в виде байтового массива, либо возвращается null, если запрос еще не был подписан.

printToBASE64

public void printToBASE64(java.io.PrintStream out)
                   throws java.io.IOException,
                          java.security.SignatureException
Печать подписанного запроса в BASE64-кодировке в передаваемый PrintStream.

Parameters:
out - выходной поток, в который записывается подписанный запрос.
Throws:
java.io.IOException - исключение возникает в случае ошибки при кодировании в BASE-64 кодировку подписанного запроса, либо при ошибке записи в поток.
java.security.SignatureException - исключение возникает в том случае, когда запрос еще не был подписан.

printToDER

public void printToDER(java.io.PrintStream out)
                throws java.io.IOException,
                       java.security.SignatureException
Печать подписанного запроса в DER-кодировке в передаваемый PrintStream.

Parameters:
out - выходной поток, в который записывается подписанный запрос.
Throws:
java.io.IOException - исключение возникает в случае ошибки записи в поток.
java.security.SignatureException - исключение возникает в том случае, когда запрос еще не был подписан.

getEncodedRootCert

public static byte[] getEncodedRootCert(java.lang.String httpAddress)
                                 throws java.io.IOException
Получение корневого сертификата центра сертификации.

Parameters:
httpAddress - http-адрес центра сертификации (например, "http://www.cryptopro.ru/certsrv/")
Returns:
корневой сертификат центра возвращается в DER-кодировке в виде байтового массива.
Throws:
java.io.IOException - исключение возникает в случае ошибки при создании соединения с сервером (например, если соединение не является http-соединением).

getEncodedCert

public byte[] getEncodedCert(java.lang.String httpAddress)
                      throws java.security.SignatureException,
                             java.io.IOException
Отправка подписанного запроса центру сертификации и получение соответствующего запросу сертификата.

Parameters:
httpAddress - http-адрес центра сертификации (например, "http://www.cryptopro.ru/certsrv/")
Returns:
соответствующий запросу сертификат возвращается в DER-кодировке в виде байтового массива.
Throws:
java.security.SignatureException - исключение возникает в случае, когда передаваемый центру запрос не был подписан.
java.io.IOException - исключение возникает в случае ошибки при создании соединения с сервером (например, если соединение не является http-соединением).

getEncodedCertFromBASE64

public static byte[] getEncodedCertFromBASE64(java.lang.String httpAddress,
                                              java.io.InputStream req)
                                       throws java.io.IOException
Отправка запроса в кодировке BASE64 центру сертификации и получение соответствующего запросу сертификата.

Parameters:
httpAddress - http-адрес центра сертификации (например, "http://www.cryptopro.ru/certsrv/")
req - входной поток, в котором содержится закодированный в BASE64 запрос.
Returns:
соответствующий запросу сертификат возвращается в DER-кодировке в виде байтового массива.
Throws:
java.io.IOException - исключение возникает в случае ошибки при создании соединения с сервером (например, если соединение не является http-соединением).

getEncodedCertFromDER

public static byte[] getEncodedCertFromDER(java.lang.String httpAddress,
                                           java.io.InputStream req)
                                    throws java.io.IOException
Отправка запроса в DER-кодировке центру сертификации и получение соответствующего запросу сертификата.

Parameters:
httpAddress - http-адрес центра сертификации (например, "http://www.cryptopro.ru/certsrv/")
req - входной поток, в котором содержится закодированный в DER запрос.
Returns:
соответствующий запросу сертификат возвращается в DER-кодировке в виде байтового массива.
Throws:
java.io.IOException - исключение возникает в случае ошибки при создании соединения с сервером (например, если соединение не является http-соединением).

getId

public static int getId(java.lang.String page)
                 throws java.io.IOException
Поиск идентификатора запроса, чтобы по нему скачать сертификат.

Parameters:
page - страница ответа сервера
Returns:
идентификатор запроса
Throws:
java.io.IOException - не нашли :(

getEncodedSelfCert

public byte[] getEncodedSelfCert(java.security.KeyPair keyPair,
                                 java.lang.String name)
                          throws java.security.InvalidKeyException,
                                 java.io.IOException,
                                 java.security.SignatureException,
                                 java.security.NoSuchAlgorithmException
Генерация самоподписанного сертификата.

Parameters:
keyPair - ключевая пара субъекта (она же издателя).
name - имя субъекта (оно же имя издателя) в виде строки, соответвующей стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
Returns:
самоподписанный сертификат возвращается в DER-кодировке в виде байтового массива.
Throws:
java.io.IOException - исключение возникает в случае ошибки при кодировании имени субъекта (возможно, строковое представление имени не соответвует стандарту X.500).
java.security.InvalidKeyException - исключение возникает в случае, когда открытый ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001.
java.security.SignatureException - исключение возникает в случае ошибки при создании подписи.
java.security.NoSuchAlgorithmException - неверное имя алгоритма в keyPair

generateCert

public byte[] generateCert(java.security.PrivateKey privKey,
                           java.security.PublicKey pubKey,
                           java.lang.String subject,
                           java.lang.String issuer)
                    throws java.security.InvalidKeyException,
                           java.io.IOException,
                           java.security.SignatureException,
                           java.security.NoSuchAlgorithmException
Генерация сертификата открытого ключа субъекта с именем subject, подписанного закрытым ключом издателя issuer.

Parameters:
privKey - закрытый ключ издателя, на котором осуществляется подпись сертификата (ключ должен являться закрытым ключом подписи или обмена алгоритма ГОСТ Р 34.10-2001).
pubKey - открытый ключ субъекта, для которого генерится сертификат (ключ должен соответствовать закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001).
subject - имя субъекта в виде строки, соответвующей стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
issuer - имя издателя в виде строки, соответвующей стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
Returns:
сертификат возвращается в DER-кодировке в виде байтового массива.
Throws:
java.io.IOException - исключение возникает в случае ошибки при кодировании имени субъекта (возможно, строковое представление имени не соответвует стандарту X.500).
java.security.InvalidKeyException - исключение возникает в случае, когда открытый ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001.
java.security.SignatureException - исключение возникает в случае ошибки при создании подписи.
java.security.NoSuchAlgorithmException - неверное имя алгоритма в privKey

generateCert

public byte[] generateCert(java.security.PrivateKey privKey,
                           java.security.PublicKey pubKey,
                           java.lang.String subject,
                           java.lang.String issuer,
                           java.lang.String algorithm)
                    throws java.security.InvalidKeyException,
                           java.io.IOException,
                           java.security.SignatureException,
                           java.security.NoSuchAlgorithmException
Генерация сертификата открытого ключа субъекта с именем subject, подписанного закрытым ключом издателя issuer.

Parameters:
privKey - закрытый ключ издателя, на котором осуществляется подпись сертификата (ключ должен являться закрытым ключом подписи или обмена алгоритма ГОСТ Р 34.10-2001).
pubKey - открытый ключ субъекта, для которого генерится сертификат (ключ должен соответствовать закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001).
subject - имя субъекта в виде строки, соответвующей стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
issuer - имя издателя в виде строки, соответвующей стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
algorithm - имя алгоритма подписи. Если null то "GOST3411withGOST3410EL"
Returns:
сертификат возвращается в DER-кодировке в виде байтового массива.
Throws:
java.io.IOException - исключение возникает в случае ошибки при кодировании имени субъекта (возможно, строковое представление имени не соответвует стандарту X.500).
java.security.InvalidKeyException - исключение возникает в случае, когда открытый ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001.
java.security.SignatureException - исключение возникает в случае ошибки при создании подписи.
java.security.NoSuchAlgorithmException - неверное имя алгоритма в privKey

reset

public void reset()

sign

public static byte[] sign(java.security.PrivateKey privateKey,
                          byte[] data,
                          java.lang.String algorithm)
                   throws java.security.NoSuchAlgorithmException,
                          java.security.InvalidKeyException,
                          java.security.SignatureException
Создание подписи закодированного запроса.

Parameters:
privateKey - закрытый ключ.
data - запрос
algorithm - алгоритм подписи
Returns:
подпись
Throws:
java.security.InvalidKeyException - неверный тип ключа
java.security.SignatureException - ошибка создания подписи
java.security.NoSuchAlgorithmException - неверное имя алгоритма в privateKey

createRequest

public static ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest createRequest()
Создает объект request.

Поля signature и SignatureAlgorithm не инициализируются.

Returns:
request

setPublic2Request

public static void setPublic2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req,
                                     ru.CryptoPro.JCP.ASN.PKIX1Explicit88.SubjectPublicKeyInfo keyInfo)
store saved public key info to request.

Parameters:
keyInfo - public key info
req - request to set in

setSubject2Request

public static void setSubject2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req,
                                      ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RDNSequence name)
store saved X500 name to request.

Parameters:
name - X500 name
req - request to set in

setSign2Request

public static void setSign2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req,
                                   byte[] signature)
store signature to request.

Parameters:
signature - signature
req - request to set in

createUsage

public static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createUsage(int mask)
                                                                  throws java.io.IOException
Throws:
java.io.IOException

createKeyUsageBitSet

public static java.util.BitSet createKeyUsageBitSet(int mask)
Если пользователь снаружи установил keyUsage, он и используется, иначе используется keyUsage по умолчанию.

Parameters:
mask - маска флагов в который устанавливается keyUsage
Returns:
BitSet

createExtUsage

public static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createExtUsage(java.util.Vector list)
                                                                     throws java.io.IOException
Throws:
java.io.IOException

formExtKeyUsage

public static ru.CryptoPro.JCP.ASN.CertificateExtensions._extKeyUsage_ExtnType formExtKeyUsage(java.util.Vector list)
helper. Формирует список _extKeyUsage_ExtnType из extUsageList

Parameters:
list - list to copy attributes from
Returns:
_extKeyUsage_ExtnType

createBasic

public static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createBasic()
                                                                  throws java.io.IOException
Throws:
java.io.IOException

Copyright Crypto-Pro.
All rights reserved.