Hello! This documentation has been deprecated - you can find the updated documentation at https://gist.github.com/jen-k/73e5dae57526ecf73d8475e2f59a3f9a
Deprecated documentation
Students at your school can quickly claim their GitHub Education benefits by visiting a unique web address. By visiting that address, GitHub will verify the student's academic status with your school and instantly deliver their benefits to them.
Your school can create a unique web address for each student by including three things in it:
-
school_id
: Your school’s unique identifier, provided by GitHub. -
student_id
: The individual student’s unique identifier, defined by your school. -
signature
: A code used to authenticate the message, produced by your school using an algorithm (instructions below).
Used together, your school can deliver each student a unique web address that looks something like this:
The algorithm you’ll use to create each student’s signature requires the aforementioned school_id
and student_id
, as well as an additional GitHub-provided secret_key
.
The algorithm requires that each of these values be passed as strings -- not numerals.
Here, for example, is how you can then produce a student’s signature using Ruby:
signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), secret_key, school_id + student_id)
When a student receives their unique web address from your school, they can visit that address in any web browser. If they are already signed into GitHub on that browser, they’ll see a GitHub Education web page confirming that they’ve been verified.

If they’re not yet signed in, the student will simply be asked to sign in before seeing the confirmation web page.
Hello,
would you be so gentle and provide a snippet in Java to generate the signature?
Thank you.