GithubHelp home page GithubHelp logo

Comments (31)

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024 2

Cool. Now we know that android -> iOS works.
Then please create a new user and then create a public/private key from iOS. Then I can test it the way iOS -> android works 👍

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024 1

Sourcecode:
https://github.com/nextcloud/android/blob/71ed02deb709a60cdde5ed5485fe08167fcff19e/src/main/java/com/owncloud/android/utils/EncryptionUtils.java#L495-L495

And a test is found here: https://github.com/nextcloud/android/blob/2a7da670369069ba12d7e21ca49ebfcab39051d7/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java#L134-L134

It is rather long, but I wanted to use a real example and not "only" some random strings.

12 word mnemonic:

moreovertelevisionfactorytendencyindependenceinternationalintellectualimpressinterestvolunteer

privateKeyString:

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

encrypted:

CixqAgTSW9oxivbPUKFSb0HHsvWGX2QqqITAdt/riubUQVdAGsc7XhpeKkg52AUi3cjAbei+10QNEHTydF0jGp725AzoKJyi8L8x9bNeLhhBpd0tsGrOM8heVehs9WX6cWpF7oM7jLCBxD3k0mdHKflmUs8u8EXOCDhG18ltB+69JofpQ6LQK7CyqKWNbT5IB9NhPlhZAd9i/cNe1ygAPbva9HgMIz15ojoA9eT6qXZBFciNr2TvzqraUHHWVUrmCc9i2xGCyVHsX+XmNS4TgJ9CnM18bYto0eDvJwb3+Pbc3NUCSBxqS6DoKLno66DDjyzxRbE2MBHP5KAVrxcmN7QydaM4pG111O6Wx8P3vUqnkVNooF9d8e5QzruFZNTgbPR6/LlYEV6szlTiKLB8lG6GJKFPuYOsCknko/gPscQk7RGkmqa7527AvEBqKKkjxrCOzKoG83fuGB+iabGco9M3J9jHIyiq8rNO1DRPE1I5zS2FK44befqbqBgH2usrtAvJQJp7lKm3XEJIAPfNHnBPJuYa7T24KyZbi0dexytbF9bZF82Krnyr842OUpS2PtVVivxjC5XootfuGgKtjBmKIbteSnA/xB5QKhXuOiTisjPpgd2StIHaoccotl1mYNYyOiPr1KrzdSHgGpvHo0j5PUgLnrXoEtN/c2S8uFSwUnbNQw+l8CK0WBsWGOy0V/5Jp8LjoD+wSfR8lxiIo/9AbKGGFh6JRSKG0xijMQBPMJSgQVsYdvQHVVftw5A4oG8iG7L9lNaKseivT9hrC9YGKfeRpqfwkhIsHn+/VTHhbtEWfD9BSSuKwovpM5ovVPWxM7M7lFwAUPjxNSghAVnNLDTXORobo5KpRv80ULA+wjr12wJep8DbM2Q27/FVgCGoKy+klPmVixW7XiGdVyW3TUzDQfGk86EutA+SeuatxbcmLdH//NCAnhAtc4Z4cfseswZJBl2R6zFYEzGRDQYrsNEbH4CvN6cplLgcNTfMYLq7mkLNU3HwYYSP3yJQuISQ4Yfa7Lu3kg8PaWl5ri4NpMSTJUjYg+aLMJHVgToIptF/bO6g8dVAhDsi6kK6iyPDhIn9o46QMPbmsens53FwXMJUlIOl+qGBxv70eBPqc0KMyoyBrCil3pf4exLPc1d4wkqtGWBWkz5LNahIl4oHJ0rkZ+4fTEnRAPtArchQT9H4l/3QPs9OHNyTq73Dy2/6fB/MeBsLkDEEiOlIVkj6quXtGWw/g7QtFkrtkLKTXJWBU9/ZK6XPrrbOfub5tVY9fcG0FAH//2EzNA0SWR4h24cnPnjSRDfuM0/DSV+Zv8fE9lGGDMRGV+lUDtd5b50kk2ieIwWq3eNyARAznRLgaw6P+XW6yNKwwVAihuJQZe8aikBA/MGDYzlKi+1QSco2tXuf+hGG7opIB7rRg3R4GI0HWNXPTpV+XJshojoZM4+s6mEDLQu7tOy0smT+nR7q8DHJHTmUvVh9DxhZeS7R2YCokmGqziaDqDGWiREAoncwhcCJKrBE7dkcgJIx7tB9U1HnR8kaTSHYafav/js6sKkhKKE/5U26DAvlsaot9h17zepAfhHgXILi2TH08N2PZEKgcrZ0btNwtjKmeBWoUzKp4v25U7smecJTQyRd65FVPJe3af+ZfBjhxO0lRsvyFd5nHZULqGHPbKdw0Mbg+d5Cop7PQX1MSwy0wlOGWkXXtSuwLQ4zO3OM+WnGB7cuvwUOsZYlhjuDfWRzAHp79Ct0bIsMa7e2l23kx+iPaQyofZXwP3C4C/BVr2j3xzUxMPFVXPdxMwiSTOV1jxDSfSfog1tMkeDYK7mYEJWhn6WGBehOqm91CLUm6/TN5IyFO7Gbo88UM996Sl36IXWevWixTSe3LzDUfx9O91FnGx2kteELyBMot7jVyyZz10htpiDNRL7cXqdY73dlHjXnd3pX2mW1H41wqRYhZ+9YpcfOVGjdDzJka7P/J5sMxZyLDeJchy6vyeWRkqDSH3Fd4h8bnn+0xmaGO11xwkcfJ6FAtof6VVCSSQxE/kEXNr3ui+8ycrfWnZyaJvmJ2GpDPeoLUqs7wCGHPR+zfhJw+1vuCUMq8IrwkV4mlwvxwlPZb85+TBvKq2soLPWkeqHlb5zXne16EP+7I5YP3hXngJc6vSMxlEJrxvNyIijdYImT50m9B9X2os9WR+Fogghw/bFE9BKuOmN7hR8njMJL9e9xSGkVT7tbYfnBC4ZlIGlRrbp0w20vtf939qkBmYMdkyfg5Mh7eHQLFyNY98+l+dtCm5rhx7VO9W+lwz8cIlO5J7OnYtVh1RZvmuweVUQ/pXkDgw/+ZhJKAjK1FfzAegoIAhpfgVtXiaothUdKzZK5IXs+Ga63xw0QIXSpcLHrhkqgW8VMI6UDSwyK4+I7gHzp1U6BsTJwIbdsf76Pf3I3q8GkSF7SVEsG6rdr5lu84+n5wfTtYjjKAxJkr33v42ru1djtNjY+Ed/X5v41KhcmZ3MhwbOyXQeE77kfptDDUker4uxvFFRq5iKbSuPjRceVsET+xQsDIXl9C/1G9YqS3uP433q6WmDAmsPBl7w7OGyU3lgcgLWKj7BhZTADTT5i/vSxz9bt/6EULHhGm0E77s7JNvQgF4tlLqudSeo8pFa0S6pZ32y0cJ9Px85mWlx/k31SPNIU8nIU93YWGKrSFL0xV83NjnCG5roZpPxOE4+Shuu4674rtpEhudOBcnOr8TANPfWBD1/UICP7Lf0OhUUmdm7ERt50KWbT5W4hiqNbJAGK9cprGEGv7nsdvpa5f0OO9iBK76yt5VeX12vij2sUTFbtV1G4QLdYV++CugMlby4pfGaZllFepJRCceVN/OqJ9UNZNgu3pOjk8yaRalcaFdu6u6YFJ+oTUpYjvSLBulBj88giZG0pphfdQJfov6acCwgFnGU9otuHpkxo95+ZHuOvwY5RBdCZ7QNiCr3QW0k0cg5h4z4MXgIn5FO+gCluIOJS/aHXhF4jwXKwEU0Fmc6NeRvUcvt8/VZPSryvBkMRROR1r30/ibVSEkqsiEB6dqUcch4NUX5xyB6rHjB+ZvCFogkBTvk3/b+SvK7YHCzGNo5KVTitS79PAlRdXwg4ZgV3E1i/5ggNIt3boa1HHFhXc1ve+fRaf5oHKA0FZcQexPeDBdp63zbuiIM3FMKZf2ecjXsdaYwYKZDafpxAoHok8jxmsM+SWZC88HbnujEBELWR+qzwEVqgmsZxVbgWy8gDwicPWsrHvdhnEg2QVtJU+xhSxbdBaWCVG0aZZYzfUrgTs3/LvvFzopNYWBHWnW3XiHK77/B3WoMauUt7pp5lstFq5qElwuOaH9MRBAnskLkExU7OuaFHrIjFSJG21qXhJHhvwVrWQSfW8LWgu2jzdrutqZ1XhFkMx3oIL94XNUYR1Bx9ShUipiKrXnZUnonup0RfVZq/y69tybAR3JedAmup3uvlDOVSQKkT1mRRls1Tu/5zRChNDpeGDQSHk3fmq+Fx3ugnTnKgCNa3EqG59B/5+mVZ9DN7cAXGxlxCLGUDaWzo54U850K8prGAcXNjJzn5WzqOIV924fTq1cfof9ePhaQXhfr8JhQg9Ohg/aRjtyFNuVH0YANRGESoTqPipoIACkvNMGpbZMIWbhwnB5utb/UCZOkWjTKJE0LSjm+TdrstKqBYXVIhnCKGzglcNajiEuISL+pAdXpYAL5B7EBVrrBG6URIqCis+I/eaPoEUaxuLPdYgu9PX6h6YGKVo64XXYQ1HiVtCV/wWD089iiQlz/SheGO2kYTQfJzVTvkvYnG72X70wiasPyFdnqKvaVODnQtN/lqcvFGfdimfjwITw0mmcRM54AL8o7IEJ4KGNvuVcYX9/5SK4USNy+jLaQ5mWSCT4qRWYNUYoiojxBLfYaJt6tcTaah/UB0MQBLwa3SKbbnEkipoUBgmyk1YVIkgVK73WDd1USTfGAFey77owCC86h1OalI51XwoCaOELZtYvzmJ8B2dxi/NqB5VYhUo82JTjUqpKj96CdobcPww8nrYrntgzcqPpyOBy6nkYmzT0mq/gfClf4iBKlDcni/MyTJsWzhflbYxRBYl2KVdW0YyluXNNZEvjoGxw9gn2X6hjfqHNbuztgzt6JLFJEIuYTv/zw4ngUvPJtJxf6pc+ifdKmet/P7Isw03ODk3BdlSRgruBGTl30ovvkQiit/n75YxD/s/YBSML2ZvR5uj49JV8nRrLOZ24nLTpGzUFpo2DZuzxZqGiA6KneS+q8eOdyUjk9h1/fwhdKhSx7kdmB6J/cxGdDIgccuMBM5904lxG2WHNupzDek93gMMkAMrTcHA4jdsWitAuwVL1IZCZwtmTYZzAHZi6Aj5DJ/G518yODLhs/AP6Cwut6Vd91PsOmZa4xtr19DjPIWLg0qoTtMbQq3xBn6/05Y4bMN6uGjj+L0dWC+pcjWy4IBQW5Jk2mXLvGLRx4VuspLoJhxu9EGyfDly8geGA3wQrVki2rb57udbCJH2cZF6DAw7nSB7kWje3NKc/GRpitIfiBewwU3MtABU96wKKIDM9jWD6riwniKfKXv+cr6C+2GvbwSqG/sYLch02sKjNiaZY+AsyqjGlEYTRU2ynluMxxiphJ9FJdqafZq0J74fQiWtWQd/nEOhyon8f9nq6aBIU6vgm6NhJlL5vy/in4Loc+9aunUV4MZyJ757YLGC1I3cpm0WLugL0rcZVTPhMxkB08TgntZy1RXBA0z6q0sJPCEX8XWCdzjfTdlW19fX5Y7sP39faoWOUhzU2r1jO+4sk3Adxm9gZV37tyMjXC+1CSxjQHyC44mjXYFthr6lf4hGHOy/na1hKlU2CTNKsH0WLUWZNzwxGiKn7ngTMy8uYn+XNwi6qcOlJ4+hASnz584+JD5tuBU7LSvx24s1HOY+1zAWOp6otdy19db30umysQv+IaFLbfEObKQAV8Gxd3jS+1Fbtr26ogbO0u+Q8RRgYLzmEGlDCdLT3CrxHAZNrhb/UPsLL+3q6xsehcfn6ybWsX25oClwRiLBucmdJ2QmLNErx236etAhcSXpETWnyf9iQas/1s6SgoV2Rpv+oYo2PktCwYvE457FfwCPIIkjgKA4YbPDlx+bwDtkSu9PXi2ajxgQCmzh4b2BrEPejrNpU/C9+PFWcMsUzkE6OBg5j1aTK/cUv2d99DLzA4g33UGmejHJL8TKvzJ0Og6xPqa6VusDx41Jn1uStFo9+7viIf9YHM13PFsZmUJF99YfFhYk5KTo32MyfkSIHQsjkOx8EaqQF8WKt+ooxiXccM7FrybOzjLB/R+C/sUcsiK/g7LmcXL0KN/OAYDWtSWRWUoxRxfJw6baSjrD6k7l+h+mXRq6gHjv1Aw3pRuEbulRoY99RBLa1s0eHClSDfy8E5/rZdh1uZP7vcYBo49AlLwBaLPFl7W1ZzLKMqojRCv5+5G4YGjxI35PfW1daXy016sQFEr1QQg1XCVlumyR8VKuH5ULmM9bZiO8l4jbWi6OFgyEBxxslYscbFFxxU/VLYqpSXsv8rLloIf3REqkOVxqw+y4fAHSv5y4w6y/Vxnc7Ri1vqpIPXtaXnhZopRFXEGbHN5tbcF7IP3PN77Nm2Na5vhA/iLAA==fA==YaxI1X7vxEf3MRv0

from end_to_end_encryption.

jancborchardt avatar jancborchardt commented on June 23, 2024 1

@tobiasKaminsky @marinofaggiana the flow should/can be the same on iOS as it is on Android. :)

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024 1

I can change android side to store the private key as pem on the server:

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCugMtFFbJiSHFwY
RxdpVZFt+8kecJyG2a3kHRSEODG1hhIZsc31eyQVOc/nWa+mrPw1Lzq44hL+aj41x
...
Qmj9/Ed144JKrhNX/iXLk/Ec0nxRj1przUTPOsYtttmPapintcLe/CFhMPzX0rWsT
BIin0DKhyLMy3B1ImhUB0IVzj5A2LMDh+IRu7qj7prbKdYcVl+6/kdHj+20NlEw=
-----END PRIVATE KEY-----

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

Thanks !! @tobiasKaminsky !!

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

@tobiasKaminsky , first step :

PBKDF2WithHmacSHA1

salt = $4$YmBjm3hk$Qb74D5IUYwghUmzsMqeNFx5z0/8$
password = moreovertelevisionfactorytendencyindependenceinternationalintellectualimpressinterestvolunteer

secretKey output : NknhSReUhcuSY2u+pEIgLPl+h8Bhore3JPHPhbDVqFlYH8xJACwuKRKlmglp0Z9WMH2QJMyoFIYKbmVT4UAOVyud9+LMvfwvjNsTV5qzk2IfEWn1WdqvuNW4deDRAw440yrt49dqUQWR98we9HlxI16fGbRf/7cPneIxG3V7P2c32yqo4YIXdgO2xBx8QuVMnDeZWvdloVjqIf+xsDeFrAvi91ubYlnpBCnta1LyBI7Dxv2cUDTlmC0jz+Z+PPZAGATv6G471xcTLlPzxzhckLNm8Bt2s5+EBhRVvT1q2KVvIBrs/PpkLMxlIWjIS7j8QDqsYIg4708POqELPjeaoQ==

Confirm ?

This output is the key for AES/GCM/NoPadding , but IV ?

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024

Oh, yeah, I forgot this:
The IV is directly appended to the encryptedBytes with a delimiter (base64 encoded "|"). This has to be done as we have no other way to store IV.

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024

Encrypt:
https://github.com/nextcloud/android/blob/71ed02deb709a60cdde5ed5485fe08167fcff19e/src/main/java/com/owncloud/android/utils/EncryptionUtils.java#L513-L513

Decrypt:
https://github.com/nextcloud/android/blob/71ed02deb709a60cdde5ed5485fe08167fcff19e/src/main/java/com/owncloud/android/utils/EncryptionUtils.java#L534-L534

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

@tobiasKaminsky I have ended this, server response with 200.

Status :

  • PublicKey store on Server OK - 200

  • PrivateKey store on Server OK - 200

  • PublicKey get OK - 200 DATA

  • PrivateKey get OK - 200 DATA

and now ? for make test if is all correct ? before Metadata struct for directory/files encr ?

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024

If you create a new user and send me the 12 word mnenomic I can try to use it on android.
This way we can test if everything related to keys is working.

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

I have use your mnemonic : moreovertelevisionfactorytendencyindependenceinternationalintellectualimpressinterestvolunteer

User : nc

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

@tobiasKaminsky a question, when "Assume that no key pair exists on the server" the mnemonic is automatically create from client ( BIP39) and "displayed" to the user with the possibility to displayed next from password-touchID from keychain etc ?

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024

I present the mnemonic during inital setup within the app.
Maybe @jancborchardt has another idea how to do it on iOS?

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

@tobiasKaminsky where is in Android the function(s) for test key pair from server + mnemonic ?

Thanks

-- DONE --

New request @tobiasKaminsky, detail of :

-3- Get public system key from server to validate the signature of the users public key.

Thanks

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

@tobiasKaminsky on your Server is not possible create file/folder .... please check

Thanks a lot

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

@jancborchardt maybe yes ... maybe no 😄

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

@rullzer @tobiasKaminsky

Exists an issue from the encrypt aes_256_gcm from Android and OpenSSL (iOS) see code :

https://github.com/nextcloud/ios/blob/3c4917dc102c6a93ea464b676a96342be37f7af4/iOSClient/Security/NCEndToEndEncryption.m#L410

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

@rullzer @tobiasKaminsky

Decrypt now is OK arggggggggg --> decode64 for a PEM !

-1- Why Android ecode64 a privateKey in pem format ? this is needless
-2- Why Key has removed the -----BEGIN PRIVATE KEY----- and \n after 65 chars ?? this is not a PEM format.

from end_to_end_encryption.

rullzer avatar rullzer commented on June 23, 2024

It is not PEM. It base64 DER.

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

publicKey in PEM and privateKey in DER ? for me is better ONLY pem no DER

from end_to_end_encryption.

rullzer avatar rullzer commented on June 23, 2024

@LukasReschke @tobiasKaminsky I have no preference here. And the spec is incomplete. But sticking to 1 format seems indeed best.

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

The decryptAsymmetricData required PEM format :

RSA *rsa = PEM_read_bio_RSAPrivateKey(bio, NULL, 0, NULL);

as encryptAsymmetricString required publicKey in PEM format :

unsigned char *pKey = (unsigned char *)[publicKey UTF8String];

// Extract real publicKey
BIO *bio = BIO_new_mem_buf(pKey, -1);

from end_to_end_encryption.

rullzer avatar rullzer commented on June 23, 2024

Well this is just the implementation you use, there is also a bunch of other functions that take other formats. The openssl EVP allows keys in almost any format. (See d2i_PrivateKey_bio etc).

Anyway, as I said. I don't have a preference but lets wait for the others involved to comment as well.

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

oh yes yes but for me only 1 format :-)

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

Thanks Tobi, when done can you recreate on server (marino user) the new certificate ?

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024

Done, new passphrase is: domainponyremindtenfalltoiletdollsuncleversharevehiclesoldier
In Folder "1" are 3 new encrypted files for testing.

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

thx

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

ok @tobiasKaminsky done but why encode base64 the privateKey ?

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024

https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them

.PEM = The PEM extension is used for different types of X.509v3 files which contain ASCII (Base64) armored data prefixed with a “—– BEGIN …” line.

https://github.com/nextcloud/android/blob/8d4fe1db193873c0fe8182139ab3d43afb8ee44d/src/main/java/com/owncloud/android/utils/EncryptionUtils.java#L551-L551

privateKey.getEncoded() is a byte array (byte[]), so this cannot be directly printed as pem.
But now it should be consistent to PEM definition, or?

from end_to_end_encryption.

marinofaggiana avatar marinofaggiana commented on June 23, 2024

PEM format is base64, why base64 again ? convert you array byte in normal string UTF8

from end_to_end_encryption.

tobiasKaminsky avatar tobiasKaminsky commented on June 23, 2024

Simply transforming a byte[] to string results in:

0�������0� *�H������������0

I think I am now according to PEM format?
nextcloud/android:src/main/java/com/owncloud/android/utils/EncryptionUtils.java@8d4fe1d#L551-L551

  • prefix with "----BEGIN"
  • encode byte[] to base64
  • suffix with "---END"

@schiessle @rullzer

from end_to_end_encryption.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.