WEBVTT

00:00.000 --> 00:11.000
Hi, my name is Ronko, and I'm here to give you a rolling tool of Ag plugin S.E.

00:11.000 --> 00:13.000
So, strapping.

00:13.000 --> 00:20.000
As an anyplace, Ag plugin S.E. is a plugin for Ag, which is a simple modern and secure file encryption tool.

00:20.000 --> 00:29.000
But the plugin does is it protects the secrets that are used by Ag using the secure enclave in your Apple device.

00:30.000 --> 00:36.000
The plugin is actually a single binary, which you start by invoking to create a key pair.

00:36.000 --> 00:42.000
The private key you keep to yourself, and the short public key you can send to others.

00:42.000 --> 00:51.000
Using this short public key, you can now encrypt any file on any device, even when you completely different OS.

00:52.000 --> 01:00.000
To decrypt the files, you need the private key, and the secure enclave with which this private key was created.

01:00.000 --> 01:11.000
Now, this particular key was actually configured to require touch ID to operate, so after touching my touch sensor, the file is now decrypted.

01:12.000 --> 01:25.000
There's a whole ecosystem of applications that use Ag, for example, you can use Ag as a back end of a password manager, and use this plugin to conveniently access your passwords with just a touch.

01:25.000 --> 01:27.000
Now let's have a look at the word.

01:27.000 --> 01:36.000
All the cryptographic operations used by this plugin are provided by Apple Crypto Kit.

01:36.000 --> 01:40.000
Apple Crypto Kit is switched on, so that's why this plugin is also implemented entirely in Swift.

01:40.000 --> 01:44.000
Apple Crypto Kit is also the only dependency that this plugin has.

01:44.000 --> 01:58.000
Now, quickly, it itself is not a cross platform, but Swift Crypto is an open source and open replacement for cryptocurrency that is supported on both Linux and Windows.

01:59.000 --> 02:07.000
Swift Crypto doesn't support the Apple only secure enclave APIs, but it does support all the other preventives that are necessary to encrypt files.

02:07.000 --> 02:13.000
And that's actually all you need on these other operating systems.

02:13.000 --> 02:23.000
The build of the plugin is also a cross platform, all you need is the Swift twitching, so now need for Xcode, which was a problem up until today.

02:23.000 --> 02:27.000
All you have to do is run Swift build on any platform and you have the plugin built.

02:28.000 --> 02:34.000
Unfortunately, if, like me, you use our pandemics, there are some complications.

02:34.000 --> 02:44.000
The Swift twitching uses G-lipsy, so that means you cannot simply call the compiler on a user-based system like our pandemics.

02:44.000 --> 02:57.000
And what goes to describe the couple of ways of getting a Swift apps to run on our pandemics, the latest easiest way is to use a cross compilation to use Swift on macOS to do cross compiling and create a new platform.

02:57.000 --> 03:06.000
Compiling and create a static Linux binary that works on any Linux version, even our pandemics.

03:06.000 --> 03:16.000
Combined with a custom script that I wrote on the GitHub, with these builders of this plugin, create an installed our pandemics package.

03:16.000 --> 03:26.000
The downside of this approach is that the binary is the static Linux binary that are generated are still much bigger than what they actually could be.

03:26.000 --> 03:35.000
I hope that this is improved in the future, or even better that Swift is supported on user-based Linux versions.

03:35.000 --> 03:45.000
The plugin itself is pretty well tested, and there are integration tests, but most of the majority of the code is covered using unit tests.

03:45.000 --> 03:50.000
Of course, you can simply run the tests on any platform that is in Swift test.

03:50.000 --> 03:59.000
Swift test also has flags to collect coverage information, but without X codes, how you display this coverage information is up to you.

03:59.000 --> 04:11.000
I wrote a script in Swift that creates a summary of all this coverage data of your tests, and also generates browser profiles that you can inspect your code from within your web browser.

04:11.000 --> 04:19.000
The script also generates a batch at put on your readme, your readme file.

04:19.000 --> 04:35.000
So, I use them as my code editor, obviously, and to be able to see the coverage information in my editor, I have a support for Swift to deliver in coverage applied in.

04:35.000 --> 04:46.000
Together with the test, this allows you to do some efficient tests within development.

04:47.000 --> 04:52.000
So, that's it. That was my quick experience of implementing a Swift code platform.

04:52.000 --> 05:01.000
Swift crypto app. You can read some letters at the bottom of the post, and be sure to check out all the other open source projects that I mentioned. Thank you.

