Skip to content

EPOCH: Portfolio project definition #12

Description

@AndrewFalanga

I have to present a portfolio of code that I've written for BSU to consider for a Credit for Prior Learning request. I'm going to redo this first program of mine as this portfolio.

Target Class

The target class is CS253 Software Development in C.

Primary Points to Convey

  • Structure of C programs (specifically the following elements)
    • functions
    • scope
    • arrays
    • structures
    • pointers
    • run-time memory management
  • Build systems
  • Debugging techniques
  • Secure programming
  • Process management
  • Basic systems programming

How to Show These Elements

C/C++ Program Structure

Essentially, the structure of C programs (and really that of C++ programs) is that there are individual compilation units, *.c or *.cpp files. Each of these are compiled to an object file *.o which are linked together, with any required libraries, into a final binary.

Each of the following will be demonstrated through separating the components of the Networked Power Monitor into individual compilation units, logically organized into APIs that the "core" will use.

Build Systems

This will use GNU make

Debugging Techinques

I'm not sure what this could be except for things like conditional compilation directives, maybe some function tracing, options to build with -ggdb when building in debug and -O2 or something similar in release mode.

Secure Programming

The nature of this program uses the network. For security, to keep from "anyone" telling the monitors that the agent said there's no power, the agent will sign each transmission using EC-DSA. The curve shall P-384, the hashing algorithm shall be SHA3-384. This should provide sufficient security as the monitors will not begin a shutdown sequence unless a message can be authenticated.

The power agent will also perform a signature verification process to know that power really has been lost. This implementation for BSU will implement an interface expecting a state message from the USP software. Since this message would simply be written to shared memory, any process could write to this region with the proper data. So, it should also contain a signature.

Stretch Goal

Encryption through KDF

Process Management

Process management should be addressed with the threads that will be spawned by the program to perform things like monitoring.

Basic System Programming

This will be using a lot of system calls. I think this will be satisfied.

awareness @rfalanga

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions