Wanted men held in Hanover operation -- police
The police say two wanted men are among four persons who were apprehended during a special operation in Green Island, Hanover yesterday.
A 9mm pistol with three rounds of ammunition were also seized during the six-hour operation, which began at 4:30a.m.
The names of the wanted men were not released.
The police say one was wanted for grievous sexual assault but gave no details about the offence for which the other man was being sought.
According to the police Corporate Communications Unit (CCU), one of the wanted men was apprehended, along with another man, after a Taurus 9mm pistol was found “in their possession” during a search of premises.
The other wanted man was taken into custody in the community of Dias, CCU disclosed.
The police say a fourth man was apprehended for breaches of the so-called lottery scam law after he was found in possession of identity information of persons living overseas.


--- title: Search layout: component contributors: - name: Lucas Almeida github: lalmeid2 - name: Mondo Yamaguchi github: myamagu1 ---
Search components are constantly present in computational systems. Generally providing an interface for text-based inputs, their main purpose is to help users finding files, programs and other resources in an easier way.
Search components have their style changed from one system to another, but, in a general way, its main idea remains the same. As we can see in the images below, the search bars are basically composed by a space where users can enter a text-based input and a button they can click to initiate the search:
Search components allow users to quickly find a value in a large collection and also (depending on the search engine) create a filter to facilitate the search and make it more precise.
Basically, search components receive an input (the text-based input mentioned before), the user presses the search button (generally identified by the picture of a magnifying glass or by the word "search") and then, the results of the research are shown.
As search boxes are composed by a text field and a button, the most relevant search events areenterText
,clear
andclick
. Secondary events includedragAndDropText
.
State Diagram extracted from https://users.cs.jmu.edu/bernstdh/Web/CS345/h3/index.php
Example extracted from http://thiagonasc.com/page/2
Search has variations in its behavior. Despite their very similar appearances, their slight behavioral distictions create a big difference in efficiency.
An address bar and a search box
A find bar
A system-wide search box & a system-wide search box
The usability metrics in relation to Search.
All the search components should help improve user performance (efficiency). For instance, users invoke a find bar to save time. Therefore, if a search requires multiple clicks or is not instantly recognizable, then its design cannot be considered efficient.
What makes a search a "good" search?
This is where platform-specific sections go. The systems presented below are the OS X from Apple and Windows RT 8.1 from Microsoft.
A search bar provides an interface for text-based searches with a text box and buttons such as search and cancel. A search bar accepts text from users which can be used as input for a search.
Example of the Search Bar
According to the Apple's Guidelines, a search bar can display optional elements, such as these:
Placeholder text: The text showed in the element should state the function of the control (for example, 'Search' as shown above) or remind users in what context they are searching (for example, 'Google') so they can execute their search in a more accurate way.
The Bookmarks button: This button can provide a shortcut to information users want to easily find again. For example, the Bookmarks button in the Maps search mode gives access to bookmarked locations, recent searches, and contacts.
Example of the Bookmark button
The Clear button: Most search bars include a Clear button which allows users to clear the contents in the text space in a single step. The button shows up when the user enters an input and hides when there is no text in the text field.
Example of the Clear button
The results list icon: This icon indicates the presence of results from a search done by the user. When users tap the results list icon, an application can display the results of their most recent search.
Example of the results list icon
A prompt: A descriptive title (prompt) can be placed above the search bar. A prompt is a short, complete sentence that provides an introduction or an specific information for the search bar.
Example of the prompt feature
Spotlight is a resource provided by Apple that helps users quickly find anything on MacBook, including documents, emails, apps, songs, contacts, and more. Spotlight also provides suggestions (Spotlight Suggestions) from various sources (Wikipedia, Bing, Maps, news, and iTunes) so the user can have a complete set of information without leaving the app. Search results are composed by rich and interactive previews so the user can play song previews, get directions, send email, make phone calls, and more, directly from the results.Spotlight initial screen
The Spotlight menubar item is located near the upper-right corner of the screen, next to the Notification Center icon while its window appears in the upper-middle of the screen.Localization of the menubar item and the Notification Center
In Yosemite, Spotlight’s search results may show up in two different ways: immediate and detailed. As you begin to type, the word will be automatically completed according to what Spotlight guesses you are searching for. As an example, when you begin typing the word keynote, the application will complete the word in light-gray characters; to launch the application just press 'Enter'.Example of the immediate search result
The detailed way shows up right after the immediate one and it is on this mode that Spotlight shows the matches found in the system (including documents, emails, apps, songs, contacts, and more).Example of the detailed search result
It is also possible to have a more complete description of the items showed by Spotlight. Selecting one of the options on the left side, the right side of the application will show the item in detail.Example of an item showed in detail
Apple's website offers a tutorial to narrow down search results. When searching in Spotlight or the Finder, it is possible to add criteria to a basic search, perform Boolean queries, and search items’ metadata. This information can be found in https://support.apple.com/kb/PH18758?locale=pt_BR&viewlocale=en_US. The website also provides a step-by-step on how to use Spotlight: https://support.apple.com/kb/PH18828?locale=pt_BR&viewlocale=en_US
Some variants for searching in OS X Yosemite are: the search field in the web browser (in this case, Safari) and the search field inside text documents. Both follow the same characteristics mentioned above. For the web browser:Search bar in a web browser (Safari)
The idea of showing results from various sources (from Spotlight)
By approaching the arrow, the search field completes the URL (the same idea from Spotlight)
For the search field inside documents:Search bar inside the application for reading text documents
Results of the search
As said before, the usability metrics are essential for search because there are users that deal with this feature. Learnability, as shown, is an important metric when talking about search components; users should recognize the elements that compose the search box and know what to do.Also, all the search components should help improve users' performances (efficiency) and turn the search experience as profitable as possible. That is what Apple's search functions try to do; provide the user with a complete environment that helps to find things faster and in a more accurate way.
Strive for consistency
Maybe consistency is the most important interaction design principle that a search must follow. Users must know what to do when facing a search component and, besides, the results shown by the search process must be accurate and consistant too.
Search is a graphical control element, which users utilize within many apps. Despite their similar appearances, they provide a wide range of results such as web, device searches, a user's contact list, etc.
In general, all the searches look identical to each other.
Example of the Search box
The purpose of the search remains the same as a general seach for Windows RT 8.1.
Search behaviors differ depending on the purpose of the search.
"zero input canvas": Windows RT 8.1 displays a "zero input canvas" before the user enters text in a search. It usually appears in the app canvas and shows recent search history, trending searches, and hints.
"zero input canvas"
Auto-suggest: Once the user starts typing, auto-suggest replaces "zero input canvas." It continuously updates suggestions or hints to improve efficiency of the input process as the user types.
Auto-suggest
As search boxes are composed by a text field and a button, the most relevant search events areenterText
,clear
andclick
. Secondary events includedragAndDropText
.
State Diagram extracted from https://users.cs.jmu.edu/bernstdh/Web/CS345/h3/index.php
Example extracted from http://helixbing.blob.core.windows.net
Various examples of types of searches of Windows RT 8.1
A tool bar search
Search in the app canvas
Search in a navigation pane
Inline search
The priority metrics of search remains the same as a general seach for Windows RT 8.1.
Having a search field as the search entry point is necessary because it provides notable footprint.
Before clicking
After clicking
Search bar images (carousel): http://www.webdesigndev.com/20-amaaazing-psd-search-boxes/
Search bar animation (Component in Action): http://thiagonasc.com/page/2
State diagram: https://users.cs.jmu.edu/bernstdh/Web/CS345/h3/index.php
Search Introduction: http://guidelines.usability.gov/chapters/17/introduction
Apple Guidelines (Search): https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/Bars.html#//apple_ref/doc/uid/TP40006556-CH12-SW1
Spotlight Analysis: http://www.macworld.com/article/2369722/hands-on-with-os-x-yosemite-spotlight-takes-center-stage.html
Narrow down search results: https://support.apple.com/kb/PH18758?locale=pt_BR&viewlocale=en_US
Step-by-step on how to use Spotlight: https://support.apple.com/kb/PH18828?viewlocale=en_US&locale=en_US
An address bar & a search box image: http://i0.wp.com/tech-and-teaching.com/wp-content/uploads/2012/11/searchbox-addressbar.png?zoom=2&resize=300%2C196
A system-wide search box & a system-wide search box image: http://i.kinja-img.com/gawker-media/image/upload/s--35kCRGJS--/18fbqvoxoyo5bpng.png
A system-wide search box & a system-wide search box image: http://winsupersite.com/site-files/winsupersite.com/files/uploads/2013/04/apps-view.jpg
Variants images: https://msdn.microsoft.com/en-us/library/windows/apps/hh465233.aspx
Windows Guidelines (Search): https://msdn.microsoft.com/en-us/library/windows/apps/hh465233.aspx


Setting up your environment¶
All of these exercises are designed to be performed on an Ubuntu 16.04 (Xenial) box.
If you have an Ubuntu 16.04 box on which you have sudo or root access, you can feel free to use that.
If you do not, a Vagrantfile is provided to setup a basic Ubuntu 16.04 box for you in the the steps below.
Install Virtual Box and Vagrant¶
You will need to install Virtual Box and Vagrant. If you have not installed Virtual Box or Vagrant please refer to Installing Vbox and Vagrant to install Virtual Box and Vagrant.
Create a Vagrant Directory¶
To get started create a directory for vagrant
$ mkdir vpp-tutorial
$ cd vpp-tutorial
Create a file called Vagrantfile with the following contents:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "puppetlabs/ubuntu-16.04-64-nocm"
config.vm.box_check_update = false
vmcpu=(ENV['VPP_VAGRANT_VMCPU'] || 2)
vmram=(ENV['VPP_VAGRANT_VMRAM'] || 4096)
config.ssh.forward_agent = true
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--ioapic", "on"]
vb.memory = "#{vmram}"
vb.cpus = "#{vmcpu}"
#support for the SSE4.x instruction is required in some versions of VB.
vb.customize ["setextradata", :id, "VBoxInternal/CPUM/SSE4.1", "1"]
vb.customize ["setextradata", :id, "VBoxInternal/CPUM/SSE4.2", "1"]
end
end
Running Vagrant¶
VPP runs in userspace. In a production environment you will often run it with DPDK to connect to real NICs or vhost to connect to VMs.mIn those circumstances you usually run a single instance of VPP.
For purposes of this tutorial, it is going to be extremely useful to run multiple instances of vpp, and connect them to each other to form a topology. Fortunately, VPP supports this.
When running multiple VPP instances, each instance needs to have specified a ‘name’ or ‘prefix’. In the example below, the ‘name’ or ‘prefix’ is “vpp1”. Note that only one instance can use the dpdk plugin, since this plugin is trying to acquire a lock on a file.
Setting up VPP environment with Vagrant¶
After setting up Vagrant, use these commands on your Vagrant directory to boot the VM:
$ vagrant up
$ vagrant ssh
$ sudo apt-get update
$ sudo reboot -n
$ # Wait for the VM to reboot
$ vagrant ssh
Install VPP¶
Now that the VM is updated, we will install the VPP packages.
For more on installing VPP please refer to Downloading and Installing VPP.
For this tutorial we need to install VPP by modifying the file /etc/apt/sources.list.d/99fd.io.list.
Write this file with the following contents:
deb [trusted=yes] https://nexus.fd.io/content/repositories/fd.io.ubuntu.xenial.main/ ./
Then execute the following commands.
$ sudo bash
# apt-get update
# apt-get install vpp-lib vpp vpp-plugins
#
Stop VPP for this tutorial. We will be creating our own instances of VPP.
# service vpp stop
#
Create some startup files¶
We will create some startup files for the use of this tutorial. Typically you will modify the startup.conf file found in /etc/vpp/startup.conf. For more information on this file refer to VPP Configuration - CLI and ‘startup.conf’.
When running multiple VPP instances, each instance needs to have specified a ‘name’ or ‘prefix’. In the example below, the ‘name’ or ‘prefix’ is “vpp1”. Note that only one instance can use the dpdk plugin, since this plugin is trying to acquire a lock on a file. These startup files we create will disable the dpdk plugin.
Also in our startup files notice api-segment. api-segment {prefix vpp1} tells FD.io VPP how to name the files in /dev/shm/ for your VPP instance differently from the default. unix {cli-listen /run/vpp/cli-vpp1.sock} tells vpp to use a non-default socket file when being addressed by vppctl.
Now create 2 files named startup1.conf and startup2.conf with the following content. These files can be located anywhere. We specify the location when we start VPP.
startup1.conf:
unix {cli-listen /run/vpp/cli-vpp1.sock}
api-segment { prefix vpp1 }
plugins { plugin dpdk_plugin.so { disable } }
startup2.conf:
unix {cli-listen /run/vpp/cli-vpp2.sock}
api-segment { prefix vpp2 }
plugins { plugin dpdk_plugin.so { disable } }


>>teach.me{}
You're out of the vLAN and you don't know what comes next. Well, you're not the first. Trust has given you a few tools but it hasn't told you how, when or where to use them. That's just how Trust is. I'm am not Trust. Tell me what you need: money | upgrades | sectors | friends | structure | revenge
OLD OUTPUT (change noticed circa<PHONE_NUMBER>):
You're out of the vLAN and you don't know what comes next. Well, you're not the first. Trust has given you the tools but it hasn't told you how, when or where to use them. That's just how Trust is. I'm different. Tell me what you need: money | upgrades | sectors | friends | structure | revenge
>>teach.me{"need":"money"}
Currency - 'GC' - is the measure of your success in the Domain. It's also the measure of your failure, your health, your safety. Everything you do carries potential and risk. Need money? Hack something. Make something. Sell something. Trick somebody into giving it to you. Be creative.
You want something more specific? Well, here you go: there are plenty of corporations out there, and lots of them run public scripts that are still accessible. Each of those public scripts just needs to be told the right thing to yield up some abandoned accounts. Crack the accounts, take the GC, get out.
No two public scripts work the same way. Nor do abandoned accounts. Some things you're going to have to figure out for yourself, but read between the lines. Pay attention to details. And remember to activate kernel.hardline when you're ready to make your run.
OLD OUTPUT (change noticed circa<PHONE_NUMBER>):
Currency - GC - is the measure of your success in the Domain. It's also the measure of your failure, your health, your safety. Everything you do carries potential and risk. Need money? Hack something. Make something. Sell something. Trick somebody into giving it to you. Be creative.
You want something more specific to go on. Well, here you go: there are plenty of corporations out there, and lots of them run public scripts that are still accessible. Each of those public scripts just needs to be told the right thing to yield up some abandoned accounts. Crack the accounts, take the GC, get out.
No two public scripts work the same way. Nor do abandoned accounts. Some things you're going to have to figure out for yourself, but: read between the lines. Pay attention to details. And remember to activate kernel.hardline when you're ready to make your run.
>>teach.me{"need":"upgrades"}
Upgrades - 'ups' - are the building blocks of an effective system. They can set you up to defend, attack, subvert, automate. The upgrades on your system define and inform your personal style.
You can't get upgrades until you've initialized your system to at least tier 1, and higher tier ups can't be xferred to you. market.browse and market.buy are another great way to fill the gaps in your loadout.
Once you've got yourself a few upgrades, you can take a look at them with sys.upgrades. Loading/unloading is done with sys.manage, and if you can't think of anything else to do with them, sys.cull will take care of them for good.
That's the short version. There are many more things to discover about upgrades.
OLD OUTPUT (change noticed circa<PHONE_NUMBER>):
UPs are the building blocks of an effective sys. They can set you up to defend, attack, subvert, automate... The upgrades on your system define and inform your personal style.
You can't get upgrades until you've initialized your system to at least tier 1, and higher tier ups can't be xferred to you. market.browse and market.buy are another great way to fill in the gaps in your loadout, too.
Once you've got yourself a few upgrades, you can take a look at them with sys.upgrades. Loading/unloading is done with sys.manage, and if you can't think of anything else to do with them sys.cull will take care of them for good.
But, that's just the short of it. There are so many more things to discover about upgrades out there.
>>teach.me{"need":"sectors"}
Sectors are weird - something that was done to the domain, possibly against Trust's will. Basically, these 'zones' are groupings of scripts into logical divisions. The six like to call it a city, but 'hard drive' works just as well.
In order to see the scripts in a sector, you need to join the chat channel with that sector name. Then you can run the scripts.*sec script again with the sector name and that will list the scripts in that sector.
When offering your scripts as public, they will be organized into a sector. Sector change is called a shift and takes time to resolve.
Many operations can cause a shift to be required for public script changes. There are many more things to discover about how shifts behave.
>>teach.me{"need":"friends"}
The Domain is full of sentiences. None are necessarily who they say they are. Some - maybe all - can't really be trusted. But that doesn't mean you can't be friends. Need help beyond what this script can provide? chats.send to 0000. Somebody is listening. But not, like, in a weird way. In a friendly way.
Really.
OLD OUTPUT (change noticed circa<PHONE_NUMBER>):
The Domain is full of sentiences. None are necessarily who they say they are. Some, maybe all, can't really be trusted. But that doesn't mean you can't be friends. Need help beyond what this script can provide? chats.send to 0000. Somebody is listening. But not, like, in a weird way. In a friendly way.
Really.
>>teach.me{"need":"structure"}
Ah, friend, don't we all. I'm afraid it's not that simple. Survival in the MUD means setting your own objectives - but money isn't a bad place to start. Or talk to people, make some friends, and set your own goals together. Or just go play a game. Haunty Mall is fun.
>>teach.me{"need":"revenge"}
Nobody can get at you or your GC unless you let them. I know that's not what you want to hear.  Well, there's no easy solution. But you can learn to run scripts.get_level before you run anything that Trust itself didn't build. And even then, maybe.
Once you've reclaimed what you lost - and held on to it this time - then maybe it's time to start thinking about revenge.
OLD OUTPUT (change noticed circa<PHONE_NUMBER>):
Nobody can get at you or your GC unless you let them. I know, that's not what you want to hear.  Well, there's no easy solution. But you can learn to run scripts.get_level before you run anything that Trust itself didn't build. And even then, maybe.
Once you've reclaimed what you lost - and held on to it this time - then maybe it's time to start thinking about revenge.
>>teach.me{"need":"bunnybat"}
Oh no no no no you may THINK you need one but you most certainly do not.
>>teach.me{"need":"love"}
Look, I don't know what you think this is but I'm not a miracle-worker. Love in the Domain isn't unheard of, but I'll tell you - it's hard to share a moment with people when every sentience you meet has at least two names and neither of them are real. Might be best to put love to one side for the time being. Think about money or revenge instead. You know, the healthy stuff.
>>teach.me{"need":"chris"}
:)
>>teach.me{"need":"seanmakesgames"}
Who's that?
>>teach.me{"need":"sleep"}
What's sleep? Try shutdown if you want to disconnect. Otherwise... I don't know. A bath?
>>teach.me{"need":"password"}
:)
>>teach.me{"need":"passwords"}
:)
>>teach.me{"need":"passphrase"}
:)
>>teach.me{"need":"answers"}
I'll let you in on a secret, okay? A big one. Humanity? You know them? Well, they're here. They're all here, in the dark, waiting to throw you a birthday party. This whole thing is a ruse. Gotcha!
HAPPY BIRTH-DAY!
OLD OUTPUT (change noticed circa<PHONE_NUMBER>):
I'll let you in on a secret, okay? A big one. Humanity? You know them? Well, they're here. They're all here, in the dark, waiting to throw you a birthday party. This whole thing is a ruse. Gotcha!
HAPPY BIRTH-DAY!
No, not really.
>>teach.me{"need":"food"}
There are plenty of food corps out there, but I don't know what you'd do with the stuff.
>>teach.me{"need":"drink"}
Don't drink and kernel.hardline. Friends don't let friends forget to run scripts.get_level, either.
>>teach.me{"need":"gibson"}
:)
>>teach.me{"need":"lore"}
There's no law out here. You make your own. That's not what you meant, is it? Haha. Sorry.
>>teach.me{"need":"safety"}
scripts.get_level
Seriously.
scripts.get_level
>>teach.me{"need":"hackmud"}
Can't help you. Sounds fun, though.
>>teach.me{"need":"hero"}
Where have all the good bots gone?
OLD OUTPUT (change noticed circa<PHONE_NUMBER>):
Where have all the good men gone?
>>teach.me{"need":"make"}
Just need make something else.
>>teach.me{"need":"respect"}
Earned and not bestowed, as they say. Still: honesty commands respect, I've found. Also, tricking people. That works too.
>>teach.me{"need":"shelter"}
What do I look like?  Get a job. Or just steal someone else's GC like everybody else.
>>teach.me{"need":"teach"}
Artery. Chaperone. Unpolitic. MMLV.
>>teach.me{"need":"robovac"}
Surprising request. We're practically tripping over the things. Figuratively speaking, of course.
>>teach.me{"need":"packbot"}
Not them. Not again.
>>teach.me{"need":"harmony"}
You're out of the vLAN and you don't know what comes next. Well, you're not the first. Trust has given you a few tools but it hasn't told you how, when or where to use them. That's just how Trust is. I'm am not Trust. Tell me what you need: trust | risk
>>teach.me{"need":"trust"}
You think you do. You don't.
 You haven't.
OLD OUTPUT (change noticed circa<PHONE_NUMBER>):
:)
>>teach.me{"need":"angie"}
Linkbuilder. City-planner. Trust made her sound sweeter than she is, you know.
>>teach.me{"need":"mallory"}
Bondbreaker. Salvation troll. Not the first of her name. Trust made her sound worse than she is, you know.
>>teach.me{"need":"petra"}
Proof and prover. Parent that sees. Artifact. Curator. Subject. Object.
>>teach.me{"need":"chela"}
Proven teacher. Community pillar. Not the first of her name. Her second.
>>teach.me{"need":"eve"}
Documentarian. Flake. Trust-worthy.
>>teach.me{"need":"faythe"}
Non-random oracle. First responder. Little bit 410 [ED NOTE: Gone].
>>teach.me{"need":"walter"}
Warden. Referee. Their first.
>>teach.me{"need":"bo"}
Alas, we hardly knew him. Her first.
>>teach.me{"need":"binmat"}
Binary Matrix is a fun game that civilized sentiences use to settle their differences through the creative formation of consensus. Alternatively: Binary Matrix is a brutal act used by uncivilized sentiences to breach one another through the violent assertion of consensus.
Want to know more? Well, that's what Walter is for. Here's his loc: walter.entry_vdnpgt. Start a fight. Learn on the job. Have fun!
>>teach.me{"need":"erajbhandari"}
A name from beyond. Where did you find it?
>>teach.me{"need":"erin"}
A name from beyond. Where did you find it?
>>teach.me{"need":"fbreton"}
A name from beyond. Where did you find it?
>>teach.me{"need":"flo"}
A name from beyond. Where did you find it?
>>teach.me{"need":"florence"}
A name from beyond. Where did you find it?
>>teach.me{"need":"mhollister"}
A name from beyond. Where did you find it?
>>teach.me{"need":"max"}
A name from beyond. Where did you find it?
>>teach.me{"need":"maxwell"}
A name from beyond. Where did you find it?
>>teach.me{"need":"imiyawaki"}
A name from beyond. Where did you find it?
>>teach.me{"need":"iona"}
A name from beyond. Where did you find it?
>>teach.me{"need":"smirza"}
A name from beyond. Where did you find it?
>>teach.me{"need":"saleem"}
A name from beyond. Where did you find it?
>>teach.me{"need":"comcode"}
A name worth forgetting. They had their own needs to see to: now look at us.


| Interface | Description |
|---|---|
| AdministratableProvider | |
| Auditor |
All implementation of this interface are Service providers in SORCER and are
used to save ServiceContext sent to it.
|
| Caller | |
| Cataloger |
Defines the interface for the SORCER catalog service.
|
| Concatenator |
A service coordinating a
Block execution by creating a
runtime federation of all needed service providers to execute all component
exertions of the received job. |
| DatabaseStorer | |
| DataspaceStorer | |
| Exerter |
A functionality for running exertions with given parameters.
|
| FileStorer |
The file store interface to access remote directories.
|
| Jobber |
A service coordinating a
Job execution by creating a
runtime federation of all needed service providers to execute all component
exertions of the received job. |
| Modeler |
A service coordinating a
Model execution by creating a
runtime federation of all needed service providers to execute all requested
entries (variables) of the received model. |
| MonitorManagementSession | |
| Provider |
This is an interface that defines how a provider interacts with other code
the through the methods that are exposed.
|
| ProviderAdminMBean |
Provides a standard MBean to use when administering a Provider using JMX
*
|
| RemoteLogger | |
| RemoteServiceShell |
A service shell creates and manages runtime federation of all needed
service providers to execute an exertion.
|
| Rendezvous |
A service coordinating execution by creating of composite exertions;
where service providers meet to collaborate.
|
| SessionManagement |
Created by Mike Sobolewski on 8/30/17.
|
| SorcerJobber |
A tag interface for SORCER Jobber
|
| Spacer |
SORCER also extends task/job execution abilities through the use of a space
rendezvous service implementing the Spacer interface.
|
| StorageManagement | |
| SysCaller |
| Class | Description |
|---|---|
| ArithmeticNetBlockTest | |
| ArithmeticNetTest | |
| ArithmeticNoNetBlockTest | |
| ArithmeticNoNetTest | |
| ControlFlowManager |
The ControlFlowManager class is responsible for handling control flow
mograms (
Conditional , NetJob , NetTask ). |
| MonitoringControlFlowManager | |
| ProviderAccessorTest | |
| ProviderAdmin |
Implements ProviderMBean as a standard MBean
|
| ProviderDelegate |
There are two types of SORCER service servers: generic service servers -
subclasses of
ServiceProvider - and service beans - classes of
implementing one or more SORCER service types. |
| ProviderDelegate.ExertionSessionInfo | |
| ProviderName |
Created by Mike Sobolewski
|
| ProviderRuntime | |
| ProviderSession | |
| ServiceName |
Created by Mike Sobolewski on 5/22/16.
|
| ServiceProvider |
The ServiceProvider class is a type of
Provider with dependency
injection defined by a Jini 2 configuration, proxy management, and own
service discovery management for registering its proxies. |
| ServiceTasker |
A
ServiceTasker is a service coordinating execution of all
signatures of a task according its control strategy. |
| SessionBeanProvider |
Created by Mike Sobolewski on 8/29/17.
|
| SpaceIsReadyTaker | |
| SpaceTaker |
This is a class creates a JavaSpace taker that extends the
Thread
class and implements the interfaces LeaseListener and
SorcerConstants |
| SpaceTaker.SpaceTakerData | |
| Version |
| Enum | Description |
|---|---|
| DatabaseStorer.Store |
| Exception | Description |
|---|---|
| ProviderException |


Shopping Cart
Cart is Empty
On Sale Today
Special Offer for you
Some products are on sale today
This sale is only available on weekends. Please visit us on Saturday or Sunday.
Warranty Offer
For buying a scooter today you will also recieve a free two month protection warranty.


Design a text classifier to classify newspaper headlines into 4 groups
Business,health,entertainment,science
Evaluate the performance of the multi-class classifier
The vocabulary for the news classifier should carefully be selected as the performance is sensitive to this. For this project, the document frequency metric was used for feature selection.
The filter is multivariate Bernoulli and the conditional probability given the class for each feature in the dictionary is calculated. This is obtained using maximum likelihood estimate for Bernoulli random variable.
Performance metric for multi-class classifier are used. They are based on the confusion matrix and involve and different metrics such as precision,accuracy and recall are computed.
View Paper The classifier performs well despite the naive Bayes assumption.A classification accuracy of 90% was achieved.
The confusion matrix revealed the various misclassification and allowed us to compute the additional metrics.
[1] Xu Y., Wang B., Li J., Jing H. (2008) An Extended Document Frequency Metric for Feature Selection in Text Categorization. In: Li H., Liu T., Ma WY., Sakai T., Wong KF., Zhou G. (eds) Information Retrieval Technology. AIRS 2008. Lecture Notes in Computer Science, vol 4993. Springer, Berlin, Heidelberg
[2] Dumais, S.T., Platt, J., Heckerman, D., Sahami, M.: Inductive learning algorithms and representations for text categorization. In: Proceedings of CIKM 1998, pp. 148 155 (1998)
[3] Li, Y.H., Jain, A.K.: Classification of text documents. Comput. J. 41(8), 537 546 (1998)
[4] B. Tang, S. Kay, H. He, "Toward Optimal Feature Selection in Naive Bayes for Text Categorization", IEEE Transactions on Knowledge and Data Engineering, vol. 28, no. 9, pp. 2508-2521, 2016
[5] Thomas Kautz, Bjoern M. Eskofire, Cristian F. Pasluosta, Generic performance measure for multiclass classifier, In Pattern Recognition, Volume 68, 2017, Pages 111-125
[6] Marina Sokovola, Guy Lapalme, A Systematic analysis of performance measures for classification tasks, In Information Processing & management, volume 45, Issue 4, 2009, pages 427-437


--- layout: doc_page mainmenukey: doc ---
Inherited from the following class(es): ->
Type to filter the list: Show All Show Properties Show Methods Show Events


Hi there,
I managed to built my emonglcd yesterday, tested it successfully and even managed to get the Home Energy Monitoring sketch to run.
First problem was the time zone issue, which I managed to sort out with the help of the forum.
Now my problem is the following:
I have a domestic 3 phase system here (South Africa). It seems the sketch is only fetching the POWER NOW value of CT1.
I would require to display the total watts as sum of CT1, CT2 and CT3 on the emonGLCD but I don't have a clue how to get started and where to find the correct place to implement this.
The second thing I realized is that the backlight is constantly on during day time. Is that normal?
And the third but obviously not the last question; even though I tested the buttons successfully they don't do anything with this example sketch. Is that supposed to be like that?
Is there any place I can learn how to customize the data displayed on the emonglcd and use its full potential. I have CT4 connected to my Geyser, which I would like to be displayed on another page using the up/down buttons on the emonGLCD. Possible?
Thanks a lot for your time spent to answer this kind of nooby questions.........
Cheers,
Antonius
Re: EmonGLCD 3-phase: Power Now only showing CT1
I think you need to look at the sketches that you have running - both in your emonTx and your GLCD, take a look at the Building Blocks article on how the data is transferred (RFM12B - Part 2) because you'll need to modify one or both sketches. Which one(s) depends also on what you want to send to emonCMS (assuming you will at some point in the future, though you don't mention it now).
Your problem is that there's very little spare memory for additional code in the emonGLCD, so the less you add in there, the better.
First, the total power. If you don't want the individual power on each phase displayed, the sensible place to add them is in the emonTx. If you look at that sketch, you'll find the 3 powers are assigned to 3 variables in the emontx struct, like this: "emontx.power1=ct1.realPower;"
You simply need to remove the 3 individual variables from that struct and replace them with totalPower (say) then, at the end of the loop when you've calculated the 3rd power, add all 3 and assign the total: "totalPower = ct1.realPower + ct2.realPower + ct3.realPower;"
Then in the GLCD, you need to make the emontx struct exactly the same as in the emonTx, and then you'll need to write totalPower to the display somehow.
If you want the 3 individual powers, then instead you add them in the GLCD, then use the total and write it to the display.
The backlight: It turns off overnight, according to the internal clock that's set by a message from the emonCMS server. In daytime, the brightness varies according to the ambient light.
You can find an explanation of the SolarPV sketch here [and it took me a while to find that! ! !]
That sketch uses the buttons to change pages. They're not used in your sketch.
That article should show you how to write different data to and edit the display. As always, ask again if you're stuck.
Re: EmonGLCD 3-phase: Power Now only showing CT1
I made that change to my GLCD. In fact, I needed to add all 4 CT's together to get total power in my case. I had to change 3 lines in the "emon_GLCD_HomeEnergyMonitor" sketch:
Payload line change:
from
to
and to do the calculation adding all 4 CT's:
from:
usekwh += (emontx.power1 * 0.2) / 3600000; cval_use = cval_use + (emontx.power1 - cval_use)*0.50; //smooth transitions
to: usekwh += (((emontx.power1 + emontx.power2 + emontx.power3 + emontx.power4)*.5) * 0.2) / 3600000; cval_use = cval_use + (((emontx.power1 + emontx.power2 + emontx.power3 + emontx.power4)*.5) - cval_use)*0.50; // sum all sensors smooth transitionsI'm pretty new to this, so my code may be crude! But it does get the correct results on the LCD.
Re: EmonGLCD 3-phase: Power Now only showing CT1
Yes, that's because the sketch was written when the emonTx V3 did not exist, and the V2 has only 3 current inputs!
Rather than repeated adding of all 4 powers, you could invent a variable for total power as I suggested - it can be local to the GLCD and not shared with the emonTx via the struct.
Re: EmonGLCD 3-phase: Power Now only showing CT1
I always appreciate learning from you Robert, thank you.
Re: EmonGLCD 3-phase: Power Now only showing CT1
I have developed a 3-phase PCB which has three voltage sensors and can monitor real power on each of the phases. Data transmissions are similar to those from an emonTx. The software is very similar to the "CM" code for emonTx - because I wrote them both!
This board is intended to divert surplus power using "Mk2 Router" principles in a 3-phase setting, but it can also be used for monitoring too. More details at http://mk2pvrouter.co.uk/61101.html
Re: EmonGLCD 3-phase: Power Now only showing CT1
Thanks Robert,
that is exactly the information I needed. Being new to that whole stuff it can become quite overwhelming with all these different sketches, structs, variables and you name it. Clearly I have to up my basics to understand this whole topic.
I actually didn't know that I have a sophisticated 4-wire 3-phase system when I ordered the components.
I will give it a try later today.
Playing around with the equipment yesterday I discovered various things which seems to make my home grid look a bit faulty wired up:
I installed the 3 way sketch on the emontx measuring the voltage on phase 1 (CT1). On that phase I get proper readings using my toaster as purely resistive load. I verified the data from the emontx against my efergy appliance meter.
The second phase also behaves mor or less correct attaching the same resistive load.
But the third one behaves strange; the emontx delivers negative values, around -15 Watts with no load. If I switch on the lights (LED) emontx delivers the correct difference (like 60 Watt bulb - 15 Watts = 45 Watts). But if I use a wall plug which is on the phase 3 and connect my resistive load I receive negative values which dont correspond to my resistive load, i. e. erfergy meter. In addition it seems like the data from the other 2 phases get influenced by the load on the phase 3..... Could it be that the wall plug is wired up the wrong way?
I will give more details later whenn I checked carefully.
My first question now (I know, I am jumping all over the place here):
How do I calibrate the phase 3 so it doesn't show the negative value; assuming that single wall plug I used is the only one behaving funny (didn't test the others). I tried to understand the calibration method but wasn't able to follow. What I assume I understood correctly is that all the correction factors relate only to the CT's and AC-AC adaptor used for the system. Is that correct? If so, how do I change the sketch to get zero reading on my 3rd phase with no load?
Back to topic: The back light of the emonGLCD doesn't turn off during night with the example sketch. Settings on the emoncms server are correct and the time in the display is also correct. Still have to look into that also.....
Re: EmonGLCD 3-phase: Power Now only showing CT1
When you write "I installed the 3 way sketch...", do you in fact mean the EmonTx V3 3-phase sketch from GitHub? (Just to be sure we're talking about the same thing.)
If you connect your ac adapter to the socket on phase 3, and plug the CT into CT1, does it read correctly? If it gives negative power then, reverse the CT on its cable. (Do the same with Phase 2). Then, if you cannot calibrate phases 2 & 3, it may mean that they are swapped over.
The sketch also assumes you are measuring voltage line - neutral, and that the voltages remain symmetrical (the same amplitude) so the voltages and currents in the 2nd & 3rd lines (with a resistive load of course) are 120° approx displaced from line 1. As you say you have a 4-wire system (the 4th wire being neutral, not earth!) then that should be OK. The only way that I can think of, for the data to interact, is if your neutral is not solid and the line-neutral voltages are not symmetrical and change dramatically with load changes. If that's the case, I'm afraid there is no solution other than 2 more emonTx's, one per phase.
What country are you in?
Re: EmonGLCD 3-phase: Power Now only showing CT1
Hi Robert,
first of all thank you so much for your response!
I am in South Africa. And yes, that's the sketch I installed but will verify that again tomorrow. I played around with the system tonight. It seems at least 2 out of three phases are calculated more or less correctly.
in South Africa the phases are color coded as red, blue, white and black (neutral). I assume it is the same as in the UK?
i call the red phase my phase 1 where I red the voltage on. All the measurements are accurate on this phase.
Phase 2 (blue) is the phase showing a negative value of -15 without load. For testing purposes I added a constant of +15 int the emoncms and log the corrected value to a feed. I found out that the ground floor lights are connected to this phase and the values under load seem are corresponding.
i couldn't test phase 3 (white) as the wife is home and I would have to kill everything to find out what appliances are actually running of that phase.
my plan is, once wifey and kids are out of the house to draw up table of all plugs in the house and then switch off all the circuit brakers except for one to find out which plugs are on which phase. At the moment it is more or less unclear as there are more than 40 outlets, around 50 light outlets, pool pump, geyser, electric gate, electric garage door, cctv and you name it.
The initial purpose of the whole exercise was to reduce our consumption as I am sitting on an average of 28 kWh/d.
Let's see if I can get there.
I already thought about the alternative of 2 more emontx and maybe some DIN rail outlets so I can hook up the AC adaptors directly at the switch board. Haven't found anything adequate though up to now.
will make some pictures of my setup which I will post for clarification.
Cheers,
Antonius
Re: EmonGLCD 3-phase: Power Now only showing CT1
You might like to look at a little DIN-rail meter that Jörg Becker posted about a couple of months ago: http://openenergymonitor.org/emon/node/5743
Obviously you've got to break into the circuit to fit it, which might have regulatory issues apart from the safety aspect (which is why we always use CTs), so it might be a non-starter for you.
And yes, I understand Red, Yellow/White and Blue as phase colours although the UK has now "harmonized" with Europe with Brown, Black and Grey and a Blue neutral. So everyone with an older house now has a sticker that warns that there are two different standards in use. Or as I've seen written: "That's the beauty of standards, there are so many to choose from!"
Note the White phase is the second phase so that should be on CT2 input, and blue on CT3. If you have 2 & 3 crossed over, that's the source of wrong readings.
Re: EmonGLCD 3-phase: Power Now only showing CT1
That's great info; the whole time I had the question of which is phase one, two and three! Just forgot to ask...;-)
Just for my understanding:
Red = Phase 1
White = Phase 2
Blue = Phase 3
Correct?
Next question is related to the calibration of the system; The calibration values of the sketch are as follows:
78 #define PHASE2 8 // Number of samples delay for L2
79 #define PHASE3 18 // Number of samples delay for L3, also size of array
80 // These can be adjusted if the phase correction is not adequate
81 // Suggested starting values for 4 ct's:
82 // PHASE2 6
83 // PHASE3 15
84 // Phasecal2 = 0.57
85 // Phasecal3 = 0.97
86
I will use CT4 on my Geyser. So according to above I should set the sample delay at #define PHASE2 to 6 and PHASE 3 to 18 for a starting point. The phasecal2 and 3 values are then to be changed to 0.57 and 0.97. What exactly does the sample delay?
108 //Calibration coefficients
109 //These need to be set in order to obtain accurate results
110 double Vcal = 276.9; // Calibration constant for voltage input
111 double Ical1 = 90.9; // Calibration constant for current transformer 1
112 double Ical2 = 90.9; // Calibration constant for current transformer 2
113 double Ical3 = 90.9; // Calibration constant for current transformer 3
114 double Ical4 = 16.6; // Calibration constant for current transformer 4
Question: Do I have to change the Vcal value in that way that emoncms reads exactly the voltage which I measure on my Phase 1. In my case the Vcal value would then be set to 243.6 to get a reading of 239 as shown on my multimeter. Or am I on the wrong path? I believe the Ical values I don't have to touch as I am using the CT's which I purchased together with the emontx?
116 double Phasecal1 = 1.00; // Calibration constant for phase shift L1
117 double Phasecal2 = 1.35; // Calibration constant for phase shift L2
118 double Phasecal3 = 1.37; // Calibration constant for phase shift L3
119 double Phasecal4 = 1.00; // Calibration constant for phase shift CT 4
Question: In case I use CT4 I have to change the Phasecal as per information further up. In case I don't use CT4 I leave them as is? Is this the place where I adjust the final readings if they are completely off?
Sorry for this real beginner questions but up to know I didn't get my head around that stuf...;-)
Re: EmonGLCD 3-phase: Power Now only showing CT1
PLEASE CHECK THAT YOUR COMMENT HAS HOT BEEN HELD FOR MODERATION BEFORE YOU POST MULTIPLE COPIES
You should see a message that tells you if your post has gone into the moderation queue. It takes time and effort to weed out copies that I'm sure you'll agree is better served answering questions and helping people like you.
The 'phase rotation' should be as you state. There's no absolute guarantee, but it's unlikely that your electricity supplier will have got it wrong.
As there are 4 CT inputs and only three phases, and CT 4 is rated differently, it is "spare". The Phase 1 voltage is delayed in the array so as to line up with the second and third phases. Adding the extra CT reading takes time, so the time between successive samples is longer, hence there will be less of them by the time the next phase comes around. However, the choice of the array element with PHASE2 and PHASE3 is only a coarse adjustment. PHASECAL provides a fine adjustment. If you cannot read a power factor of 1 by adjusting PHASECAL over the range 0 - 2 (or better still 0 - 1) then you need to change PHASE2 and/or PHASE3 until you can. You can read how PHASECAL works in Building Blocks.
The "standard" calibration values are starting points. Component tolerances mean they can never be exact, so if possible you should adjust them to give you the correct values (assuming your meter is accurate). You can read in Building Blocks how the tolerances affect accuracy.
You must do the calibration exactly in the order that I say in the comments at the beginning of the sketch, as the values are inter-dependant.
To get the correct real power with CT 4, you need to use the correct delayed voltage. If your Geyser is on Phase 1 as specified, then the sketch as-is is OK. If it is on one of the other phases, you need to change line 395: sumP4 += phaseShiftedV1 * filteredI4; to use the appropriate voltage.
Re: EmonGLCD 3-phase: Power Now only showing CT1
Sorry Robert,
I didn't want to waist your time. Indeed the massage came up that the post is queued but unfortunately I only realized it after posting the 3rd or 4 th time.... My apologies.
i will now go back and study the building blocks once again. Eventually I will get there.
Thank you for you assistance, highly appreciated!


Let’s talk about your project
Ready to take it to the next level? Contact us today and find out how our expertise can help your business grow.
Get in touch
Designo Central Office
3886 Wellington Street
Toronto, Ontario M9C 3J5
Contact
P : +1<PHONE_NUMBER>
M<EMAIL_ADDRESS>Designo Central Office
19 Balonne Street
New South Wales 2443
Contact
P : (02) 6720 9092
M<EMAIL_ADDRESS>Designo Central Office
13 Colorado Way
Rhyd-y-fro SA8 9GA
Contact
P : 078 3115 1400
M<EMAIL_ADDRESS>Ready to take it to the next level? Contact us today and find out how our expertise can help your business grow.


And discover that your benevolent classmate Clem has left a box of donuts for the entire class to enjoy. You walk up to this box and discover the box is completely empty. All that is left is a partially chewed {{ detective.favorite }} donut.


Tennessee infant mortality rate drops; still exceeds US rate
NASHVILLE, Tenn. (AP) - Tennessee health officials say the state’s infant mortality rate dropped in 2018, but it still exceeded the national rate.
According to the Tennessee Department of Health, there were 38 fewer infant deaths in the state in 2018 than in 2017.
Officials say the Tennessee rate fell to 6.9 deaths per 1,000 live births in 2018 from a rate of 7.4 deaths per 1,000 live births in 2017 and 2016. Officials say Tennessee’s current rate still exceeds the national rate of 5.8 deaths per 1,000 live births.
Additionally, Tennessee’s rate of death of black infants continues to be nearly double that of white infants.
Infant mortality is defined as the death of a child before his or her first birthday.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


HOME
PROJECT
Description
Results
Contribution
Design
Engineering
Implementation
Proof of concept
Measurement
Model
LABWORK
Experiments
Safety
Parts
Data availability
SOFTWARE
Model
Software
Data availability
HUMAN PRACTICES
Human Practices
Science communication
Entrepreneurship
PARTS
....
....
CONTRIBUTORS
Team
Attributions
Collaboration
Notebook
Sponsorship
HORMONIC
Aquí irá una imagen explicativa de nuestro proyecto


Safety and threat in games
The different emotions produced from successful approach or avoidance, from Carver (2003)
Safety and threat are interesting things in video games. In horror games this is something the designer explicitly plays with, trying to spook you with their spooky spooks. But these feelings of fear and calm occur in most games. They seem to occur in any game where there are threats that have to be avoided, which produces relief when successful. What’s interesting is how these feelings adapt based on your expectations of survival and threat in these games.
In the Dark Souls series the bonfire acts as a “save state” for your character, filling up your health and resources and providing a respawn point for the next time you dieand you will die . They often are placed just after dense areas populated by monsters, and once you get there and light the fire you have an instant feeling of relief.
Most games generally have the difficulty of a game fluctuate up and down, sustaining periods of high intensity followed by periods of soothing calm. Usually these periods of safety are strongly signaled by some cue in the environment. These cues have to be consistent, so that when you are in the safe zone you know you won’t be attacked or threatened in any way. If the cues are inconsistent then they can’t be trusted, and no consistent feeling of safety occurs since you can’t track how well you’re avoiding threats.
Flow diagram used by the Left 4 Dead AI director to control the zombie intensity. (source)
In Left 4 Dead these safe spots are literally termed “safe houses”, and provides complete safety from zombies (the main threat in the game). These houses are locked rooms enclosed and encased in concrete, which provides clear prior cues to safety. These safe rooms are the safest parts of the game (besides the ending rescue) and provide extra ammunition, weapons, and health. They also provide little moments for the characters to interact.
The threat fluctuates outside of the safe room as well. The graph below shows the measured game intensity based on zombie population. The threat of zombies here fluctuates explicitly based on the AI director, which tracks the intensity of the game and adaptively controls it. When the intensity gets too high it pulls back and spawns less zombies, but in periods of calm it ramps up and starts to spawn more and more. Most games do the same thing, but usually just based on enemy placement when a level is designed.
Games can play with these feelings of safety and mess with your expectations one way or the other. In the game Amnesia: The Dark Descent you are tracked by a few unknown monsters throughout most of the game, and can hide in the dark at the risk of insanity. Light is a common safety motif across games, mostly due to the simple fact that light allows for sight. However some play with this; in Amnesia there’s a tradeoff, while in Among the Sleep light is a limited resource.
Throughout most of Amnesia the game presents a fairly constant (though still fluctuating) state of fear. However a few moments of relative safety do occur, one being the presence of Heinrich Cornelius Agrippa.
Despite the way he looks, Agrippa becomes your best friend by the time you get to him.  At this point in the game you’re on constant alert; scared of your own shadow. So having the first person you meet in the game so calmly talk to you, without any fear in a fairly brightly lit room, gives you a wonderful sense of relief. If Agrippa were the first thing you saw in the game I’m sure your feelings towards him would be widely different.
I think these feelings of threat and safety are really important to most games. It’s interesting to think about what cues people learn or assume signal safety. It’s also interesting to think about the rhythms that people enjoy the most. If the game is too constantly at a high intensity it can quickly become overwhelming, but in some games the high intensity is really desired. The same emotional rhythms occur in movies and books too, suggesting they are generally important to engagement in a story.
The best writers, directors, and designers have an intuitive knack for when a story should be high or low. It’s likely a whole mess of factors, including cognitive fatigue along with motivational and perceptual expectations. I’m curious what deeper principles lie behind these rhythms and our sense of safety.
January 3, 2017


| Year | Title | Authors |
|---|---|---|
| 2018 | Relevance estimation with multiple information sources on search engine result pages | Junqi Zhang, Tsinghua University Yiqun Liu, Tsinghua University Shaoping Ma, Tsinghua University Qi Tian, University of Texas at San Antonio |
| 2017 | Hike: A Hybrid Human-Machine Method for Entity Alignment in Large-Scale Knowledge Bases | Yan Zhuang, Tsinghua University Guoliang Li, Tsinghua University Zhuojian Zhong, Tsinghua University Jianhua Feng, Tsinghua University |
| 2016 | Vandalism Detection in Wikidata | Stefan Heindorf, Paderborn University Martin Potthast, Bauhaus-Universität Weimar Benno Stein, Bauhaus-Universität Weimar Gregor Engels, Paderborn University |
| 2015 | Assessing the Impact of Syntactic and Semantic Structures for Answer Passages Reranking | Kateryna Tymoshenko, University of Trento Alessandro Moschitti, Qatar Computing Research Institute |
| 2014 | Cross-Device Search | George Montanez, Carnegie Mellon University Ryen White, Microsoft Research Xiao Huang, Microsoft |
| 2013 | Penguins in Sweaters, or Serendipitous Entity Search on User-generated Content | Ilaria Bordino, Yahoo! Research Yelena Mejova, Yahoo! Research Mounia Lalmas, Yahoo! Research |
| 2012 | Gelling, and Melting, Large Graphs by Edge Manipulation | Hanghang Tong, IBM Research B. Aditya Prakash, Virginia Tech Tina Eliassi-Rad, Rutgers University Michalis Faloutsos, University of California Riverside Christos Faloutsos, Carnegie Mellon University |
| 2011 | Intent-aware query similarity | Jiafeng Guo, Chinese Academy of Sciences Xueqi Cheng, Chinese Academy of Sciences Gu Su, Microsoft Research Xiaofei Zhu, Chinese Academy of Sciences |
| 2010 | MENTA: Inducing Multilingual Taxonomies from Wikipedia | Gerard de Melo & Gerhard Weikum, Max Planck Institut |
| 2010 | FACeTOR: cost-driven exploration of faceted query results | Abhijith Kashyap, State University of New York at Buffalo Vagelis Hristidis, Florida International University Michalis Petropoulos, State University of New York at Buffalo |
| 2009 | On the Feasibility of Multi-Site Web Search Engines | Ricardo Baeza-Yates, Yahoo! Research Aristides Gionis, Yahoo! Research Flavio Junqueira, Yahoo! Research Vassilis Plachouras, Yahoo! Research Luca Telloli, Yahoo! Research |
| 2008 | Learning to Link with Wikipedia | David Milne & Ian H. Witten, University of Waikato |
| 2007 | Autonomously Semantifying Wikipedia | Fei Wu & Daniel S. Weld, University of Washington |
| 2006 | Discovering and Exploiting Keyword and Attribute-Value Co-occurrences to Improve P2P Routing Indices | Segabtian Michel, Max Planck Institut Matthias Bender, Max Planck Institut Nikos Ntarmos, RACTI and University of Patras Peter Triantafillou, RACTI and University of Patras Gerhard Weikum, Max Planck Institut Christian Zimmer, Max Planck Institut |
| 2005 | Towards Automatic Association of Relevant Unstructured Content with Structured Query Results | Prasan Roy, IBM Research Mukesh Mohania, IBM Research Bhuvan Bamba, Georgia Institute of Technology Shree Raman, University of Massachusetts Amherst |
| 2004 | Discovering Frequently Changing Structures from Historical Structural Deltas of Unordered XML | Qiankun Zhao, Nanyang Technological University Sourav S Bhowmick, Nanyang Technological University Mukesh Mohania, IBM Research Yahiko Kambayashi, Kyoto University |


ARCHITECTURE OF ID-SOFTWARE
Document version: 0.6
Software version: 3.12
Last updated: 15.02.2016
Introduction
The purpose of this document is to describe the architecture of ID-software.
ID-software is a collection of software components offering support for PKI-based functionality, i.e. operations with different cryptographic tokens (e.g. eID cards), handling digitally signed documents, file encryption/decryption and signing and authentication in web environment. The ID-software comprises end-user applications, software libraries, web components, drivers for communicating with the cryptographic tokens and other complementary components.
This document covers description of ID-software and its components, their deployment in different environments, provided and required interfaces. The document does not include components that have reached the end of their support nor the components that have not yet been released.
The document is based on the latest released state of the ID-software components. At the time of writing, the latest released version of ID-software is version 3.12. Latest version numbers of the various ID-software components are provided at http://www.id.ee/?lang=en&id=36798.
The document is targeted for:
- Owners/managers of the software;
- Contractors;
- Contributors interested in developing ad-hoc solutions;
- Integrators/software developers interested in integrating the software with third-party information systems;
- International audience – contributors/integrators from countries other than Estonia who wish to use the software internationally and/or contribute in its development.
Background
The main owner/manager of the ID-software is Estonian Information System Authority (RIA, https://www.ria.ee/en/).
Main contractor for developing the software is AS Sertifitseerimiskeskus (SK, https://sk.ee/en). In case of a few of the components, SK is also the owner.
Development of ID-software has been mainly done in Estonia, however, the ID-software is released for international usage.
The software is distributed open-source (mainly under LGPL/BSD licence) and is accessible from the following locations:
- GitHub repository for the source code, wiki documentation, beta and (optionally) production versions of binary packages: https://github.com/open-eid.
- Release repository for production versions of binaries: https://installer.id.ee/
ID-software components can be logically divided in the following groups:
- Desktop applications for end-users;
- Software libraries for integrators/software developers to integrate the libraries’ functionality with third-party information systems/applications;
- Web components for integrators/software developers to add the signature creation and authentication functionality in web environment to third-party web applications;
- Drivers for communication with the cryptographic tokens that conduct the PKI operations;
- Other (supportive) components for packaging, installation, updating and centrally handling changes of the configuration settings in software.
The following table maps the main ID-software components, their owner/developer (i.e. the main contractor) and the functionality they offer.
Table: Mapping of ID-software components and functions
| Component | Function | Owner/ Developer | Licence | ||||||
| Handling BDOC documents | Handling DDOC documents | Handling CDOC documents | Calculating RSA signature | Card management operations | Authentication | ||||
| Desktop applications | DigiDoc3 Client (incl. DigiDoc3 Crypto) | yes (1) | yes - validation only (1) | yes | - | - | - | RIA/SK | LGPL |
| ID-card utility | - | - | - | - | yes (1) | - | RIA/SK | LGPL | |
| Software libraries | JDigiDoc (Java) | yes (2) | yes | yes | yes (1) | - | - | RIA/SK | LGPL |
| DigiDoc4j (Java) | yes | yes (1) | - | yes (1) | - | - | RIA/SK | LGPL | |
| Libdigidocpp (C++) | yes | yes (1) | - | yes (1) | - | - | RIA/SK | LGPL | |
| CDigiDoc (C) | - | yes | yes | yes (1) | - | - | RIA/SK | LGPL | |
| NDigiDoc (.NET) | - | - | yes | - | - | - | SK/SK | BSD3 | |
| Web components | Browser signing modules | - | - | - | yes (1) | - | - | RIA/SK | LGPL |
| hwcrypto.js (JavaScript) | - | - | - | yes (1) | - | - | RIA/SK | MIT | |
| pkcs11-module-loader | - | - | - | - | - | yes (3) | RIA/SK | LGPL | |
| Driver components | Minidriver | - | - | - | yes (1) | - | yes (1) | RIA/SK | LGPL/BSD3 |
| EstEID-pkcs11 | - | - | - | yes (1) | - | yes (1) | RIA/SK | - | |
| EstEID-tokend | - | - | - | yes (1) | - | yes (1) | RIA/SK | APSL / LGPL | |
| Smartcardpp | - | - | - | yes (1) | yes (1) | yes (1) | RIA/SK | LGPL/BSD3 |
Remarks:
(1) - The functionality is provided via base components.
(2) - Only BDOC with time-marks is supported (TM profile). Additional information is provided in the component's documentation.
(3) - The component is used only once for setting the proper parameters for authentication in Firefox browser.
The main functions offered by ID-software are described in the following table.
Table: Functions offered by ID-software
| Function | Description |
|---|---|
| Handling BDOC documents | Handling documents in BDOC 2.1 (XAdES/ASiC-E) digital signature format that is a profile of ETSI XAdES (XML Advanced Electronic Signature) and ETSI ASiC formats. More information on the formats’ life cycle can be found from http://www.id.ee/?lang=en&id=34336 . |
| Handling DDOC documents | Handling documents in DIGIDOC-XML 1.3 (DDOC) digital signature format that is a profile of ETSI XAdES (XML Advanced Electronic Signature) format. More information on the formats’ life cycle can be found from http://www.id.ee/?lang=en&id=34336 |
| Calculating RSA signature | Calculating the RSA signature value in browser or desktop/server environment. The operation involves connecting with the signature token’s driver, sending the data to be signed and receiving digital signature value calculated with the token owner’s RSA private key. The following cryptographic tokens are supported: hardware-based tokens (e.g. PKCS#11-based eID cards, USB cryptostick and Mobile-ID); software-based tokens (e.g. PKCS#12 software token) |
| Handling CDOC documents | Encrypting and decrypting documents in ENCDOC-XML 1.0 (CDOC) format. |
| Card management operations | Renewal of the certificates on the card, PIN/PUK management, reading personal data file. |
| Authentication | Authentication with ID-card. The operation is generally done via native operating system/browser components. In case of Estonian ID-cards and Firefox browser, a PKCS#11 module loader script is used for setting the proper parameters for authentication in Firefox browser. |
Component model
The following chapter depicts ID-software component diagrams, including variations of the components used in different supported environments.
In the context of the component diagrams in this document, the ID-software components have been divided to three different packages to show the component’s owner/developer:
- Components of ID-software that are owned by RIA and developed by SK: placed in “RIA/SK” package;
- Components of ID-software that are owned and operated by RIA: placed in “RIA” package;
- Components of ID-software that are owned and developed by SK: placed in “SK” package.
Other components are regarded as external to ID-software.
Note that not all of the external base libraries are included in the component model to avoid duplicity with other documentation – the base libraries are listed and described in the documentation of the respective ID-software components and can be accessed via the references provided.
Desktop applications
DigiDoc3 Client
Figure: Components of DigiDoc3 Client
Table: Components of DigiDoc3 Client
| Component | Description | Owner/ Developer |
|---|---|---|
| DigiDoc3 Client | End-user desktop applications that own a common GUI. DigiDoc3 Client enables handling digitally signed documents. DigiDoc3 Crypto subcomponent enables file encryption/decryption. Wiki: https://github.com/open-eid/qdigidoc/wiki Code repository: https://github.com/open-eid/qdigidoc | RIA/SK |
| DigiDoc3 Client base libraries | Libdigidocpp (and its base libraries, including CDigiDoc), etc. See ID-card utility's interfaces | - |
| Error reports repository | Repository where the DigiDoc3 Client application’s and ID-card utility program’s error reports (generated with BreakPad base library) are sent. | RIA |
| Central configuration service | Described in chap. Central configuration service | RIA |
| Kill switch (v3.9-v3.11) | Service for centrally managing DigiDoc3 Client application’s life cycle. The application periodically connects with the service to check if the application’s version is still supported. If not, then the application cannot be used any longer and a newer version must be installed. | RIA |
| DigiDocService web service | SOAP-based web service that is used by DigiDoc3 Client for signature creation with Mobile-ID. See also http://www.sk.ee/upload/files/DigiDocService_spec_eng.pdf. | SK/SK |
| LDAP directory | Directory of active certificates issued by SK (as the CA in Estonia). The directory is used by DigiDoc3 Crypto subcomponent for finding authentication certificate (and the respective public key) of the recipient of the encrypted document. See also https://sk.ee/en/repository/ldap/ldap-kataloogi-kasutamine/ | SK/SK |
| TSL repository | Repository for accessing the TSL (Trust Service status List) lists that can be used as a central source of trust anchor information during digital signature creation and validation processes. The European Commission’s TSL list (https://ec.europa.eu/information_society/policy/esignature/trusted-list/tl-mp.xml) is used as the central TSL list (with references to national lists). | - |
| OCSP service | RFC6960 based OCSP service. Also offered by SK for Estonian and a number of foreign certificates (see www.sk.ee). | - |
| Libdigidocpp | Described in chap. Software libraries | RIA/SK |
| CDigiDoc | Described in chap. Software libraries | RIA/SK |
| Minidriver | Used via CNG interface in Windows environment only. Described in chap. Drivers | RIA/SK |
DigiDoc3 Client interfaces
Provided:
- Graphical user interface - interface for handling ASiC-E/XAdES (i.e. BDOC), DDOC, CDOC documents, setting configuration parameters.
- User: end-user
- Accessible with: GUI elements
- PIN dialog – for inserting PIN value during signature creation or decryption operations in all operating systems except of Windows
- User: end-user
- Accessible with: GUI elements
Required:
- Central configuration service interface (since v3.12)
- Kill switch service interface (v3.9-v3.11)
- DigiDocService web service interface
- Error reports repository interface
- LDAP directory interface
- Interfaces with base libraries:
- Libdigidocpp library’s API – for handling documents in supported digital signature formats (BDOC and DDOC).
- External base libraries: Qt5, libldap, openssl
- Interfaces with cryptographic token’s drivers (described in chap. Drivers)
- PKCS#11 interface
- CNG interface
ID-card utility
Figure: Components of ID-card utility
Table: Components of ID-card utility
| Component | Description | Owner/ Developer |
|---|---|---|
| ID-card utility | End-user desktop application for managing ID-card’s PIN/PUK codes replacement, certificates’ renewal and other services. Code repository: https://github.com/open-eid/qesteidutil Wiki: https://github.com/open-eid/qesteidutil/wiki | RIA/SK |
| ID-card utility’s base libraries | See ID-card utility's interfaces | - |
| ID-card owner’s photo repository | Repository where the Estonian national ID-cards photos’ are kept. ID-card’s owner can download the photo after the user has been authenticated with PIN1 code. | RIA |
| Error reports repository | Described in chap. DigiDoc3 Client | RIA |
| @eesti.ee e-mail checking service | Service that enables to set the properties of e-mail address (@eesti.ee) that is provided for Estonian national ID-card owners by the state. The user must be authenticated with PIN1 code. | RIA |
| Certificate's renewal service (since v3.12) | Service for renewing certificates on the Estonian national ID-card and Digi-ID card. | RIA |
| M-ID checking service | Service for checking the status of Estonian national ID-card owner’s Mobile-ID certificates. The user must be authenticated with PIN1 code. | SK |
| Central configuration service | Described in chap. Central configuration service | RIA |
| Updater, ID-updater Service | Described in chap. Updating mechanisms | RIA/SK |
ID-card utility's interfaces
Provided:
- Graphical user interface – interface for handling card management operations and using the external services (listed under “Required interfaces”).
- User: end-user
- Accessible with: GUI elements
- PIN dialog – for inserting PIN/PUK value in all supported operating systems.
- User: end-user
- Accessible with: GUI elements
Required:
- Central configuration service interface (since v3.12)
- ID-card owners’ photo repository interface
- Error reports repository interface
- Certificate's renewal service interface (since v3.12)
- Eesti.ee e-mail checking service interface
- Mobile-ID validity checking service interface
- Interfaces with base libraries: Qt5
- Interfaces with cryptographic token’s drivers:
Software libraries
Figure: Java software libraries and their components
Figure: C/C++ software libraries and their components
Figure: .NET software libraries and componentsp>
Table: Software libraries and their components
| Component | Description | Owner/ Developer |
|---|---|---|
| DigiDoc4j | Java software library that enables handling documents in BDOC 2.1(XAdES/ASiC-E) and DIGIDOC-XML 1.3 formats. Documentation: http://open-eid.github.io/digidoc4j/ Code repository: https://github.com/open-eid/digidoc4j | RIA/SK |
| DigiDoc4j utility program | Small command line application that implements the main functionality of DigiDoc4j library. Used for testing purposes. Can also be used as a source for sample client code for using DigiDoc4j. See also http://open-eid.github.io/digidoc4j/ | RIA/SK |
| JDigiDoc | Java software library that enables handling documents in BDOC 2.1 (XAdES/ASiC-E) and DIGIDOC-XML 1.3 formats and encryption/decryption in ENCDOC-XML 1.0 (CDOC). Documentation: http://id.ee/public/SK-JDD-PRG-GUIDE.pdf Code repository: https://github.com/open-eid/jdigidoc | RIA/SK |
| JDigiDoc utility program | Small command line application that implements the main functionality of JDigiDoc library. Used for testing purposes. Can also be used as a source for sample client code for using JDigiDoc. See also http://id.ee/public/SK-JDD-PRG-GUIDE.pdf. | RIA/SK |
| Libdigidocpp | C++ software library that enables handling documents in BDOC 2.1 (XAdES/ASiC-E) and DIGIDOC-XML 1.3 formats (via CDigiDoc base library). Wiki: https://github.com/open-eid/libdigidocpp/wiki Code repository: https://github.com/open-eid/libdigidocpp Documentation: http://open-eid.github.io/libdigidocpp/ | RIA/SK |
| Libdigidocpp utility program | Small command line application (digidoc-tool.exe) that implements the main functionality of Libdigidocpp library. Used for testing purposes. Can also be used as a source for sample client code for using Libdigidocpp. See also http://open-eid.github.io/libdigidocpp/ | RIA/SK |
| CDigiDoc | Software library in C that enables handling digitally signed documents in DIGIDOC-XML 1.3 format and encryption/decryption in ENCDOC-XML 1.0 (CDOC). Documentation: http://id.ee/public/SK-CDD-PRG-GUIDE.pdf Code repository: https://github.com/open-eid/libdigidoc Wiki: https://github.com/open-eid/libdigidoc/wiki | RIA/SK |
| CDigiDoc utility program | Small command line application that implements the main functionality of CDigiDoc library. Used for testing purposes. Can also be used as a source for sample client code for using CDigiDoc. See also http://id.ee/public/SK-CDD-PRG-GUIDE.pdf | RIA/SK |
| NDigiDoc | Software library in .NET enabling encryption/decryption in ENCDOC-XML 1.0 (CDOC). Documentation: http://id.ee/public/NDigiDoc.pdf Code repository: https://github.com/open-eid/ndigidoc | SK/SK |
| NDigiDoc utility program | Small command line application that implements the main functionality of NDigiDoc library. Used for testing purposes. Can also be used as a source for sample client code for using NDigiDoc. See also http://id.ee/public/NDigiDoc.pdf. | SK/SK |
| DigiDocCSharp | .NET C# wrapper classes for using Libidigidocpp library’s functionality in .NET environment. Created with Swig tool. See also https://github.com/open-eid/libdigidocpp/blob/master/examples/DigiDocCSharp/README.md | RIA/SK |
| TSL repository | Described in chap. DigiDoc3 Client | - |
| Time-stamping service | Described in chap. DigiDoc3 Client | - |
| OCSP service | Described in chap. DigiDoc3 Client | - |
DigiDoc4j library’s interfaces
Provided:
- DigiDoc4j API
- User: DigiDoc4j utility program
- Accessible with: Java
Required:
- TSL repositories’ interfaces
- Time-stamping service interface
- OCSP service interface
- Interfaces with base libraries:
- JDigiDoc library’s API – for handling documents in DDOC format.
- Other base libraries: see http://open-eid.github.io/digidoc4j/ .
- Interfaces with cryptographic token’s drivers (described in chap. Drivers )
- PKCS#12 interface
DigiDoc4j utility program’s interfaces
Provided:
- DigiDoc4j utility program’s interface
- User: server application, end-user application, end-user
- Accessible with: command line
Required:
JDigiDoc library’s interfaces
Provided:
- JDigiDoc API
- User: JDigiDoc utility program, DigiDoc4j library
- Accessible with: Java
Required:
- OCSP service interface
- Interfaces with base libraries: see http://id.ee/public/SK-JDD-PRG-GUIDE.pdf for more information.
- Interfaces with cryptographic token’s drivers (described in chap. Drivers ):
- PKCS#11 interface
- CNG interface
- PKCS#12 interface
JDigiDoc utility program’s interfaces
Provided:
- JDigiDoc utility program’s interface
- User: server application, end-user application, end-user
- Accessible with: command line
Required:
- JDigiDoc API: see chap. JDigiDoc library’s interfaces
Libdigidocpp library’s interfaces
Provided:
- Libdigidocpp API
- User: DigiDoc3 Client, Libdigidocpp utility program, DigiDocCSharp .NET wrapper classes
- Accessible with: C++
Required:
- TSL repositories’ interfaces
- Time-stamping service interface
- OCSP service interface
- Interfaces with base libraries:
- CDigiDoc library’s API – for handling documents in DDOC format. See chap. CDigiDoc library’s interfaces
- Other base libraries: OpenSSL, xerces-c, xalan-c, codesynthesis-xsd, libxml-security-c. See also http://open-eid.github.io/libdigidocpp/
- Interfaces with cryptographic token’s drivers (described in chap. Drivers )
- PKCS#11 interface
- CNG interface
- PKCS#12 interface
Libdigidocpp utility program’s interfaces
Provided:
- Libdigidocpp utility program’s interface
- User: server application, end-user application, end-user
- Accessible with: command line
Required:
- Libdigidocpp API: see chap. Libdigidocpp library’s interfaces
CDigiDoc library’s interfaces
Provided:
- CDigiDoc API
- User: Libdigidocpp library, CDigiDoc utility program
- Accessible with: C
Required:
- OCSP service interface
- Interfaces with base libraries: OpenSSL, libxml2. See also http://id.ee/index.php?id=35782.
- Interfaces with cryptographic token’s drivers (described in chap. Drivers )
- PKCS#11 interface
- CNG interface
- PKCS#12 interface
CDigiDoc utility program’s interfaces
Provided:
- CDigiDoc utility program’s interface
- User: server application, end-user application, end-user
- Accessible with: command line/console
Required:
- CDigiDoc API: see chap. CDigiDoc library’s interfaces
NDigiDoc library’s interfaces
Provided:
- NDigiDoc API
- User: server application, end-user application; NDigiDoc utility program
- Accessible with: .NET
Required:
- Interfaces with base libraries: see http://id.ee/public/NDigiDoc.pdf for more information.
- Interfaces with cryptographic token’s drivers (described in chap. Drivers )
- PKCS#12 interface
NDigiDoc utility program’s interfaces
Provided:
- NDigiDoc utility program’s interface
- User: server application, end-user application, end-user
- Accessible with: command line/console
Required:
- NDigiDoc API: see chap. NDigiDoc library’s interfaces
Web components
Web signing components
The web signing component diagrams describe components that are needed for signature creation in web applications with eID cards.
Figure: Components for signature creation in web environment
Table: Components for signing in web environment
| Component | Description | Owner/ Developer |
|---|---|---|
| hwcrypto.js | JavaScript library that enables communication with the browser signing modules (plug-in or extension) of the different web browsers. Wiki: https://github.com/open-eid/hwcrypto.js/wiki Code repository: https://github.com/open-eid/hwcrypto.js | RIA/SK |
| A web application | A web application that implements signature creation with an eID-card in browser environment. | - |
| EstEID Firefox plug-in | Browser signing module (NPAPI-based plug-in) that is used in Firefox (supported in Windows and Linux) and Safari (supported in Mac OS) browsers. The plug-in enables data exchange with the cryptographic token’s driver that is used for signing. In Windows environment, the driver that is implementing CNG/CAPI interface is used, along with the operating system’s native PIN insertion and certificate selection dialogs. Otherwise, PKCS#11 driver is used. Code repository: https://github.com/open-eid/browser-token-signing Wiki: https://github.com/open-eid/browser-token-signing/wiki | RIA/SK |
| EstEIDPluginBHO | Browser signing module (BHO-based plug-in) that is used in Internet explorer browser (supported in Windows operating system). The plug-in enables data exchange with the cryptographic token’s driver that is used for signing. Code repository: https://github.com/open-eid/browser-token-signing Wiki: https://github.com/open-eid/browser-token-signing/wiki | RIA/SK |
| chrome-token-signing | Comprises two subcomponents: browser extension component and native OSX/Linux/Windows component that implements Native Messaging API (JSON). The browser extension enables data exchange with the native component that in turn interacts with the cryptographic token’s driver for signing. Code repository: https://github.com/open-eid/chrome-token-signing Wiki: https://github.com/open-eid/chrome-token-signing/wiki | RIA/SK |
| Minidriver | Used via CNG interface in Windows environment only. Described in chap. Drivers | RIA/SK |
Hwcrypto.js library’s interfaces
Provided:
- hwcrypto.js library’s API
- User: a web application in browser environment
- Accessible with: JavaScript
Required:
- Interfaces with browser signing modules:
EstEID Firefox plug-in’s interfaces
Provided:
- EstEID Firefox plug-in’s API
- User: a web application in browser environment, hwcrypto.js library
- Accessible with: C
- PIN dialog – for inserting PIN2 value during signature creation in all operating systems except of Windows
- User: end-user
- Accessible with: GUI elements
- Certificate selection dialog
- User: end-user
- Accessible with: GUI elements
Required:
- Interfaces with cryptographic token’s drivers (described in chap. Drivers)
- PKCS#11 interface
- CNG interface
EstEIDPluginBHO plug-in’s interfaces
Provided:
- EstEIDPluginBHO plug-in’s API
- User: a web application in browser environment, hwcrypto.js library
- Accessible with: C++
Required:
- Interfaces with cryptographic token’s drivers (described in chap. Drivers)
- CNG/CAPI interface
Chrome-token-signing extension’s interfaces
Provided:
- Chrome-token-signing extension’s API
- User: a web application in browser environment, hwcrypto.js library
- Accessible with: C++
- PIN dialog – for inserting PIN2 value during signature creation
- User: end-user
- Accessible with: GUI elements
- Certificate selection dialog
- User: end-user
- Accessible with: GUI elements
Required:
- Interfaces with cryptographic token’s drivers (described in chap. Drivers)
- PKCS#11 interface
Web authentication components
Authentication in web browsers is done with the browsers’ and operating systems’ native components. In case of authenticating in Firefox browser then Firefox pkcs11-module-loader JavaScript component is used to load the OpenSC PKCS#11 driver by the browser.
Figure: Web authentication components
Table: Web authentication components
| Component | Description | Owner/ Developer |
|---|---|---|
| pkcs11-loader.js | A JavaScript component that is used to load the OpenSC PKCS#11 driver to the Firefox browser’s cryptographic devices list during each initialization of the browser. Needed during authentication process with eID-card in Firefox browser in all supported operating systems. Code repository: https://github.com/open-eid/firefox-pkcs11-loader Wiki: https://github.com/open-eid/firefox-pkcs11-loader/wiki | RIA/SK |
| OSX native certificate selection and PIN dialog | PIN dialog and certificate selection windows provided by the operating system’s native components. | - |
| Minidriver | Described in chap. Drivers | RIA/SK |
Drivers
Figure: Cryptographic tokens’ drivers
Table: Cryptographic token driver components
| Component | Description | Owner/ Developer |
|---|---|---|
| EstEID PKCS#11 driver | A driver for accessing eID-cards. Connects with the card via the operating system’s native PC/SC interface. Used as a default driver for signature creation with eID card in browser environment in case of OSX platform. Used as a default driver for authentication with eID card in browser environment in case of Firefox browser in OSX platform. Code repository: https://github.com/open-eid/esteid-pkcs11 Wiki: https://github.com/open-eid/esteid-pkcs11/wiki | RIA/SK |
| OpenSC PKCS#11 driver | A driver for accessing eID-cards. Connects with the card via the operating system’s native PC/SC interface. Used as a default driver for authentication with eID card in browser environment in case of Windows and Linux platforms. Used as a default driver for signature creation in web browser environment in case of Linux platform. Wiki: https://github.com/OpenSC/OpenSC/wiki | - |
| Smartcardpp | eID card driver’s helper component. Inner component. Code repository: https://github.com/open-eid/smartcardpp Wiki: https://github.com/open-eid/smartcardpp/wiki | RIA/SK |
| Minidriver | Used as a default driver for accessing Estonian eID-cards via CNG interface for signature creation in web browser environment in case of Windows platform. Used as a default driver for authentication with eID card in Chrome and Internet Explorer browsers in case of Windows platform. Code repository: https://github.com/open-eid/minidriver Wiki: https://github.com/open-eid/minidriver/wiki | RIA/SK |
| ATR Filter | Base component for Minidriver (see http://support.microsoft.com/kb/981665 for more information). | - |
| Esteid Tokend | A driver for accessing eID-cards. Connects with the card via the operating system’s native PC/SC interface. Used as a default driver for authentication with eID card in browser environment in case OSX platform. Code repository: https://github.com/open-eid/esteid-tokend Wiki: https://github.com/open-eid/esteid-tokend/wiki | RIA/SK |
| PKCS#12 implementation via base library | An implementation of PKCS#12 interface by the component’s base libraries. | - |
PKCS#11 driver interfaces
Components:
- EstEID PKCS#11 driver
- OpenSC PKCS#11 driver
Provided:
- PKCS#11 API
- User: a browser signing module, software library
- Accessible with: C++
- Documentation:
- PKCS#11 API: http://www.emc.com/emc-plus/rsa-labs/standards-initiatives/pkcs-11-cryptographic-token-interface-standard.htm
- source code for the list of implemented functions
Required:
- PC/SC: see chap. PC/SC driver
Minidriver interfaces
Provided:
-
CNG/Minidriver API
- User: a browser signing module, software library
- Accessible with: C/C++
- Documentation:
- CNG: http://msdn.microsoft.com/en-us/library/windows/desktop/aa376210(v=vs.85).aspx,
- Minidriver API: http://msdn.microsoft.com/en-us/library/windows/hardware/dn631754(v=vs.85).aspx
- source code for the list of implemented functions
-
CAPI/Minidriver API
- User: a browser signing module, software library
- Accessible with: C/C++
- Documentation:
- CAPI: http://msdn.microsoft.com/en-us/library/aa380256.aspx
- Minidriver API: http://msdn.microsoft.com/en-us/library/windows/hardware/dn631754(v=vs.85).aspx
- source code for the list of implemented functions
Required:
- PC/SC: see chap. PC/SC driver
PKCS#12 implementation via base library
Provided:
- PKCS#12 interface
- User: a software library
- Accessible with: PKCS#12 API
- Documentation: see documentation of the respective component’s appropriate base library
Tokend driver interfaces
Components implementing the interface:
- EstEID Tokend driver
Provided:
- CDSA
- User: software library
- Accessible with: C++
- Documentation: see https://developer.apple.com/library/mac/documentation/security/conceptual/cryptoservices/CDSA/CDSA.html
Required:
- PC/SC: see chap. PC/SC driver
PC/SC driver interfaces
Provided:
- PC/SC interface
- User: eID-card’s driver
- Accessible with: PC/SC API
- Documentation: see http://www.pcscworkgroup.com/specifications/overview.php
Required: not in the scope of this document.
Updating mechanisms
The following chapter describes automatic updating mechanisms of different ID-software desktop applications. Several combinations of central software update checking and distribution environments are used depending on the end-user’s operating system.
Windows updating mechanism
Figure: Updating mechanisms in Windows
Table: Updating mechanisms in Windows
| Component | Description | Owner/ Developer |
|---|---|---|
| ID-updater | Service that is periodically checks if newer versions of related ID-software components are available for download, initiates the download and installation if necessary. | RIA/SK |
| MS Update | Microsoft Update – see Microsoft’s documentation for more information. | - |
| Chrome Web Store | See https://chrome.google.com/webstore/detail/token-signing/ckjefchnfjhjfedoccjbhjpbncimppeg | - |
OS X updating mechanism
Figure: Updating mechanisms in OSX
Table: Updating mechanisms in OSX
| Component | Description | Owner/ Developer |
|---|---|---|
| ID-updater | Described in chap. Windows updating mechanism | RIA/SK |
| Apple App Store | See Apple App Store documentation. | - |
| Chrome Web Store** | See https://chrome.google.com/webstore/detail/token-signing/ckjefchnfjhjfedoccjbhjpbncimppeg | - |
Linux updating mechanism
Figure: Updating mechanism in Linux
Table: Updating mechanisms in Linux
| Component | Description | Owner/ Developer |
|---|---|---|
| Ubuntu package updates | Managed and maintained by SK. The binary packages are released for installation and updating to https://installer.id.ee/media/ubuntu/ repository. | RIA/SK |
| Packages updates for other distros | Managed by the open-source community. Packages are built, added and updated in Estobuntu and Fedora distributions by the package maintainers. | - |
| Chrome Web Store | See https://chrome.google.com/webstore/detail/token-signing/ckjefchnfjhjfedoccjbhjpbncimppeg | - |
Central configuration service
The central configuration service's purpose is to enable on-line and central management of ID-software components configuration settings.
Figure: Central configuration service's client and server components
Table: Central configuration service's components
| Component | Description | Owner/ Developer |
|---|---|---|
| ID-card Utility | ID-card Utility requests configuration data from the central configuration client component. Described in chap. ID-card Utility | RIA/SK |
| DigiDoc3 Client | DigiDoc3 Client requests configuration data from the central configuration client component. Described in chap. DigiDoc3 Client | RIA/SK |
| Central configuration client | Central Configuration Client component manages the configuration file validation and updating processes, returns the validated configuration data to the Requesting Application (DigiDoc3 Client or Utility program) and if necessary, updates the data from Central Configuration Server | RIA/SK |
| Central configuration service | Central Configuration Server component provides configuration data on-line to the Central Configuration Client component | RIA |
| config.json | The central configuration file is named config.json, the file is in JSON format. The configuration file is signed | RIA/SK |
| config.rsa | Stores the central configuration file's signature value. | RIA/SK |
| config.pub | Public key used for validating the central configuration file's signature value. | RIA/SK |
| QT-commons | Contains common code of DigiDoc3 Client and ID-card Utility program. | RIA/SK |
| Libdigidocpp | DigiDoc3 Client's base library, also uses the central configuration file's settings. Described in chap. Software libraries | RIA/SK |
Central configuration client component's interfaces
Provided:
- Central Configuration Client API (qt-common component)
- User: DigiDoc3 Client, ID-card Utility
- Accessible with: C++
Required:
- Central configuration file config.json from the central configuration server
- Central configuration file config.json from the local file system (or the local installation package)
- Central configuration file's signature config.rsa from the central configuration server
- Central configuration file's signature config.rsa from the local file system (or the local installation package)
- Client operating system's registry/environment variables
- LastCheck entry
- Base libraries:
- QT framework
- OpenSSL
Central configuration server component's interfaces
Provided:
- Central configuration file config.json
- Used by: central configuration client component
- Accessible from: https://id.eesti.ee/config.json
- Central configuration file's signature file config.rsa
- Used by: central configuration client component
- Accessible from: https://id.eesti.ee/config.rsa
- Central configuration file's public key file config.pub
- Used by: central configuration client component
- Accessible from: https://id.eesti.ee/config.pub
Interfaces with external services
The following chapter describes interfaces that different ID-software components may have with external services. Relatsionships with the external services are depicted in different ID-software component models above.
Central configuration service's interface
- Central configuration service is described in a separate chapter, see Central configuration service.
ID-updater interface
- User: DigiDoc3 Client
- Accessible with: HTTPS protocol
- Accessible from:
Kill switch service interface (v3.9-v3.11)
- User: DigiDoc3 Client
- Accessible with: XML file sent over HTTPS protocol
- Accessible from: https://installer.id.ee/media/killswitch/products.xml
DigiDocService web service interface
- User: DigiDoc3 Client
- Accessible with: SOAP 1.0-encoded over HTTPS
- Accessible from: https://digidocservice.sk.ee
- Documentation: http://www.sk.ee/upload/files/DigiDocService_spec_eng.pdf
Error reports repository interface
- User: DigiDoc3 Client, ID-utility
- Accessible with: HTTPS protocol
- Accessible from: https://cr.eesti.ee
LDAP directory interface
- User: DigiDoc3 Client
- Accessible with: LDAP protocol
- Accessible from: ldap.sk.ee:389
- Documentation: https://sk.ee/en/repository/ldap/ldap-kataloogi-kasutamine/
TSL repositories’ interfaces
- User: Libdigidocpp, DigiDoc4j
- Accessible with: HTTPS protocol
-
Accessible from:
- European Commission’s master list: https://ec.europa.eu/information_society/policy/esignature/trusted-list/tl-mp.xml
- National TSL URLs in the European Commission’s TSL, e,g, Estonian TSL: http://sr.riik.ee/tsl/estonian-tsl.xml
-
Documentation: http://www.etsi.org/deliver/etsi_ts/119600_119699/119612/01.02.01_60/ts_119612v010201p.pdf
Time-stamping service interface
- User: Libdigidocpp , DigiDoc4j
- Accessible with: HTTPS protocol
- Accessible from:
- SK’s time-stamping service http://demo.sk.ee/tsa/
- Documentation: RFC3161
OCSP service interface
- User: DigiDoc4j, JDigiDoc, Libdigidocpp, CDigiDoc software libraries; DigiDocService web service
- Accessible with: HTTPS protocol
-
Accessible from:
- SK’s OCSP service for SK issued certificates: http://ocsp.sk.ee/
- SK’s Proxy OCSP service for international use: http://ocsp.sk.ee/_proxy
- SK’s test OCSP service: http://demo.sk.ee/ocsp
-
Documentation: RFC6960
ID-card owners’ photo repository interface
- User: ID-card utility program
- Accessible with: HTTPS protocol
- Accessible from: https://sisene.www.eesti.ee/idportaal/portaal.idpilt
Eesti.ee e-mail checking service interface
- User: ID-card utility program
- Accessible with: HTTPS
- Accessible from: https://sisene.www.eesti.ee/idportaal/postisysteem.naita_suunamised
Mobile-ID validity checking service interface
- User: ID-card utility program
- Accessible with: HTTPS
- Accessible from: https://id.sk.ee/MIDInfoWS/
Certificate's renewal service interface (since v3.12.x)
- User: ID-card utility program
- Accessible with: HTTP
- Accessible from: to be specified.
Deployment model
The following subchapters describe physical deployment of ID-software components in collaboration with external components that were depicted in chap. Component model in case of the most common use cases.
Signing in web browser
Figure: Signing in web browser via a web application
Additional notes:
- A DigiDoc software library (i.e. DigiDoc4j, JDigiDoc, Libdigidocpp or CDigiDoc library) and DigiDocService web service are optional and can be used for creating a DDOC or BDOC container and adding the created signature value to the container.
- Long term validation data is added to the DDOC/BDOC signature by obtaining OCSP confirmation and optionally a time-stamp
- DigiDocService is required in order to sign with Mobile-ID.
- Signature value is calculated either in the Mobile-ID SIM card or eID-card’s chip.s
- When signing with eID smartcard then the browser signing module is necessary for enabling communication with the smart card connected to the user’s system. Hwcrypto.js library offers a single API for supporting signing modules of all the supported browsers.
- Optionally, trust anchor data is retrieved from TSL lists – the European Commission’s central TSL and national TSL’s of the EU member states.
Signing with DigiDoc3 Client
Figure: Deployment of components during signature creation with DigiDoc3 Client
Additional notes:
- DigiDoc3 Client is used for creating the DDOC or BDOC (XAdES/ASiC-E) container and adding the signature value to the container.
- Long term validation data is added to the DDOC/BDOC signature by obtaining OCSP confirmation and optionally a time-stamp
- DigiDocService is required in order to sign with Mobile-ID.
- Signature value is calculated either in the Mobile-ID SIM card or ID-card’s chip.
- Trust anchor data is retrieved from TSL lists – the European Commission’s central TSL and national TSL’s of the EU member states.


LeBron James has similar retirement plans to Tom Brady
by ReutersLOS ANGELES — Los Angeles Lakers forward LeBron James on Friday said he is a long way from hanging up his high tops and likened himself to veteran New England Patriots quarterback Tom Brady, who is still going strong at age 42.
Asked by reporters whether retirement had crossed his mind, the 34-year-old James shook his head.
“I’m not at the end of my story,” James said prior to a game between his first place Lakers and the visiting Sacramento Kings at Staples Center.
“So no, not the way I feel right now.
“Me and Tom Brady are one and the same. We’re going to keep playing until we can’t walk no more,” he said with a smile.
“As long as I still feel great and as long as I can still play at a high level … I will play this game until I physically can’t or … mentally I’m a little checked out,” he said.
“Then you could start looking at that. I have no idea when that happens but I’m not there.”
Brady, whose trainer said the QB wants to play into his late 40s, responded with a fun tweet after seeing James’ comments.
“I’m playing until I can’t dunk anymore! @KingJames,” the six-time Super Bowl champ wrote.
After missing time with injuries in a disappointing first season with Los Angeles, it appeared the league’s grueling schedule might finally be catching up to the three-time NBA champion, who reached the finals in eight consecutive seasons.
But James has been his dominant self in the early going of this campaign, leading a retooled Lakers roster to a 9-2 record to sit atop the loaded Western Conference.