本文整理汇总了C++中DER_Encoder::end_cons方法的典型用法代码示例。如果您正苦于以下问题:C++ DER_Encoder::end_cons方法的具体用法?C++ DER_Encoder::end_cons怎么用?C++ DER_Encoder::end_cons使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DER_Encoder
的用法示例。
在下文中一共展示了DER_Encoder::end_cons方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generateOpenSslPrivateKeyString
void SshKeyGenerator::generateOpenSslPrivateKeyString(const KeyPtr &key)
{
QList<BigInt> params;
QByteArray keyId;
const char *label;
if (m_type == Rsa) {
const QSharedPointer<RSA_PrivateKey> rsaKey
= key.dynamicCast<RSA_PrivateKey>();
params << rsaKey->get_n() << rsaKey->get_e() << rsaKey->get_d() << rsaKey->get_p()
<< rsaKey->get_q();
keyId = SshCapabilities::PubKeyRsa;
label = "RSA PRIVATE KEY";
} else {
const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y()
<< dsaKey->get_x();
keyId = SshCapabilities::PubKeyDss;
label = "DSA PRIVATE KEY";
}
DER_Encoder encoder;
encoder.start_cons(SEQUENCE).encode(0U);
foreach (const BigInt &b, params)
encoder.encode(b);
encoder.end_cons();
m_privateKey = QByteArray(PEM_Code::encode (encoder.get_contents(), label).c_str());
}
示例2:
/*
* DER encode a DistinguishedName
*/
void X509_DN::encode_into(DER_Encoder& der) const
{
std::multimap<OID, std::string> dn_info = get_attributes();
der.start_cons(SEQUENCE);
if(!dn_bits.empty())
der.raw_bytes(dn_bits);
else
{
do_ava(der, dn_info, PRINTABLE_STRING, "X520.Country");
do_ava(der, dn_info, DIRECTORY_STRING, "X520.State");
do_ava(der, dn_info, DIRECTORY_STRING, "X520.Locality");
do_ava(der, dn_info, DIRECTORY_STRING, "X520.Organization");
do_ava(der, dn_info, DIRECTORY_STRING, "X520.OrganizationalUnit");
do_ava(der, dn_info, DIRECTORY_STRING, "X520.CommonName");
do_ava(der, dn_info, PRINTABLE_STRING, "X520.SerialNumber");
}
der.end_cons();
}
示例3: generateOpenSslKeys
bool SshKeyGenerator::generateOpenSslKeys(const KeyPtr &key)
{
QList<BigInt> publicParams;
QList<BigInt> allParams;
QByteArray keyId;
if (m_type == Rsa) {
const QSharedPointer<RSA_PrivateKey> rsaKey
= key.dynamicCast<RSA_PrivateKey>();
publicParams << rsaKey->get_e() << rsaKey->get_n();
allParams << rsaKey->get_n() << rsaKey->get_e() << rsaKey->get_d()
<< rsaKey->get_p() << rsaKey->get_q();
keyId = SshCapabilities::PubKeyRsa;
} else {
const QSharedPointer<DSA_PrivateKey> dsaKey
= key.dynamicCast<DSA_PrivateKey>();
publicParams << dsaKey->group_p() << dsaKey->group_q()
<< dsaKey->group_g() << dsaKey->get_y();
allParams << publicParams << dsaKey->get_x();
keyId = SshCapabilities::PubKeyDss;
}
QByteArray publicKeyBlob = AbstractSshPacket::encodeString(keyId);
foreach (const BigInt &b, publicParams)
publicKeyBlob += AbstractSshPacket::encodeMpInt(b);
publicKeyBlob = publicKeyBlob.toBase64();
const QByteArray id = "QtCreator/"
+ QDateTime::currentDateTime().toString(Qt::ISODate).toUtf8();
m_publicKey = keyId + ' ' + publicKeyBlob + ' ' + id;
DER_Encoder encoder;
encoder.start_cons(SEQUENCE).encode (0U);
foreach (const BigInt &b, allParams)
encoder.encode(b);
encoder.end_cons();
const char * const label
= m_type == Rsa ? "RSA PRIVATE KEY" : "DSA PRIVATE KEY";
m_privateKey
= QByteArray(PEM_Code::encode (encoder.get_contents(), label).c_str());
return true;
}
示例4: generateOpenSslPrivateKeyString
void SshKeyGenerator::generateOpenSslPrivateKeyString(const KeyPtr &key)
{
QList<BigInt> params;
const char *label = "";
switch (m_type) {
case Rsa: {
const QSharedPointer<RSA_PrivateKey> rsaKey
= key.dynamicCast<RSA_PrivateKey>();
params << rsaKey->get_n() << rsaKey->get_e() << rsaKey->get_d() << rsaKey->get_p()
<< rsaKey->get_q();
const BigInt dmp1 = rsaKey->get_d() % (rsaKey->get_p() - 1);
const BigInt dmq1 = rsaKey->get_d() % (rsaKey->get_q() - 1);
const BigInt iqmp = inverse_mod(rsaKey->get_q(), rsaKey->get_p());
params << dmp1 << dmq1 << iqmp;
label = "RSA PRIVATE KEY";
break;
}
case Dsa: {
const QSharedPointer<DSA_PrivateKey> dsaKey = key.dynamicCast<DSA_PrivateKey>();
params << dsaKey->group_p() << dsaKey->group_q() << dsaKey->group_g() << dsaKey->get_y()
<< dsaKey->get_x();
label = "DSA PRIVATE KEY";
break;
}
case Ecdsa:
params << key.dynamicCast<ECDSA_PrivateKey>()->private_value();
label = "EC PRIVATE KEY";
break;
}
DER_Encoder encoder;
encoder.start_cons(SEQUENCE).encode(size_t(0));
foreach (const BigInt &b, params)
encoder.encode(b);
encoder.end_cons();
m_privateKey = QByteArray(PEM_Code::encode (encoder.get_contents(), label).c_str());
}