public static void GenerateKey(ECKeyHandle key) { Debug.Assert(!key.IsInvalid, $"Accessed an invalid ECKeyHandle! <{nameof(key)}>"); if (EC_KEY_generate_key(key) == 0) { throw new OpenSslNativeException(); } }
public static void SetGroup(ECKeyHandle key, ECGroupHandle group) { Debug.Assert(!key.IsInvalid, $"Accessed an invalid ECKeyHandle! <{nameof(key)}>"); Debug.Assert(!key.IsInvalid, $"Accessed an invalid ECGroupHandle! <{nameof(group)}>"); if (EC_KEY_set_group(key, group) == 0) { throw new OpenSslNativeException(); } }
public static void SetPrivateKey(ECKeyHandle key, BigNumberHandle privateKey) { Debug.Assert(!key.IsInvalid, $"Accessed an invalid ECKeyHandle! <{nameof(key)}>"); Debug.Assert(!key.IsInvalid, $"Accessed an invalid BigNumberHandle! <{nameof(privateKey)}>"); if (EC_KEY_set_private_key(key, privateKey) == 0) { throw new OpenSslNativeException(); } }
/// <summary> /// Allocates a new OpenSSL <c>EC_KEY</c> structure and /// returns a handle to it. /// /// The returned handle is guaranteed to point to be valid, /// i.e., point to a valid <c>EC_KEY</c> structure. /// </summary> /// <returns> /// A valid <see cref="ECPointHandle" /> pointing to a freshly allocated /// <c>EC_KEY</c> structure. /// </returns> public static ECKeyHandle Create() { var key = new ECKeyHandle(EC_KEY_new(), ownsHandle: true); if (key.IsInvalid) { throw new OpenSslNativeException(); } return(key); }
public static ECPointHandle GetPublicKey(ECKeyHandle key) { Debug.Assert(!key.IsInvalid, $"Accessed an invalid ECKeyHandle! <{nameof(key)}>"); return(EC_KEY_get0_public_key(key)); }
public static BigNumberHandle GetPrivateKey(ECKeyHandle key) { Debug.Assert(!key.IsInvalid, $"Accessed an invalid ECKeyHandle! <{nameof(key)}>"); return(EC_KEY_get0_private_key(key)); }
private extern static int EC_KEY_generate_key(ECKeyHandle key);
private extern static ECPointHandle EC_KEY_get0_public_key(ECKeyHandle key);
private extern static BigNumberHandle EC_KEY_get0_private_key(ECKeyHandle key);
private extern static int EC_KEY_set_group(ECKeyHandle key, ECGroupHandle group);
private extern static int EC_KEY_set_private_key(ECKeyHandle key, BigNumberHandle prv);