Book Image

Moodle 3.x Developer's Guide

By : Ian Wild, Jaswant Tak
Book Image

Moodle 3.x Developer's Guide

By: Ian Wild, Jaswant Tak

Overview of this book

The new and revamped Moodle is the top choice for developers to create cutting edge e-learning apps that cater to different user’s segments and are visually appealing as well. This book explains how the Moodle 3.x platform provides a framework that allows developers to create a customized e-learning solution. It begins with an exploration of the different types of plugin.. We then continue with an investigation of creating new courses. You will create a custom plugin that pulls in resources from a third-party repository. Then you’ll learn how users can be assigned to courses and granted the necessary permissions. Furthermore, you will develop a custom user home. At the end of the book, we’ll discuss the Web Services API to fully automate Moodle 3.x in real time.
Table of Contents (19 chapters)
Title Page
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Customer Feedback
Dedication
Preface
6
Managing Users - Letting in the Crowds

Decrypting data


We will use the Bouncy Castle extension to decrypt the data passed over from Moodle by the API--refer to https://www.bouncycastle.org/ for details. This extension needs to be added to the project in the same manner as the XML-RPC library.

Let's create a new class to handle the data. From the Solution Explorer, right-click on the project name, slide down to Add and then select the Class... option:

We used two methods to decode the data. The first, to extract the private key details (recall that Moodle will use our public key to encrypt the data and only we can decrypt it because we should be the only ones in possession of the private key), GetPrivateKey() has been called. It is passed a string that references a path to the private key file:

public static RsaPrivateCrtKeyParameters GetPrivateKey(String pemFile) 
{ 
      if (string.IsNullOrEmpty(pemFile)) 
      throw new ArgumentNullException("pemFile"); 
      string privateKey = File.Exists(pemFile) ? 
      File.ReadAllText...