コード例 #1
0
ファイル: SignatureDSA.java プロジェクト: savitrig/teledroid
  public byte[] sign() throws Exception {
    byte[] sig = signature.sign();
    /*
    System.err.print("sign["+sig.length+"] ");
    for(int i=0; i<sig.length;i++){
    System.err.print(Integer.toHexString(sig[i]&0xff)+":");
    }
    System.err.println("");
    */
    // sig is in ASN.1
    // SEQUENCE::={ r INTEGER, s INTEGER }
    int len = 0;
    int index = 3;
    len = sig[index++] & 0xff;
    // System.err.println("! len="+len);
    byte[] r = new byte[len];
    System.arraycopy(sig, index, r, 0, r.length);
    index = index + len + 1;
    len = sig[index++] & 0xff;
    // System.err.println("!! len="+len);
    byte[] s = new byte[len];
    System.arraycopy(sig, index, s, 0, s.length);

    byte[] result = new byte[40];

    // result must be 40 bytes, but length of r and s may not be 20 bytes

    System.arraycopy(
        r,
        (r.length > 20) ? 1 : 0,
        result,
        (r.length > 20) ? 0 : 20 - r.length,
        (r.length > 20) ? 20 : r.length);
    System.arraycopy(
        s,
        (s.length > 20) ? 1 : 0,
        result,
        (s.length > 20) ? 20 : 40 - s.length,
        (s.length > 20) ? 20 : s.length);

    //  System.arraycopy(sig, (sig[3]==20?4:5), result, 0, 20);
    //  System.arraycopy(sig, sig.length-20, result, 20, 20);

    return result;
  }
コード例 #2
0
ファイル: SignatureRSA.java プロジェクト: ercanal/tigervnc
 public byte[] sign() throws Exception {
   byte[] sig = signature.sign();
   return sig;
 }