/// <summary> /// Calls PEM_write_bio_RSAPrivateKey() /// </summary> /// <param name="bio"></param> /// <param name="enc"></param> /// <param name="passwd"></param> /// <param name="arg"></param> public void WritePrivateKey(BIO bio, Cipher enc, PasswordHandler passwd, object arg) { PasswordThunk thunk = new PasswordThunk(passwd, arg); Native.ExpectSuccess(Native.PEM_write_bio_RSAPrivateKey( bio.Handle, this.ptr, enc == null ? IntPtr.Zero : enc.Handle, null, 0, thunk.Callback, IntPtr.Zero)); }
/// <summary> /// Calls PEM_write_bio_PKCS8PrivateKey /// </summary> /// <param name="bp"></param> /// <param name="cipher"></param> /// <param name="handler"></param> /// <param name="arg"></param> public void WritePrivateKey(BIO bp, Cipher cipher, PasswordHandler handler, object arg) { var thunk = new PasswordThunk(handler, null); Native.ExpectSuccess(Native.PEM_write_bio_PKCS8PrivateKey(bp.Handle, ptr, cipher.Handle, IntPtr.Zero, 0, thunk.Callback, IntPtr.Zero)); }
/// <summary> /// Calls PEM_read_bio_RSAPrivateKey() /// </summary> /// <param name="bio"></param> /// <param name="callback"></param> /// <param name="arg"></param> /// <returns></returns> public static RSA FromPrivateKey(BIO bio, PasswordHandler callback, object arg) { PasswordThunk thunk = new PasswordThunk(callback, arg); IntPtr ptr = Native.PEM_read_bio_RSAPrivateKey(bio.Handle, IntPtr.Zero, thunk.Callback, IntPtr.Zero); return new RSA(Native.ExpectNonNull(ptr), true); }
/// <summary> /// Calls PEM_read_bio_PrivateKey() /// </summary> /// <param name="bio"></param> /// <param name="handler"></param> /// <param name="arg"></param> /// <returns></returns> public static CryptoKey FromPrivateKey(BIO bio, PasswordHandler handler, object arg) { var thunk = new PasswordThunk(handler, arg); var ptr = Native.ExpectNonNull(Native.PEM_read_bio_PrivateKey( bio.Handle, IntPtr.Zero, thunk.Callback, IntPtr.Zero )); return new CryptoKey(ptr, true); }