public class GostCertificateRequest
extends java.lang.Object
implements ru.CryptoPro.JCPRequest.KeyUsage
Структура запроса имеет следующий вид:
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-кодировке самоподписанный сертификат. Отправка подписанного запроса и получение закодированного сертификата производится одним из следующих методов:
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ADDRESS_SHOULD_BE_HTTP
Сообщение для exception: "Адрес должен быть HTTP".
|
static java.lang.String |
BEGIN_STRING
Стандартная строка начала запроса.
|
static java.lang.String |
DEFAULT_SIGN_ALGORITHM
Алгоритм подписи по умолчанию.
|
static java.lang.String |
END_STRING
Стандартная строка окончания запроса.
|
static java.lang.String |
UNKNOWN_KEY_ALGORITHM
Сообщение для exception: "Неизвестный алгоритм ключа".
|
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 and Description |
---|
GostCertificateRequest()
Создание нового объекта генерации запроса на сертификат.
|
GostCertificateRequest(java.lang.String provName)
Создание нового объекта генерации запроса на сертификат, с уточнением
провайдера.
|
Modifier and Type | Method and Description |
---|---|
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 |
decodeRequest(byte[] req)
Декодирование запроса и извлечение его свойств.
|
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 privateKey,
java.security.PublicKey pubKey,
java.lang.String subject,
java.lang.String issuer)
Генерация сертификата открытого ключа субъекта с именем subject, подписанного
закрытым ключом издателя issuer.
|
byte[] |
generateCert(java.security.PrivateKey privateKey,
java.security.PublicKey pubKey,
java.lang.String subject,
java.lang.String issuer,
java.lang.String algorithm)
Генерация сертификата открытого ключа субъекта с именем subject, подписанного
закрытым ключом издателя issuer.
|
byte[] |
generateCert(java.security.PrivateKey privateKey,
java.security.PublicKey pubKey,
ru.CryptoPro.reprov.x509.X500Name subject,
ru.CryptoPro.reprov.x509.X500Name issuer,
java.lang.String algorithm)
Генерация сертификата открытого ключа субъекта с именем subject, подписанного
закрытым ключом издателя issuer.
|
byte[] |
generateCertFromRequest(java.security.PrivateKey privateKey,
java.lang.String issuer)
Генерация сертификата из запроса путем подписывания закрытым ключом
издателя issuer.
|
byte[] |
generateCertFromRequest(java.security.PrivateKey privateKey,
ru.CryptoPro.reprov.x509.X500Name issuer)
Генерация сертификата из запроса путем подписывания закрытым ключом
издателя 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)
Генерация самоподписанного сертификата.
|
byte[] |
getEncodedSelfCert(java.security.KeyPair keyPair,
java.lang.String name,
java.lang.String algorithm)
Генерация самоподписанного сертификата.
|
byte[] |
getEncodedSelfCert(java.security.KeyPair keyPair,
ru.CryptoPro.reprov.x509.X500Name name,
java.lang.String algorithm)
Генерация самоподписанного сертификата.
|
static int |
getId(java.lang.String page)
Поиск идентификатора запроса, чтобы по нему скачать сертификат.
|
static int |
getIdExtended(java.lang.String page)
Поиск идентификатора запроса, чтобы по нему скачать сертификат.
|
static int |
getIdNew(java.lang.String page)
Поиск идентификатора запроса, чтобы по нему скачать сертификат.
|
int |
getKeyUsageMask()
Get keyUsage.
|
java.lang.String |
getProviderName()
Получение имени провайдера для подписи запроса.
|
ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RDNSequence |
getSubjectInfo()
Получение имени субъекта в ASN1-формате из запроса.
|
ru.CryptoPro.JCP.ASN.PKIX1Explicit88.SubjectPublicKeyInfo |
getSubjectKey()
Получение открытого ключа в ASN1-формате из запроса.
|
static byte[] |
httpGetFile(java.lang.String httpAddress,
ru.CryptoPro.JCPRequest.ca15.user.CAUser user)
Скачивает файл по http.
|
static byte[] |
httpGetFile(java.lang.String httpAddress,
ru.CryptoPro.JCPRequest.ca15.user.CAUser user,
java.util.Properties headers)
Скачивает файл по http.
|
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 |
init(java.lang.String keyAlgName,
boolean isServer,
boolean isExchange)
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.
|
boolean |
isExchange()
Определение, был ли запрос подписан ключом обмена.
|
boolean |
isServer()
Определение, был ли запрос создан для аутентификации сервера, иначе - клиента.
|
int |
lengthExtKeyUsage()
Get Extended KeyUsage size.
|
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,
ru.CryptoPro.JCP.params.OID signatureParam)
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 |
setSubjectInfo(ru.CryptoPro.reprov.x509.X500Name x500Name)
Кодирование и запись в структуру запроса имени субъекта.
|
void |
setSubjectInfoOLD(java.lang.String name)
Кодирование и запись в структуру запроса имени субъекта.
|
static byte[] |
sign(java.security.PrivateKey privateKey,
byte[] data,
java.lang.String algorithm,
java.lang.String provider)
Создание подписи закодированного запроса.
|
public static final java.lang.String DEFAULT_SIGN_ALGORITHM
public static final java.lang.String ADDRESS_SHOULD_BE_HTTP
public static final java.lang.String UNKNOWN_KEY_ALGORITHM
public static final java.lang.String BEGIN_STRING
public static final java.lang.String END_STRING
public GostCertificateRequest() throws java.io.IOException
java.io.IOException
- ошибка инициализацииpublic GostCertificateRequest(java.lang.String provName) throws java.io.IOException
provName
- Имя провайдера для подписи запроса.java.io.IOException
- ошибка инициализацииpublic java.lang.String getProviderName()
public void setPublicKeyInfoOLD(java.security.PublicKey publicKey) throws java.io.IOException, java.security.SignatureException
publicKey
- Открытый ключ субъекта (ключ должен соответствовать
закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001).java.io.IOException
- исключение возникает в случае ошибки при кодировании
открытого ключа (возможно, ключ поврежден)java.security.SignatureException
- if encoded == nullpublic void setPublicKeyInfo(java.security.PublicKey publicKey) throws java.io.IOException, java.security.SignatureException
publicKey
- Открытый ключ субъекта (ключ должен соответствовать
закрытому ключу подписи или обмена алгоритма ГОСТ Р 34.10-2001 или
ГОСТ Р 34.10-2012).java.io.IOException
- исключение возникает в случае ошибки при кодировании
открытого ключа (возможно, ключ поврежден)java.security.SignatureException
- if encoded == nullpublic ru.CryptoPro.JCP.ASN.PKIX1Explicit88.SubjectPublicKeyInfo getSubjectKey()
public void setSubjectInfoOLD(java.lang.String name) throws java.io.IOException, java.security.SignatureException
name
- Имя субъекта в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.SignatureException
- if encoded == nullX500Principal
public void setSubjectInfo(java.lang.String name) throws java.io.IOException, java.security.SignatureException
name
- Имя субъекта в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.SignatureException
- if encoded == nullX500Principal
public void setSubjectInfo(ru.CryptoPro.reprov.x509.X500Name x500Name) throws java.io.IOException, java.security.SignatureException
x500Name
- Имя субъекта в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.SignatureException
- if encoded == nullX500Principal
public ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RDNSequence getSubjectInfo()
public void setKeyUsage(int i)
i
- keyUsage mask.public int getKeyUsageMask()
public void clearExtKeyUsage()
public int lengthExtKeyUsage()
public void removeExtKeyUsage(int[] ints)
ints
- Attribute to remove.public void removeExtKeyUsage(ru.CryptoPro.JCP.params.OID oid)
oid
- Attribute to remove.public void removeExtKeyUsage(java.lang.String str)
str
- Attribute to remove.public void addExtKeyUsage(int[] ints)
ints
- Attribute.public void addExtKeyUsage(java.lang.String str)
str
- Attribute.public void addExtKeyUsage(ru.CryptoPro.JCP.params.OID oid)
oid
- Attribute.public static boolean isEquals(com.objsys.asn1j.runtime.Asn1ObjectIdentifier a, com.objsys.asn1j.runtime.Asn1ObjectIdentifier b)
a
- First OID to compare.b
- Second OID to compare.public void clearExtList()
public int lengthExtList()
public void addExtension(ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension e)
e
- Расширение.public void removeExtension(ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension e)
e
- Расширение.public void encodeAndSign(java.security.PrivateKey privateKey) throws java.security.SignatureException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
privateKey
- Закрытый ключ субъекта, на котором осуществляется подпись
запроса (ключ должен являться закрытым ключом подписи или обмена алгоритма
ГОСТ Р 34.10-2001 или ГОСТ Р 34.10-2012).java.security.SignatureException
- исключение возникает в случае, когда запрос уже
был подписан, либо возникла проблема с созданием подписиjava.io.IOException
- исключение возникает в случае ошибки при кодировании
запроса (например, когда объекту генерации запроса не были переданы параметры
открытого ключа, либо имя субъекта)java.security.InvalidKeyException
- исключение возникает в случае, когда закрытый
ключ не является ключом обмена или подписи алгоритма ГОСТ Р 34.10-2001 или
ГОСТ Р 34.10-2012java.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public void encodeAndSignOLD(java.security.PrivateKey privateKey, java.lang.String algorithm) throws java.security.SignatureException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
privateKey
- Закрытый ключ субъекта, на котором осуществляется подпись запроса.algorithm
- Имя алгоритма подписи. Если null, то алгоритм определяется по ключу.java.security.SignatureException
- исключение возникает в случае, когда запрос уже
был подписан, либо возникла проблема с созданием подписиjava.io.IOException
- исключение возникает в случае ошибки при кодировании
запроса (например, когда объекту генерации запроса не были переданы параметры
открытого ключа, либо имя субъекта)java.security.InvalidKeyException
- исключение возникает в случае, когда закрытый
ключ не является ключом обмена или подписи алгоритма ГОСТ Р 34.10-2001java.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public void encodeAndSign(java.security.PrivateKey privateKey, java.lang.String algorithm) throws java.security.SignatureException, java.io.IOException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
privateKey
- Закрытый ключ субъекта, на котором осуществляется подпись запроса.algorithm
- Имя алгоритма подписи. Если null, то алгоритм определяется по ключу.java.security.SignatureException
- исключение возникает в случае, когда запрос уже
был подписан, либо возникла проблема с созданием подписиjava.io.IOException
- исключение возникает в случае ошибки при кодировании
запроса (например, когда объекту генерации запроса не были переданы параметры
открытого ключа, либо имя субъекта)java.security.InvalidKeyException
- исключение возникает в случае, когда закрытый
ключ не является ключом обмена или подписи алгоритма ГОСТ Р 34.10-2001 или
ГОСТ Р 34.10-2012java.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public void init(java.lang.String keyAlgName) throws java.io.IOException
keyAlgName
- Строковое представление алгоритма закрытого ключа,
соответствующего открытому.java.io.IOException
- ошибка инициализацииpublic void initOLD(java.lang.String keyAlgName, boolean isServer) throws java.io.IOException
keyAlgName
- Строковое представление алгоритма закрытого ключа,
соответствующего открытому.isServer
- Если true, то будет создан сертификат аутентификации сервера,
иначе - клиента.java.io.IOException
- ошибка инициализацииpublic void init(java.lang.String keyAlgName, boolean isServer, boolean isExchange) throws java.io.IOException
keyAlgName
- Строковое представление алгоритма закрытого ключа,
соответствующего открытому.isServer
- Если true, то будет создан сертификат аутентификации сервера,
иначе - клиента.isExchange
- Если true, то ключ обмена (используется только для RSA).java.io.IOException
- ошибка инициализацииpublic void init(java.lang.String keyAlgName, boolean isServer) throws java.io.IOException
keyAlgName
- Строковое представление алгоритма закрытого ключа,
соответствующего открытому.isServer
- Если true, то будет создан сертификат аутентификации сервера,
иначе - клиента.java.io.IOException
- ошибка инициализацииpublic boolean isServer()
public boolean isExchange()
public byte[] getEncoded()
public void printToBASE64(java.io.PrintStream out) throws java.io.IOException, java.security.SignatureException
out
- Выходной поток, в который записывается подписанный запрос.java.io.IOException
- исключение возникает в случае ошибки при кодировании в
BASE-64 кодировку подписанного запроса, либо при ошибке записи в потокjava.security.SignatureException
- исключение возникает в том случае, когда запрос
еще не был подписанpublic void printToDER(java.io.PrintStream out) throws java.io.IOException, java.security.SignatureException
out
- Выходной поток, в который записывается подписанный запрос.java.io.IOException
- исключение возникает в случае ошибки записи в потокjava.security.SignatureException
- исключение возникает в том случае, когда запрос
еще не был подписанpublic static byte[] getEncodedRootCert(java.lang.String httpAddress) throws java.lang.Exception
httpAddress
- Http-адрес центра сертификации (например,
"http://www.cryptopro.ru/certsrv/").java.lang.Exception
- исключение возникает в случае ошибки при создании
соединения с сервером (например, если соединение не является
http-соединением)public byte[] getEncodedCert(java.lang.String httpAddress) throws java.lang.Exception
httpAddress
- Http-адрес центра сертификации (например,
"http://www.cryptopro.ru/certsrv/").java.security.SignatureException
- исключение возникает в случае, когда передаваемый
центру запрос не был подписанjava.io.IOException
- исключение возникает в случае ошибки при создании
соединения с сервером (например, если соединение не является
http-соединением)java.lang.Exception
public static byte[] getEncodedCertFromBASE64(java.lang.String httpAddress, java.io.InputStream req) throws java.lang.Exception
httpAddress
- Http-адрес центра сертификации (например,
"http://www.cryptopro.ru/certsrv/").req
- входной поток, в котором содержится закодированный в BASE64
запрос.java.lang.Exception
- исключение возникает в случае ошибки при создании
соединения с сервером (например, если соединение не является
http-соединением)public static byte[] getEncodedCertFromDER(java.lang.String httpAddress, java.io.InputStream req) throws java.lang.Exception
httpAddress
- Http-адрес центра сертификации (например,
"http://www.cryptopro.ru/certsrv/").req
- входной поток, в котором содержится закодированный в DER запрос.java.lang.Exception
- исключение возникает в случае ошибки при создании
соединения с сервером (например, если соединение не является
http-соединением)public static int getIdExtended(java.lang.String page) throws java.io.IOException
page
- Страница ответа сервера.java.io.IOException
public static int getIdNew(java.lang.String page) throws java.io.IOException
page
- Страница ответа сервера.java.io.IOException
public static int getId(java.lang.String page) throws java.io.IOException
page
- Страница ответа сервера.java.io.IOException
public static byte[] httpGetFile(java.lang.String httpAddress, ru.CryptoPro.JCPRequest.ca15.user.CAUser user) throws java.lang.Exception
httpAddress
- Http-адрес файла.user
- Пользователь УЦ.java.lang.Exception
- ошибки передачиpublic static byte[] httpGetFile(java.lang.String httpAddress, ru.CryptoPro.JCPRequest.ca15.user.CAUser user, java.util.Properties headers) throws java.lang.Exception
httpAddress
- Http-адрес файла.user
- Пользователь УЦ.headers
- Заголовки запроса.java.io.IOException
- ошибки передачиjava.lang.Exception
public byte[] getEncodedSelfCert(java.security.KeyPair keyPair, java.lang.String name) throws java.security.InvalidKeyException, java.io.IOException, java.security.SignatureException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
keyPair
- Ключевая пара субъекта (она же издателя).name
- Имя субъекта (оно же имя издателя) в виде строки, соответствующей
стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.InvalidKeyException
- исключение возникает в случае, когда открытый
ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012java.security.SignatureException
- исключение возникает в случае ошибки при создании
подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в keyPairjava.security.NoSuchProviderException
public byte[] getEncodedSelfCert(java.security.KeyPair keyPair, java.lang.String name, java.lang.String algorithm) throws java.security.InvalidKeyException, java.io.IOException, java.security.SignatureException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
keyPair
- Ключевая пара субъекта (она же издателя).name
- Имя субъекта (оно же имя издателя) в виде строки, соответствующей
стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").algorithm
- Имя алгоритма подписи. Если null, то алгоритм определяется
по ключу.java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.InvalidKeyException
- исключение возникает в случае, когда открытый
ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012java.security.SignatureException
- исключение возникает в случае ошибки при создании
подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в keyPairjava.security.NoSuchProviderException
public byte[] getEncodedSelfCert(java.security.KeyPair keyPair, ru.CryptoPro.reprov.x509.X500Name name, java.lang.String algorithm) throws java.security.InvalidKeyException, java.io.IOException, java.security.SignatureException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
keyPair
- Ключевая пара субъекта (она же издателя).name
- Имя субъекта (оно же имя издателя) в виде строки, соответствующей
стандарту X.500 (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").algorithm
- Имя алгоритма подписи. Если null, то алгоритм определяется
по ключу.java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.InvalidKeyException
- исключение возникает в случае, когда открытый
ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012java.security.SignatureException
- исключение возникает в случае ошибки при создании
подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в keyPairjava.security.NoSuchProviderException
public byte[] generateCert(java.security.PrivateKey privateKey, 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, java.security.NoSuchProviderException
privateKey
- Закрытый ключ издателя, на котором осуществляется подпись
сертификата (ключ должен являться закрытым ключом подписи или обмена
алгоритма ГОСТ Р 34.10-2001 или ГОСТ Р 34.10-2012).pubKey
- Открытый ключ субъекта, для которого генерится сертификат (ключ
должен соответствовать закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012).subject
- Имя субъекта в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").issuer
- Имя издателя в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.InvalidKeyException
- исключение возникает в случае, когда открытый
ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012java.security.SignatureException
- исключение возникает в случае ошибки при создании
подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public byte[] generateCert(java.security.PrivateKey privateKey, 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, java.security.NoSuchProviderException
privateKey
- Закрытый ключ издателя, на котором осуществляется подпись
сертификата (ключ должен являться закрытым ключом подписи или обмена
алгоритма ГОСТ Р 34.10-2001 или ГОСТ Р 34.10-2012).pubKey
- Открытый ключ субъекта, для которого генерится сертификат (ключ
должен соответствовать закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012).subject
- Имя субъекта в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").issuer
- Имя издателя в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").algorithm
- Имя алгоритма подписи. Если null, то алгоритм определяется
по ключу.java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.InvalidKeyException
- исключение возникает в случае, когда открытый
ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012java.security.SignatureException
- исключение возникает в случае ошибки при создании
подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public byte[] generateCertFromRequest(java.security.PrivateKey privateKey, ru.CryptoPro.reprov.x509.X500Name issuer) throws java.security.InvalidKeyException, java.io.IOException, java.security.SignatureException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
privateKey
- Закрытый ключ издателя, на котором осуществляется подпись
сертификата (ключ должен являться закрытым ключом подписи или обмена
алгоритма ГОСТ Р 34.10-2001 или ГОСТ Р 34.10-2012).issuer
- Имя издателя в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.InvalidKeyException
- исключение возникает в случае, когда открытый
ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012java.security.SignatureException
- исключение возникает в случае ошибки при создании
подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public byte[] generateCertFromRequest(java.security.PrivateKey privateKey, java.lang.String issuer) throws java.security.InvalidKeyException, java.io.IOException, java.security.SignatureException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
privateKey
- Закрытый ключ издателя, на котором осуществляется подпись
сертификата (ключ должен являться закрытым ключом подписи или обмена
алгоритма ГОСТ Р 34.10-2001 или ГОСТ Р 34.10-2012).issuer
- Имя издателя в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.InvalidKeyException
- исключение возникает в случае, когда открытый
ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012java.security.SignatureException
- исключение возникает в случае ошибки при создании
подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public byte[] generateCert(java.security.PrivateKey privateKey, java.security.PublicKey pubKey, ru.CryptoPro.reprov.x509.X500Name subject, ru.CryptoPro.reprov.x509.X500Name issuer, java.lang.String algorithm) throws java.security.InvalidKeyException, java.io.IOException, java.security.SignatureException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
privateKey
- Закрытый ключ издателя, на котором осуществляется подпись
сертификата (ключ должен являться закрытым ключом подписи или обмена
алгоритма ГОСТ Р 34.10-2001 или ГОСТ Р 34.10-2012).pubKey
- Открытый ключ субъекта, для которого генерится сертификат (ключ
должен соответствовать закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012).subject
- Имя субъекта в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").issuer
- Имя издателя в виде строки, соответствующей стандарту X.500
(например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").algorithm
- Имя алгоритма подписи. Если null, то алгоритм определяется
по ключу.java.io.IOException
- исключение возникает в случае ошибки при кодировании
имени субъекта (возможно, строковое представление имени не соответствует
стандарту X.500)java.security.InvalidKeyException
- исключение возникает в случае, когда открытый
ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
34.10-2001 или ГОСТ Р 34.10-2012java.security.SignatureException
- исключение возникает в случае ошибки при создании
подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public void reset()
public static byte[] sign(java.security.PrivateKey privateKey, byte[] data, java.lang.String algorithm, java.lang.String provider) throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException, java.security.SignatureException, java.security.NoSuchProviderException
privateKey
- Закрытый ключ.data
- Запрос.algorithm
- Алгоритм подписи. Если null, то используется
DEFAULT_SIGN_ALGORITHM
.java.security.InvalidKeyException
- неверный тип ключаjava.security.SignatureException
- ошибка создания подписиjava.security.NoSuchAlgorithmException
- неверное имя алгоритма в privateKeyjava.security.NoSuchProviderException
public static ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest createRequest()
public static void setPublic2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req, ru.CryptoPro.JCP.ASN.PKIX1Explicit88.SubjectPublicKeyInfo keyInfo)
keyInfo
- public key info.req
- request to set in.public static void setSubject2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req, ru.CryptoPro.JCP.ASN.PKIX1Explicit88.RDNSequence name)
name
- X500 name.req
- request to set in.public static void setSign2Request(ru.CryptoPro.JCP.ASN.PKIXCMP.CertificationRequest req, byte[] signature, ru.CryptoPro.JCP.params.OID signatureParam)
req
- request to set in.signature
- signature.signatureParam
- identifier of signature parameters.public static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createUsage(int mask) throws java.io.IOException
mask
- Маска.java.io.IOException
public static java.util.BitSet createKeyUsageBitSet(int mask)
mask
- Маска флагов в который устанавливается keyUsage.public static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createExtUsage(java.util.Vector list) throws java.io.IOException
list
- Список типов использования.java.io.IOException
public static ru.CryptoPro.JCP.ASN.CertificateExtensions._extKeyUsage_ExtnType formExtKeyUsage(java.util.Vector list)
list
- List to copy attributes from.public static ru.CryptoPro.JCP.ASN.PKIX1Explicit88.Extension createBasic() throws java.io.IOException
java.io.IOException
public void decodeRequest(byte[] req) throws java.io.IOException
req
- Запрос (ASN1).java.io.IOException