public KeyChange(String newKeyData,DSAPublicKey changeKey,boolean allowsUnsignedChanges,boolean allowsPublicVisibility,byte[] msg,byte[] sig,long epoch,long counter){
  this.newKeyData=newKeyData;
  this.newChangeKey=changeKey;
  this.allowsUnsignedChanges=allowsUnsignedChanges;
  this.allowsPublicVisibility=allowsPublicVisibility;
  this.msg=msg == null ? null : Arrays.copyOf(msg,msg.length);
  this.sig=sig == null ? null : Arrays.copyOf(sig,sig.length);
  this.epoch=epoch;
  this.counter=counter;
  Logging.log("Made a KC object with sig = " + Arrays.toString(this.sig));
}

public KeyChange ( String newKeyData , DSAPublicKey changeKey , boolean allowsUnsignedChanges , boolean allowsPublicVisibility , byte [ ] msg , byte [ ] sig , long epoch , long counter ) { this . newKeyData = newKeyData ; this . newChangeKey = changeKey ; this . allowsUnsignedChanges = allowsUnsignedChanges ; this . allowsPublicVisibility = allowsPublicVisibility ; this . msg = msg == null ? null : Arrays . copyOf ( msg , msg . length ) ; this . sig = sig == null ? null : Arrays . copyOf ( sig , sig . length ) ; this . epoch = epoch ; this . counter = counter ; Logging . log ( "Made a KC object with sig = " + Arrays . toString ( this . sig ) ) ; }
a keychange object does the actual work of changing the name - to - key mapping .
