MCPcopy Create free account
hub / github.com/PurpleI2P/i2pd / CreateOfflineKeys

Method CreateOfflineKeys

libi2pd/Identity.cpp:835–855  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

833 }
834
835 PrivateKeys PrivateKeys::CreateOfflineKeys (SigningKeyType type, uint32_t expires) const
836 {
837 PrivateKeys keys (*this);
838 std::unique_ptr<i2p::crypto::Verifier> verifier (IdentityEx::CreateVerifier (type));
839 if (verifier)
840 {
841 size_t pubKeyLen = verifier->GetPublicKeyLen ();
842 keys.m_TransientSigningPrivateKeyLen = verifier->GetPrivateKeyLen ();
843 keys.m_TransientSignatureLen = verifier->GetSignatureLen ();
844 keys.m_OfflineSignature.resize (pubKeyLen + m_Public->GetSignatureLen () + 6);
845 keys.m_SigningPrivateKey.resize (verifier->GetPrivateKeyLen ());
846 htobe32buf (keys.m_OfflineSignature.data (), expires); // expires
847 htobe16buf (keys.m_OfflineSignature.data () + 4, type); // type
848 GenerateSigningKeyPair (type, keys.m_SigningPrivateKey.data (), keys.m_OfflineSignature.data () + 6); // public key
849 Sign (keys.m_OfflineSignature.data (), pubKeyLen + 6, keys.m_OfflineSignature.data () + 6 + pubKeyLen); // signature
850 // recreate signer
851 keys.m_Signer = nullptr;
852 keys.CreateSigner (type);
853 }
854 return keys;
855 }
856
857 Keys CreateRandomKeys ()
858 {

Callers

nothing calls this directly

Calls 6

htobe32bufFunction · 0.85
htobe16bufFunction · 0.85
CreateSignerMethod · 0.80
GetPublicKeyLenMethod · 0.45
GetPrivateKeyLenMethod · 0.45
GetSignatureLenMethod · 0.45

Tested by

no test coverage detected