Showing posts with label opensource. Show all posts
Showing posts with label opensource. Show all posts

Monday, December 21, 2009

Installing X.509 certificates on Nokia S60 3rd edition device

Sometimes you need to install your own X.509 certificate on the phone in order to authorize some web site, Exchange server, or installed software, or in general to use TLS (SSL) connection. According to the guide, provided on Nokia forums – it a piece of cake! However, sometimes problems may arise, and you start wondering about what can go wrong. The next thing you do is try to find the answer somewhere on the Internet. Well, you'll get a whole bunch of different posts about positive or negative experience, you'll find different solutions that are sometimes weird, sometimes don't work, and sometimes work but not on your phone. In general, most solutions are correct, you just need to pay attention to one nobody-ever-mentioned thing.

At first, a small amount of theory, so you'll know what I am talking about. X.509 certificate files have several extensions. Here is the description from Wikipedia for the most common:

  • .pem - Base64 encoded DER certificate, enclosed between "-----BEGIN CERTIFICATE-----" and "-----END CERTIFICATE-----"
  • .cer, .crt, .der - usually in binary DER form, but Base64-encoded certificates are common too
  • .p12 - PKCS#12, may contain certificate(s) (public) and private keys (password protected)
  • .pfx - PFX, predecessor of PKCS#12 (but most of the time the actual data is PKCS#12, only the extension is kept)

If you are not into technical very much, you just need to know that .pem files are text files. So you can open them in any text editor (like GEdit or Notepad) and see bunch of letters and numbers after the first line, which says “-----BEGIN CERTIFICATE-----”. Those letters and numbers is actually a specially encoded binary certificate. Now, the files with extensions .cer, .crt, .der are usually (but not always!) binary files. That means that you cannot view their contents with usual text editor. But pay attention to what is being said at the end for this kind of files: “... but Base64-encoded certificates are common too”! That means, that you can have a certificate file with, for example, .cer extension, but it will be a text file actually encoded as .pem file! And, what's the difference, you ask, why should I care?

Well, here we came to the most interesting part. Nokia phones on S60 3rd edition platform cannot import .pem certificates! They cannot import certificates that are represented as text files. You need a binary DER encoded file. And what's really exciting – you can have a .cer, .crt, or even .der file, but it will be a text file that was renamed from .pem! Well, your computer web browser will cope with it just fine. You computer mailing program will cope with it just fine, too. But not your Nokia phone!

If you are still wondering on “how do I know what kind of certificate file I have?”, then try to do a simple thing. Open the file with any text editor and see: if it opens correctly and has the first line as “-----BEGIN CERTIFICATE-----”, then this is a text .pem file. If it doesn't open correctly or has something really crazy inside – then it is probably a binary .der file.

If you have a binary certificate file, then just transfer it to the phone and open with phone's File Manager. It will ask you to import the certificate. Just like the mentioned tutorial says. What if you have a text certificate file? Then you should convert it to binary representation. There is an open source and free program that can do it for you, called OpenSSL. A compiled version of OpenSSL for Windows can be found here. Ubuntu users just type in terminal: sudo apt-get install openssl.

So, you've got the program! Next thing you do is type in terminal the following command:

openssl x509 -outform der -in certificate.pem -out certificate.der

In place of 'certificate.pem' you should put your text certificate file (it can have extensions .pem, .cer, .crt, .der but it should be text file) and in place of 'certificate.der' you just put any name you want. After executing this command (pressing Enter in terminal after typing it there) you should get in your directory a file named 'certificate.der' (or whatever you've put there), which will be a binary DER encoded certificate file. After that you do the same thing that I wrote before – transfer file to the phone and open it with File Manager. And you're done!

Now, lets mention the .p12 files. As I said before that are the binary files containing public certificate and password-protected private key. According to the already beloved Nokia guide this kind of files should be supported for installing on the phone. Well, not necessarily. In fact, unfortunately my Nokia N73 phone with the latest firmware does not import .p12 certificate files. I don't know why. Nokia support does not know either. I didn't dig it deeper into the problem, because I actually didn't need to install the certificate with private key – I probably will not decrypt any content with my phone that was signed or encrypted with public certificate (that is why you actually need a private key). But if you still need to import just the certificate from the .p12 file, you need to extract it first. The following command can be used:

openssl pkcs12 -in keyStore.p12 -out certificate.pem -nodes -nokeys

In place of 'keyStore.p12' you put the name of your .p12 file and in place of 'certificate.pem' you put any name. After executing this command you will get a text certificate file. Please, pay attention – it will be a text certificate file. You will need to convert it to binary format with the command mentioned before.

Well, that's about it! Now you should have no problems with installing your own X.509 certificate files on the Nokia phone. I didn't test the other versions of Symbian OS for the support of text certificate files, because I do not have many Nokia phones, except my own N73 :) But I think that S60 4th and 5th editions do not support then either.

Read More...

Monday, November 9, 2009

Видео лекции. Работающая реализация

Преподавая в университете на кафедре Информационных и компьютерных систем у меня давно возникала идея создания видео материалов для помощи студентам. Воплощал я идею по-разному. Сначала я просто записывал экран моего компьютера, где показывал как делать ту или иную лабораторную работу. После добавил пояснения к видео и начал не только туториалы по лабораторным делать, а и небольшие теоретические описания. Любил баловаться, накладывая музыкальное сопровождение к таким видео. Такие видео пользовались (а может и до сих пор пользуются) популярностью у студентов, так как они могли повторять шаги за видео, слушать пояснения и сразу выполнить работу. Получалось практически виртуальное занятие.

Какие же инструменты я использовал для этого?

Сначала я пользовался операционной системой Windows и программой SnagIt. Неплохая программка, много чего умеет. Но требовала дополнительной обработки видео, причем много. Она генерировала ооочень большой видео файл. Как я понял, она записывала полные кадры, что естественно и сказывалось на размере выходного файла. Не знаю, может сейчас она уже получше работает :) К тому же программа притормаживала тогда еще на моей машине, так что вскоре я разочаровался в ней.

Дальше я нашел и попробовал такую программу, как Jing. Что мне понравилось, так это то, что она сразу генерировала swf-файл, который я потом без проблем мог вставить на веб-страницу и все. Плеер был, как бы, интегрирован в тот файл. Все замечательно, если бы не некоторые ограничения. Бесплатная версия программы позволяла записывать только 5 минут видео. К тому же редактирование видео исключалось, так как для этого необходимо было парсить swf-файл, вытягивать оттуда видео, потом как-то его назад туда загонять. В общем, несколько видео туториалов я сделал, но на этом все закончилось.

Потом я как-то, сам того не замечая :), перешел на использование операционной системы Ubuntu. Как только я начал активно использовать различные OpenSource программы, я поискал и нашел замечательную программу Kdenlive, которая для записи рабочего стола использовала утилиту recordmydesktop (которая устанавливается вместе с kdenlive). Скорость работы просто супер. Ни капельки не тормозила и не мешала работать основным программам. Я даже пару раз забывал, что у меня включена съемка экрана :) Позволяет писать как полные кадры, так и только фиксировать изменения, благодаря чему размер видео файла получается достаточно небольшим. Кроме того программа содержит все необходимые инструменты для редактирования видео и очень богатый набор различных аудио и видео эффектов. Так что на данный момент - только плюсы!

Туториалы туториалами, но мне захотелось большего!

Я подумал: а почему бы не записывать собственные лекции? У ребят из MIT на YouTube целый образовательный канал свой. Причем не только у них, а и у многих других университетов. Чем мы хуже? :) Ведь можно записывать не только звук, а и видео, да еще и добавлять в видео сразу слайды лекции. Учитывая, что доску и мел я практически не использовал, так как всегда был проектор и слайды, то на видео можно было только снимать собственно меня, а потом еще наложить картинки слайдов и все.
Реализовать эту идею мне удалось достаточно просто с минимальными затратами.

Итак, что же я использовал.
  • Железо: использовался мой собственный ноутбук со встроенной веб-камерой. Да, всего 1.3 мега-пикселя, разрешение 640х480, но поверьте мне - для видео лекции на YouTube этого достаточно. Микрофон я брал внешний, так как встроенный был уж очень слаб. Внешний был тоже не супер-пупер, обычный компьютерный микрофон примерно за $7.
  • Как вы уже можете догадаться, все операции, включая съемку и обработку видео, я выполнял в операционной системе Ubuntu.
  • Софт 1: Съемку я делал простенькой программкой Cheese Webcam Booth. Наверное, проще этой программы ничего и не найдешь. Ну а больше мне и не надо было. Она снимала, и я получал видео файл со звуком :)
  • Софт 2: Полная обработка видео выполнялась в уже упомянутой Kdenlivе. Я вырезал ненужные фрагменты из видео, накладывал картинки слайдов лекций, добавлял различные эффекты, и (!) сразу сохранял видео в формате, наиболее приемлемом для YouTube (один из профайлов экспорта в программе). 
  • Софт 3: Обработка звука производилась в программе Audacity. Дешевенький микрофончик давал очень низкое качество звука. Основная проблема - это шумы. Но благодаря это программе, я удалял практически все шумы, увеличивал уровень сигнала, и подправлял эквалайзером звук. Несложные махинации - и на выходе я получаю приемлемый звук (не супер-пупер, но слушается отлично) в отдельном mp3-файле.
  • Софт 4: Склеивание звука с видео и разрезание видео на части для  YouTube (туда можно загружать файлы не более 10 минут длительностью). Эти две операции выполнялись в программе Avidemux. Это тоже очень интересная и богатая функционалом программа. Но в данном случае никакой дополнительно обработки видео и аудио мне не нужно было. Эта программа позволяет двумя щелчками мышки заменить основной аудио-файл для видео, а потом сохранить видео по частям.
Стоит отметить затраты такого решения для обработки лекции длительностью в 80 минут:
  • Стоимость софта - 0.0 любой валюты. OpenSource тут явно рулит.
  • Стоимость железа - $7 за внешний микрофон. Ноутбук давайте считать не будем, так как он покупался совсем для других целей, а не для записи видео лекций.
  • Время на обработку - примерно 2 часа на редактирование видео и звука и еще около 1 часа на все операции сохранения. Итого примерно 3 часа.
  • Время на закачку в YouTube - не будем хвастаться скоростью нашего интернета (или наоборот жаловаться на скорость) :)
Лицезреть результат видео лекций по курсу ТППС вы можете, например, на моем канале YouTube, ну или список всех лекций вместе с презентациями на блоге сайта кафедры.

Скажу еще, что в YouTube можно создавать плейлисты. Вы загружаете туда несколько видео, потом добавляете их все в один плейлист, и уже встраиваете себе на страницу этот плейлист. Когда пользователь смотрит видео, то они для него автоматически переключаются сами. :)


P. S. Один из студентов прислал мне ссылку на пост Видео-трансляция лекций. Реализация. Человек, написавший тот пост, задался вопросом, как бы ему реализовать запись и потом трансляцию лекций. На момент написания этого поста мной, я так понял, что он еще не решил, как же он это будет делать.

Очень понравилось читать комментарии, где многие предлагали удивительные по своей стоимости красоте решения. Много кто умничал высказывал авторитетно про необходимое качество звука и видео. Конечно, при наличии денег, можно и камеру хорошую взять, и радио микрофон повесить на лектора, и компьютер мощный для обработки видео, и профессионала для настройки всего этого и редактирования. Все это можно, но боюсь, что пока невозможно в нашей стране.

Но если есть желание, то все можно реализовать, используя, так сказать, подручные средства. Это во-первых дешево, а во-вторых работает. Доказано занусси мной :)

Read More...