我的文档存在一些问题。
这是我的计划:
package main
import (
"bytes"
"code.google.com/p/go.crypto/openpgp"
"encoding/base64"
"fmt"
)
func main() {
var entity *openpgp.Entity
entity, err := openpgp.NewEntity("bussiere", "test", "bussiere@gmail.com", nil)
if err != nil {
}
var (
buffer bytes.Buffer
)
entity.SerializePrivate(&buffer, nil)
data := base64.StdEncoding.EncodeToString([]byte(buffer.String()))
fmt.Printf("%q\n", data)
entity.Serialize(&buffer)
data2 := base64.StdEncoding.EncodeToString([]byte(buffer.String()))
fmt.Printf("%q\n", data2)
entity.PrivateKey.Serialize(&buffer)
data3 := base64.StdEncoding.EncodeToString([]byte(buffer.String()))
fmt.Printf("%q\n", data3)
entity.PrimaryKey.Serialize(&buffer)
data4 := base64.StdEncoding.EncodeToString([]byte(buffer.String()))
fmt.Printf("%q\n", data4)
//fmt.Printf(buffer.String())
}
以下是数据:
https://gist.github.com/bussiere/5159890
这是gist上的代码:
https://gist.github.com/bussiere/5159897
什么是公钥?
以及如何使用它?
如何制作更大的钥匙?
答案 0 :(得分:4)
更新:此问题已修复:see here
儿子下面的解决方案/说明不再合适。
----------------传统答案从以下开始--------------------
概述你如何构建其他尺寸的钥匙的问题:这是不可能的。
我遇到了完全相同的问题,请看:NewEntityFunction的源代码:
383 const defaultRSAKeyBits = 2048
384
385 // NewEntity returns an Entity that contains a fresh RSA/RSA keypair with a
386 // single identity composed of the given full name, comment and email, any of
387 // which may be empty but must not contain any of "()<>\x00".
388 // If config is nil, sensible defaults will be used.
389 func NewEntity(name, comment, email string, config *packet.Config) (*Entity, error) {
390 currentTime := config.Now()
391
392 uid := packet.NewUserId(name, comment, email)
393 if uid == nil {
394 return nil, errors.InvalidArgumentError("user id field contained invalid characters")
395 }
396 signingPriv, err := rsa.GenerateKey(config.Random(), defaultRSAKeyBits)
397 if err != nil {
398 return nil, err
399 }
400 encryptingPriv, err := rsa.GenerateKey(config.Random(), defaultRSAKeyBits)
401 if err != nil {
402 return nil, err
403 }
defaultRSAKeyBits是一个pkg级别的未导出常量。所以没有机会改变这种情况。
我最终复制了整个函数,为keybits添加了一个参数并将其保存在我的代码库中, 如果有人有更好的解决方案,我会很高兴听到它。