All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.pqc.crypto.xmss.HashTreeAddress Maven / Gradle / Ivy

Go to download

The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8. Note: this package includes the NTRU encryption algorithms.

The newest version!
package org.bouncycastle.pqc.crypto.xmss;

import org.bouncycastle.pqc.crypto.xmss.XMSSUtil;

/**
 * Hash tree address.
 *
 */
public final class HashTreeAddress extends XMSSAddress {

	private static final int TYPE = 0x02;
	private static final int PADDING = 0x00;

	private final int padding;
	private final int treeHeight;
	private final int treeIndex;

	private HashTreeAddress(Builder builder) {
		super(builder);
		padding = PADDING;
		treeHeight = builder.treeHeight;
		treeIndex = builder.treeIndex;
	}
	
	protected static class Builder extends XMSSAddress.Builder {

		/* optional */
		private int treeHeight = 0;
		private int treeIndex = 0;

		protected Builder() {
			super(TYPE);
		}
		
		protected Builder withTreeHeight(int val) {
			treeHeight = val;
			return this;
		}
		
		protected Builder withTreeIndex(int val) {
			treeIndex = val;
			return this;
		}
		
		@Override
		protected XMSSAddress build() {
			return new HashTreeAddress(this);
		}

		@Override
		protected Builder getThis() {
			return this;
		}
	}

	@Override
	protected byte[] toByteArray() {
		byte[] byteRepresentation = super.toByteArray();
		XMSSUtil.intToBytesBigEndianOffset(byteRepresentation, padding, 16);
		XMSSUtil.intToBytesBigEndianOffset(byteRepresentation, treeHeight, 20);
		XMSSUtil.intToBytesBigEndianOffset(byteRepresentation, treeIndex, 24);
		return byteRepresentation;
	}

	protected int getPadding() {
		return padding;
	}

	protected int getTreeHeight() {
		return treeHeight;
	}

	protected int getTreeIndex() {
		return treeIndex;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy