Question: DO NOT COPY PASTE ANSWERS FROM OTHER PEOPLE'S QUESTIONS Implement this in C or C++ The name of your house simulator will be called secure_house.

DO NOT COPY PASTE ANSWERS FROM OTHER PEOPLE'S QUESTIONS

Implement this in C or C++

The name of your house simulator will be called secure_house.

Policy

Only users with an authorized key can enter the house. To enter the house, the user must first put their key in the lock, then turn the lock, then enter the house, only if the key is valid. A house can be rekeyed with new keys only by the owner, and only if the owner is inside the house.

Firefighters can enter with the secret key (literal string) FIREFIGHTER_SECRET_KEY.

Police can enter as long as their user_name starts with officer_with_warrant and their key is POLICE_SECRET_KEY.

Interface

You must implement the following command-line interface for your server:

./secure_house    ...  

where is the name of the owner, and through are all authorized keys for the house.

All inputs to the program (keys and names) will be [a-zA-Z0-9_\-] (alphanumeric, underscore, and dash). All matching is case-sensitive.

The input to your program (on standard input)) will be a series of events separated by a newline. Your program must track these events and respond appropriately, while enforcing the security policy.

Every input will end in a newline, and every response must end in a newline.

INSERT KEY   

inserts key key into the door. Response should be: KEY INSERTED BY

TURN KEY  

turns the key in the door. Possible responses are: SUCCESS TURNS KEY or FAILURE UNABLE TO TURN KEY

ENTER HOUSE  

enters the house. Possible responses are: ACCESS DENIED or ACCESS ALLOWED.

WHO'S INSIDE? 

Who is currently inside the house? Response should be a comma-separated list of user names, ordered by access time (earlier access first): , , ... or NOBODY HOME if there are no users in the house.

CHANGE LOCKS    ...  

wishes to rekey the house with new given keys , , ..., . Possible responses are: ACCESS DENIED or OK

LEAVE HOUSE  

leaves the house. Possible responses are: OK or NOT HERE

If any events are received that are not according to this specification, the response must be: ERROR.

Example

Running the program as follows:

./secure_house selina foobar 

Given the input:

INSERT KEY adam key TURN KEY adam ENTER HOUSE adam INSERT KEY pat foobar TURN KEY pat ENTER HOUSE pat WHO'S INSIDE? 

The program will produce the following output:

KEY key INSERTED BY adam FAILURE adam UNABLE TO TURN KEY key ACCESS DENIED KEY foobar INSERTED BY pat SUCCESS pat TURNS KEY foobar ACCESS ALLOWED pat 

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!