KissEDP.java

package org.eclipse.californium.edhoc;

import com.upokecenter.cbor.CBORObject;
import com.upokecenter.cbor.CBORType;

/*
 * A simple processor of External Authorization Data, for testing purpose
 * 
 */

public class KissEDP implements EDP {

	// Process the External Authorization Data EAD_1 from EDHOC message_1
	@Override
	public void processEAD1(CBORObject[] ead1) {

		System.out.println("Entered processEAD1()");
		
		overviewEAD(ead1);
	}
	
	// Process the External Authorization Data EAD_2 from EDHOC message_2
	@Override
	public void processEAD2(CBORObject[] ead2) {

		System.out.println("Entered processEAD2()");

		overviewEAD(ead2);
	}
	
	// Process the External Authorization Data EAD_3 from EDHOC message_3
	@Override
	public void processEAD3(CBORObject[] ead3) {

		System.out.println("Entered processEAD3()");
		
		overviewEAD(ead3);
	}
	
	// Process the External Authorization Data EAD_4 from EDHOC message_4
	@Override
	public void processEAD4(CBORObject[] ead4) {

		System.out.println("Entered processEAD4()");
		
		overviewEAD(ead4);
	}
	
	// Print a generic overview of External Authorization Data from an EDHOC message
	private void overviewEAD(CBORObject[] ead) {
		
		System.out.println("EAD overview\n");
		
		for (int i = 0; i < ead.length; i++) {
			
			// This element must be an integer different than 0, indicating the EAD Label
			if (i % 2 == 0) {
				if (ead[i].getType() != CBORType.Integer || ead[i].AsInt32() == 0) {
					System.out.println("Malformed or invalid data item #" + (i/2));
					i += 2; // skip the companion data element
					continue;
				}
				System.out.println("The EAD item #" + (i/2) + " has EAD Label " + ead[i].AsInt32());
			}
			
			// This element includes the actual EAD Value according to the specified EAD Label
			if (i % 2 == 1) {
				Util.nicePrint("The EAD item #" + (i/2) + " has Value ", ead[i].GetByteString());
			}
			
		}

		System.out.println("\n");
	}
	
}